Task: Regenerate the five components and fix the callers the new shapes break

Table of Contents

This page documents a task in the Roll the generator fixes out to the components outside the test list story. It captures the goal, current status, acceptance, and any notes or results.

1. Goal

The components outside COMPONENTS_UNDER_TEST carry the four generator fixes the refdata clean-standard pass landed, rather than the shapes they were last generated with. The capture shell-recipes-no-longer-run is what asked for it.

2. Status

Field Value
State DONE
Parent story Roll the generator fixes out to the components outside the test list
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-09-28

3. Acceptance

  • Each of the five components is regenerated and committed on its own, so a reviewer reads one component's diff at a time.
  • check_component_drift.py --all reports no drift.
  • Every hand-written caller the new shapes break is migrated.
  • compass build exits 0, compass db recreate -y -k exits 0, the fleet is 25 of 25, and the full ctest suite passes.
  • The capture records trading and workspace-cpp as the remainder, with the reason each is out.

4. Plan

Take one component at a time, in the order the capture lists them: regenerate, read the diff, and commit. The regeneration is not trusted to be mechanical, so after all five are in, the whole tree is built and tested before the branch is pushed. Each component that turns out to need more than a regeneration gets its own commit with the reason in the message.

The order that was followed:

  1. history, scheduler, storage, marketdata and synthetic, regenerated and committed separately.
  2. The recipes the regenerations materialised, committed beside their component.
  3. A full compass build, which found the one hand-written caller the new response shape breaks.
  4. The store rebuilt from nothing, so the tests run against the branch's own schema rather than a store from an earlier tree.

5. Measurements

What Value Command Commit
Components regenerated 5 check_component_drift.py --all → "No drift: regenerated output matches the checked-in tree" ce04a90acd
Files the branch changes 68 files, 1168 insertions, 172 deletions git diff --stat origin/main ce04a90acd
Build exit 0, every target linked compass build ce04a90acd
Database exit 0; schema 0.0.25, drift: current compass db recreate -y -k, compass db status ce04a90acd
Fleet 25 of 25 units running compass services status ce04a90acd
Test suite 87 of 87 targets, 6706 cases, 0 failed, 100% compass test run, compass test results ce04a90acd
Codegen suite 955 passed python3 -m pytest projects/ores.codegen/tests -q ce04a90acd
Codegen gates 8 gates exit 0 check_sql_hygiene.py, check_protocol_twin_coverage.py, check_model_drift.py, check_handler_permissions.py, check_shell_menu_collisions.py, check_route_auth_declarations.py, check_registry_exceptions.py, check_test_case_reachability.py ce04a90acd
Org corpus lint clean; 0 unresolved links compass lint, emacs -Q --script projects/ores.lisp/src/ores-check-org-links.el ce04a90acd
Merged 17fa9f47fd through PR #2334, 14 checks green gh pr checks 2334; git log -1 --format=%P origin/main 17fa9f47fd
Merge tree Identical to the verified branch head, so no gate was re-run git diff --stat 8e449df026 origin/main — no output 17fa9f47fd

6. Notes

  • The regeneration of a protocol can stop a hand-written caller in another component from compiling. ores.shell read put_job_definition_response::job_definition as a value; the scheduler regeneration made the field an std::optional, and ores.shell.application stopped building at that line. The caller is migrated in dd6150918c. The first build that ran after the regeneration is what found it, which is why the full build is part of the plan rather than an afterthought.
  • ores.synthetic's regeneration also corrected one generated SQL artefact index the model states once, committed separately so the model fix and the materialised file do not read as one change.
  • The suite passes on a database recreated from nothing. A second run against the same database fails in two ores.iam.core.tests cases, because the synthetic seed-profile code repeats across processes; that is filed as iam_seed_profile_tests_fail_on_a_second_run and is not this branch's.

7. Test Scenarios

Scenario State Notes
     

8. PRs

PR Title
#2334 [codegen] Roll the generator fixes out to the five components outside the test list

9. Review

Comment summary File Decision Notes
       

10. Result

Every acceptance item holds on the branch, and the pull request's fourteen checks pass.

  • check_component_drift.py --all exits 0 with "No drift: regenerated output matches the checked-in tree", so all five components match the templates the refdata pass left behind.
  • Each component is one commit: ff0290be5e history, 329f5293fe scheduler, 7260831807 storage, 1483ee3388 and ead842e0a4 marketdata, 4f91f9fccf and 7d917bcfee synthetic. The recipes ride with their component, and 50b68239b7 carries the recipe inventory entry they add.
  • dd6150918c migrates the one hand-written caller the new shapes break. The first full build after the regeneration is what found it, at scheduler_commands.cpp:290.
  • compass build exits 0, compass db recreate -y -k exits 0 with the store reporting drift: current, the fleet is 25 of 25, and the full ctest suite is 87 of 87 targets with 6706 cases and no failure.
  • The capture names trading and workspace-cpp as the remainder, with the reason each is out.

Not yet merged. On the branch, every acceptance item holds: the five components regenerate with no drift, the migrated caller builds, the store rebuilds from nothing, the fleet is 25 of 25, the full suite is 87 of 87 with 6706 cases and no failure, and the codegen suite and its gates are green.

Emacs 29.3 (Org mode 9.6.15)