docs: correct local artifact provenance and record staging warm HMR proof

This commit is contained in:
Dotta committed 2026-10-10 23:58:56 -05:00
1 parent efb6939411
commit af5b43da2f
11 files changed
+327 -5

No files matched your search

+9 -1
View File
@@ -6,7 +6,7 @@
| Surface | Source and evidence |
| --- | --- |
| Combined branch | `b698f54966`: includes reviewed Stop, verification, legacy explicit-continuation and safe startup-stage diagnostics. Local40 serves `8ccfdd3dd2` with its matching diagnostic Linux runner and the compatible pinned provider pack. |
| Combined branch | `b698f54966`: includes reviewed Stop, verification, legacy explicit-continuation and safe startup-stage diagnostics. Local40 served controller `8ccfdd3dd2`, but later inspection disproved the claimed diagnostic artifact selection: saved test-drive config still selected the old remote runner and pack. Local42 corrects those two fixture paths and is testing a fresh task. |
| Core branch | `28d3fc1b65`; focused tests and independent reviews passed. Prior exact heads core9a31/combinedb68 passed all CI and Greptile5/5; those results exclude the new startup-stage diagnostics. |
| Serving staging | Deployment 19 `05a1d1f2172261066ca53d3776f798c3073fc49f` verified at 04:34:10.638 UTC. It includes pause, verifier, Stop-race and safe rejection diagnostics; the latest legacy periodic-recovery correction is not yet deployed. |
| Cancelled candidate | Deployment 17 `ca8ab88c78556c4711d59f71c6293619543a66a1` was cancelled during build before check/deploy. Fresh review found that Stop could leave a retry authorized and that premature terminalization could release the task lock. Corrections passed real cancellation/lifecycle-path tests and independent review; deployment18 of `bd86e22e72` is in progress. |
@@ -188,3 +188,11 @@ Receipts: [saved task](assets/2026-10-10-boat/evidence/local40-saved-claude-outc
Deployment 19 verified serving `05a1d1f2172261066ca53d3776f798c3073fc49f` at 04:34:10.638 UTC. A new staging Claude task will compare fresh startup against the official deployed pack; it cannot recover or validate either old quarantined fixture.
The startup-stage diagnostic patch (`28d3fc1b65` / combined `b698f54966`) preserves only closed stage names and bounded elapsed milliseconds. Its real timeout test retains the stalled stage across cleanup and excludes arbitrary error text. Rust 10/10, runtime-host 54/54, TypeScript, entrypoint build and independent review passed. This adds evidence for the next retry; it does not itself fix Claude startup. The matched local test artifact is building.
## Artifact-selection correction and staging19 results (2026-10-11 04:55 UTC)
**Correction:** Local40 and local41 did not select the diagnostic artifacts requested by their launch scripts. `test-drive` clears inherited `PAPERCLIP_*` variables and loads the saved instance environment, which still selected the old runner and pack. BOA18's persisted attachment template proves that selection. The reported failures remain failures, but they do not qualify the new diagnostics. Only the two fixture artifact paths were corrected; the database and old sessions were preserved. Local42 restarted normally, and fresh BOA19 will verify the actual selected artifacts. [Selection evidence](assets/2026-10-10-boat/evidence/local-artifact-selection-correction.json).
**Staging19 passed native Claude fresh and warm jobs, native Codex saved-task continuation, actual computer use, direct browser desktop input, and warm HMR.** Claude retained the recorded runner/session/owner identity, while its provider subprocesses restarted. Codex retained runner, provider, Vite, owner and saved-session identities. The heading changed to `Boat staging warm HMR confirmed 0450` while unsaved input `keep-this-unsaved-draft-boat-0449` and page-session `1791694134833` survived. Proof hashes remained unchanged. The desktop viewer closed normally after inspection. These results do not validate the older quarantined Claude fixture or legacy jobs on deployment19.
Evidence: [consolidated receipts](assets/2026-10-10-boat/evidence/staging19-live-evidence.json), [Claude warm result](assets/2026-10-10-boat/staging-19-claude-warm-proof.png), [HMR before](assets/2026-10-10-boat/staging-19-hmr-before.png), [HMR after](assets/2026-10-10-boat/staging-19-hmr-after.png), [direct desktop input](assets/2026-10-10-boat/staging-19-direct-desktop-input.png).
@@ -58,3 +58,5 @@ Local38 pending admission and Pause work passed; later normal continuation remai
[Local40 saved Claude](local40-saved-claude-outcome.json) remains quarantined; [fresh Claude](local40-fresh-claude-outcome.json) reached the runner but timed out opening the provider session. Both cleaned up successfully. No current-source simple Claude or warm-follow-up success is claimed.
[Fresh Claude diagnosis](local40-fresh-claude-diagnosis.json) confirms settled checkpoints and present inputs without identifying the stalled startup step. [CI and review receipt](core9a31-ui-b68-ci-review.json) records both previous exact heads green; it excludes the later startup-stage diagnostic patch.
**Artifact-selection correction:** the requested local40/41 diagnostic paths were ignored by test-drive; see [corrected provenance](local-artifact-selection-correction.json). Those failures do not establish execution of the new diagnostics. [Staging19 live receipts](staging19-live-evidence.json) establish fresh/warm Claude, saved Codex, desktop and HMR passes on the verified deployed source.
@@ -0,0 +1,11 @@
{
"observedAt": "2026-10-11T04:49:20.499228+00:00",
"runId": "299caa15-f3f9-47b7-8882-639eb7b2736b",
"rootCause": "test-drive deletes inherited PAPERCLIP_* variables before instance .env loading",
"source": "cli/src/commands/test-drive.ts:175",
"configuredRunnerSha256": "d42d0395b8d172912c5e57dc967e4b7e40f9218979c15b51fd0c71365ba06435",
"persistedTemplatePackDigest": "sha256:a02b92afc8423b8fdea50a7fd480a5417b17d9c7b31a14dcab4221e57e8c270a",
"intendedDiagnosticPackDigest": "sha256:af875f72dbce8bf9f1bb2cce962e8380d5b23dd72fb98c84d04e949d9665c719",
"conclusion": "The diagnostic runner/pack was built but not selected by this run. Local40 diagnostic binary selection was also unproven/contradicted by the unchanged instance configuration.",
"mutations": "none"
}
@@ -1,7 +1,6 @@
{
"recordedAt": "2026-10-11T04:22:52.309Z",
"servingSource": "8ccfdd3dd269e251ba652cfb1ea469dc0861068c",
"configuredDiagnosticRunnerSha256": "32c5ec947ad1541e34c6fa43fd40ef6ba4f5cb77ed4b063ccfcbd08f32f98ff1",
"taskId": "1f3d567e-ce93-42e4-b0cb-f785f6fa2e4c",
"outcome": "FAILED: new Claude task timed out at PRP session.open before proof tools",
"run": {
@@ -66,5 +65,7 @@
"file": "retry-local40-boa17-failure-events.json",
"sha256": "11ea657a883da2bdbd8a60f9175f0f91a72cb817ed4b93efbc697775ff810cf2"
}
]
],
"requestedOuterEnvironmentRunnerSha256": "32c5ec947ad1541e34c6fa43fd40ef6ba4f5cb77ed4b063ccfcbd08f32f98ff1",
"artifactSelectionCorrection": "Later inspection proved test-drive discards inherited PAPERCLIP_* overrides; unchanged saved fixture config selected the old runner and pack. The requested diagnostic runner SHA is not evidence of the executed artifact. See local-artifact-selection-correction.json."
}
@@ -1,7 +1,6 @@
{
"checkedAt": "2026-10-11T04:19:17.906Z",
"servingSource": "8ccfdd3dd269e251ba652cfb1ea469dc0861068c",
"configuredDiagnosticRunnerSha256": "32c5ec947ad1541e34c6fa43fd40ef6ba4f5cb77ed4b063ccfcbd08f32f98ff1",
"outcome": "FAILED: historical saved session cannot resume from quarantined controller authority",
"run": {
"id": "6d3f8a42-a288-4c58-b3dd-309aef11a3d1",
@@ -71,5 +70,7 @@
"file": "retry-local37-claude-local40final0419.json",
"sha256": "c2cae51af8a1e36921d4102c20b16a7c350dc74fb9895a2a69f0c565b7ccd8cf"
}
]
],
"requestedOuterEnvironmentRunnerSha256": "32c5ec947ad1541e34c6fa43fd40ef6ba4f5cb77ed4b063ccfcbd08f32f98ff1",
"artifactSelectionCorrection": "Later inspection proved test-drive discards inherited PAPERCLIP_* overrides; unchanged saved fixture config selected the old runner and pack. The requested diagnostic runner SHA is not evidence of the executed artifact. See local-artifact-selection-correction.json."
}
@@ -2179,5 +2179,26 @@
"behavior": "Closed admission-stage names and bounded elapsed milliseconds use existing diagnostic channel; timeout retains last non-cleanup stage. No deadline or lifecycle changes.",
"validation": "Rust10/10 real timeout/cleanup/privacy cases; host54/54 including observer failure isolation; TypeScript, entrypoint build and independent review passed.",
"liveValidation": "Pending matched local artifact build and fresh task."
},
"localArtifactSelectionCorrection": {
"receipt": "local-artifact-selection-correction.json",
"scope": "Local40/local41 requests did not select the built diagnostics; failure outcomes remain valid for the old selected artifacts.",
"repair": "Changed exactly two saved test-drive .env paths; other bytes and DB preserved. Graceful local42 restart; fresh BOA19 now verifies actual selection.",
"requestedNewRunnerSha256": "366a0fe12a39a6be773540369cd577810590d1b0d03491e834b414575087a3c9",
"requestedNewPackDigest": "sha256:af875f72dbce8bf9f1bb2cce962e8380d5b23dd72fb98c84d04e949d9665c719"
},
"staging19LiveEvidence": {
"receipt": "staging19-live-evidence.json",
"nativeClaude": "fresh and warm passed; same recorded runner identity, child processes restart",
"nativeCodex": "saved-task continuation, computer use and warm HMR passed with exact process/session equality",
"browser": "Heading0450; draftkeep-this-unsaved-draft-boat-0449 and page-session1791694134833 retained; direct desktop mouse and keyboard input observed",
"source": "05a1d1f2172261066ca53d3776f798c3073fc49f",
"limits": "Not legacy qualification or proof of old quarantined Claude recovery; see receipt."
},
"local41BroadChecks": {
"source": "b698f54966638f99e7f3a0ef56c53563da12f47a",
"recursiveTypecheck": "passed with verified registry access after sandbox registry fetch failed",
"build": "passed",
"scope": "These are source/build checks, not proof of remote artifact selection."
}
}
@@ -0,0 +1,278 @@
{
"schema": "boat.staging.qualification.evidence.v1",
"recordedAt": "2026-10-11T04:53:42.241714+00:00",
"source": {
"deployment": 19,
"commit": "05a1d1f2172261066ca53d3776f798c3073fc49f",
"servingVerifiedAt": "2026-10-11T04:34:10.638Z",
"servingEvidence": "parent deployment verification"
},
"method": "Read-only guarded provider GET and checkpoint/process/proof inspection through existing product-authorized live transport; browser observations supplied by parent UI owner.",
"sandboxId": "bx_b8sawfyp",
"nativeClaude": {
"freshRunId": "fccc253e-ae3c-40d1-9950-f5702d17369b",
"warmRunId": "d2a655c3-d063-4d14-8cef-bffddc9dc4e8",
"freshResult": "parent observed Done and expected proof hash",
"warmResult": "parent observed Done and expected proof hash",
"normalizedSessionId": "a0a4daec-b1c7-46b5-bf46-5ee135c7a89f",
"runnerInstanceId": "08aecb64-98cb-45d2-934a-b5c01e02843a",
"samePhysicalRunnerAcrossTurns": true,
"physicalRunner": {
"pid": 56659,
"startTicks": 89960,
"ownerId": "b27a94e1-6ce9-4520-baff-7841391dc3cc"
},
"bootId": "741e97d8-a0c8-42e1-9993-22c923586a2b",
"providerKind": "acpx",
"providerAgent": "claude",
"providerPack": {
"descriptorDigest": "sha256:b882ca8a8abfa51f3977d1aa6f4f2e5028ba1fd947a5df520e180ac41ce4ea35",
"manifestDigest": "sha256:b882ca8a8abfa51f3977d1aa6f4f2e5028ba1fd947a5df520e180ac41ce4ea35",
"manifestMtime": 1791692348,
"matchesDescriptor": true
},
"warmProviderIdentity": {
"normalizedSessionId": "a0a4daec-b1c7-46b5-bf46-5ee135c7a89f",
"agentSessionId": "a4575f37-96c3-4539-ae13-e61e48072cc1"
},
"settlement": {
"at": "2026-10-11T04:50:07.640012+00:00",
"runner": {
"schema": "paperclip.runner.durable.state.v1",
"lifecycle": "ready",
"runId": "d2a655c3-d063-4d14-8cef-bffddc9dc4e8",
"normalizedSessionId": "a0a4daec-b1c7-46b5-bf46-5ee135c7a89f",
"runnerInstanceId": "08aecb64-98cb-45d2-934a-b5c01e02843a",
"environmentLeaseId": "fccc253e-ae3c-40d1-9950-f5702d17369b",
"outboxCount": 0,
"pendingTerminalDeliveryIsNull": true
},
"providerLifecycle": "session_open"
},
"proof": {
"relativeName": "boat-final-proof.txt",
"exists": true,
"bytes": 25,
"sha256": "e646d151756f1efdb9e19d99a2a0971810468087c457fa458f1311c42ef07424"
},
"proofUnchanged": true,
"limits": [
"Fresh receipt did not capture provider agentSessionId; no fresh-to-warm provider-ID equality claim.",
"Claude child processes restarted between turns, while the same runner process persisted.",
"Existing old quarantined Claude session recovery remains unproven; this is a new task fresh/warm qualification."
],
"configuredWarmPolicy": {
"mode": "warm_session",
"idleTimeoutMs": 300000,
"source": "Parent read staging Claude Harness / Runtime \u2192 Advanced Run Policy in browser; Save disabled and no edits.",
"observedAtApprox": "2026-10-11T04:58:00Z",
"limit": "Configured duration observed; exact per-owner retirement timestamp not observed."
}
},
"nativeCodex": {
"baselineRunId": "2c82ba9f-4057-4980-9bb7-ae2b57537cbb",
"warmRunId": "681a1e2d-9222-4329-951f-e47402b92f4d",
"sameSavedNormalizedSession": true,
"sameSavedProviderThread": true,
"normalizedSessionId": "06496696-b312-4268-ac40-66770aaa6f1a",
"providerThreadId": "01a12881-5d3b-72a0-b4c3-d993f5b089e1",
"runnerInstanceId": "0005a613-101d-475f-9409-8b8e8b87e9ce",
"sameBoot": true,
"beforeAt": "2026-10-11T04:50:17.279304+00:00",
"afterAt": "2026-10-11T04:52:55.640187+00:00",
"beforeProcesses": [
{
"pid": 71407,
"startTicks": 111251,
"name": "paperclip-runne",
"ownerId": "5c5cab5b-2b91-4c10-825c-6138323b2d9e"
},
{
"pid": 71618,
"startTicks": 111380,
"name": "MainThread",
"ownerId": "5c5cab5b-2b91-4c10-825c-6138323b2d9e"
},
{
"pid": 71630,
"startTicks": 111382,
"name": "codex",
"ownerId": "5c5cab5b-2b91-4c10-825c-6138323b2d9e"
},
{
"pid": 71703,
"startTicks": 111394,
"name": "cua-driver",
"ownerId": "5c5cab5b-2b91-4c10-825c-6138323b2d9e"
},
{
"pid": 72707,
"startTicks": 112522,
"name": "npm run dev",
"ownerId": "5c5cab5b-2b91-4c10-825c-6138323b2d9e"
},
{
"pid": 72723,
"startTicks": 112531,
"name": "sh",
"ownerId": "5c5cab5b-2b91-4c10-825c-6138323b2d9e"
},
{
"pid": 72724,
"startTicks": 112531,
"name": "MainThread",
"ownerId": "5c5cab5b-2b91-4c10-825c-6138323b2d9e"
},
{
"pid": 72741,
"startTicks": 112542,
"name": "esbuild",
"ownerId": "5c5cab5b-2b91-4c10-825c-6138323b2d9e"
}
],
"afterProcesses": [
{
"pid": 71407,
"startTicks": 111251,
"name": "paperclip-runne",
"ownerId": "5c5cab5b-2b91-4c10-825c-6138323b2d9e"
},
{
"pid": 71618,
"startTicks": 111380,
"name": "MainThread",
"ownerId": "5c5cab5b-2b91-4c10-825c-6138323b2d9e"
},
{
"pid": 71630,
"startTicks": 111382,
"name": "codex",
"ownerId": "5c5cab5b-2b91-4c10-825c-6138323b2d9e"
},
{
"pid": 71703,
"startTicks": 111394,
"name": "cua-driver",
"ownerId": "5c5cab5b-2b91-4c10-825c-6138323b2d9e"
},
{
"pid": 72707,
"startTicks": 112522,
"name": "npm run dev",
"ownerId": "5c5cab5b-2b91-4c10-825c-6138323b2d9e"
},
{
"pid": 72723,
"startTicks": 112531,
"name": "sh",
"ownerId": "5c5cab5b-2b91-4c10-825c-6138323b2d9e"
},
{
"pid": 72724,
"startTicks": 112531,
"name": "MainThread",
"ownerId": "5c5cab5b-2b91-4c10-825c-6138323b2d9e"
},
{
"pid": 72741,
"startTicks": 112542,
"name": "esbuild",
"ownerId": "5c5cab5b-2b91-4c10-825c-6138323b2d9e"
}
],
"sameRunnerCodexVitePidStartTicks": true,
"proofSha256": "f9253e57dadaefe9276e99a9cd0cb9fad68d2704dd820b61e026edf6e6527c46",
"proofUnchanged": true,
"settlement": {
"sessionDirectory": "0cde904493e0fc88dd1a6d75bf64f68a9fe5a800a1636273861bb7c13bfcd0e4",
"runnerMtime": 1791694285.527042,
"runner": {
"schema": "paperclip.runner.durable.state.v1",
"lifecycle": "ready",
"runId": "681a1e2d-9222-4329-951f-e47402b92f4d",
"normalizedSessionId": "06496696-b312-4268-ac40-66770aaa6f1a",
"runnerInstanceId": "0005a613-101d-475f-9409-8b8e8b87e9ce",
"environmentLeaseId": "5957cc86-4533-49e5-a2af-0edbc79a472f",
"outboxCount": 0,
"pendingTerminalDeliveryIsNull": true
},
"providerMtime": 1791694284.8010337,
"provider": {
"schema": "paperclip.runner.codex-provider-state.v1",
"lifecycle": "session_open",
"threadId": "01a12881-5d3b-72a0-b4c3-d993f5b089e1",
"activeProviderTurnId": null,
"completedTurnAuthoritative": true
}
},
"vitePort": 5173,
"vitePid": 72724
},
"browserObservations": {
"source": "parent direct UI observations, not inferred from agent claims",
"hmr": {
"result": "PASS",
"headingBefore": "Boat staging warm HMR confirmed 0216",
"headingAfterMarker": "0450",
"draftBeforeAndAfter": "keep-this-unsaved-draft-boat-0449",
"pageSessionBeforeAndAfter": "1791694134833",
"noPageReloadObserved": true
},
"agentComputerUse": {
"result": "PASS",
"observation": "Parent full-size provider desktop viewer visually confirmed actual example.com page after native Codex computer use. Narrow embedded scaling initially appeared misleading."
},
"humanDesktopInput": {
"result": "PASS",
"observation": "Parent direct desktop viewer used mouse and keyboard; entered text was aboat.",
"limits": "Ctrl+A selection behavior not proven; this does not establish embedded-frame keyboard focus behavior."
}
},
"limits": [
"This receipt does not qualify legacy Claude or legacy Codex on deployment19.",
"Sibling-stop isolation remains unproven by this receipt.",
"No source edits or lifecycle mutations were performed by the evidence observer."
],
"evidence": [
{
"file": "retry-staging-19-nativeclaude-live.json",
"sha256": "2362dd0b0a726c1c0338705a746212a3cd2f63ed7d88b7058ed39cdf3f97e997"
},
{
"file": "retry-staging-19-nativeclaude-warm.json",
"sha256": "56c680e55cd45a29a6a61962c7ca4bb37b5ac407708fa570d399399d6aab76f2"
},
{
"file": "retry-staging-19-nativeclaude-settled.json",
"sha256": "07643a3f181ec2ae0478d5d0ea7a02abe419b3baae4dc228308e1327b17611aa"
},
{
"file": "retry-staging-19-nativecodex-baseline.json",
"sha256": "25177d4d52e35820633ebcc0a0ca23b47816f6651d9a45410c3309a683d10281"
},
{
"file": "retry-staging-19-nativecodex-hmr-settled.json",
"sha256": "199fb3f8c9814c00314f7dca7f4fc74fbff62d56ed803f8795d29d49da4c8090"
},
{
"file": "retry-staging-19-postviewer-status.json",
"sha256": "338fa665c8abcf5c4a2ed1d52c82b56e8ac9da1f7bfa069ccafcaa6feee76528"
},
{
"file": "retry-staging-19-postviewer-owners.json",
"sha256": "04bac3dacc8ed1f777cd3462f391a31c6e6fe64a00a64f8eb2ef87430a14bf93"
}
],
"postViewerCleanup": {
"viewerClosedAtApprox": "2026-10-11T04:53:00Z",
"viewerClosureSource": "parent normal UI action",
"providerArchivedObservedAt": "2026-10-11T04:57:18.185Z",
"stopId": "stop_5213e39a6e6a9578",
"stopCompletedAt": "2026-10-11T04:56:59.592Z",
"guestReadSkippedAfterArchive": true,
"limits": [
"Exact separate Claude and Codex owner retirement timestamps were not observed.",
"Do not infer Codex timeout from the Claude configuration."
]
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB