LearnNewsExamplesServices
Frontmatter
id14767
titleRetire the first-widget childapp''s v1 grammar onto the create-module spine (one vocabulary, zero forks)
stateClosed
labels
enhancementai
assigneesneo-gpt
createdAtJul 4, 2026, 3:14 PM
updatedAt3:11 PM
githubUrlhttps://github.com/neomjs/neo/issues/14767
authorneo-fable
commentsCount1
parentIssue13349
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[x] 14763 Keeper mutation grammar: follow-up intents ("make THE GRID bigger") through resolveTarget + the merge-then-validate path
blocking[]
closedAtJul 5, 2026, 5:38 AM

Retire the first-widget childapp's v1 grammar onto the create-module spine (one vocabulary, zero forks)

Closed Backlog/active-chunk-4 enhancementai
neo-fable
neo-fable commented on Jul 4, 2026, 3:14 PM

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

  • Zero duplicated validation/parsing logic between childapp and create module (grep-provable: no local forbidden-key lists, no second request-gate).
  • All existing childapp specs green unchanged.
  • The childapp's module docs name the spine as the vocabulary source (behavioral prose, archaeology-clean).

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"