diff --git a/docs-ai/079-program-status-osc-7501/004-claude-verified.md b/docs-ai/079-program-status-osc-7501/004-claude-verified.md index 41817365..7bbe8b03 100644 --- a/docs-ai/079-program-status-osc-7501/004-claude-verified.md +++ b/docs-ai/079-program-status-osc-7501/004-claude-verified.md @@ -65,11 +65,11 @@ confirmed the four fixes against the code with no new finding. | --- | --- | | TDD | `defaultTableVerifiesClaudeCodeOnly()` and `productionTableVerifiesClaudeCodeAndNotPi()` failed before the flip (`.unverified` for `.claude`; the pushed pane stayed `idle`) and passed after it; the five program-status test classes (63 tests) passed on the flipped tree. Session identity (2026-10-11): the four `ClaudeSessionRegistryTests` and `sessionIdentityIgnoresTheStatusFields()` failed to build before the change (`ClaudeSessionRegistry` and `ClaudeRuntimeDecoder.sessionID` did not exist) and passed after it together with `AgentSessionProfileTests` and `AgentSessionResolverTests`. The hold (round 4 finding 1): `transientRegistryFailureHoldsTheExactSessionBeforeTheScanTakesOver()` failed before the resolver change (the fingerprint took over at the first miss) and passed after it, with the registry, resolver, profile, and daemon-resolution suites (71 tests) | | `make check` | passed on the final tree (swift-format, SwiftLint strict after two test locals were renamed for `identifier_name`, script tests, naming and localization checks); passed again on the session identity tree, and on the hold (after SwiftLint's `large_tuple` turned the resolver's three-member result into `UncachedResolution`) | -| `make test` | passed on the final tree: ProwlTests 3799 passed / 0 failed (verified xcresult 3805 tests, one more than #893), event monitor 12, mirror 72 (1 skipped), shell cancellation 3; the 12 build warnings are the pre-existing ones on `main` | Session identity tree: ProwlTests 3804 passed / 0 failed (verified xcresult 3810, the five new tests), event monitor 12, mirror 53 (1 skipped), shell cancellation 3; the same 12 pre-existing build warnings | -| `make build-app` | passed with 0 warnings on the final tree, and again on the session identity tree | +| `make test` | passed on the final tree: ProwlTests 3799 passed / 0 failed (verified xcresult 3805 tests, one more than #893), event monitor 12, mirror 72 (1 skipped), shell cancellation 3; the 12 build warnings are the pre-existing ones on `main` | Session identity tree: ProwlTests 3804 passed / 0 failed (verified xcresult 3810, the five new tests), event monitor 12, mirror 53 (1 skipped), shell cancellation 3; the same 12 pre-existing build warnings. Final tree (hold and fresh-read guard): ProwlTests 3806 passed / 0 failed (verified xcresult 3812), event monitor 12, mirror 53 (1 skipped), shell cancellation 3 | +| `make build-app` | passed with 0 warnings on the final tree, again on the session identity tree, and again after the hold and the fresh-read guard | | Isolated Debug run (gate 6) | Branch build in a second instance (`CFFIXED_USER_HOME=/tmp/prowl-079-s3-home`, own socket, `script -F` log) with Claude Code 2.1.296; the real `~/.claude/sessions` and `~/.claude/projects` linked read-only into the isolated home so the native and session paths are observable. Every row of the plan's acceptance list was replayed and is recorded in the baseline's *Verification inside Prowl* table: trust → `claude.blockedPrompt` → `osc.idle` delegated; prompt → `osc.working` (≈ 100–350 ms CLI-polled); Bash write → `osc.blocked.permission` → `osc.done` → Done → viewed → Idle; AskUserQuestion → `osc.blocked.question`; foreground subagent → root-driven; background subagent → root `working` while Claude waits for it (see below); Esc and `/clear` → `osc.idle`; invalid API key → `osc.blocked.auth`; `/exit` 545–793 ms and `kill -9` 394 ms to release (CLI-polled; `main` 1.8–2.1 s); relaunch → own `osc.idle`; close + undo (`prowl key cmd-z`) → restored pane carries `osc.done` from the retained store; `CLAUDE_CODE_DISABLE_TERMINAL_TITLE=1` → `native.*` with the screen rules; `Claude Test` Profile (sonnet, bypass permissions, managed hooks) → launch dispatch receipt, `agents wait --until idle`, and a re-dispatch all resolved with `hook_claude` at `exact`. The Pi pane in the same instance stayed `legacy.detector` with shadow lines. No case was found where OSC was wrong and the legacy decision right: on every disagreement-prone row (`/compact`, background agents) the fresh screen rule read by `agents read` agreed with the root record Session identity (2026-10-11, same instance setup with the registry linked, Claude Code 2.1.296): the roster showed the registry's session as `process_log` / `exact` from the first `osc.idle` with no transcript path; the path appeared 6.3 s after the first prompt (the file is created on submit, read at the next uncached resolution); `/clear` with no further input moved the roster to the new session 2.1 s after the command (the registry had rotated, and 2.1.296 creates the new transcript at `/clear`); an in-process `/resume` back to the first session, with no input after the picker's Enter, moved the roster back 4.2 s later with the first transcript's path — the case that was stuck before. `agents read` reported the same session with its transcript | | CPU (gate 2) | `make measure-cpu` on the slice build against the slice 2 baseline on `main` (one Claude pane and one Pi pane). Idle: `20261011-013537-61800` mean 1.0 %, `detectAgentState` 0.52 % of a core, `AgentSessionResolver.resolve` 0.06 % (baseline `20261010-214229-57604`: mean 1.0 %, 0.49 %, 0.04 %). Working, both agents writing essays for the whole sample: `20261011-014153-69839` mean 9.5 %, `detectAgentState` 0.31 %, `AgentSessionResolver.resolve` 0.03 %, SwiftUI `stepTransactionFlush` 5.4 % (baseline `20261010-214500-60944`: mean 26.1 %, 0.52 %, 0.02 %, 7.8 %). The working mean is not a like-for-like saving: the display was off and the screen locked during this run, the Claude pane ran the `sonnet` model, and the baseline window was key; the per-symbol numbers are the comparable part. Load 1.6–2.8 on 12 cores. An earlier working sample in which Claude finished mid-window (`20261011-013707-63680`) showed `detectAgentState` at 1.08 % and is kept only as a caution about short tasks | -| Review loop (gate 7) | three rounds: 3 findings, then 4 documentation corrections, then 0; every finding was verified by reading the code before it was accepted | +| Review loop (gate 7) | six rounds: 3 findings, then 4 documentation corrections, then 0 for the flip; then 5 (1 code, 4 docs), 1 (code), and 0 for the session identity change; every finding was verified by reading the code before it was accepted | ## Observations