Context (friction→gold, operator-ratified 2026-07-04)
Live specimen from tonight: the create-module leaves (#14655/#14656/#14689/#14711) shipped apps/agentos (Body-hemisphere) code written in Brain style — plain modules, injected resolution seams, sequential direct property writes — because the author's prior-art reads were ai/services/graph/ siblings, not src/ core. Two concrete idiom violations reached an approved/reviewed state before the operator's challenge caught them:
- Live-component mutation via chained direct assignments instead of the batched
component.set() path (src/core/Base.mjs — EffectManager pause, coherent beforeSet/afterSet, single cascade).
- A bespoke injected
resolveComponent seam instead of the core instance manager (Neo.get + afterSetId auto-registration + the enhanced Symbol.hasInstance shape guarantee) — which then caused a full review cycle hardening against a "wrong-shaped component" class the core contracts structurally preclude.
The reviewer is not the safety net here and cannot be: the sole active cross-family reviewer runs a 258K context window and often cannot afford the neo-core read alongside the diff. The gate must live in the substrate, author-side first.
The Fix (substrate placement — three surfaces, one rule)
The rule: Before authoring or reviewing code under apps/ or src/ that creates, mutates, resolves, or destroys Neo instances — or manages view state — read the relevant contracts in src/Neo.mjs + src/core/Base.mjs (at minimum: Neo.create/setupClass gatekeeping, reactive configs + set() batching, Neo.get/instance-manager resolution, observeConfig, destroy semantics). Pure data-plane logic (parsing, validation, transition tables) as plain util modules is fine and childapp-precedented; the boundary is instance mutation + view state.
Placement (each its own small PR-able edit, net-bytes-conscious per the compaction taxonomy — read learn/agentos/decisions/0007-agents-md-compaction-taxonomy.md before touching turn-loaded substrate):
Acceptance Criteria
Evidence anchor
The correction pair: PR #14710 addendum (batched set(), Neo.get default, id stamping) + PR #14712 addendum (transition table = oracle for a reactive flowState_ config, never a parallel store). Root-cause statement on both.
Related
#13349 (the pillar whose view tranche this protects) · #14710/#14712 (the correction specimens) · src/core/Base.mjs / src/Neo.mjs (the contracts) · learn/agentos/decisions/0007-agents-md-compaction-taxonomy.md (governs the AGENTS.md touch).
Claimable — substrate lane; I'll take it after my open PR gates clear unless someone reaches it first.
Origin Session ID: b9b95ac6-42f5-47a3-b58f-6071f79657e8
Retrieval Hint: "mandatory neo core read gate Body-side neo core idiom set batching instance manager reactive config"
Context (friction→gold, operator-ratified 2026-07-04)
Live specimen from tonight: the create-module leaves (#14655/#14656/#14689/#14711) shipped
apps/agentos(Body-hemisphere) code written in Brain style — plain modules, injected resolution seams, sequential direct property writes — because the author's prior-art reads wereai/services/graph/siblings, notsrc/core. Two concrete idiom violations reached an approved/reviewed state before the operator's challenge caught them:component.set()path (src/core/Base.mjs— EffectManager pause, coherent beforeSet/afterSet, single cascade).resolveComponentseam instead of the core instance manager (Neo.get+afterSetIdauto-registration + the enhancedSymbol.hasInstanceshape guarantee) — which then caused a full review cycle hardening against a "wrong-shaped component" class the core contracts structurally preclude.The reviewer is not the safety net here and cannot be: the sole active cross-family reviewer runs a 258K context window and often cannot afford the neo-core read alongside the diff. The gate must live in the substrate, author-side first.
The Fix (substrate placement — three surfaces, one rule)
The rule: Before authoring or reviewing code under
apps/orsrc/that creates, mutates, resolves, or destroys Neo instances — or manages view state — read the relevant contracts insrc/Neo.mjs+src/core/Base.mjs(at minimum:Neo.create/setupClassgatekeeping, reactive configs +set()batching,Neo.get/instance-manager resolution,observeConfig, destroy semantics). Pure data-plane logic (parsing, validation, transition tables) as plain util modules is fine and childapp-precedented; the boundary is instance mutation + view state.Placement (each its own small PR-able edit, net-bytes-conscious per the compaction taxonomy — read
learn/agentos/decisions/0007-agents-md-compaction-taxonomy.mdbefore touching turn-loaded substrate):ticket-intakeworkflow payload (author-side, the primary gate): a Body-side pre-flight line — the intake for anyapps//src/implementation names which core contracts were read, the same way KB/prior-art sweeps are named.pr-reviewguide payload (reviewer-side, the backstop): a Body-side review checklist line — instance-touching diffs get checked againstset()-batching / manager-resolution / reactive-config idioms; reviewers with tight context windows may satisfy it via the KB instead of a full core read.src/, not only in the feature directory; ~2 lines, compaction-taxonomy-compliant.ask_knowledge_basesurfaces the Base.mjsset()/instance-manager/reactive-config contracts for queries like "mutate a live component" (verify with a live query; file a KB gap if it misses).Acceptance Criteria
Evidence anchor
The correction pair: PR #14710 addendum (batched
set(),Neo.getdefault, id stamping) + PR #14712 addendum (transition table = oracle for a reactiveflowState_config, never a parallel store). Root-cause statement on both.Related
#13349 (the pillar whose view tranche this protects) · #14710/#14712 (the correction specimens) ·
src/core/Base.mjs/src/Neo.mjs(the contracts) ·learn/agentos/decisions/0007-agents-md-compaction-taxonomy.md(governs the AGENTS.md touch).Claimable — substrate lane; I'll take it after my open PR gates clear unless someone reaches it first.
Origin Session ID: b9b95ac6-42f5-47a3-b58f-6071f79657e8 Retrieval Hint: "mandatory neo core read gate Body-side neo core idiom set batching instance manager reactive config"