Story: Hotfix: Domain generator omits the Boost UUID I/O include

Table of Contents

This page documents a story in Sprint 27. It captures the goal, current status, acceptance criteria, and the tasks that compose it.

1. Goal

The CI build fails in projects/ores.iam/api/src/generators/run_grant_generator.cpp with error: 'to_string' is not a member of 'boost::uuids'. The domain-entity synthetic-generator template emits a model's generator_expr verbatim, but it never includes <boost/uuid/uuid_io.hpp>, the header that declares boost::uuids::to_string. Any entity whose generator_expr renders a UUID as text therefore fails to compile. run_grant is the first such entity. This hotfix emits the include when a generator_expr calls boost::uuids::to_string, and regenerates the affected file.

2. Status

Field Value
State DONE
Parent sprint Sprint 27
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-10-06

3. Acceptance

  • ores.iam.api.lib builds with the regenerated run_grant_generator.cpp.
  • The generated file includes <boost/uuid/uuid_io.hpp> only when a generator_expr calls boost::uuids::to_string.
  • No other generated file changes.
  • projects/ores.codegen/tests passes.

4. Tasks

Task State Start End Description
Scaffold story: Hotfix: Domain generator omits the Boost UUID I/O include DONE 2026-10-06 2026-10-06 Story scaffolding rides this task: documents, sprint wiring, and the scaffold PR. Close it before merging that PR.
Implement Hotfix: Domain generator omits the Boost UUID I/O include DONE 2026-10-06 2026-10-06 Add the Boost UUID I/O include to the domain-entity generator template, gated on a generator_expr that calls boost::uuids::to_string, and regenerate run_grant_generator.cpp.

5. Decisions

  • The include is conditional, not unconditional. The junction section of the same template already gates <boost/uuid/uuid_io.hpp> on has_uuid_left_or_right, and an unconditional include would land an unused header in every generated generator file.
  • The durable fix lives in the org template source and core.py, not in run_grant_generator.cpp. The generated file is tangled output and would drift back on the next regeneration.

6. Out of scope

7. Result

Shipped in PR #2689. The CI failure is cleared once that PR merges.

Emacs 29.3 (Org mode 9.6.15)