Wave 2.5 produced a frozen 330-ticket baseline, followed by six sanctioned Wave-3 rows. This leaf consumes the exact Brain-classified population from that baseline and delta.
Final operator mechanism ruling — 2026-08-26: use GitHub's native issue transfer for the 163 open Brain-classified tickets. Preserving original dates, authorship, comments, stale age, assignees, and redirect continuity outweighs gaps in Neo's visible issue-number stream. The one closed row, #17781, cannot be transferred by GitHub and remains closed in neomjs/neo as historical evidence; it is ledger-reconciled, never reopened or cloned.
#17701 proved the live semantics: a native transfer creates a destination node, old URLs resolve to the destination, labels map by name, source references become repository-qualified, holding milestones drop, and cross-repository parent/dependency edges survive after projection settles.
The Problem
Bulk transfer without a frozen population and a read-back ledger can strand labels, milestones, relationships, active claims, and close targets. A successful command is not the continuity proof.
The Architectural Reality
Brain has issues enabled, default dev, the needed label taxonomy, and a green relationship-bearing canary.
GitHub transfers only open issues. Continuity uses source → destination mapping plus redirect, not node-ID stability.
Original dates, authorship, comments, and stale age are part of the history worth preserving.
Active PR/lane ownership must be dispositioned before its ticket moves.
Within the tracker batch, #17790 transfers after every other open Brain-classified issue.
Closed #17781 stays in Neo as resolved historical evidence and receives a terminal ledger disposition rather than a fabricated replacement.
The Fix
Consume the Wave-2.5 baseline, sanctioned Wave-3 delta, and #17787 cut coordinate.
Transfer the exact 163 open Brain-classified issues to neomjs/neo-agent-brain in frozen order, with #17790 last.
After each command, resolve the old URL and verify destination identity, title/body semantics, labels, assignees, comments, PR links, state, and milestone behavior.
After projection settles, verify every parent/sub-issue and blocker/blockee relationship bidirectionally.
Record #17781 as closed-historical-stays-source; do not reopen, clone, or transfer it.
Commit the deterministic source → destination ledger in the Brain.
remains closed in Neo; ledger records the exception
reopen, clone, or pretend-transfer
ledger
this ticket
deterministic mapping, exception, timestamps, semantic deltas, and verification
incomplete or unverifiable row
Acceptance Criteria
Input population exactly reconciles the frozen Wave-2.5 baseline plus every sanctioned Wave-3 delta: 163 open native transfers + closed historical #17781, with no omission, extra row, or same-count substitution.
Every active claim, PR, reviewer, and assignee is dispositioned before its open issue moves.
Target labels exist; milestone/project behavior is declared per row before mutation.
Every transferred issue records source/destination repository, number, node IDs, old redirect, original dates, title/body semantic delta, labels, milestone, assignees, comments, PR links, parent, blockers, and blockees.
Source-reference qualification is accepted only when meaning-preserving; any other body delta halts.
Relationships are verified bidirectionally after projection settles; persistent loss blocks the batch.
#17781 remains closed in Neo as historical evidence and is recorded once in the ledger with its resolving PR; it is never reopened, cloned, or passed to the transfer command.
The deterministic Brain ledger reconciles all 164 rows exactly once: 163 destination mappings plus the #17781 historical exception.
Within the open tracker batch, #17790 transfers after every other issue. Its destination issue is resolved by the final Brain ledger PR before #17791 may proceed.
Engine removal remains blocked until the ledger, redirects, and relationship verification are green.
Out of Scope
changing the frozen classification;
recreating open tickets by clone/create+close;
moving stays-Engine or skills-subject tickets;
reopening or cloning closed history;
moving source files;
operator merges.
Avoided Traps
Create+close duplication: splits 749 existing comments across historical and active tickets and requires rebuilding 436 relationship edges; rejected in favor of the native primitive.
Treating visible number gaps as broken links: old URLs resolve to destination issues; the ledger makes every mapping explicit.
Node-ID stability assumption: the canary disproved it.
Hash equality as semantic equality: GitHub may qualify source references during transfer.
Green CLI exit as proof: every row gets independent post-state verification.
Trying to transfer #17781: GitHub supports only open issues; the closed historical record stays put.
Decision Record impact
Aligned with ADR 0040 §2.8; no topology amendment. The operator ruling selects the migration mechanism and accepts its visible-number tradeoff.
Context
Wave 2.5 produced a frozen 330-ticket baseline, followed by six sanctioned Wave-3 rows. This leaf consumes the exact Brain-classified population from that baseline and delta.
#17701 proved the live semantics: a native transfer creates a destination node, old URLs resolve to the destination, labels map by name, source references become repository-qualified, holding milestones drop, and cross-repository parent/dependency edges survive after projection settles.
The Problem
Bulk transfer without a frozen population and a read-back ledger can strand labels, milestones, relationships, active claims, and close targets. A successful command is not the continuity proof.
The Architectural Reality
dev, the needed label taxonomy, and a green relationship-bearing canary.The Fix
neomjs/neo-agent-brainin frozen order, with #17790 last.closed-historical-stays-source; do not reopen, clone, or transfer it.Contract Ledger Matrix
Acceptance Criteria
Out of Scope
Avoided Traps
Decision Record impact
Aligned with ADR 0040 §2.8; no topology amendment. The operator ruling selects the migration mechanism and accepts its visible-number tradeoff.
Related
Blocked by: #17787 and the frozen Wave-2.5 + sanctioned-delta disposition
Parent Wave-3 Epic: #17786
Canary: #17701
Living runway: https://github.com/orgs/neomjs/discussions/17782
Handoff Retrieval Hints
native issue transfer preserve dates comments stale age 163 open #17781 stays closed ledgerOrigin Session ID:
975b7d3f-ebb0-46bd-8b5a-ac7fa64ba0d0