Merge pull request 'Design 47 G: lead answer A-313, over-bound step answers in the steps state's own objects store' (#593) from design/47-G-lead-answers-21 into main

This commit was merged in pull request #593.
This commit is contained in:
2026-11-12 21:41:15 +00:00
@@ -520,3 +520,19 @@ the principle that settles it, cited as "design 47 G A-n".
held, the verb's reason named.
- **A-310's shape:** `composer.Manifest` is `{Raw, Digest, Fingerprint}` (wire `fingerprint`), and `composer.Fill`'s
getter takes the `Manifest`.
- **A-313** (corrects A-309 and A-290's "outputs store"; §58, §547, ADR 0666 §16; principle 7) A step answer over the
steps state's bound is kept in the steps state's own objects store, `steps-objects`, which the build module's
`requires` sizes with the state option `objects-max-mib: 256`; it lives as every `<state>-objects` does (removed on
replace, an object whose key is gone kept for the drop tool), so no `outputs` require and no age option for the
objects template are added. A-309's lifetime line is withdrawn.
- **A-314** (A-313, §58, §547; principle 7) The three build modules' `steps` moves from the old `state` section into
`requires` as a state with `ttl-seconds: 172800` and `objects-max-mib: 256`; its bucket stays `<module>_steps`, so
the seat's `steps` state is served from it as before. The step runner names the store through
`catalogue.StateObjectsName("steps")`, and the manifest validator accepts `objects-max-mib` on the state template.
- **A-315** (test 36, §637, §555, §405; principles 2, 3, 5 and 7) Test 36 takes the fingerprints of before G from the
mesh, not from a file: during G's check the trunk is before G, so it asks `seat:mesh-catalog.module` for the
indexer, the assigner, the gate, the backup holder and the bus module, and fetches each build by its fingerprint
through `seat:oci-artifact-registry` under the checker's account, as §637 says; the address of both is the bus the
check gives the test. Each fetched build is started the way every module is, by the node-engine's own apply of a
want on the test's bus, under the module's own account; the test starts no bare process. Where the seat does not
answer, the test fails, saying which build it could not fetch and why; it never skips.