{
  "verdict": "Read-only audit complete. The clean cutover is not a bridge migration; it is deletion of every Claude/plugin/hook/ccs/cc-launcher/RPC path, with the native OMP extension as the only interactive lifecycle owner. Current trace coverage is materially false-green because many retained requirement stages are credited solely to Claude files that must be deleted.",
  "public_contract_evidence": [
    "OMP public extension guide: https://raw.githubusercontent.com/can1357/oh-my-pi/main/docs/extensions.md. It defines a default TS/JS extension factory, runtime actions `sendMessage`/`sendUserMessage`, handler state (`isIdle`, `shutdown`, `sessionManager`), lifecycle events (`session_start`, `turn_start`/`turn_end`, `agent_start`/`agent_end`, `session_shutdown`), and explicitly distinguishes the rich interactive UI from RPC mode's unsupported/no-op terminal/UI operations. This is definitive support for native TUI + extension-owned bind/listen/state/reply, and against retaining a headless RPC bridge for attached sessions.",
    "OMP public loading guide: https://raw.githubusercontent.com/can1357/oh-my-pi/main/docs/extension-loading.md. Explicit `--extension/-e` paths are a supported startup source; module factories load through the documented extension pipeline. This proves `[session.self]`/`[session.resume]` may invoke native OMP with the packaged extension without a Claude-style plugin.",
    "SPT public integration checklist: https://sabermage.github.io/spt-releases/harness-contract/integration-checklist.html. It says the public contract has only two seams—manifest TOML and `spt api` invocations—and defines the spt-hosted startup pair as `[session.self]` followed by `api bind <id> --set-session-id <sid>`, plus `api session-end`. That is exactly the native extension choreography; no private core API, SDK, hook scraper, or RPC bridge is required.",
    "SPT public manifest reference: https://sabermage.github.io/spt-releases/harness-contract/manifest.html. It says `[adapter]` is the only mandatory section; `hostable_types`, `host_binaries`, `[session.self]`, `[session.resume]`, `[session.psyche_init]`, `[session.psyche_resume]`, `[session.echo_commune]`, `[history]`, and `[digest]` are public declarative seams. It explicitly defines `psyche_init` as the LiveAgent go-live gate and `psyche_resume` as the sole bounded driven role.",
    "Machine schema: https://sabermage.github.io/spt-releases/manifest.schema.json. Direct schema inspection shows root `required = [\"adapter\"]`; adapter fields include `hostable_types`, `shortcut_basename`, `host_binaries`; session roles include self/resume/psyche_init/psyche_resume/echo_commune; `UpdateAvenue` includes `gh_release`; hooks/inject/message-idle-translation/identity/update.post are optional. Therefore deleting those obsolete optional tables is schema-valid, while retaining `[update] avenue=\"gh_release\"` is the public update contract."
  ],
  "safe_delete_map": [
    "`plugin/omps/**` — delete the whole Claude plugin: `.claude-plugin/plugin.json`, `hooks/{hooks.json,dispatch.sh}`, `bootstrap.{sh,ps1}`, and skill directories `{commune,force-stop,list-agents,live,ready,send,setup,signoff,subnet,version}`. Despite the `omps` name, every artifact is Claude plugin metadata, Claude hook dispatch, UPS/additionalContext prose, cplugs installation, or `/omps:*` routing. No part is used by native OMP extension loading.",
    "`tools/claude-spt/src/{bridge.rs,hook.rs,interrupt_watch.rs,translate.rs,tag_scan.rs,post_update.rs,launch.rs,digest.rs,history.rs,echo_commune.rs,psyche.rs}` — delete. They implement respectively the RPC bridge; Claude hook runtime; hookless interrupt recovery; idle PTY keystroke translation; Claude-output `@<...>`/commune scanning; cplugs post-update; Claude/ccs/cc-launcher spawn; and Claude transcript/history/commune/Psyche variants. Do not leave aliases or fallback dispatch routes.",
    "`ci/{hooks, idle-translate, launcher, psyche, psyche-download, setup, subnet}/**` — delete current contents. Exact files: `hooks/poll-int.sh`; `idle-translate/{build.sh,translate-proof-int.sh,wake-survival-int.sh}`; `launcher/bind-int.sh`; `psyche/{build.sh,live-relay-int.sh}`; `psyche-download/psyche-download-int.sh`; `setup/activate-int.sh`; `subnet/multi-subnet-bringup-int.sh`. These prove Claude hooks/translation/cc launcher/plugin activation/real-Claude Psyche/cross-node behavior forbidden by the ratified architecture.",
    "`ci/acceptance/{lib.sh,run-acceptance.sh}` — delete as implemented; both drive a real Claude session and carry Claude collision identity. If an integration gate remains, replace from scratch with a same-node native OMP launch/extension contract. Do not preserve the existing helper as a compatibility layer and do not add a cross-node adapter test.",
    "`ci/publish/{package-skeleton.sh,validate-skeleton.sh}` — delete; they publish/validate the cplugs Claude plugin skeleton.",
    "`tests/{bridge-acceptance.sh,hooks-dispatch.sh,msys-hazard.sh,skeleton-validate.sh,acceptance-harness.sh}` — delete. They test RPC fake-OMP bridging, Claude hook dispatch, Claude/MSYS slash args, plugin skeleton, and Claude acceptance identity.",
    "`SCOPE.md:1-216` — safe to delete as active scope. It is wholly the locked `spt-claude-code`/plugin/UPS/ccs/cc-launcher parity ledger. If historical retention is desired, move it out of active trace roots and prepend an unambiguous `RETIRED CLAUDE ADAPTER SCOPE — superseded by ADR-0007/native OMP extension`; remove all trace tags. No section is normative OMP scope.",
    "`docs/OMP-BRIDGE-FIELD-ISSUES.md:1-193` — safe to delete. It is an RPC bridge incident report and ends by declaring Style-A RPC sound. Historical retention is acceptable only with `RETIRED EXPERIMENT — RPC bridge not shipped; superseded by native OMP extension` at the top and removal from active indexes/trace evidence. Its internal ledger/process observations must not be cited as current public-contract evidence."
  ],
  "retain_rewrite_map": [
    "`OMP-ADAPTER-PLAN.md` — retain but rewrite as the active native plan. Delete/rewrite `:9-13` ACP/RPC stepping-stone premise; `:15-45` RPC-decisive finding; `:47-60` retained Style-A bridge; `:74-88` seam rows for omps plugin/bridge/bridge-Psyche; `:103-109` bridge identity; `:111-130` bridge/cross-node slices; `:156-176` RPC open questions; and `:184-186` RPC acceptance. Preserve the native PTY rationale at `:62-72`, transcript/digest design at `:90-101`, public-surface validation at `:178-183`, and `gh_release`. Rewrite the acceptance to native OMP + explicit extension, local/disposable identity, no live-model assertion, no cross-node adapter test.",
    "`docs/KNOWN-HAZARDS.md` — retain only OMP-relevant invariants. Rewrite §2.1 (`:61`) as disposable local endpoint/test isolation, not nested Claude; §2.2 (`:87`) as bounded headless OMP Psyche permissions; §2.5 (`:210`) as identity env scrubbing for OMP child roles. Replace §2.9 (`:350`) with OMP extension partial-event buffering/framing and rename its requirement. Retire/delete §1.1 (`:37`, Claude/MSYS slash flags), §2.3 (`:115`, Claude `/clear` hook boundary), §2.4 (`:154`, checkpoint/clear hook race), §2.6 (`:233`, resident Claude Psyche host), §2.7 (`:288`, idle translation), §2.8 (`:321`, PreToolUse additionalContext), §3.1 (`:373`, hook_cmd/dispatch lockstep), §3.2 (`:404`, cached Claude plugin). Retired entries must lose trace tags.",
    "`adapter/omp-spt.toml` — retain active OMP declarations but aggressively prune. Keep `[adapter]` with `hostable_types=[\"LiveAgent\",\"ReadyAgent\"]`, `shortcut_basename=\"omp\"`, and only the real harness basename (`host_binaries=[\"omp\"]`, not bridge basename `omp-spt`); keep `[update]` `:478-489` using `gh_release`; keep `[session]` `:604-606`; OMP roles `[session.psyche_init]` `:632`, `[session.psyche_resume]` `:662`, `[session.self]` `:705`, `[session.resume]` `:732`, `[session.echo_commune]` `:759`; `[history]` `:779`; `[env.SPT_ENDPOINT_ID]` `:799`; `[digest]` `:875`; and the minimal adapter label. Delete `[update.post]` `:491-506`; all `[hooks.*]` `:508-586`; `[identity]` `:588-593`; `[env.SPT_INJECT_VERIFY_ECHO]` `:803-815`; `[inject]` `:817-822`; `[message-idle-translation-binary]` `:824-846`; `[env.CLAUDE_CONFIG_DIR]` `:882-893`; hook/UPS/plugin `[strings]` after the label, `[strings.notice]`, `[strings.skills]`, `[strings.briefs]`, and all hints `:914-1004`. Rewrite OMP role comments that still say Claude/RPC/plugin. The large inherited Claude changelog/commentary `:39-447` is non-operative noise; remove from the active manifest or clearly isolate it as non-normative lineage elsewhere.",
    "`traceable-reqs.toml` — retain, but replace the Claude-seeded registry. Remove `plugin`, deleted CI dirs, and `SCOPE.md` from `[scan].roots`; collapse redundant nested CI roots under `ci`; add `OMP-ADAPTER-PLAN.md` explicitly if its tag is intended to count. The scanner currently ignores TOML evidence, so tags inside `adapter/omp-spt.toml` and `traceable-reqs.toml` do not satisfy coverage and must not be relied upon.",
    "`tools/claude-spt/src/{digest_omp.rs,history_omp.rs,echo_commune_omp.rs,psyche_omp.rs,launch_omp.rs,main.rs}` — retain OMP implementations and rename the crate/path to `tools/omp-spt`. Prune `main.rs:23-38,45-60,64-79,85-103,107-148,157-200` to only OMP subcommands: `digest-omp`, `history-omp`, `echo-commune-omp`, `psyche-omp`, `launch-omp` (optionally simplify names after clean cutover). Before deleting `bridge.rs`, replace `psyche_omp.rs:223` and `echo_commune_omp.rs:148` calls to `crate::bridge::omp_bin()` with the validated resolver already owned by `launch_omp.rs:53-263`; do not retain bridge as a utility module.",
    "Retain/rebrand CI: `ci/run-gates.sh`, `ci/install-hooks.sh`, `ci/git-hooks/pre-push`, `ci/lib/spt-bus.sh`, `ci/docs/{check-docs.sh,gen-llms.sh}`, `ci/manifest/{check-manifest.sh,validate_manifest.py,registration-int.sh}`, `ci/publish/{package-adapter.sh,release-acquire-int.sh,unwrap-changelog.py}`, `ci/digest/{build.sh,digest-proof-int.sh,sample.jsonl}`. Rewrite `claude-spt`, `.claude`, `cplugs`, plugin-cache discovery, and `SPTC_*` CI variables. `spt-bus.sh` must stop probing Claude/cplugs plugin caches and resolve only public `spt` installation/PATH. Replace `ci/digest/sample.jsonl` with OMP JSONL. Keep `unwrap-changelog.py` and `check-docs.sh` unchanged where generic.",
    "Retain/rewrite tests: `tests/omp-extension.mjs` and `tests/native-launch-manifest.sh` are the primary native lifecycle/launch contracts; keep. Keep but prune/rebrand `tests/manifest-shortcut.sh` (remove update.post, hook/inject/idle-translate/verify-echo/Claude env assertions), `tests/manifest-schema.sh`, `tests/adapter-archive.sh`, `tests/ci-gates.sh`, `tests/docs-gen.sh`. `tests/manifest-shortcut.sh` and `native-launch-manifest.sh` may remain separate only as broad manifest-vs-focused launch guards; avoid duplicate assertions.",
    "`ci/manifest/registration-int.sh`, `ci/publish/release-acquire-int.sh`, and any replacement acceptance remain same-node/public-CLI tests. The ratified no-cross-node decision specifically removes `ci/subnet/multi-subnet-bringup-int.sh` and the plan's `from another node` acceptance claim; do not replace them with another cross-node adapter test."
  ],
  "trace_cutover": {
    "current_check": "`traceable-reqs check --json` currently exits 1 with 72/76 complete. Missing: `REQ-DIST-IDLE-TRANSLATE.unit` (retire), `REQ-DIST-NAME-UNIFY.unit` (rewrite + add native unit), `REQ-DIST-SESSION-RESUME.unit` (add native unit), `REQ-INJECT-VERIFY-ECHO.unit` (retire). The apparent 72 complete count must not be preserved by leaving stale tags.",
    "retire_requirement_ids": [
      "REQ-DIST-PLUGIN-SKELETON",
      "REQ-DIST-BOOTSTRAP-INSTALL",
      "REQ-DIST-HOOKS-API",
      "REQ-DIST-HOOK-BINARY",
      "REQ-CC-LAUNCHER-BIND",
      "REQ-DIST-WHOAMI-JSON",
      "REQ-SKILL-LIVE",
      "REQ-UPS-INJECTION",
      "REQ-DIST-SESSIONSTART-BRIEF",
      "REQ-HAZARD-MSYS-PATHCONV",
      "REQ-HAZARD-PSYCHE-HOST-THRASH",
      "REQ-HAZARD-HOOKCMD-DISPATCH-LOCKSTEP",
      "REQ-PARITY-AUDIT",
      "REQ-SKILL-SUBNET",
      "REQ-CCS-PROFILES",
      "REQ-SKILL-VERSION",
      "REQ-SETUP-SUBNET",
      "REQ-SETUP-CCS",
      "REQ-SETUP-ACTIVATE",
      "REQ-DIST-IDLE-TRANSLATE",
      "REQ-DIST-IDLE-MULTILINE",
      "REQ-DIST-CHECKPOINT-COMMUNE",
      "REQ-TAG-PEER-MESSAGING",
      "REQ-COMMUNE-OUTPUT-SHORTCUT",
      "REQ-HAZARD-SEND-STATUS-STDERR",
      "REQ-DIST-RESUME-CONTEXT",
      "REQ-DIST-PRETOOL-POLL",
      "REQ-DIST-WORKER-PERCH-REACH",
      "REQ-DIST-SKELETON-THIN",
      "REQ-DIST-CCS-PLUGIN-FOLLOWUP",
      "REQ-DIST-RC-STARTUP",
      "REQ-DIST-BOUNDARY-ROTATE",
      "REQ-HAZARD-STALE-PLUGIN-RESOLUTION",
      "REQ-HAZARD-SESSION-PIN-WEDGE",
      "REQ-HAZARD-CHECKPOINT-CLEAR-RACE",
      "REQ-HAZARD-EMPTY-RESPONSE-COMMIT",
      "REQ-DIST-BOUNDARY-RENAME",
      "REQ-DIST-WORKER-LIFECYCLE",
      "REQ-DIST-REACHABILITY-NOTICE",
      "REQ-HAZARD-PRETOOL-CONTEXT-ENVELOPE",
      "REQ-SKILL-LIVE-SPT-HOSTED-BRANCH",
      "REQ-HAZARD-RESUME-REBIND-WEDGE",
      "REQ-INJECT-VERIFY-ECHO",
      "REQ-HAZARD-STUCK-ACTIVE-NO-IDLE",
      "REQ-HAZARD-STOPFAILURE-STUCK-BUSY",
      "REQ-HAZARD-INTERRUPT-STUCK-BUSY"
    ],
    "rename_or_fold": [
      "`REQ-CI-OWL-DISCOVERY` -> `REQ-CI-SPT-DISCOVERY`; strip Claude/cplugs cache semantics.",
      "`REQ-DIST-NAME-UNIFY` may keep the ID but title/evidence must become omp-spt-only; current `docs/adr/0005-name-unification.md:1` is Claude-name evidence.",
      "`REQ-HAZARD-PERCH-COLLISION` -> local disposable endpoint/test isolation (or retire); it must not demand a cross-node adapter test.",
      "`REQ-HAZARD-DANGLING-FRAME-LOUD` -> `REQ-OMP-EVENT-STREAM-FRAMING`; current Claude drain-renderer semantics do not match OMP's buffered stream parser.",
      "`REQ-SUPERVISOR-RELAY-RESPAWN` -> `REQ-OMP-LISTENER-RESTART`; tag `adapter/strings/omp-spt.mjs` and `tests/omp-extension.mjs:407-445`.",
      "Fold the observable state invariants from retired `REQ-HAZARD-STUCK-ACTIVE-NO-IDLE`, `REQ-HAZARD-STOPFAILURE-STUCK-BUSY`, and `REQ-HAZARD-INTERRUPT-STUCK-BUSY` into `REQ-OMP-NATIVE-TUI`/native extension lifecycle evidence, not into legacy hook/interrupt requirements.",
      "Rewrite `REQ-CI-ACCEPTANCE` as same-node native launch/extension acceptance; no cross-node stage. Rewrite `REQ-DIST-INSTALL-UX` as `.spt`/`gh_release` adapter install, not plugin bootstrap."
    ],
    "counted_tags_that_survive_or_need_migration": [
      "`REQ-OMP-NATIVE-TUI`: `docs/adr/0007-native-omp-tui-hosts-spt-extension.md:17` doc; `adapter/strings/omp-spt.mjs:139` impl; `tests/manifest-shortcut.sh:36`, `tests/native-launch-manifest.sh:20`, `tests/omp-extension.mjs:216` unit. All are valid native evidence.",
      "`REQ-DIST-MANIFEST-SCHEMA`: `docs/adr/0001-distribution-splits-by-volatility.md:94` doc (rewrite stale distribution wording); `ci/manifest/check-manifest.sh:6`, `validate_manifest.py:12` impl; `registration-int.sh:6,89` int; `tests/manifest-schema.sh:5` unit.",
      "`REQ-DIST-SHORTCUT-BASENAME`: `docs/adr/0001...:103` doc and `tests/manifest-shortcut.sh:6` unit survive after rewrite; delete false impl/unit tags `tools/claude-spt/src/hook.rs:28,218,1604`. Because TOML is unscanned and the field is declarative, change required stages to doc+unit or add real native evidence rather than inventing an impl tag.",
      "`REQ-DIST-DIGEST-EXTRACTOR`: keep `tools/claude-spt/src/digest_omp.rs:26`, `ci/digest/{build.sh:10,digest-proof-int.sh:4}`; delete Claude tags `digest.rs:37,330`; add unit tag in `digest_omp.rs` test block `:272-636`.",
      "`REQ-DIST-DIGEST-FETCHER`: all current counted tags are Claude (`digest.rs:269,461,475`) except `ci/digest/digest-proof-int.sh:19`; add impl+unit tags to the OMP locator/fetcher in `digest_omp.rs` and its tests.",
      "CI requirements: `REQ-CI-GATES` (`docs/CI.md:12`, `ci/run-gates.sh:3`, `tests/ci-gates.sh:19`), `REQ-CI-MANUAL` (`docs/CI.md:14`, `run-gates.sh:4`), `REQ-CI-TRIGGER` (`docs/CI.md:15`, `install-hooks.sh:3`), `REQ-CI-BUS` (`docs/CI.md:16`, `ci/lib/spt-bus.sh:5`), and renamed `REQ-CI-OWL-DISCOVERY` (`docs/CI.md:13`, `spt-bus.sh:4`, `tests/ci-gates.sh:8`) can keep tags only after Claude/plugin paths and naming are rewritten.",
      "`REQ-CI-ACCEPTANCE` currently counts only old Claude evidence: `docs/CI.md:17`, `ci/acceptance/lib.sh:4`, `run-acceptance.sh:4,8`. Replace all with a local native OMP acceptance or deactivate until one exists.",
      "`REQ-HAZARD-PERCH-COLLISION` currently counts `KNOWN-HAZARDS.md:63`, `ci/acceptance/lib.sh:12,24`, `run-acceptance.sh:23`, `tests/acceptance-harness.sh:8`; all implementation/test evidence is deleted. Rename/rewrite and re-evidence locally or retire.",
      "`REQ-HAZARD-PSYCHE-PERMS-DEADLOCK`: docs `KNOWN-HAZARDS.md:89` and `docs/adr/0003...:2` need OMP wording; delete Claude `psyche.rs:138,514`; add OMP impl/unit tags to `psyche_omp.rs` and its `turn_is_readonly_sessionless_and_quiet` test.",
      "`REQ-HAZARD-PSYCHE-IDENTITY-ENV`: keep/rewrite doc `KNOWN-HAZARDS.md:212` and `tests/manifest-shortcut.sh:80`; ensure it asserts OMP role env removal, not Claude identity.",
      "`REQ-PSYCHE-EPHEMERAL-SHIM`: delete all `psyche.rs` tags at `16,53,58,112,119,157,170,179,191,200,216,227,236,255,285,307,317,351,405,414,425,437,444,464,474,484,494,505,527,539`; retain `psyche_omp.rs:32` impl and add unit tags in `psyche_omp.rs:258-340`.",
      "`REQ-PSYCHE-CONTEXT-FILE-INDIRECTION`: all current tags are Claude `psyche.rs:104,266,381,397`; move impl/unit evidence to `psyche_omp.rs` argument/prompt behavior and tests.",
      "`REQ-DOCS-SITE`: current tags `docs-site/src/{SUMMARY.md:2,introduction.md:1,quickstart.md:2,reference/harness-contract.md:2}` + `ci/docs/check-docs.sh:11`. These are false evidence until the pages are rebranded/native. `REQ-DOCS-DRIFT` tags `docs/DOCS-STRATEGY.md:45`, `check-docs.sh:4`, `gen-llms.sh:4`, `tests/docs-gen.sh:3` survive after generator content is rewritten.",
      "`REQ-DIST-ADAPTER-RELEASE`: `docs/RELEASE-RUNBOOK.md:172`, `ci/publish/package-adapter.sh:6`, `release-acquire-int.sh:7`, `tests/adapter-archive.sh:7` survive after rebrand. `REQ-DIST-ADAPTER-PEROS`: remove stale plugin setup doc `adapter/strings/skills/setup.md:30`; retain/rewrite `RELEASE-RUNBOOK.md:188`, package script `:6`, archive test `:8`.",
      "`REQ-DIST-SESSION-RESUME`: currently no counted tags and is failing; add impl/unit tags to `launch_omp.rs:40-50,332-352` and/or `tests/native-launch-manifest.sh` native `-r` assertion.",
      "`REQ-COMMUNE-CONTEXT-TIER-SLICING`: delete Claude `echo_commune.rs:83,405`; add tags to `echo_commune_omp.rs:43-57,200-216`.",
      "`REQ-DIST-UPDATE-MESSAGE`: all current counted tags are obsolete `post_update.rs:30,69,109,132,218,230,424,433,509`. Delete them; the surviving evidence is the native `[update].message` plus a manifest contract unit test. Since TOML is ignored, use doc+unit stages rather than retaining post-update code solely for trace coverage.",
      "`REQ-DIST-BINARY-CONSOLIDATE`: keep/rewrite `ci/digest/build.sh:9`, `digest-proof-int.sh:7`, `main.rs:21,43,152`; delete `ci/psyche/build.sh:9` and `post_update.rs:30,388`. Retag the pruned OMP-only dispatcher.",
      "`REQ-DIST-NAME-UNIFY`: current `docs/adr/0005-name-unification.md:1` is Claude history and `package-adapter.sh:6` needs rebrand; add a native unit assertion. The same line in `traceable-reqs.toml:360` does not count as evidence.",
      "`REQ-HISTORY-FETCHER`: delete Claude `history.rs:1,24,46,66,103`; retain `history_omp.rs:6` and add unit tag at `history_omp.rs:99-119`.",
      "`REQ-SESSION-ECHO-COMMUNE`: delete Claude `echo_commune.rs:2,32,42,64,83,108,127,150,184,198,225,237,253,314` and `hook.rs:1443,1501`; retain `echo_commune_omp.rs:20` and add unit tags at `:167-218`.",
      "Renamed `REQ-HAZARD-DANGLING-FRAME-LOUD`: delete `KNOWN-HAZARDS.md:352` old doc and `hook.rs:138,143,181,1552,1574`; re-evidence OMP parser/reply framing at `tests/omp-extension.mjs:175-215`.",
      "Renamed `REQ-SUPERVISOR-RELAY-RESPAWN` currently has no tags; use native extension implementation and `tests/omp-extension.mjs:407-445`. `REQ-DIST-INSTALL-UX` currently only counts stale `README.md:2`; rewrite or deactivate until OMP install docs exist."
    ],
    "outside_target_false_positive_warning": "Several currently counted tags are outside the requested edit target but will continue to make trace checks lie unless audited: `docs/adr/0001...`, `docs/adr/0003...`, `docs/adr/0005...`, `docs/CI.md`, `docs/DOCS-STRATEGY.md`, `docs/RELEASE-RUNBOOK.md`, `docs-site/src/**`, `adapter/strings/skills/setup.md`, and `README.md`. Only `docs/adr/0007...`, `adapter/strings/omp-spt.mjs`, and native tests are already aligned. Historical ADRs may remain, but any retired Claude text must be marked retired and must not carry active evidence tags."
  },
  "verification": [
    "Read-only; no repository edits performed.",
    "Enumerated all requested paths with glob and legacy-term scans.",
    "Ran `traceable-reqs 0.1.4` and `traceable-reqs check --json`; extracted every counted evidence tag for all 30 requirements classified to survive/rename, plus all 46 requirements classified for retirement.",
    "Validated decisions only against published OMP documentation and the published spt-core harness docs/schema; no spt-core source was inspected or suggested."
  ]
}