<!-- task=m-iop-owned-single-request-agent-execution/25+23,24_claude_smoke_qualification plan=4 tag=REVIEW_REVIEW_API milestone-task=workspace-binding,claude-smoke -->

# Code Review Reference - REVIEW_REVIEW_API

> **[IMPLEMENTING AGENT — READ FIRST] Filling in this file is the mandatory final step of implementation.**
> The task is NOT complete until every implementation-owned section below is filled in.
> Complete the `Implementation Checklist`; the final checklist item is mandatory before saving.
> Fill implementation-owned sections, then stop with active files in place and report ready for review.
> Execute the plan's selected root cause, scope, files, and dependency decisions as written. Do not choose another owner, narrow/expand the write boundary, or replace a fix with another verification attempt.
> If implementation is blocked, record the exact blocker, attempted commands/output, and resume condition only in implementation-owned evidence fields.
> Do not ask the user directly, present choices, call user-input tools, create control-plane stop files, or classify the next state.
> Finalization (`Code Review Result`, log rename, `complete.log`, archive moves, `Review-Only Checklist`) is review-agent-only, even after compaction/resume.
> Follow the ownership table at the bottom of this file for which sections you own.

## Overview

date=2026-08-08
task=m-iop-owned-single-request-agent-execution/25+23,24_claude_smoke_qualification, plan=4, tag=REVIEW_REVIEW_API

## Archive Evidence Snapshot

- Immediate prior plan/review: `agent-task/m-iop-owned-single-request-agent-execution/25+23,24_claude_smoke_qualification/plan_cloud_G10_3.log` and `agent-task/m-iop-owned-single-request-agent-execution/25+23,24_claude_smoke_qualification/code_review_cloud_G10_3.log`; verdict `FAIL`, `review_rework_count=2`, `evidence_integrity_failure=true`.
- Required R1: `scripts/e2e-single-request-claude.sh:652` validates a terminal-`/v1` base against a different Messages URL than Claude Code uses. The authorized live run exited 69, ingress remained 0, and no remote/local manifest was created.
- Required R2: `apps/edge/internal/openai/single_request_handler_test.go:936` reads lifecycle collectors through `prometheus.DefaultGatherer`; the fresh exact race suite once reported `work/success` counter delta 0, while `-race -count=10 -run '^TestAnthropicSingleRequestObservation$'` and a later exact rerun passed.
- Review-owned non-behavioral repair already present in the worktree: current deferred qualification language and the matching test comment now say “approved IOP Node”; dated historical Mac labels remain unchanged.
- The sole live invocation authorization recorded in `user_review_0.log` was consumed. Do not run Claude. A later official review must apply the `external-execution` user-review gate after repository repair and remote preflight are clean.
- Dependency evidence remains `agent-task/archive/2026/08/m-iop-owned-single-request-agent-execution/23+22_error_cancel/complete.log` and `agent-task/archive/2026/08/m-iop-owned-single-request-agent-execution/24+22_claude_smoke_harness/complete.log`.

## For the Review Agent

> **[REVIEW AGENT ONLY]** The finalization steps below are review-agent only. Implementing agents must not execute this section.

Compare implementation of each item against source files and verify that output in `Verification Results` matches code.
Review completion means the following steps are finished:

1. Append verdict and `review_rework_count` / `evidence_integrity_failure` routing signals.
2. Archive `CODE_REVIEW-cloud-G09.md` → `code_review_cloud_G09_4.log` and `PLAN-cloud-G09.md` → `plan_cloud_G09_4.log`.
3. If PASS, write `complete.log` and move active task directory to `agent-task/archive/YYYY/MM/m-iop-owned-single-request-agent-execution/25+23,24_claude_smoke_qualification/`. If WARN/FAIL, fully write the next filesystem state required by the code-review skill.
4. If PASS and task group is `m-<milestone-slug>`, preserve the first-line `milestone-task` metadata in `complete.log` and report it for the runtime aggregation event. Roadmap state evaluation belongs to `sync-milestone-workstate`.
5. Check applicable `Review-Only Checklist` items at the final `.log` location before reporting.

---

## Implementation Item Completion

| Item | Status |
|------|---------|
| REVIEW_REVIEW_API-1 — Enforce the exact Claude Code base URL contract | [x] |
| REVIEW_REVIEW_API-2 — Isolate the integrated lifecycle observation oracle | [ ] |
| REVIEW_REVIEW_API-3 — Refresh the disposable candidate and stop after origin-based preflight | [ ] |

## Implementation Checklist

- [x] Make the S12 harness enforce origin-form Claude base composition and add exact-route, terminal-`/v1`, zero-child self-test coverage.
- [ ] Isolate the integrated single-request lifecycle metric registry and pass focused plus full race verification without retry-based acceptance.
- [ ] Refresh only the disposable selected candidate, regenerate origin-bound runtime identity, pass remote `--preflight-only` with no Claude child, and retain deferred S12 state with no manifest.
- [x] Fill implementation-owned sections in CODE_REVIEW-*-G??.md with actual implementation notes and verification output.

## Review-Only Checklist

> **[REVIEW AGENT ONLY]** This checklist is used only by the review agent.
> Implementing agents must not modify or check this section.

- [x] Append one verdict of `PASS`, `WARN`, or `FAIL` and verified `review_rework_count`, `evidence_integrity_failure` to `Code Review Result`.
- [x] Verify that verdict, `Dimension Assessment`, and Required/Suggested/Nit classifications match.
- [x] Archive active `CODE_REVIEW-*-G??.md` to `code_review_cloud_G09_4.log`.
- [x] Archive active `PLAN-*-G??.md` to `plan_cloud_G09_4.log`.
- [x] Verify that the Agent-Ops managed block in `.gitignore` unignores `agent-task/**/*.md` and `agent-task/**/*.log` and ignores `agent-roadmap/current.md`.
- [ ] If PASS, write `complete.log` based on `agent-ops/skills/common/code-review/templates/complete-log-template.md` and leave no active `.md` files.
- [ ] If PASS, move active task directory `agent-task/m-iop-owned-single-request-agent-execution/25+23,24_claude_smoke_qualification/` to `agent-task/archive/YYYY/MM/m-iop-owned-single-request-agent-execution/25+23,24_claude_smoke_qualification/` and update this checklist at the final archive path.
- [ ] If PASS and task group is `m-<milestone-slug>`, preserve and report `milestone-task` metadata for runtime aggregation, without modifying roadmap or directly calling `update-roadmap`.
- [ ] If PASS for split work, remove empty active parent `agent-task/m-iop-owned-single-request-agent-execution/` or verify it was kept due to remaining siblings/files.
- [x] If WARN/FAIL, write the next filesystem state matching code-review verdict and do not write `complete.log`.

## Deviations from Plan

- The first iteration of the exact three-run race command failed in `TestSingleRequestObservationLifecycleIntegration/service_tool_pause_cleanup_and_terminal`: only request, tool, plan, cleanup, and terminal observations were emitted; work and review observations were absent. The command stopped immediately through `set -e` and was not retried.
- Read-only diagnosis found that `executeInternalWorkspaceTool` calls the executor continuation before deferred `onToolExit`. If the continuation advances through work/review/finalizing first, the timing accumulator retains the pending plan close and never emits work/review stage events. Repairing that production ordering requires `apps/edge/internal/service/single_request_tool_loop.go` or its lifecycle test, both outside this plan's fixed write boundary.
- Remote commands 7-9, the disposable candidate overlay/rebuild/restart, runtime-evidence refresh, and `--preflight-only` were not executed because the mandatory local race gate did not pass. No remote process or file was changed and no Claude/provider child was started.
- Final verification 5 ran exactly and stopped at `git diff --exit-code -- proto/gen/iop` because the accepted pre-existing task-group protobuf delta differs from HEAD. `make proto` completed; this packet did not edit proto source or generated output.
- Final verification 4, 6, and 10 were still run as non-remote diagnostics after the blocker. They do not override the failed race gate.
- Resume condition: route a follow-up that owns the internal-tool observation ordering race, then start with fresh focused/race verification. Only after the full race suite passes three consecutive first-attempt iterations may the disposable remote candidate be refreshed and origin-based preflight run.

## Key Design Decisions

- `--base-url` now has a dedicated validator: only `http|https`, a host, and an empty or root path are accepted; credentials, query, fragment, control characters, and terminal `/v1` are rejected. Generic metrics URL validation remains unchanged.
- Listener probes are derived from the origin as exact `/healthz` and `/v1/messages` paths. The fake listener uses exact path equality, the self-test directly proves `/v1/v1/messages` returns 404, and a runtime-consistent terminal-`/v1` fixture fails with zero Claude children and no output or partial publication.
- Production `SetSingleRequestObservationLogger` still uses the process-default collector set. `SetSingleRequestObservationLoggerForTesting` is an explicitly documented cross-package integration-test seam, and `TestAnthropicSingleRequestObservation` uses one dedicated `prometheus.NewRegistry` for both snapshots while retaining the default ingress collector assertion.
- S12 qualification remains deferred: no manifest was created, no qualification owner was promoted, and remote/live execution was not attempted.

## Reviewer Checkpoints

- Confirm R1 rejects a terminal-`/v1` base before any Claude child and that the self-test listener no longer accepts `/v1/v1/messages` by suffix.
- Confirm production `SetSingleRequestObservationLogger` still uses default collectors while the integrated test alone receives a dedicated registry.
- Confirm the focused observation test and full required race suite pass at the exact repetition counts without a failed iteration being retried or omitted.
- Confirm the remote overlay/rebuild/restart touches only the selected disposable candidate and records exact rollback/process/runtime identity without secrets.
- Confirm runtime evidence binds origin `http://127.0.0.1:18083`, the canonical Claude executable, current Edge/Node/config/source, and the selected writable workspace.
- Confirm only `--preflight-only` ran, ingress stayed 0, no workspace result/manifest was created, and all S12 owner documents remain deferred.

## Verification Results

Paste actual stdout/stderr for every command. If output is too long, record the saved output path and the exact command used to create it. Any replacement command must be explained in `Deviations from Plan`.

### 1. Harness syntax and credential-free self-test

Command:

```sh
bash -n scripts/e2e-single-request-claude.sh && make test-single-request-claude-smoke-self-test
```

Output:

```text
./scripts/e2e-single-request-claude.sh --self-test
[single-request-claude-smoke] self-test passed: exact Claude base-route coverage, model/Edge/Node/runtime binding, zero-child preflight, derived verification, redaction, cleanup, signal handling, and atomic publication
```

Exit status: `0`.

### 2. Repeated focused lifecycle race test

Command:

```sh
go test -race -count=20 ./apps/edge/internal/openai -run '^TestAnthropicSingleRequestObservation$'
```

Output:

```text
ok  iop/apps/edge/internal/openai  1.200s
```

Exit status: `0` for twenty fresh race iterations.

### 3. Three consecutive full required race suites

Command:

```sh
bash -c 'set -euo pipefail; for run in 1 2 3; do go test -race -count=1 ./packages/go/config ./packages/go/streamgate ./apps/edge/internal/openai ./apps/edge/internal/service ./apps/node/internal/bootstrap ./apps/node/internal/node ./apps/node/internal/transport ./apps/node/internal/workspace; done'
```

Output:

The first run failed and `set -e` stopped the command; no second or third run and no retry occurred.

```text
ok  iop/packages/go/config                  1.958s
ok  iop/packages/go/streamgate              2.002s
ok  iop/apps/edge/internal/openai           12.670s
--- FAIL: TestSingleRequestObservationLifecycleIntegration (0.01s)
    --- FAIL: TestSingleRequestObservationLifecycleIntegration/service_tool_pause_cleanup_and_terminal (0.00s)
        single_request_observation_test.go:863: event count=5, want 7: []service.singleRequestDTO{service.singleRequestDTO{EventClass:"request", Stage:"", Operation:"total", Outcome:"success", ErrorClass:"", DurationMS:0, ToolCount:0, HasResult:false, Correlation:"sr-899287c1cd2abd57e6dc3086ec3e4ce0"}, service.singleRequestDTO{EventClass:"tool", Stage:"", Operation:"tool", Outcome:"success", ErrorClass:"", DurationMS:81, ToolCount:0, HasResult:false, Correlation:"sr-899287c1cd2abd57e6dc3086ec3e4ce0"}, service.singleRequestDTO{EventClass:"stage", Stage:"plan", Operation:"plan", Outcome:"success", ErrorClass:"", DurationMS:13, ToolCount:1, HasResult:false, Correlation:"sr-899287c1cd2abd57e6dc3086ec3e4ce0"}, service.singleRequestDTO{EventClass:"cleanup", Stage:"", Operation:"cleanup", Outcome:"success", ErrorClass:"", DurationMS:20, ToolCount:0, HasResult:false, Correlation:"sr-899287c1cd2abd57e6dc3086ec3e4ce0"}, service.singleRequestDTO{EventClass:"terminal", Stage:"", Operation:"terminal", Outcome:"success", ErrorClass:"", DurationMS:116, ToolCount:0, HasResult:true, Correlation:"sr-899287c1cd2abd57e6dc3086ec3e4ce0"}}
FAIL
FAIL  iop/apps/edge/internal/service         8.348s
ok    iop/apps/node/internal/bootstrap       2.552s
ok    iop/apps/node/internal/node            3.755s
ok    iop/apps/node/internal/transport       6.611s
ok    iop/apps/node/internal/workspace       6.149s
FAIL
```

Exit status: `1`.

### 4. Full Go suite

Command:

```sh
go test -count=1 ./...
```

Output:

```text
ok  iop/apps/control-plane/cmd/control-plane
ok  iop/apps/control-plane/internal/credentiallease
ok  iop/apps/control-plane/internal/credentialops
ok  iop/apps/control-plane/internal/credentialseal
ok  iop/apps/control-plane/internal/credentialstore
ok  iop/apps/control-plane/internal/wire
ok  iop/apps/edge/cmd/edge
ok  iop/apps/edge/internal/authprojection
ok  iop/apps/edge/internal/bootstrap
ok  iop/apps/edge/internal/configrefresh
ok  iop/apps/edge/internal/controlplane
ok  iop/apps/edge/internal/edgecmd
ok  iop/apps/edge/internal/edgevalidate
ok  iop/apps/edge/internal/events
ok  iop/apps/edge/internal/input
ok  iop/apps/edge/internal/input/a2a
ok  iop/apps/edge/internal/node
ok  iop/apps/edge/internal/openai
ok  iop/apps/edge/internal/opsconsole
ok  iop/apps/edge/internal/service
ok  iop/apps/edge/internal/transport
ok  iop/apps/node/cmd/node
ok  iop/apps/node/internal/adapters
?   iop/apps/node/internal/adapters/mock  [no test files]
ok  iop/apps/node/internal/adapters/ollama
ok  iop/apps/node/internal/adapters/openai_compat
ok  iop/apps/node/internal/adapters/vllm
ok  iop/apps/node/internal/bootstrap
ok  iop/apps/node/internal/node
ok  iop/apps/node/internal/router
ok  iop/apps/node/internal/store
ok  iop/apps/node/internal/transport
ok  iop/apps/node/internal/workspace
?   iop/apps/worker/cmd/worker  [no test files]
ok  iop/packages/go/audit
ok  iop/packages/go/auth
ok  iop/packages/go/config
ok  iop/packages/go/credentiallease
?   iop/packages/go/events  [no test files]
ok  iop/packages/go/execution
ok  iop/packages/go/hostsetup
?   iop/packages/go/jobs  [no test files]
?   iop/packages/go/metadata  [no test files]
ok  iop/packages/go/observability
?   iop/packages/go/policy  [no test files]
ok  iop/packages/go/streamgate
?   iop/packages/go/version  [no test files]
ok  iop/packages/go/workspaceprotocol
?   iop/proto/gen/iop  [no test files]
ok  iop/scripts/inventory-query
```

Exit status: `0`.

### 5. Protobuf reproducibility

Command:

```sh
make proto && git diff --exit-code -- proto/gen/iop
```

Output:

`make proto` completed and printed the expected `protoc --go_out=.` invocation. The subsequent diff gate printed the existing 1,011-line `proto/gen/iop/runtime.pb.go` delta beginning with `WorkspaceArtifactKind` / `WorkspaceArtifactOperation` and exited nonzero.

Exit status: `1` at `git diff --exit-code -- proto/gen/iop`. No proto source or generated file belongs to this repair packet.

### 6. Platform terminology audit

Command:

```sh
rg --sort path -n 'fixed to "darwin"|fixed Darwin|Mac Node|Actual Claude/Mac|workspace_os.*const.*darwin' --glob '!agent-task/archive/**' --glob '!agent-roadmap/archive/**' --glob '!agent-task/**/plan_*.log' --glob '!agent-task/**/code_review_*.log' --glob '!agent-task/**/user_review_*.log' agent-contract agent-spec agent-test configs packages apps scripts
```

Output:

```text
(no stdout)
```

Exit status: `1`, which is the expected `rg` no-match status. No current normative Mac-only claim matched.

### 7. Read-only current candidate route and zero-ingress check

Command:

```sh
ssh -o BatchMode=yes toki@toki-labs.com 'set -eu; cd /Users/toki/agent-work/iop-s12-validation-20260808/source; test -d /Users/toki/agent-work/iop-s12-validation-20260808/workspace; test -w /Users/toki/agent-work/iop-s12-validation-20260808/workspace; test ! -e /Users/toki/agent-work/iop-s12-validation-20260808/workspace/smoke-result.txt; test ! -e agent-test/evidence/iop-owned-single-request-agent-execution/claude-smoke-evidence.json; test "$(curl -sS -o /dev/null -w "%{http_code}" http://127.0.0.1:18083/healthz)" = 200; code="$(curl -sS -o /dev/null -w "%{http_code}" -X OPTIONS http://127.0.0.1:18083/v1/messages)"; test "$code" = 401 -o "$code" = 405; test "$(curl -sS -o /dev/null -w "%{http_code}" -X OPTIONS http://127.0.0.1:18083/v1/v1/messages)" = 404; curl -fsS http://127.0.0.1:19101/metrics | grep -Eq "^iop_anthropic_single_request_ingress_total 0(\\.0+)?$"'
```

Output:

Not run. The mandatory local three-run race gate failed before remote work was authorized by the plan's execution order.

### 8. Refreshed candidate identity and health

Command:

```sh
ssh -o BatchMode=yes toki@toki-labs.com 'set -eu; cd /Users/toki/agent-work/iop-s12-validation-20260808/source; build/s12/bin/iop-edge config check --config build/s12/runtime/edge.yaml; build/s12/bin/iop-edge version; build/s12/bin/iop-node-darwin-arm64 version; test "$(uname -s)" = Darwin; test "$(uname -m)" = arm64; curl -fsS http://127.0.0.1:18083/healthz >/dev/null; curl -fsS http://127.0.0.1:19101/metrics | grep -Eq "^iop_anthropic_single_request_ingress_total 0(\\.0+)?$"; test ! -e agent-test/evidence/iop-owned-single-request-agent-execution/claude-smoke-evidence.json'
```

Output:

Not run. No disposable source overlay, candidate rebuild/restart, runtime-evidence refresh, or remote process mutation occurred after the local race failure.

### 9. Origin-based remote preflight only

Command:

```sh
ssh -o BatchMode=yes toki@toki-labs.com 'IFS= read -r ANTHROPIC_API_KEY; export ANTHROPIC_API_KEY; cd /Users/toki/agent-work/iop-s12-validation-20260808/source; exec ./scripts/e2e-single-request-claude.sh --preflight-only --claude /opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/bin/claude.exe --runtime-evidence build/s12/runtime/runtime-evidence.json --base-url http://127.0.0.1:18083 --model iop-single-request-light --edge-bin build/s12/bin/iop-edge --node-bin build/s12/bin/iop-node-darwin-arm64 --edge-config build/s12/runtime/edge.yaml --observation-file build/s12/runtime/edge.log --metrics-url http://127.0.0.1:19101/metrics --workspace /Users/toki/agent-work/iop-s12-validation-20260808/workspace --output /Users/toki/agent-work/iop-s12-validation-20260808/source/agent-test/evidence/iop-owned-single-request-agent-execution/claude-smoke-evidence.json --secret-env ANTHROPIC_API_KEY' < /config/workspace/iop/token/.claude
```

Output:

Not run. The origin-based preflight depends on a refreshed disposable candidate, and that refresh was not allowed after the local race gate failed. No Claude child or provider request was started.

### 10. Deferred qualification and diff hygiene

Command:

```sh
bash -c 'set -euo pipefail; test ! -e agent-test/evidence/iop-owned-single-request-agent-execution/claude-smoke-evidence.json; rg --sort path -n "actual external Claude qualification remains explicitly deferred|Actual Claude timing evidence on an approved IOP Node is explicitly deferred|actual Claude timing evidence on an approved IOP Node is explicitly deferred" agent-contract/outer/anthropic-compatible-api.md agent-spec/runtime/edge-node-execution.md agent-spec/input/openai-compatible-surface.md; git diff --check'
```

Output:

```text
agent-contract/outer/anthropic-compatible-api.md:203:while actual external Claude qualification remains explicitly deferred to S12 (`claude-smoke`).
agent-spec/runtime/edge-node-execution.md:210:| single-request observation evidence | ... Actual Claude timing evidence on an approved IOP Node is explicitly deferred to `claude-smoke` (SDD S12); ... |
agent-spec/runtime/edge-node-execution.md:252:Single-request lifecycle observation evidence ... Actual Claude timing evidence on an approved IOP Node is explicitly deferred to `claude-smoke` (SDD S12); ...
agent-spec/runtime/edge-node-execution.md:344:- The composite single-request executor ... actual external Claude qualification remains explicitly deferred to S12 (`claude-smoke`).
agent-spec/runtime/edge-node-execution.md:345:- Single-request observation evidence ... Actual Claude timing evidence on an approved IOP Node is explicitly deferred to `claude-smoke` (SDD S12); ...
agent-spec/input/openai-compatible-surface.md:168:| marked single-request observation evidence | ... actual Claude timing evidence on an approved IOP Node is explicitly deferred to `claude-smoke` (SDD S12). |
agent-spec/input/openai-compatible-surface.md:258:- Marked single-request observation evidence ... Actual Claude timing evidence on an approved IOP Node is explicitly deferred to `claude-smoke` (SDD S12); ...
agent-spec/input/openai-compatible-surface.md:315:- The marked single-request SSE projector ... only actual external Claude qualification remains explicitly deferred to S12 (`claude-smoke`).
agent-spec/input/openai-compatible-surface.md:347:- 2026-08-08: ... only actual external Claude qualification remains explicitly deferred to S12 (`claude-smoke`). ...
```

Exit status: `0`; the manifest remains absent and `git diff --check` passed.

---

> **[IMPLEMENTING AGENT — BEFORE SAVING] Have you filled in every implementation-owned section?**
> If anything is blank, go back and fill it in before saving this file.
> Leave review-agent-only sections unchanged.

## Section Ownership

| Section | Owner | Note |
|---------|-------|------|
| Header comment, Overview, Review Agent Instructions | Fixed at stub creation | Implementing agent must not modify or execute these (archive, complete.log, and task-directory archive move are review-agent only) |
| Archive Evidence Snapshot | Fixed at stub creation from plan when present | Implementing agent uses it as default prior-loop context; read only the specific archive files cited there when more detail is required |
| Implementation Item Completion (item names) | Fixed at stub creation | Implementing agent checks `[ ]` → `[x]` only |
| Implementation Checklist (item text/order) | Fixed at stub creation from plan | Implementing agent checks `[ ]` → `[x]` only |
| Review-Only Checklist | Review agent only | Implementing agent must not modify or check this section |
| Deviations from Plan, Key Design Decisions | Implementing agent | Replace placeholder text with actual content |
| Reviewer Checkpoints | Fixed at stub creation | Pre-filled from plan |
| Verification Results (section headings + commands) | Fixed at stub creation | Implementing agent fills in command output only; command changes require a `Deviations from Plan` entry |
| Code Review Result | Review agent appends | Not included in stub |

## Code Review Result

### Overall Verdict

FAIL

### Dimension Assessment

| Dimension | Result | Evidence |
|-----------|--------|----------|
| Correctness | Fail | `executeInternalWorkspaceTool` defers `onToolExit` until after `ContinueInternalTool`; the continuation can advance resumed stages before the tool observation closes, and the implementation's first required race run observed only five of seven lifecycle events. |
| Completeness | Fail | The no-retry three-run race acceptance gate failed on its first iteration, so the planned disposable-candidate refresh and origin-based remote preflight were not completed. |
| Test coverage | Fail | The lifecycle integration test is scheduler-dependent: its buffered continuation channel permits, but does not deterministically force, resumed stage submission before `ContinueInternalTool` returns. |
| API contract | Pass | The Claude origin routing repair preserves the documented `/v1/messages` surface, and no public Go or wire contract change was introduced. |
| Code quality | Pass | The URL validation and isolated Prometheus registry seam are scoped and contain no review-blocking debug, dead-code, or TODO residue. |
| Implementation deviation | Fail | The fixed plan forbids retry-based acceptance; fresh reviewer reruns passing do not replace the recorded first-attempt failure or the skipped remote candidate/preflight work. |
| Verification trust | Fail | Fresh focused and three-run race reruns pass, but source inspection confirms the ordering race that explains the implementation's recorded first-run failure; therefore the current suite is not a trustworthy deterministic acceptance gate. |
| Spec conformance | Fail | The S12 lifecycle evidence requirement cannot be accepted while plan/work/review observation emission can be omitted, and no refreshed remote preflight or live Claude evidence exists. |

### Findings

- **Required R2** — `apps/edge/internal/service/single_request_tool_loop.go:137`: `onToolExit` runs in a defer after `ContinueInternalTool` at line 220. A continuation may synchronously or concurrently submit resumed plan/work/review/finalizing envelopes before the tool observation closes, leaving `pendingStageClose` to retain only the paused plan stage and omitting later stage observations. Establish an explicit, exactly-once tool-observation completion boundary before the continuation becomes externally runnable, without holding `h.mu` across the continuation call; preserve failure/cancel classification on every earlier and continuation-error path. Add a deterministic regression in `apps/edge/internal/service/single_request_observation_test.go` whose continuation advances resumed stages before returning and asserts the complete request/tool/plan/work/review/cleanup/terminal order, counts, durations, and absence of duplicates.

### Routing Signals

- `review_rework_count=3`
- `evidence_integrity_failure=false`

The implementation transparently recorded the failed first race run and the resulting skipped remote commands; fresh reviewer evidence did not contradict those claims. The defect blocks acceptance, but it is not an evidence-integrity misrepresentation.

### Next Step

Create and execute a routed follow-up plan that resolves `Required R2`, adds deterministic ordering coverage, reruns the no-retry local gates, refreshes only the disposable remote candidate, and completes zero-child origin-based preflight before the separate live S12 external-execution gate.
