Tom Boucher
48cc27bd84
feat( #903 ): generate Loop Host Contract from workflow markers (ADR-857 phase 3a-impl-2) ( #906 )
...
Replace the inline LOOP_HOST_CONTRACT constant in the Capability Registry
generator with a generated-from-workflows contract (ADR-894 §3). The contract
is now derived from inert `<!-- gsd:loop-host ... -->` marker blocks in the five
step workflows, emitted as the committed gsd-core/bin/lib/loop-host-contract.cjs,
and required by gen-capability-registry.cjs — one source of truth, no drift.
Drift guards in gen-loop-host-contract.cjs: per-step point ownership (each step
must declare exactly its canonical loop points), multiple-block + duplicate-key
hard errors, and a word-boundary agent-role cross-check. Contract content is
byte-identical to the former constant; registry-only, nothing wired into the
live loop.
Closes #903
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-08 22:16:58 -04:00
..
2026-06-02 18:35:29 -04:00
2026-06-03 08:08:34 -04:00
2026-06-07 20:22:07 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-08 10:42:05 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-08 22:16:58 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-08 22:16:58 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-05 08:57:20 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-08 10:42:05 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-08 22:16:58 -04:00
2026-06-05 08:57:20 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-07 18:54:05 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-08 22:16:58 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-05 08:57:20 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-07 20:22:07 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-06-08 22:16:58 -04:00