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 --allreports no drift.- Every hand-written caller the new shapes break is migrated.
compass buildexits 0,compass db recreate -y -kexits 0, the fleet is 25 of 25, and the fullctestsuite passes.- The capture records
tradingandworkspace-cppas 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:
history,scheduler,storage,marketdataandsynthetic, regenerated and committed separately.- The recipes the regenerations materialised, committed beside their component.
- A full
compass build, which found the one hand-written caller the new response shape breaks. - 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.shellreadput_job_definition_response::job_definitionas a value; the scheduler regeneration made the field anstd::optional, andores.shell.applicationstopped building at that line. The caller is migrated indd6150918c. 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.testscases, because the synthetic seed-profile code repeats across processes; that is filed asiam_seed_profile_tests_fail_on_a_second_runand 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 --allexits 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:
ff0290be5ehistory,329f5293fescheduler,7260831807storage,1483ee3388andead842e0a4marketdata,4f91f9fccfand7d917bcfeesynthetic. The recipes ride with their component, and50b68239b7carries the recipe inventory entry they add. dd6150918cmigrates the one hand-written caller the new shapes break. The first full build after the regeneration is what found it, atscheduler_commands.cpp:290.compass buildexits 0,compass db recreate -y -kexits 0 with the store reportingdrift: current, the fleet is 25 of 25, and the fullctestsuite is 87 of 87 targets with 6706 cases and no failure.- The capture names
tradingandworkspace-cppas 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.