Context
T2.13 of the harness pillar (#13349) — the debt-retirement leaf the spine's PRs kept explicitly out of scope: the shipped first-widget childapp (apps/agentos/childapps/widget/) still runs its own v1 modules (parseEditRequest.mjs, validateRequest.mjs, blueprintEvidence.mjs projections) — the predecessors the create module generalized. Two vocabularies for one contract is the drift class every review this cycle guarded against; the childapp earned its keep as the precedent and now consumes the spine.
The Fix
validateRequest → the route's request gates (import, not copy).
parseEditRequest → the T2.12 mutation grammar (this leaf lands AFTER #14763; blocked-by).
- The childapp's evidence projections stay (they are display-side and were the PATTERN source) but read shared constants (forbidden-key vocabulary) from the blueprint schema module instead of local duplicates.
- Behavior-identical bar: the childapp's existing unit specs pass unchanged (they are the acceptance instrument — if a spec needs semantic edits, the retirement changed behavior and that is a defect, not a spec update).
Acceptance Criteria
Blocked-by
#14763 (the mutation grammar it adopts).
Related
Parent #13349 (T2.13) · #14763 · the childapp (the precedent this honors by retiring into) · the one-vocabulary rule (recorded across the cycle's reviews).
Claimable — non-Fable implementable; mechanical once #14763 lands.
Origin Session ID: b9b95ac6-42f5-47a3-b58f-6071f79657e8
Retrieval Hint: "retire first widget childapp v1 grammar onto create module spine one vocabulary parseEditRequest validateRequest"
Context
T2.13 of the harness pillar (#13349) — the debt-retirement leaf the spine's PRs kept explicitly out of scope: the shipped first-widget childapp (
apps/agentos/childapps/widget/) still runs its own v1 modules (parseEditRequest.mjs,validateRequest.mjs,blueprintEvidence.mjsprojections) — the predecessors the create module generalized. Two vocabularies for one contract is the drift class every review this cycle guarded against; the childapp earned its keep as the precedent and now consumes the spine.The Fix
validateRequest→ the route's request gates (import, not copy).parseEditRequest→ the T2.12 mutation grammar (this leaf lands AFTER #14763; blocked-by).Acceptance Criteria
Blocked-by
#14763 (the mutation grammar it adopts).
Related
Parent #13349 (T2.13) · #14763 · the childapp (the precedent this honors by retiring into) · the one-vocabulary rule (recorded across the cycle's reviews).
Claimable — non-Fable implementable; mechanical once #14763 lands.
Origin Session ID: b9b95ac6-42f5-47a3-b58f-6071f79657e8 Retrieval Hint: "retire first widget childapp v1 grammar onto create module spine one vocabulary parseEditRequest validateRequest"