Files
msd-core/gsd-core/bin/lib/loop-host-contract.cjs
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

106 lines
1.8 KiB
JavaScript

'use strict';
/**
* loop-host-contract.cjs — generated by scripts/gen-loop-host-contract.cjs
* DO NOT EDIT BY HAND. Run: node scripts/gen-loop-host-contract.cjs --write
* ADR-894 §3 — Loop Host Contract, generated from workflow markers.
* 12 points: discuss:pre/post, plan:pre/post, execute:pre/wave:pre/wave:post/post,
* verify:pre/post, ship:pre/post. Per-step agentRoles and coreArtifacts.
*/
const LOOP_HOST_CONTRACT = [
{
"step": "discuss",
"points": [
"discuss:pre",
"discuss:post"
],
"agentRoles": [
"orchestrator"
],
"coreArtifacts": {
"produces": [
"CONTEXT.md"
],
"consumes": []
}
},
{
"step": "plan",
"points": [
"plan:pre",
"plan:post"
],
"agentRoles": [
"researcher",
"planner",
"checker"
],
"coreArtifacts": {
"produces": [
"PLAN.md"
],
"consumes": [
"CONTEXT.md"
]
}
},
{
"step": "execute",
"points": [
"execute:pre",
"execute:wave:pre",
"execute:wave:post",
"execute:post"
],
"agentRoles": [
"executor",
"verifier"
],
"coreArtifacts": {
"produces": [
"SUMMARY.md"
],
"consumes": [
"PLAN.md"
]
}
},
{
"step": "verify",
"points": [
"verify:pre",
"verify:post"
],
"agentRoles": [
"orchestrator"
],
"coreArtifacts": {
"produces": [
"UAT.md"
],
"consumes": [
"SUMMARY.md"
]
}
},
{
"step": "ship",
"points": [
"ship:pre",
"ship:post"
],
"agentRoles": [
"orchestrator"
],
"coreArtifacts": {
"produces": [],
"consumes": [
"UAT.md"
]
}
}
];
module.exports = { LOOP_HOST_CONTRACT };