Context
Wave 3 may not copy from a moving source. This leaf binds the cut to the operator-declared freeze and turns the existing extraction inventory, plane proof, rollback anchor, package receipt, tracker ledger, and receive order into one deterministic cut receipt.
Scope cut 2026-08-26 — operator KISS ruling. Registry/enrollment lifecycle, reusable-workflow distribution, binding receipts/drift detectors, and A2A lane census are removed. The OQ8 ownership ruling remains shelved as the design note if future scale justifies a registry; it is not implemented for today's three-repo split.
The Problem
The runway, inventory, proof, package transport, tracker ledger, and receive tickets are individually correct only at the revisions they observed. Without one frozen coordinate, Wave-3 PRs can pass against different source or target states.
Existing Authority
agentOsExtractionInventory.mjs owns the move/stay/retire population and exact residue.
agentOsPlaneBoundaryProof.mjs owns instrument errors, topology findings, and clean-SHA binding.
- D#17782 owns the freeze and receive-before-remove order.
- neomjs/neo#17798 owns the published npm skill package plus clean-consumer materialization and packaged-reference-closure receipts.
- neomjs/neo#17783 owns enforcement custody and one read-back of the surviving required context.
- D#17782 Wave 2.5 owns the frozen 330-row snapshot and seven-row sanctioned delta: Neo source total 337. neomjs/neo#17790 owns the committed 164-row transfer pre-state (163 open native moves + closed neomjs/neo#17781 source-only); target-created
neo-agent-brain#10 is outside the Neo source population.
- Wave 0 owns the rollback image pin plus named verified bundle.
- ADR 0040 owns the placement decision; neomjs/neo#17800 owns its merged learn/ADR correction, and
neo-agent-brain#10 consumes the manifest's exact 137-row guide/ADR classification.
Fix
Extend the existing extraction authority to emit wave3-cut-manifest.v1. It records only:
- frozen Neo source SHA and Brain target SHA;
- the exact inventory disposition digest and zero-residue result;
- the plane-proof receipt and zero unresolved pre-relocation blockers;
- immutable prerequisite coordinates for neomjs/neo#17798, neomjs/neo#17783, the Wave-2.5 tracker snapshot, Wave 0, and the ADR 0040 correction;
- the ordered receive gates and terminal Neo removal condition.
No parallel census, registry, workflow-distribution layer, freshness subsystem, copied tracker table, or A2A lane ledger is introduced.
Contract Ledger
| Surface |
Authority |
Behavior |
Red condition |
| Source/target coordinates |
Git |
bind exact clean SHAs |
dirty source, missing ref, or changed target |
| Population |
extraction inventory |
exact disposition digest; zero residue |
missing/replaced identity or non-zero residue |
| Guides / ADRs |
neo-agent-brain#10 census + extraction inventory |
pin the immutable census artifact; retain its source SHA as provenance while requiring current learn/agentos subtree-OID equality and an exact normalized {identity,disposition} digest across all 137 rows / 40 ADRs |
absent coordinate, subtree drift, unknown row, invalid target, count mismatch, or exact digest mismatch |
| Relocation authorization |
plane proof |
existing producer is invoked; semantic receipt digest, zero instrument errors, and zero unresolved blockers |
caller-supplied proof, invalid receipt, or any proof error/blocker |
| CLI composition |
existing extraction entrypoint + ADR 0016 |
Commander --wave3-cut-input <path> reads coordinates, builds fresh inventory/proof, and emits JSON |
unknown/missing option, dirty source, or invalid input is red |
| Skills |
neomjs/neo#17798 |
pin the current package/materialization plus typed reference-closure {ref,state}; red authorizes receive but remains a neomjs/neo#17798 removal gate |
package/materialization coordinate missing, or closure state absent/untyped |
| Enforcement |
neomjs/neo#17783 |
pin the one-time required-context read-back |
required context missing |
| Tracker |
D#17782 Wave 2.5 + neomjs/neo#17790 pre-state ledger |
pin 337 source rows = 330 baseline + 7 sanctioned deltas with a number/disposition digest; pin the committed 164-row transfer artifact = 163 open + 1 closed source-only with its SHA-256 |
either arithmetic relation, artifact coordinate, or identity set is stale |
| Rollback |
Wave 0 |
pin image plus named verified bundle |
either half absent |
| Order |
D#17782 |
receive before remove |
a predecessor gate is not green |
Acceptance Criteria
Out of Scope
- registry/enrollment/onboarding/retirement machinery;
- reusable workflow distribution or aggregated callers;
- binding receipts, drift detectors, or bespoke npm freshness gates;
- copying the 337-row tracker ledger into this artifact;
- A2A lane census;
- file copying, tracker transfer, deployment, or Neo-side removal.
Avoided Traps
- Parallel census: duplicates the inventory.
- Handwritten population: decays and permits same-count substitution.
- Governance ledger: records mutable state a one-time cut read can verify directly.
- Dirty SHA claim: attributes working-tree state to a commit.
- Count-only tracker proof: permits identity replacement.
- Image-only rollback: restores code but not durable state.
- Package-only reach: a green local projection can still ship relative documentation pointers that do not resolve in a clean non-Neo consumer.
Related
Parent Wave-3 Epic: neomjs/neo#17786
Parent extraction epic: neomjs/neo#17500
Skills transport: neomjs/neo#17798
Enforcement custody: neomjs/neo#17783
Tracker transfer: neomjs/neo#17790
ADR correction: neomjs/neo#17800
Guide/ADR receiver: neomjs/neo-agent-brain#10
Runway: D#17782
Origin Session ID: 975b7d3f-ebb0-46bd-8b5a-ac7fa64ba0d0
Retrieval Hint: wave3 cut manifest clean SHA inventory proof npm package rollback receive remove
Context
Wave 3 may not copy from a moving source. This leaf binds the cut to the operator-declared freeze and turns the existing extraction inventory, plane proof, rollback anchor, package receipt, tracker ledger, and receive order into one deterministic cut receipt.
The Problem
The runway, inventory, proof, package transport, tracker ledger, and receive tickets are individually correct only at the revisions they observed. Without one frozen coordinate, Wave-3 PRs can pass against different source or target states.
Existing Authority
agentOsExtractionInventory.mjsowns the move/stay/retire population and exact residue.agentOsPlaneBoundaryProof.mjsowns instrument errors, topology findings, and clean-SHA binding.neo-agent-brain#10is outside the Neo source population.neo-agent-brain#10consumes the manifest's exact 137-row guide/ADR classification.Fix
Extend the existing extraction authority to emit
wave3-cut-manifest.v1. It records only:No parallel census, registry, workflow-distribution layer, freshness subsystem, copied tracker table, or A2A lane ledger is introduced.
Contract Ledger
neo-agent-brain#10census + extraction inventorylearn/agentossubtree-OID equality and an exact normalized{identity,disposition}digest across all 137 rows / 40 ADRs--wave3-cut-input <path>reads coordinates, builds fresh inventory/proof, and emits JSON{ref,state};redauthorizes receive but remains a neomjs/neo#17798 removal gateAcceptance Criteria
neomjs/neoSHA and currentneo-agent-brain/devSHA; dirty or unresolved input is red.neo-agent-brain#10census coordinate, preserves the census source SHA as provenance, and requires currentlearn/agentossubtree OID plus the exact normalized{identity,disposition}digest to reconcile all 137 rows / 40 ADRs.redis admissible at cut and remains removal-blocking), neomjs/neo#17783 required-context read-back, the Wave-2.5 snapshot at 337 source rows (330 + 7) with its number/disposition digest and the committed 164-row transfer pre-state (163 + closed neomjs/neo#17781) with its artifact SHA-256, and the merged neomjs/neo#17800 / ADR 0040 correction. No registry or auxiliary receipt subsystem.neo-agent-brain#10may receive after the manifest without false serialization into the four-ticket order; neomjs/neo#17791 removal stays impossible until every predecessor, including neomjs/neo#17798 andneo-agent-brain#10, is green.wave3-cut-manifest.v1is stable, human-readable JSON emitted by the existing extraction authority via Commander--wave3-cut-input <path>and linked from D#17782. The CLI invokes the existing plane-proof producer; a caller-authored proof object is ignored. No new standalone diagnostic tool.Out of Scope
Avoided Traps
Related
Parent Wave-3 Epic: neomjs/neo#17786
Parent extraction epic: neomjs/neo#17500
Skills transport: neomjs/neo#17798
Enforcement custody: neomjs/neo#17783
Tracker transfer: neomjs/neo#17790
ADR correction: neomjs/neo#17800
Guide/ADR receiver: neomjs/neo-agent-brain#10
Runway: D#17782
Origin Session ID: 975b7d3f-ebb0-46bd-8b5a-ac7fa64ba0d0
Retrieval Hint:
wave3 cut manifest clean SHA inventory proof npm package rollback receive remove