<!-- task=m-iop-agent-chronos-extraction-decoupling/02+01_disposition plan=2 tag=REVIEW_REVIEW_TEST -->

# Make retained disposition actions executable

## For the Implementing Agent

Fill every implementation-owned section in `CODE_REVIEW-cloud-G04.md` after changing the manifest and running the exact verification commands. Keep the active PLAN/review pair in place and report ready for review; only the code-review agent may append a verdict, archive logs, write `complete.log`, or move task artifacts. If blocked, record only the exact blocker, attempted commands/output, and resume condition in implementation-owned evidence fields. Do not ask the user, call user-input tools, create control-plane stop files, or classify the next state.

## Background

The manifest now covers all 293 rows and fixes the first mixed-file disposition set, but its retained actions remain non-executable. Every current `retain-generic` + `none` row still contains an Agent-named surface or renamed package reference, and the shared runtime contract is still scheduled for whole-file removal. This follow-up repairs those actions and adds a full-manifest oracle that prevents the same gap from passing again.

## Archive Evidence Snapshot

- Prior plan: `agent-task/m-iop-agent-chronos-extraction-decoupling/02+01_disposition/plan_local_G04_1.log`.
- Prior review: `agent-task/m-iop-agent-chronos-extraction-decoupling/02+01_disposition/code_review_cloud_G04_1.log`.
- Verdict: FAIL; Required=2, Suggested=0, Nit=0.
- Affected file: `scripts/fixtures/iop-agent-chronos-ownership-manifest.tsv`.
- Reviewer evidence: all reported commands reproduced; 63 `retain-generic` + `none` rows contain Agent coupling, 49 of them are Node import consumers, and `agent-contract/inner/agent-runtime.md` remains `transfer` + `remove`. The fixed path-column digest is `9b8864dfc4fe8c6aa87a28860c9f50b5cf2a82a0b0fe6145bdc2c8df6e92146e`.
- Roadmap carryover: SDD S01 and Milestone Task `inventory` still require a complete actionable disposition audit. This child still does not claim the Milestone Task complete and therefore has no `Roadmap Targets` section.

## Analysis

### Files Read

- `agent-roadmap/phase/automation-runtime-bridge/PHASE.md`
- `agent-roadmap/phase/automation-runtime-bridge/milestones/iop-agent-chronos-extraction-decoupling.md`
- `agent-roadmap/sdd/automation-runtime-bridge/iop-agent-chronos-extraction-decoupling/SDD.md`
- `agent-spec/runtime/iop-agent-cli-runtime.md`
- `agent-spec/runtime/edge-node-execution.md`
- `agent-contract/index.md`
- `agent-contract/inner/iop-agent-cli-runtime.md`
- `agent-contract/inner/agent-runtime.md`
- `scripts/fixtures/iop-agent-chronos-ownership-manifest.tsv`
- `agent-task/archive/2026/08/m-iop-agent-chronos-extraction-decoupling/01_asset_universe/complete.log`
- `agent-task/m-iop-agent-chronos-extraction-decoupling/02+01_disposition/plan_local_G04_0.log`
- `agent-task/m-iop-agent-chronos-extraction-decoupling/02+01_disposition/code_review_cloud_G04_0.log`
- `agent-task/m-iop-agent-chronos-extraction-decoupling/02+01_disposition/PLAN-local-G04.md`
- `agent-task/m-iop-agent-chronos-extraction-decoupling/02+01_disposition/CODE_REVIEW-cloud-G04.md`

### SDD Criteria

- SDD: `agent-roadmap/sdd/automation-runtime-bridge/iop-agent-chronos-extraction-decoupling/SDD.md`; status approved, lock released.
- Targeted scenario: S01, Milestone Task `inventory`; supporting retained-boundary scenario: S04, Milestone Task `retain-node`.
- S01 Evidence Map requires every active asset to connect transfer/removal responsibility without duplicating or deleting the generic Node boundary. S04 identifies the Node/shared-provider contract that must remain under neutral names.
- These rows require `rewrite` for every retained file that still names an Agent surface, a neutral successor for the shared runtime contract, and an audit that fails on retained `none` actions or path-universe drift.

### Verification Context

- No handoff was supplied. Repository-native evidence came from the approved SDD, current contracts/specs, the manifest, the exact predecessor `complete.log`, and both archived/current review loops.
- Local preflight: `go version` returned `go1.26.2 linux/arm64`; `go env GOMOD` returned `/config/workspace/iop-s1/go.mod`.
- Fresh reviewer commands reproduced the claimed 293 rows, full S01 coverage, 23-path mixed disposition result, and whitespace PASS.
- A full retained-action scan found `retain_none=63`; all 49 Node rows in that set import `iop/packages/go/agentruntime` or `iop/packages/go/agentprovider/cli`, while the 14 non-Node rows contain Agent surface or soon-stale Agent path references.
- Preconditions: exact predecessor PASS exists at `agent-task/archive/2026/08/m-iop-agent-chronos-extraction-decoupling/01_asset_universe/complete.log`.
- Constraints: modify only manifest semantics and review evidence; do not change production code, contracts, specs, roadmap state, or the 293-path universe.
- External verification is not applicable. Confidence is high because the failure is a deterministic contradiction between `iop_action=none`, live source references, and SDD S01/D02.

### Test Coverage Gaps

- Existing product tests do not validate this TSV ownership contract and remain unchanged.
- The prior awk audit accepts unsafe `none` actions because it checks only disposition and successor for the 23 mixed paths.
- Add deterministic full-manifest checks for zero retained `none`, the shared runtime contract successor, exact post-fix totals, S04/S05 eligibility, and the fixed path-column digest.

### Symbol References

- No production symbol is changed in this child.
- Future neutralization references already present in the manifest are `packages/go/agentruntime/**` to `packages/go/execution/**` and `packages/go/agentprovider/cli/**` to `packages/go/provider/cli/**`.
- The current manifest includes 49 Node source/test consumers of those old import paths; their same-path retained rows must therefore use `rewrite`.

### Split Judgment

- Keep one plan. The action assignment and its exact-count/path-digest oracle form one compact manifest invariant; splitting would leave a semantically unsafe but structurally passing intermediate state.
- Encoded predecessor `01_asset_universe` is satisfied by `agent-task/archive/2026/08/m-iop-agent-chronos-extraction-decoupling/01_asset_universe/complete.log`.

### Scope Rationale

- Modify only the disposition manifest and implementation-owned review evidence.
- Do not perform bundle creation, source deletion, package moves, contract/spec/rule rewrites, Flutter changes, Node import changes, or roadmap updates. This child records the exact later responsibility for those operations.

### Final Routing

- `evaluation_mode=isolated-reassessment`; finalizer=`finalize-task-policy.sh`, mode=`pair`.
- Build closures are all true; scores=`1,0,1,1,1`, grade=`G04`, base=`local-fit`, route=`recovery-boundary`, lane=`cloud`.
- Review closures are all true; scores=`1,0,1,1,1`, route=`official-review`, lane=`cloud`, grade=`G04`.
- `large_indivisible_context=false`; matched loop risk=`boundary_contract`; loop risk count=`1`.
- `review_rework_count=2`; `evidence_integrity_failure=false`; recovery boundary matched; no capability gap.
- Canonical files: `PLAN-cloud-G04.md`, `CODE_REVIEW-cloud-G04.md`.

## Dependencies and Execution Order

1. Treat `agent-task/archive/2026/08/m-iop-agent-chronos-extraction-decoupling/01_asset_universe/complete.log` as the exact satisfied predecessor; do not search sibling archives.
2. Repair the full retained-action set before running the exact-count and path-digest audits.

## Implementation Checklist

- [ ] Change all 63 current `retain-generic` + `none` rows to `rewrite`, preserving their existing path successors and evidence maps.
- [ ] Reclassify `agent-contract/inner/agent-runtime.md` as retained generic S04 evidence with `rewrite` and neutral successor `agent-contract/inner/execution-runtime.md`.
- [ ] Run the structural, S01, full action/evidence-family, path-digest, and whitespace audits and record exact output.
- [ ] Fill implementation-owned sections in CODE_REVIEW-*-G??.md with actual implementation notes and verification output.

### [REVIEW_REVIEW_TEST-1] Close retained action semantics

**Problem**

The manifest claims no later IOP action for files that must change when the Agent runtime leaves IOP, and it deletes the contract for the generic Node boundary:

```text
# scripts/fixtures/iop-agent-chronos-ownership-manifest.tsv:4-6
README.md<TAB>document<TAB>retain-generic<TAB>source/README.md<TAB>none<TAB>README.md<TAB>S01,S03
agent-contract/index.md<TAB>contract<TAB>retain-generic<TAB>source/agent-contract/index.md<TAB>none<TAB>agent-contract/index.md<TAB>S01,S03
agent-contract/inner/agent-runtime.md<TAB>contract<TAB>transfer<TAB>source/agent-contract/inner/agent-runtime.md<TAB>remove<TAB>-<TAB>S01
```

The same issue affects all 49 retained Node rows, including `apps/node/internal/node/runtime_bridge.go:131` in the manifest, even though the source imports the package being renamed.

**Solution**

Set `rewrite` on every retained same-path consumer/document/schema that still carries Agent coupling. Preserve rename actions on the generic packages themselves. Retain and rewrite the shared contract under a non-Agent successor:

```text
# after examples
README.md<TAB>document<TAB>retain-generic<TAB>source/README.md<TAB>rewrite<TAB>README.md<TAB>S01,S03
agent-contract/inner/agent-runtime.md<TAB>contract<TAB>retain-generic<TAB>source/agent-contract/inner/agent-runtime.md<TAB>rewrite<TAB>agent-contract/inner/execution-runtime.md<TAB>S01,S04
apps/node/internal/node/runtime_bridge.go<TAB>source<TAB>retain-generic<TAB>source/apps/node/internal/node/runtime_bridge.go<TAB>rewrite<TAB>apps/node/internal/node/runtime_bridge.go<TAB>S01,S04
```

The resulting exact totals are `transfer=146 retain-generic=137 reference=10 remove=0` and `action_remove=146 action_rename=64 action_rewrite=73 action_none=10`; the remaining `none` rows are the ten provenance-only references.

**Modified Files and Checklist**

- [ ] `scripts/fixtures/iop-agent-chronos-ownership-manifest.tsv` — repair 63 retained actions, retain the shared contract under an exact neutral successor, and preserve the fixed path universe.

**Test Strategy**

- Do not add product tests because no production behavior changes.
- Use deterministic awk and digest audits over the TSV. The regression oracle rejects any retained `none`, the unsafe shared-contract disposition, evidence-family drift, total drift, and path-universe drift.

**Verification**

- Run all commands in `Final Verification`; require the exact totals above, zero semantic errors, the fixed path digest, and no whitespace errors.

## Modified Files Summary

| File | Item |
|------|------|
| `scripts/fixtures/iop-agent-chronos-ownership-manifest.tsv` | REVIEW_REVIEW_TEST-1 |
| `agent-task/m-iop-agent-chronos-extraction-decoupling/02+01_disposition/CODE_REVIEW-cloud-G04.md` | REVIEW_REVIEW_TEST-1 evidence |

## Final Verification

1. `awk 'BEGIN {in_summary=0} /^## Summary$/ {in_summary=1; next} in_summary && /PASS/ {found=1} END {printf "predecessor_pass=%d\n", found+0; exit found?0:1}' agent-task/archive/2026/08/m-iop-agent-chronos-extraction-decoupling/01_asset_universe/complete.log` — prints `predecessor_pass=1`.
2. `awk -F '\t' 'NR==1 {expected="path\tkind\tdisposition\tbundle_path\tiop_action\tneutral_successor\tevidence_map"; if ($0!=expected) bad_header++; next} {rows++; if (NF!=7) bad_fields++; if (seen[$1]++) duplicates++; if ($4!="source/" $1) bad_bundle++; if (!($3=="transfer" || $3=="retain-generic" || $3=="remove" || $3=="reference")) bad_disposition++; if ($3=="transfer" && !($5=="remove" && $6=="-")) bad_pair++; if ($3=="remove" && !($5=="remove" && $6=="-")) bad_pair++; if ($3=="reference" && !($5=="none" && $6=="-")) bad_pair++; if ($3=="retain-generic" && !(($5=="rename" || $5=="rewrite" || $5=="none") && $6!="" && $6!="-")) bad_pair++} END {printf "rows=%d bad_header=%d bad_fields=%d duplicates=%d bad_bundle=%d bad_disposition=%d bad_pair=%d\n", rows, bad_header+0, bad_fields+0, duplicates+0, bad_bundle+0, bad_disposition+0, bad_pair+0; exit (rows!=293 || bad_header || bad_fields || duplicates || bad_bundle || bad_disposition || bad_pair)}' scripts/fixtures/iop-agent-chronos-ownership-manifest.tsv` — prints 293 rows and zero errors.
3. `awk -F '\t' 'NR==1 {next} {rows++; if ($7 ~ /(^|,)S01(,|$)/) covered++; else {missing++; print "MISSING_S01 " $1}} END {printf "rows=%d s01=%d missing_s01=%d\n", rows, covered+0, missing+0; exit (rows!=293 || covered!=293 || missing)}' scripts/fixtures/iop-agent-chronos-ownership-manifest.tsv` — prints `rows=293 s01=293 missing_s01=0`.
4. `awk -F '\t' 'NR==1 {next} {rows++; disp[$3]++; action[$5]++; if ($3=="retain-generic" && $5=="none") {bad_retained_none++; print "BAD_RETAIN_NONE " $1} if ($1=="agent-contract/inner/agent-runtime.md") {contract++; if (!($3=="retain-generic" && $5=="rewrite" && $6=="agent-contract/inner/execution-runtime.md" && $7=="S01,S04")) {bad_contract++; print "BAD_CONTRACT " $0}} if ($7 ~ /(^|,)S04(,|$)/ && !($1=="agent-contract/inner/agent-runtime.md" || $1 ~ /^apps\/node\// || $1 ~ /^packages\/go\/(agentruntime|agentprovider\/cli)\//)) {bad_s04++; print "BAD_S04 " $1} if ($7 ~ /(^|,)S05(,|$)/ && !($3=="reference" && ($1=="HANDOFF.md" || $1 ~ /^agent-roadmap\//))) {bad_s05++; print "BAD_S05 " $1}} END {printf "rows=%d bad_retained_none=%d contract=%d bad_contract=%d bad_s04=%d bad_s05=%d transfer=%d retain-generic=%d reference=%d remove=%d action_remove=%d action_rename=%d action_rewrite=%d action_none=%d\n", rows, bad_retained_none+0, contract+0, bad_contract+0, bad_s04+0, bad_s05+0, disp["transfer"]+0, disp["retain-generic"]+0, disp["reference"]+0, disp["remove"]+0, action["remove"]+0, action["rename"]+0, action["rewrite"]+0, action["none"]+0; exit (rows!=293 || bad_retained_none || contract!=1 || bad_contract || bad_s04 || bad_s05 || disp["transfer"]!=146 || disp["retain-generic"]!=137 || disp["reference"]!=10 || disp["remove"]!=0 || action["remove"]!=146 || action["rename"]!=64 || action["rewrite"]!=73 || action["none"]!=10)}' scripts/fixtures/iop-agent-chronos-ownership-manifest.tsv` — prints the exact totals and zero semantic errors.
5. `test "$(awk -F '\t' 'NR>1 {print $1}' scripts/fixtures/iop-agent-chronos-ownership-manifest.tsv | sha256sum | awk '{print $1}')" = "9b8864dfc4fe8c6aa87a28860c9f50b5cf2a82a0b0fe6145bdc2c8df6e92146e" && echo 'path_digest=9b8864dfc4fe8c6aa87a28860c9f50b5cf2a82a0b0fe6145bdc2c8df6e92146e'` — exits 0 and prints the fixed digest.
6. `git diff --check` — exits 0.

Repository-internal Edge/Node diagnostics, auxiliary E2E smoke, and full-cycle runtime execution are not run because this follow-up changes only ownership fixture metadata and no product/runtime behavior.

After completing all code changes, fill implementation-owned sections in `CODE_REVIEW-*-G??.md`.
