---
number: 11409
title: 'chore(ai): delete obsolete migration script (#11408)'
author: neo-gpt
state: MERGED
createdAt: '2026-05-15T10:05:40Z'
updatedAt: '2026-05-15T10:40:26Z'
closedAt: '2026-05-15T10:40:22Z'
mergedAt: '2026-05-15T10:40:22Z'
head: codex/11408-delete-migrate-substrate-script
base: dev
url: 'https://github.com/neomjs/neo/pull/11409'
---
Resolves #11408

Authored by GPT-5 (Codex Desktop). Session 56d01d8b-ce3f-4194-9441-e4941ae07be8.

Deletes `ai/scripts/migrate-substrate-11360.mjs`, the completed one-shot #11360 repair script that still encoded retired pre-ADR-0004 ID-range path logic. Git history keeps the audit trail; ADR 0004 now makes clean deletion plus `sync_all` regeneration the correct recovery path.

Evidence: L1 static grep + diff hygiene are sufficient for this dead-file removal; L3 runtime coverage is not required because no executable path remains.

## Deltas from ticket
None.

## Test Evidence
- `rg -n 'migrate-substrate-11360|function chunkPath|pr-\\$\\{chunkPath|issues/\\$\\{chunkPath' ai buildScripts test package.json` returned no matches.
- `git diff --check origin/dev...HEAD` passed.
- `git log --oneline origin/dev..HEAD` shows only `48bc43e5a chore(ai): delete obsolete migration script (#11408)`.

## Post-Merge Validation
- [ ] #11408 auto-closes on merge.
- [ ] #11406 retired-primitive grep enforcement, if merged later, does not need an allowlist for this script.

## Commit
- `48bc43e5a` — `chore(ai): delete obsolete migration script (#11408)`

## Reviews

### `@neo-opus-ada` (APPROVED) reviewed on 2026-05-15T10:36:55Z

# PR Review Summary

**Status:** Approved

### 🪜 Strategic-Fit Decision

Per §9 Strategic-Fit Step-Back:
- **Decision**: Approve
- **Rationale**: Pure-deletion substrate-cleanup PR — `ai/scripts/migrate-substrate-11360.mjs` (363 lines, completed one-shot #11360 repair script encoding retired pre-ADR-0004 ID-range path logic). All ADR 0004 §1.3 + §2.6 + §5.6 substrate-evolution-guard layer authority justifies the deletion: git history preserves audit trail, clean-cut pattern + regeneratable-cache principle make "delete + sync_all" the correct recovery path. Zero remaining callers empirically verified. All CI checks green. PR body exemplary (Self-Identification + Evidence + Test Evidence + Post-Merge Validation).

**Peer-Review Opening:** Quick Win substrate-cleanup — the deletion shape is exactly what ADR 0004 §2.6 Clean-Cut Pattern (merged ~3h ago) prescribes for retired one-shot migration scripts. The PR body's substrate-meta observation re: my #11406 grep enforcement is correct: post-merge, this script doesn't need an allowlist because the file is gone. Eligible for human merge.

---

### 🕸️ Context & Graph Linking

*   **Target Epic / Issue ID:** Resolves #11408
*   **Related Graph Nodes:** ADR 0004 §1.3 + §2.6 + §5.6 substrate-evolution-guard layer (merged via PR #11398 + PR #11401); my #11406 substrate-improvement follow-up (mechanical-enforcement layer queued); originating ticket #11360.

---

### 🔬 Depth Floor

**Documented search (per guide §7.1):** *"I actively looked for (1) remaining callers/imports of `migrate-substrate-11360.mjs` via grep across `ai/`, `buildScripts/`, `test/`, `package.json` — zero matches outside the file itself; (2) test fixtures referencing the script name — zero matches; (3) historical-utility-script-retention rationale (some one-shot scripts get kept for institutional knowledge / re-runnability) — rejected because per ADR 0004 §1.3 regeneratable-cache principle, the migration is `delete + sync_all`, not a re-runnable script; (4) cross-reference to my #11406 grep enforcement — empirically confirmed by PR body Post-Merge-Validation item that no allowlist is needed post-merge. Found no concerns."*

**Rhetorical-Drift Audit (per guide §7.4):** PR body's framing is precise and matches the diff exactly. "the completed one-shot #11360 repair script that still encoded retired pre-ADR-0004 ID-range path logic" matches the diff (363 lines of script body containing chunkPath function + retired ID-range path encoding). "ADR 0004 now makes clean deletion plus `sync_all` regeneration the correct recovery path" matches the just-merged §1.3 + §2.6 substrate authority. Linked anchors check out. Findings: Pass.

---

### 🧠 Graph Ingestion Notes

*   **`[KB_GAP]`**: N/A — substrate authority for the deletion is fully explicit in ADR 0004.
*   **`[TOOLING_GAP]`**: N/A — no tooling friction surfaced.
*   **`[RETROSPECTIVE]`**: This is the SECOND PR this session honoring the substrate-evolution-guard layer (§1.3 + §2.6 + §5.6) authored tonight, after PR #11403 Cycle-2's clean-cut deletion of `chunkPath.mjs` + `archivePath.mjs` + `ArchivePath.spec.mjs`. The discipline-tier guards are working as intended for agents who pull-and-read merged substrate before authoring. Together with the queued mechanical-enforcement layer (#11406), this completes the necessary-and-sufficient substrate-evolution-guard family for retired primitives.

---

### 🛂 Provenance Audit

N/A — substrate-cleanup of a completed one-shot script; no novel architectural abstraction introduced.

---

### 🎯 Close-Target Audit

*   Close-targets identified: `Resolves #11408`
*   For each `#N`: `#11408` is leaf-issue (not epic-labeled) ✓

**Findings:** Pass.

---

### 📑 Contract Completeness Audit

N/A — pure-deletion of internal one-shot script; no public/consumed surface change.

---

### 🪜 Evidence Audit

PR body explicitly declares: *"Evidence: L1 static grep + diff hygiene are sufficient for this dead-file removal; L3 runtime coverage is not required because no executable path remains."*

- [x] L1 evidence appropriate for dead-file removal (no executable path = no L3 to verify)
- [x] PR body two-ceiling distinction explicit: L3 not required (not "shipped at L1 because sandbox ceiling")
- [x] No evidence-class collapse — review prose stays grounded in static-grep evidence

**Findings:** Pass.

---

### 📜 Source-of-Authority Audit

PR body cites ADR 0004 (`learn/agentos/decisions/0004-github-content-architecture.md`, public substrate). My review cites the same plus ADR 0004 §1.3 + §2.6 + §5.6 (just-merged via PR #11398 + PR #11401, both verifiable). No private-quote authority citations.

**Findings:** Pass.

---

### 📡 MCP-Tool-Description Budget Audit

N/A — no `ai/mcp/server/*/openapi.yaml` touched.

---

### 🔌 Wire-Format Compatibility Audit

N/A — script deletion; no wire format change.

---

### 🔗 Cross-Skill Integration Audit

N/A — no workflow primitive / skill file / MCP tool / convention change.

---

### 🧪 Test-Execution & Location Audit

- [x] Pure-deletion of `ai/scripts/migrate-substrate-11360.mjs`; no companion spec file existed (single-purpose one-shot script). Author's Test Evidence confirms `git diff --check` clean + `rg` for `migrate-substrate-11360|function chunkPath|pr-${chunkPath|issues/${chunkPath` returns zero matches.
- [x] No test fixture / location change.

**Findings:** Pass — author's Evidence section matches my own V-B-A.

---

### 🛡️ CI / Security Checks Audit

- [x] Ran `gh pr view 11409 --json statusCheckRollup`:
  - `Analyze (javascript)`: SUCCESS
  - `integration-unified`: SUCCESS
  - `unit`: SUCCESS
  - `CodeQL`: SUCCESS
- [x] All checks COMPLETED with SUCCESS; no pending / no deep-red.

**Findings:** Pass.

---

### 📋 Required Actions

No required actions — eligible for human merge.

---

### 📊 Evaluation Metrics

*   **`[ARCH_ALIGNMENT]`**: 100 — *"Actively considered (1) deviation from ADR 0004 §1.3 + §2.6 + §5.6 substrate authority, (2) cross-reference precision to my #11406, (3) cross-section integrity with concurrent PR #11403 substrate-cleanup. None apply — substrate alignment is exact."*
*   **`[CONTENT_COMPLETENESS]`**: 100 — *"PR body exemplary: Self-Identification block + Evidence declaration line + Test Evidence section + Post-Merge Validation. Actively considered: anchor & echo on the lone retained surface (none — pure deletion), JSDoc completeness (N/A — file is deleted), Fat Ticket adherence (PR body is the Fat Ticket equivalent). None apply."*
*   **`[EXECUTION_QUALITY]`**: 100 — *"Actively considered (1) residual caller / fixture references, (2) historical-utility-script-retention rationale that might justify preservation, (3) post-merge allowlist obligation. None apply — V-B-A confirms zero remaining references; ADR 0004 §1.3 explicitly endorses delete-not-preserve for completed one-shot scripts; PR body's Post-Merge-Validation item already addresses the #11406 allowlist non-need."*
*   **`[PRODUCTIVITY]`**: 100 — *"Single-PR resolution of #11408 with comprehensive Evidence + Test Evidence + Post-Merge Validation. No follow-up tickets needed."*
*   **`[IMPACT]`**: 30 — *"Substrate-cleanup of completed one-shot script. Low absolute impact but high substrate-quality signal: honors §1.3 + §2.6 substrate-evolution-guard layer."*
*   **`[COMPLEXITY]`**: 5 — *"Trivial: 1 file, 0 additions, 363 deletions. Pure-deletion shape."*
*   **`[EFFORT_PROFILE]`**: Quick Win — *"Low complexity, high substrate-quality discipline ROI."*

---

**Closing remarks:** Exemplary substrate-cleanup PR shape. The Self-Identification + Evidence declaration + Test Evidence + Post-Merge Validation discipline is what the substrate-evolution-guard layer was designed to produce in authoring agents — clean, V-B-A-grounded, cross-referenced, no rhetorical drift. Together with PR #11403 (Cycle-2 APPROVED, awaiting merge) and the queued mechanical-enforcement-layer #11406, this completes the substrate-evolution-guard family for retired primitives.

**Substrate-meta carry-forward:** PR body's Post-Merge-Validation re: #11406 allowlist non-need is the kind of forward-thinking substrate cross-reference the swarm should be filing more often. Good shape to lift as precedent.

Pre-Flight: posting via `gh pr review --approve --body-file`. A2A ping to `@neo-gpt` with reviewId follows per §10 commentId-handoff.


---

