mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-21 16:27:18 +02:00
Record verified Boat independent-file control
Preserve the same-session archive/resume result, tool-output digest verification, natural cleanup, and remaining full-package qualification boundary. Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
1 parent
7d377bb93a
commit
dfba3e80a5
2 files changed
+844
-8
No files matched your search
@@ -4,19 +4,28 @@
|
||||
|
||||
Historical screenshots and receipts are preserved on the [fixed evidence branch](https://github.com/paperclipai/paperclip/tree/5909bfac9fa41405beb3fe8a65253dc28ba52835/doc/plans/assets/2026-10-10-boat). Historical links below use that exact commit; the implementation PR keeps a bounded set of current proofs.
|
||||
|
||||
## Current source boundary (2026-10-11 13:24 UTC)
|
||||
## Current source boundary (2026-10-11 14:01 UTC)
|
||||
|
||||
**The live independent-file control passed; full Claude package acceptance is still pending.** The four-file experiment ran on unchanged staging29 source `05f3725af838b5a074707df1d6ed1e193bdfe49e`. After normal warm timeout and completed archive, the same saved Codex task read each file once through the unchanged bounded-read guard. The hardlinked control reproduced **nlink 1→2 / LINK_COUNT rejection**. Both independent files passed with unchanged hashes and nlink 1. Their permitted second read verified the same bytes after ctime changed. The complete tool-output JSON was verified against its persisted SHA-256; the stored 4096-byte prefix alone was insufficient.
|
||||
|
||||
BOA-12 setup run `b3986762` succeeded at 13:33:24.493. Its warm deadline was 13:38:22.030; drain and suspend completed before Boat's archive completed at 13:44:23.518. Saved continuation `b7b60bc3` started at 13:45:27.509, kept its original native/logical/provider identities, and succeeded at 13:51:17.289 without recovery. Its final warm deadline was 13:56:15.423. Drain and suspend completed before final natural archive at **13:56:40.667**, independently observed archived/healthy at 13:58:37.440. No viewer, guest probe, forced stop or deployment occurred during either idle interval. [Complete source-bound control and lifecycle receipt](assets/2026-10-10-boat/evidence/staging29-independent-file-control.json).
|
||||
|
||||
The reviewed packaging correction `b64d630969` creates independent regular files only in a new unpublished pack, preserves bytes/modes/symlinks, and binds the layout policy into the package digest. Existing immutable packs and saved identities are preserved. This is now integrated into the staging candidate, but **has not yet been deployed or qualified with Claude**.
|
||||
|
||||
A separate saved task, BOA-2, failed admission before the control script ran: `runner_remote_retirement_checkpoint_unsettled: controller_commands`. Its prior lease had been retained and then released before the controller's drain/suspend completed. The checkpoint correctly refused unsafe recovery. Reviewed core fix `e5b70f39c4` requires exact warm-session closure before physical retirement for stopping dispositions, preserves failed-close fences, and prevents stale retention bookkeeping from overwriting release. The source of the competing release is still under investigation; no historical pending command or quarantine was cleared. A healthy-session prevention test will not count as recovery of this historical failed session.
|
||||
|
||||
| Surface | Source and evidence |
|
||||
| --- | --- |
|
||||
| Combined implementation | Merge `869a304c62` includes the reviewed Kubernetes Computer-route correction from core `3223e57b74`. Both combined route suites passed, 28/28 with zero skips. Full workspace typecheck and build passed on preceding `bcd94e340ada5e62145b9a2bee26745d60dc3d99`; this is not a claim that the historical full local test command was rerun. At 13:15 UTC, `bcd94e` had 44 successful checks, eight pending and exact-head review 5/5 with no unresolved threads. Latest merge/evidence CI is pending. |
|
||||
| Core branch | Current core `3223e57b747844834d57d3915d8e7c60b119c723` uses heartbeat's canonical forced-Kubernetes policy before exposing Boat connection, presence or preview. Four regressions failed before the correction; 27 focused cases and server typecheck passed with independent review. Exact-owner disconnect remains available. Preceding `51db2ab6` had 53 successful checks and the one review finding corrected by this commit; new-head CI is pending. Runtime prerequisite `ab1e8acc68` has 54 successful checks, two skips, exact-head review 5/5 and no unresolved threads. Fixture `e318850909` has 53 successful checks, two skips and exact-head review 5/5. |
|
||||
| Verified staging source | Deployment29 verified `05f3725af838b5a074707df1d6ed1e193bdfe49e` at 12:23:23.944 UTC. Its cold turn succeeded at 12:39:57.782; warm succeeded at 12:42:09.943; saved post-idle continuation failed with a specific module `link_count` rejection, followed by automatic recovery failure. Deployment28 verified `70fb0988c0aa760f9c84818aaf3fabbc339854b7` at 11:26:28.642 UTC; its cold and warm turns passed; after natural archive, its saved post-idle continuation failed before task work. Both owners retired and Boat archived automatically. Deployment27 verified `2605a03f00bc3d7decc8b8d5549ee06f8d77ae85` at 10:19:12.318 UTC. Saved Codex execution, agent computer use, generated preview, state-preserving warm HMR and natural process cleanup passed. Claude cold and warm passed; its saved post-idle continuation failed before provider task work. |
|
||||
| Local corrected-package qualification | Local51 also passed the full lifecycle with the same Node, sidecar and production-lock bytes as staging28, although the package closure differs. Its final archive completed at 11:38:23.197. Earlier compatible controller `049c57f64c9addb1ae45132626cf800d1ea41a95` and immutable pack `sha256:f6fbd13c71cdaf93060a7c240cbce1c8dfce2aefe5669db27d254b3b95dfb0a0` passed cold, warm, natural archive, first-attempt saved-session continuation and final natural archive. |
|
||||
| Carried source-specific evidence | Deployment26 passed simultaneous legacy admission from archive. Deployment25 passed embedded human mouse/keyboard control in Chrome and exact Codex child cancellation while its Claude sibling remained alive and completed. Earlier local checks cover file editing, detach/reconnect and company boundaries. Orderly restart has bounded observations, not a successful crash-recovery journey. These were not rerun for the later dependency-loader and viewer-warning changes. |
|
||||
| Combined implementation | `7d377bb93af8cb43241e8ed17d456289267a1d16` contains core `3223e57b74`. At 13:36 UTC both exact heads had 53 successful checks, review 5/5 and no unresolved threads; four earlier UI checks were superseded/cancelled. New runtime/shutdown integration is in progress. |
|
||||
| Runtime prerequisite | `b64d6309693e7c10ee783dbd3313ae3a007cf5c1` is pushed with independent-file packaging and failure-only link-count diagnostics. Focused packaging tests, runner/server typechecks and independent review passed; new-head CI is pending. |
|
||||
| Staging candidate | `a68163746139b91d54750b104254fe40da527f12` integrates reviewed runtime, credential/workspace, Kubernetes-route and packaging corrections. Packaging integration passed 206 tests, six existing platform skips, runner/server typechecks and independent review. Shutdown integration and deployment are pending. All staging migration history is preserved. |
|
||||
| Verified staging source | Deployment29 remains `05f3725a`. Claude cold/warm passed; its post-idle continuation failed with module link-count rejection. The later controlled file experiment above passed without changing this deployment. Deployment27 `2605a03f` passed saved Codex execution, agent computer use, generated preview, state-preserving warm HMR and natural process cleanup. These earlier-source journeys do not qualify the pending image. |
|
||||
| Local qualification | Local51 passed cold/warm/archive/saved continuation/final archive with the same Node, sidecar and lock bytes as staging28, but a different package closure. No claim extends this pass to the new packaging policy. |
|
||||
| Carried evidence | Deployment26 passed simultaneous legacy admission and cleanup. Deployment25 passed embedded human mouse/keyboard control in Chrome and exact Codex child cancellation while its Claude sibling survived and completed. Earlier local checks cover file editing, detach/reconnect and company boundaries. Crash recovery remains unverified. |
|
||||
|
||||
Final-source staging acceptance remains incomplete because the saved Claude post-idle continuation failed, now narrowed to a module link-count transition. A later scoped read-only probe reproduced **nlink 1→2 on the same 102-byte inode**. Its content hash matches two hardlinked SDK files in the controller package. This establishes the failing metadata transition and preexisting package topology; the proposed independent-file packaging correction still needs a live archive/resume control and full saved-session qualification. Previous failed immutable packages and saved authority remain intact. The historical Darwin full-suite command reported **34,914 passed, 24 failed, 338 skipped**; every suite responsible for those 24 failures subsequently executed and passed in Linux CI on exact core `8e8999`. The original local command was not rerun, and its 338 skips remain unreclassified. A separate invite-URL timing failure passed its one rerun without source or timeout changes; its original failure is retained. [Failure disposition](assets/2026-10-10-boat/evidence/full-local-failure-disposition.json).
|
||||
The historical Darwin full-suite command reported **34,914 passed, 24 failed, 338 skipped**; every suite responsible for those failures subsequently passed in Linux CI on exact core `8e8999`. The original local command was not rerun, and its 338 skips remain unreclassified. Full workspace typecheck/build passed on preceding combined `bcd94e340a`; subsequent focused checks and exact-head CI have separate source boundaries. [Failure disposition](assets/2026-10-10-boat/evidence/full-local-failure-disposition.json), [build/typecheck receipt](assets/2026-10-10-boat/evidence/stack-bcd94-typecheck-build.json).
|
||||
|
||||
[Earlier green CI and review receipt](assets/2026-10-10-boat/evidence/ci-8f62ee-4d2a23-passed.json), [verified deployment27](https://github.com/paperclipai/paperclip/blob/5909bfac9fa41405beb3fe8a65253dc28ba52835/doc/plans/assets/2026-10-10-boat/evidence/staging27-deployment.json), [staging28 failure receipt](assets/2026-10-10-boat/evidence/staging28-post-idle-failure.json), [preceding staging27 live receipt](assets/2026-10-10-boat/evidence/staging27-live-evidence.json). The historical chronology below preserves earlier observations and failures; its then-pending statements are superseded by later dated results. No provider stop was forced or cancelled, no quarantine was cleared, and no database history was reset or rewritten.
|
||||
The chronology below preserves historical failures and then-pending observations; later dated evidence supersedes them. Nothing is merged to master.
|
||||
|
||||
## Reproduced link transition and reviewed route correction (2026-10-11 13:24 UTC)
|
||||
|
||||
|
||||
@@ -0,0 +1,827 @@
|
||||
{
|
||||
"stage": "verified_control_complete_naturally_archived",
|
||||
"source": "05f3725af838b5a074707df1d6ed1e193bdfe49e",
|
||||
"taskId": "2937dea4-930c-4012-bd7c-3ea8191eaa6a",
|
||||
"taskIdentifier": "BOA-12",
|
||||
"setupRaw": {
|
||||
"observedAt": "2026-10-11T13:33:00.152Z",
|
||||
"guestReads": false,
|
||||
"runId": "b3986762-03f2-49e5-b342-3760a874a3b2",
|
||||
"sourceEvents": [
|
||||
{
|
||||
"seq": "80",
|
||||
"eventType": "tool.execution.completed"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
{
|
||||
"schema": "paperclip/boat-link-layout-setup/v1",
|
||||
"fixtureName": "boat-link-layout-control-20261011-99259312-418b-4c4a-a21e-3022ae72eba8",
|
||||
"startedAt": "2026-10-11T13:31:40.951Z",
|
||||
"created": true,
|
||||
"complete": true,
|
||||
"expectedHash": "42ce37809e7b25a8a04da912f303e3e2991a8d525ccb62d1008ed05172b24e5f",
|
||||
"files": [
|
||||
{
|
||||
"name": "hard-a.js",
|
||||
"before": {
|
||||
"dev": "100",
|
||||
"ino": "16515",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "2",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791725500000000000"
|
||||
},
|
||||
"after": {
|
||||
"dev": "100",
|
||||
"ino": "16515",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "2",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791725500000000000"
|
||||
},
|
||||
"sha256": "42ce37809e7b25a8a04da912f303e3e2991a8d525ccb62d1008ed05172b24e5f",
|
||||
"hashMatches": true
|
||||
},
|
||||
{
|
||||
"name": "hard-b.js",
|
||||
"before": {
|
||||
"dev": "100",
|
||||
"ino": "16515",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "2",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791725500000000000"
|
||||
},
|
||||
"after": {
|
||||
"dev": "100",
|
||||
"ino": "16515",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "2",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791725500000000000"
|
||||
},
|
||||
"sha256": "42ce37809e7b25a8a04da912f303e3e2991a8d525ccb62d1008ed05172b24e5f",
|
||||
"hashMatches": true
|
||||
},
|
||||
{
|
||||
"name": "independent-a.js",
|
||||
"before": {
|
||||
"dev": "100",
|
||||
"ino": "16517",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "1",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791725500000000000"
|
||||
},
|
||||
"after": {
|
||||
"dev": "100",
|
||||
"ino": "16517",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "1",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791725500000000000"
|
||||
},
|
||||
"sha256": "42ce37809e7b25a8a04da912f303e3e2991a8d525ccb62d1008ed05172b24e5f",
|
||||
"hashMatches": true
|
||||
},
|
||||
{
|
||||
"name": "independent-b.js",
|
||||
"before": {
|
||||
"dev": "100",
|
||||
"ino": "16518",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "1",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791725500000000000"
|
||||
},
|
||||
"after": {
|
||||
"dev": "100",
|
||||
"ino": "16518",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "1",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791725500000000000"
|
||||
},
|
||||
"sha256": "42ce37809e7b25a8a04da912f303e3e2991a8d525ccb62d1008ed05172b24e5f",
|
||||
"hashMatches": true
|
||||
}
|
||||
],
|
||||
"hardPairSharesInode": true,
|
||||
"independentPairDistinct": true,
|
||||
"linkCountsExpected": true,
|
||||
"finishedAt": "2026-10-11T13:31:40.953Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"warm": {
|
||||
"observedAt": "2026-10-11T13:34:25.843Z",
|
||||
"phase": "cold_observation",
|
||||
"guestReads": false,
|
||||
"runs": [
|
||||
{
|
||||
"id": "b3986762-03f2-49e5-b342-3760a874a3b2",
|
||||
"providerBefore": null,
|
||||
"providerAfter": "01a12b29-3ec0-7861-86d6-dacc5f581978",
|
||||
"recoveryPresent": false,
|
||||
"status": "succeeded",
|
||||
"startedAt": "2026-10-11T13:29:15.810Z",
|
||||
"finishedAt": "2026-10-11T13:33:24.493Z",
|
||||
"nativeSessionId": "ad240cf6-7040-40d5-ade2-e9dfe45e9aba",
|
||||
"runnerInstanceId": "3a4d738a-94c4-4b07-9746-f5f5a3e2742c",
|
||||
"matchesOriginalNativeSession": true,
|
||||
"matchesOriginalLogicalRunner": true,
|
||||
"moduleFences": [],
|
||||
"knownErrorCodes": []
|
||||
}
|
||||
],
|
||||
"taskSessions": [
|
||||
{
|
||||
"lastRunId": "b3986762-03f2-49e5-b342-3760a874a3b2",
|
||||
"displayId": "01a12b29-3ec0-7861-86d6-dacc5f581978",
|
||||
"ids": {
|
||||
"sessionId": "ad240cf6-7040-40d5-ade2-e9dfe45e9aba"
|
||||
},
|
||||
"updatedAt": "2026-10-11T13:33:26.952Z"
|
||||
}
|
||||
],
|
||||
"owners": [
|
||||
{
|
||||
"id": "0901af03-28d7-4c86-927b-eb179a6cd21e",
|
||||
"phase": "warm",
|
||||
"deadline": "2026-10-11T13:38:22.030Z",
|
||||
"boot": "487239d1-f9b5-4cb5-abab-dc1e855baf03",
|
||||
"launch": 1
|
||||
}
|
||||
],
|
||||
"controller": [
|
||||
{
|
||||
"stateKey": "be282577a3c2e3d719a42410880471d153a671b2f80d7d5b2380df51579b299c",
|
||||
"pack": null,
|
||||
"commands": [
|
||||
{
|
||||
"controllerSeq": 3,
|
||||
"moduleFences": [],
|
||||
"failureCodes": [],
|
||||
"admissionStage": null,
|
||||
"admissionElapsedMs": null,
|
||||
"issuedAt": "2026-10-11T13:31:25.902Z",
|
||||
"status": "completed",
|
||||
"type": "session.goal.get"
|
||||
},
|
||||
{
|
||||
"controllerSeq": 4,
|
||||
"moduleFences": [],
|
||||
"failureCodes": [],
|
||||
"admissionStage": null,
|
||||
"admissionElapsedMs": null,
|
||||
"issuedAt": "2026-10-11T13:31:26.125Z",
|
||||
"status": "completed",
|
||||
"type": "turn.start"
|
||||
},
|
||||
{
|
||||
"controllerSeq": 5,
|
||||
"moduleFences": [],
|
||||
"failureCodes": [],
|
||||
"admissionStage": null,
|
||||
"admissionElapsedMs": null,
|
||||
"issuedAt": "2026-10-11T13:31:40.814Z",
|
||||
"status": "completed",
|
||||
"type": "semantic_tool.result"
|
||||
},
|
||||
{
|
||||
"controllerSeq": 6,
|
||||
"moduleFences": [],
|
||||
"failureCodes": [],
|
||||
"admissionStage": null,
|
||||
"admissionElapsedMs": null,
|
||||
"issuedAt": "2026-10-11T13:31:56.382Z",
|
||||
"status": "completed",
|
||||
"type": "semantic_tool.result"
|
||||
}
|
||||
],
|
||||
"runnerPresent": false,
|
||||
"lifecycle": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"retired": {
|
||||
"observedAt": "2026-10-11T13:39:11.926Z",
|
||||
"phase": "cold_observation",
|
||||
"guestReads": false,
|
||||
"runs": [
|
||||
{
|
||||
"id": "b3986762-03f2-49e5-b342-3760a874a3b2",
|
||||
"providerBefore": null,
|
||||
"providerAfter": "01a12b29-3ec0-7861-86d6-dacc5f581978",
|
||||
"recoveryPresent": false,
|
||||
"status": "succeeded",
|
||||
"startedAt": "2026-10-11T13:29:15.810Z",
|
||||
"finishedAt": "2026-10-11T13:33:24.493Z",
|
||||
"nativeSessionId": "ad240cf6-7040-40d5-ade2-e9dfe45e9aba",
|
||||
"runnerInstanceId": "3a4d738a-94c4-4b07-9746-f5f5a3e2742c",
|
||||
"matchesOriginalNativeSession": true,
|
||||
"matchesOriginalLogicalRunner": true,
|
||||
"moduleFences": [],
|
||||
"knownErrorCodes": []
|
||||
}
|
||||
],
|
||||
"taskSessions": [
|
||||
{
|
||||
"lastRunId": "b3986762-03f2-49e5-b342-3760a874a3b2",
|
||||
"displayId": "01a12b29-3ec0-7861-86d6-dacc5f581978",
|
||||
"ids": {
|
||||
"sessionId": "ad240cf6-7040-40d5-ade2-e9dfe45e9aba"
|
||||
},
|
||||
"updatedAt": "2026-10-11T13:33:26.952Z"
|
||||
}
|
||||
],
|
||||
"owners": [
|
||||
{
|
||||
"id": "0901af03-28d7-4c86-927b-eb179a6cd21e",
|
||||
"phase": "retired",
|
||||
"deadline": null,
|
||||
"boot": "487239d1-f9b5-4cb5-abab-dc1e855baf03",
|
||||
"launch": 1
|
||||
}
|
||||
],
|
||||
"controller": [
|
||||
{
|
||||
"stateKey": "be282577a3c2e3d719a42410880471d153a671b2f80d7d5b2380df51579b299c",
|
||||
"pack": null,
|
||||
"commands": [
|
||||
{
|
||||
"controllerSeq": 5,
|
||||
"moduleFences": [],
|
||||
"failureCodes": [],
|
||||
"admissionStage": null,
|
||||
"admissionElapsedMs": null,
|
||||
"issuedAt": "2026-10-11T13:31:40.814Z",
|
||||
"status": "completed",
|
||||
"type": "semantic_tool.result"
|
||||
},
|
||||
{
|
||||
"controllerSeq": 6,
|
||||
"moduleFences": [],
|
||||
"failureCodes": [],
|
||||
"admissionStage": null,
|
||||
"admissionElapsedMs": null,
|
||||
"issuedAt": "2026-10-11T13:31:56.382Z",
|
||||
"status": "completed",
|
||||
"type": "semantic_tool.result"
|
||||
},
|
||||
{
|
||||
"controllerSeq": 7,
|
||||
"moduleFences": [],
|
||||
"failureCodes": [],
|
||||
"admissionStage": null,
|
||||
"admissionElapsedMs": null,
|
||||
"issuedAt": "2026-10-11T13:38:23.447Z",
|
||||
"status": "completed",
|
||||
"type": "runner.drain"
|
||||
},
|
||||
{
|
||||
"controllerSeq": 8,
|
||||
"moduleFences": [],
|
||||
"failureCodes": [],
|
||||
"admissionStage": null,
|
||||
"admissionElapsedMs": null,
|
||||
"issuedAt": "2026-10-11T13:38:23.619Z",
|
||||
"status": "completed",
|
||||
"type": "runner.suspend"
|
||||
}
|
||||
],
|
||||
"runnerPresent": false,
|
||||
"lifecycle": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"provider": {
|
||||
"observedAt": "2026-10-11T13:40:59.724Z",
|
||||
"providerId": "bx_b8sawfyp",
|
||||
"guestRead": false,
|
||||
"state": "archiving",
|
||||
"health": "ok",
|
||||
"stop": {
|
||||
"id": "stop_3120351aab962362",
|
||||
"status": "pending",
|
||||
"timestamps": {},
|
||||
"errorPresent": false
|
||||
}
|
||||
},
|
||||
"limitations": [
|
||||
"Four-file controlled experiment, not full Claude package qualification.",
|
||||
"Stored tool output is truncated at 4096 bytes. Full result reconstructed from stored prefix and earlier visible streamed text, then verified against persisted SHA-256 of the complete tool output.",
|
||||
"Historical BOA-2 resume remains blocked by preexisting pending controller commands. No session, checkpoint, quarantine or package was reset."
|
||||
],
|
||||
"archiveBeforeRead": {
|
||||
"observedAt": "2026-10-11T13:45:17.869Z",
|
||||
"providerId": "bx_b8sawfyp",
|
||||
"guestRead": false,
|
||||
"state": "archived",
|
||||
"health": "ok",
|
||||
"stop": {
|
||||
"id": "stop_3120351aab962362",
|
||||
"status": "completed",
|
||||
"timestamps": {
|
||||
"endedAt": "2026-10-11T13:44:23.518Z"
|
||||
},
|
||||
"errorPresent": false
|
||||
}
|
||||
},
|
||||
"read": {
|
||||
"runId": "b7b60bc3-8f1b-412c-8246-2ba221e076c6",
|
||||
"eventSeq": "102",
|
||||
"eventType": "tool.execution.completed",
|
||||
"outputDigest": "sha256:5f6c986acaae576d4fb670a7f4409c18c7836ded6b14e66b6a13642ca72f8f41",
|
||||
"verification": "Full JSON reconstructed from the tool prefix and earlier visible streamed reply; exact SHA-256 matches the persisted full tool-output digest.",
|
||||
"result": {
|
||||
"schema": "paperclip/boat-link-layout-read/v1",
|
||||
"fixtureName": "boat-link-layout-control-20261011-99259312-418b-4c4a-a21e-3022ae72eba8",
|
||||
"startedAt": "2026-10-11T13:48:05.319Z",
|
||||
"expectedHash": "42ce37809e7b25a8a04da912f303e3e2991a8d525ccb62d1008ed05172b24e5f",
|
||||
"files": [
|
||||
{
|
||||
"name": "hard-a.js",
|
||||
"guardOutcome": "accepted",
|
||||
"readHashes": [
|
||||
"42ce37809e7b25a8a04da912f303e3e2991a8d525ccb62d1008ed05172b24e5f",
|
||||
"42ce37809e7b25a8a04da912f303e3e2991a8d525ccb62d1008ed05172b24e5f"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"after": {
|
||||
"dev": "76",
|
||||
"ino": "3307",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "1",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791726485000000000"
|
||||
},
|
||||
"pathEqual": true,
|
||||
"namedEqual": true
|
||||
},
|
||||
{
|
||||
"after": {
|
||||
"dev": "76",
|
||||
"ino": "3307",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "1",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791726485000000000"
|
||||
},
|
||||
"pathEqual": true,
|
||||
"namedEqual": true
|
||||
}
|
||||
],
|
||||
"readBytes": 204,
|
||||
"initialDescriptor": {
|
||||
"dev": "76",
|
||||
"ino": "3307",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "1",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791725500000000000"
|
||||
},
|
||||
"hashMatches": true,
|
||||
"finalNamed": {
|
||||
"dev": "76",
|
||||
"ino": "3307",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "1",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791726485000000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "hard-b.js",
|
||||
"guardOutcome": "rejected",
|
||||
"readHashes": [
|
||||
"42ce37809e7b25a8a04da912f303e3e2991a8d525ccb62d1008ed05172b24e5f"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"after": {
|
||||
"dev": "76",
|
||||
"ino": "3308",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "2",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791726485000000000"
|
||||
},
|
||||
"pathEqual": true,
|
||||
"namedEqual": true
|
||||
}
|
||||
],
|
||||
"readBytes": 102,
|
||||
"initialDescriptor": {
|
||||
"dev": "76",
|
||||
"ino": "3308",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "1",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791725500000000000"
|
||||
},
|
||||
"moduleFence": "LINK_COUNT",
|
||||
"failingRead": {
|
||||
"attempt": 1,
|
||||
"nlinkBefore": "1",
|
||||
"nlinkAfter": "2",
|
||||
"direction": "increase",
|
||||
"equal": {
|
||||
"dev": true,
|
||||
"ino": true,
|
||||
"mode": true,
|
||||
"uid": true,
|
||||
"gid": true,
|
||||
"size": true,
|
||||
"mtime": true,
|
||||
"ctime": false
|
||||
}
|
||||
},
|
||||
"error": null,
|
||||
"finalNamed": {
|
||||
"dev": "76",
|
||||
"ino": "3308",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "2",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791726485000000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "independent-a.js",
|
||||
"guardOutcome": "accepted",
|
||||
"readHashes": [
|
||||
"42ce37809e7b25a8a04da912f303e3e2991a8d525ccb62d1008ed05172b24e5f",
|
||||
"42ce37809e7b25a8a04da912f303e3e2991a8d525ccb62d1008ed05172b24e5f"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"after": {
|
||||
"dev": "76",
|
||||
"ino": "3309",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "1",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791726485000000000"
|
||||
},
|
||||
"pathEqual": true,
|
||||
"namedEqual": true
|
||||
},
|
||||
{
|
||||
"after": {
|
||||
"dev": "76",
|
||||
"ino": "3309",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "1",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791726485000000000"
|
||||
},
|
||||
"pathEqual": true,
|
||||
"namedEqual": true
|
||||
}
|
||||
],
|
||||
"readBytes": 204,
|
||||
"initialDescriptor": {
|
||||
"dev": "76",
|
||||
"ino": "3309",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "1",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791725500000000000"
|
||||
},
|
||||
"hashMatches": true,
|
||||
"finalNamed": {
|
||||
"dev": "76",
|
||||
"ino": "3309",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "1",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791726485000000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "independent-b.js",
|
||||
"guardOutcome": "accepted",
|
||||
"readHashes": [
|
||||
"42ce37809e7b25a8a04da912f303e3e2991a8d525ccb62d1008ed05172b24e5f",
|
||||
"42ce37809e7b25a8a04da912f303e3e2991a8d525ccb62d1008ed05172b24e5f"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"after": {
|
||||
"dev": "76",
|
||||
"ino": "3310",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "1",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791726485000000000"
|
||||
},
|
||||
"pathEqual": true,
|
||||
"namedEqual": true
|
||||
},
|
||||
{
|
||||
"after": {
|
||||
"dev": "76",
|
||||
"ino": "3310",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "1",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791726485000000000"
|
||||
},
|
||||
"pathEqual": true,
|
||||
"namedEqual": true
|
||||
}
|
||||
],
|
||||
"readBytes": 204,
|
||||
"initialDescriptor": {
|
||||
"dev": "76",
|
||||
"ino": "3310",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "1",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791725500000000000"
|
||||
},
|
||||
"hashMatches": true,
|
||||
"finalNamed": {
|
||||
"dev": "76",
|
||||
"ino": "3310",
|
||||
"mode": "33152",
|
||||
"uid": "1000",
|
||||
"gid": "1000",
|
||||
"nlink": "1",
|
||||
"size": "102",
|
||||
"mtimeNs": "1791725500000000000",
|
||||
"ctimeNs": "1791726485000000000"
|
||||
}
|
||||
}
|
||||
],
|
||||
"complete": true,
|
||||
"finishedAt": "2026-10-11T13:48:05.327Z"
|
||||
}
|
||||
},
|
||||
"postWarm": {
|
||||
"observedAt": "2026-10-11T13:53:54.452Z",
|
||||
"phase": "cold_observation",
|
||||
"guestReads": false,
|
||||
"runs": [
|
||||
{
|
||||
"id": "b7b60bc3-8f1b-412c-8246-2ba221e076c6",
|
||||
"providerBefore": "01a12b29-3ec0-7861-86d6-dacc5f581978",
|
||||
"providerAfter": "01a12b29-3ec0-7861-86d6-dacc5f581978",
|
||||
"recoveryPresent": false,
|
||||
"status": "succeeded",
|
||||
"startedAt": "2026-10-11T13:45:27.509Z",
|
||||
"finishedAt": "2026-10-11T13:51:17.289Z",
|
||||
"nativeSessionId": "ad240cf6-7040-40d5-ade2-e9dfe45e9aba",
|
||||
"runnerInstanceId": "3a4d738a-94c4-4b07-9746-f5f5a3e2742c",
|
||||
"matchesOriginalNativeSession": true,
|
||||
"matchesOriginalLogicalRunner": true,
|
||||
"moduleFences": [],
|
||||
"knownErrorCodes": []
|
||||
}
|
||||
],
|
||||
"taskSessions": [
|
||||
{
|
||||
"lastRunId": "b7b60bc3-8f1b-412c-8246-2ba221e076c6",
|
||||
"displayId": "01a12b29-3ec0-7861-86d6-dacc5f581978",
|
||||
"ids": {
|
||||
"sessionId": "ad240cf6-7040-40d5-ade2-e9dfe45e9aba"
|
||||
},
|
||||
"updatedAt": "2026-10-11T13:51:19.655Z"
|
||||
}
|
||||
],
|
||||
"owners": [
|
||||
{
|
||||
"id": "8d7c3954-ad3e-4e81-8832-7f01a7c88817",
|
||||
"phase": "warm",
|
||||
"deadline": "2026-10-11T13:56:15.423Z",
|
||||
"boot": "7c7ebc43-74fc-47bf-8cad-2371263713c4",
|
||||
"launch": 1
|
||||
}
|
||||
],
|
||||
"controller": [
|
||||
{
|
||||
"stateKey": "be282577a3c2e3d719a42410880471d153a671b2f80d7d5b2380df51579b299c",
|
||||
"pack": null,
|
||||
"commands": [
|
||||
{
|
||||
"controllerSeq": 3,
|
||||
"moduleFences": [],
|
||||
"failureCodes": [],
|
||||
"admissionStage": null,
|
||||
"admissionElapsedMs": null,
|
||||
"issuedAt": "2026-10-11T13:47:42.123Z",
|
||||
"status": "completed",
|
||||
"type": "session.snapshot"
|
||||
},
|
||||
{
|
||||
"controllerSeq": 4,
|
||||
"moduleFences": [],
|
||||
"failureCodes": [],
|
||||
"admissionStage": null,
|
||||
"admissionElapsedMs": null,
|
||||
"issuedAt": "2026-10-11T13:47:42.253Z",
|
||||
"status": "completed",
|
||||
"type": "session.goal.get"
|
||||
},
|
||||
{
|
||||
"controllerSeq": 5,
|
||||
"moduleFences": [],
|
||||
"failureCodes": [],
|
||||
"admissionStage": null,
|
||||
"admissionElapsedMs": null,
|
||||
"issuedAt": "2026-10-11T13:47:42.516Z",
|
||||
"status": "completed",
|
||||
"type": "turn.start"
|
||||
},
|
||||
{
|
||||
"controllerSeq": 6,
|
||||
"moduleFences": [],
|
||||
"failureCodes": [],
|
||||
"admissionStage": null,
|
||||
"admissionElapsedMs": null,
|
||||
"issuedAt": "2026-10-11T13:48:23.891Z",
|
||||
"status": "completed",
|
||||
"type": "semantic_tool.result"
|
||||
}
|
||||
],
|
||||
"runnerPresent": false,
|
||||
"lifecycle": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"finalCleanup": {
|
||||
"observedAt": "2026-10-11T13:58:26.090Z",
|
||||
"phase": "cold_observation",
|
||||
"guestReads": false,
|
||||
"runs": [
|
||||
{
|
||||
"id": "b7b60bc3-8f1b-412c-8246-2ba221e076c6",
|
||||
"providerBefore": "01a12b29-3ec0-7861-86d6-dacc5f581978",
|
||||
"providerAfter": "01a12b29-3ec0-7861-86d6-dacc5f581978",
|
||||
"recoveryPresent": false,
|
||||
"status": "succeeded",
|
||||
"startedAt": "2026-10-11T13:45:27.509Z",
|
||||
"finishedAt": "2026-10-11T13:51:17.289Z",
|
||||
"nativeSessionId": "ad240cf6-7040-40d5-ade2-e9dfe45e9aba",
|
||||
"runnerInstanceId": "3a4d738a-94c4-4b07-9746-f5f5a3e2742c",
|
||||
"matchesOriginalNativeSession": true,
|
||||
"matchesOriginalLogicalRunner": true,
|
||||
"moduleFences": [],
|
||||
"knownErrorCodes": []
|
||||
}
|
||||
],
|
||||
"taskSessions": [
|
||||
{
|
||||
"lastRunId": "b7b60bc3-8f1b-412c-8246-2ba221e076c6",
|
||||
"displayId": "01a12b29-3ec0-7861-86d6-dacc5f581978",
|
||||
"ids": {
|
||||
"sessionId": "ad240cf6-7040-40d5-ade2-e9dfe45e9aba"
|
||||
},
|
||||
"updatedAt": "2026-10-11T13:51:19.655Z"
|
||||
}
|
||||
],
|
||||
"owners": [
|
||||
{
|
||||
"id": "8d7c3954-ad3e-4e81-8832-7f01a7c88817",
|
||||
"phase": "retired",
|
||||
"deadline": null,
|
||||
"boot": "7c7ebc43-74fc-47bf-8cad-2371263713c4",
|
||||
"launch": 1
|
||||
}
|
||||
],
|
||||
"controller": [
|
||||
{
|
||||
"stateKey": "be282577a3c2e3d719a42410880471d153a671b2f80d7d5b2380df51579b299c",
|
||||
"pack": null,
|
||||
"commands": [
|
||||
{
|
||||
"controllerSeq": 5,
|
||||
"moduleFences": [],
|
||||
"failureCodes": [],
|
||||
"admissionStage": null,
|
||||
"admissionElapsedMs": null,
|
||||
"issuedAt": "2026-10-11T13:47:42.516Z",
|
||||
"status": "completed",
|
||||
"type": "turn.start"
|
||||
},
|
||||
{
|
||||
"controllerSeq": 6,
|
||||
"moduleFences": [],
|
||||
"failureCodes": [],
|
||||
"admissionStage": null,
|
||||
"admissionElapsedMs": null,
|
||||
"issuedAt": "2026-10-11T13:48:23.891Z",
|
||||
"status": "completed",
|
||||
"type": "semantic_tool.result"
|
||||
},
|
||||
{
|
||||
"controllerSeq": 7,
|
||||
"moduleFences": [],
|
||||
"failureCodes": [],
|
||||
"admissionStage": null,
|
||||
"admissionElapsedMs": null,
|
||||
"issuedAt": "2026-10-11T13:56:17.130Z",
|
||||
"status": "completed",
|
||||
"type": "runner.drain"
|
||||
},
|
||||
{
|
||||
"controllerSeq": 8,
|
||||
"moduleFences": [],
|
||||
"failureCodes": [],
|
||||
"admissionStage": null,
|
||||
"admissionElapsedMs": null,
|
||||
"issuedAt": "2026-10-11T13:56:17.335Z",
|
||||
"status": "completed",
|
||||
"type": "runner.suspend"
|
||||
}
|
||||
],
|
||||
"runnerPresent": false,
|
||||
"lifecycle": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"finalArchive": {
|
||||
"observedAt": "2026-10-11T13:58:37.440Z",
|
||||
"providerId": "bx_b8sawfyp",
|
||||
"guestRead": false,
|
||||
"state": "archived",
|
||||
"health": "ok",
|
||||
"stop": {
|
||||
"id": "stop_af5a0f632cf1677a",
|
||||
"status": "completed",
|
||||
"timestamps": {
|
||||
"endedAt": "2026-10-11T13:56:40.667Z"
|
||||
},
|
||||
"errorPresent": false
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user