pi-daddy 0.22.0 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +40 -0
- package/README.md +12 -6
- package/contracts/daily-view/v1/README.md +114 -0
- package/contracts/daily-view/v1/fixtures/view.json +525 -0
- package/contracts/daily-view/v1/fixtures/view.txt +75 -0
- package/contracts/daily-view/v1/fixtures/work.jsonl +17 -0
- package/contracts/daily-view/v1/p03/README.md +26 -0
- package/contracts/daily-view/v1/p03/fixtures/retained-executions.json +241 -0
- package/contracts/daily-view/v1/p03/projection.schema.json +194 -0
- package/contracts/daily-view/v1/p03/provenance.json +21 -0
- package/contracts/dashboard-host/v1/README.md +176 -0
- package/contracts/debrief/v1/README.md +146 -0
- package/contracts/debrief/v1/intervention/README.md +32 -0
- package/contracts/debrief/v1/intervention/fixtures/artifact-3ee11136beb864f518252e5024dae9197421fbf97b6e981d3243c782b5c44bd0.txt +1 -0
- package/contracts/debrief/v1/intervention/fixtures/artifact-58905d872dd3c54a9705f67b05fa82edbad7af6476ae8993faf1a7b9fadfb905.txt +1 -0
- package/contracts/debrief/v1/intervention/fixtures/assessment.json +29 -0
- package/contracts/debrief/v1/intervention/fixtures/blind-view.json +20 -0
- package/contracts/debrief/v1/intervention/fixtures/choice.json +7 -0
- package/contracts/debrief/v1/intervention/fixtures/manifest.json +57 -0
- package/contracts/debrief/v1/intervention/fixtures/reveal.json +39 -0
- package/contracts/debrief/v1/provenance.json +89 -0
- package/contracts/debrief/v1/work-capture/README.md +38 -0
- package/contracts/debrief/v1/work-capture/fixtures/batch.json +17 -0
- package/contracts/debrief/v1/work-capture/fixtures/cases.json +184 -0
- package/contracts/debrief/v1/work-capture/fixtures/review.json +184 -0
- package/contracts/debrief/v1/work-capture/review-request.schema.json +41 -0
- package/contracts/debrief/v1/work-capture/work-case.schema.json +190 -0
- package/contracts/debrief/v2/README.md +71 -0
- package/contracts/debrief/v2/input-pin.json +66 -0
- package/contracts/debrief/v2/intervention-upstream.md +40 -0
- package/contracts/debrief/v2/work-signals-upstream.md +22 -0
- package/contracts/dispatch-control/v1/README.md +109 -0
- package/contracts/dispatch-control/v1/request.schema.json +19 -0
- package/contracts/effect-profile/v1/README.md +124 -0
- package/contracts/execution-retention/v1/README.md +109 -0
- package/contracts/execution-retention/v2/README.md +148 -0
- package/contracts/execution-retention/v2/fixtures/interrupted-native-bytes.json +91 -0
- package/contracts/execution-retention/v2/fixtures/missing-native-session.json +91 -0
- package/contracts/execution-retention/v2/fixtures/native-file-unknown-branch.json +91 -0
- package/contracts/execution-retention/v2/fixtures/native-id-without-bytes.json +91 -0
- package/contracts/execution-retention/v2/fixtures/native-live-branch.json +90 -0
- package/contracts/execution-retention/v2/fixtures/replaced-native-session.json +92 -0
- package/contracts/execution-retention/v2/fixtures/result-82c620cdfeb8ca6b858cf653d7f5e2eedca5315d6244216d60e8b36f03223d6a.bin +1 -0
- package/contracts/execution-retention/v2/fixtures/session-2ec1f134bc739984434f7fca689e1c3d1c39fce2dcadae709e9b6faedfcc4ac7.bin +3 -0
- package/contracts/execution-retention/v2/fixtures/session-9bdb4bd16a901da31580acf056bda525225259e15ec409e0410480109011772f.bin +3 -0
- package/contracts/execution-retention/v2/manifest.schema.json +858 -0
- package/contracts/experiment/v1/README.md +164 -0
- package/contracts/factory-order/v1/README.md +151 -0
- package/contracts/factory-order/v1/adoption-pin.json +8 -0
- package/contracts/intent-control/v1/README.md +135 -0
- package/contracts/intent-control/v1/request.schema.json +1096 -0
- package/contracts/intent-control/v2/README.md +34 -0
- package/contracts/intent-control/v2/request.schema.json +1070 -0
- package/contracts/ledger/v4/README.md +241 -0
- package/contracts/ledger/v4/fixtures/layout-options.json +428 -0
- package/contracts/ledger/v4/fixtures/work-acceptance.json +57 -0
- package/contracts/ledger/v4/fixtures/work-occurrence.json +44 -0
- package/contracts/ledger/v4/fixtures/work-revision.json +26 -0
- package/contracts/ledger/v4/fixtures/work-snapshot.json +73 -0
- package/contracts/ledger/v4/ledger-event.schema.json +162 -0
- package/contracts/ordinary-control/v1/README.md +59 -0
- package/contracts/producer-ipc/v1/README.md +137 -0
- package/dist/check-runner.d.ts +5 -0
- package/dist/check-runner.d.ts.map +1 -1
- package/dist/check-runner.js +16 -2
- package/dist/check-runner.js.map +1 -1
- package/dist/cli.d.ts +3 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +49 -3
- package/dist/cli.js.map +1 -1
- package/dist/control-journal.d.ts +20 -0
- package/dist/control-journal.d.ts.map +1 -0
- package/dist/control-journal.js +73 -0
- package/dist/control-journal.js.map +1 -0
- package/dist/daily-dashboard-host.d.ts +99 -0
- package/dist/daily-dashboard-host.d.ts.map +1 -0
- package/dist/daily-dashboard-host.js +71 -0
- package/dist/daily-dashboard-host.js.map +1 -0
- package/dist/daily-view-input.d.ts +44 -0
- package/dist/daily-view-input.d.ts.map +1 -0
- package/dist/daily-view-input.js +68 -0
- package/dist/daily-view-input.js.map +1 -0
- package/dist/daily-view-render.d.ts +4 -0
- package/dist/daily-view-render.d.ts.map +1 -0
- package/dist/daily-view-render.js +41 -0
- package/dist/daily-view-render.js.map +1 -0
- package/dist/daily-view.d.ts +74 -0
- package/dist/daily-view.d.ts.map +1 -0
- package/dist/daily-view.js +170 -0
- package/dist/daily-view.js.map +1 -0
- package/dist/dashboard-cli.d.ts +26 -1
- package/dist/dashboard-cli.d.ts.map +1 -1
- package/dist/dashboard-cli.js +128 -3
- package/dist/dashboard-cli.js.map +1 -1
- package/dist/dashboard-harness.d.ts +22 -0
- package/dist/dashboard-harness.d.ts.map +1 -0
- package/dist/dashboard-harness.js +89 -0
- package/dist/dashboard-harness.js.map +1 -0
- package/dist/dashboard-herdr.d.ts.map +1 -1
- package/dist/dashboard-herdr.js +7 -2
- package/dist/dashboard-herdr.js.map +1 -1
- package/dist/dashboard-host-contract.d.ts +116 -0
- package/dist/dashboard-host-contract.d.ts.map +1 -0
- package/dist/dashboard-host-contract.js +14 -0
- package/dist/dashboard-host-contract.js.map +1 -0
- package/dist/dashboard-host-transport.d.ts +16 -0
- package/dist/dashboard-host-transport.d.ts.map +1 -0
- package/dist/dashboard-host-transport.js +124 -0
- package/dist/dashboard-host-transport.js.map +1 -0
- package/dist/dashboard-host.d.ts +203 -0
- package/dist/dashboard-host.d.ts.map +1 -0
- package/dist/dashboard-host.js +376 -0
- package/dist/dashboard-host.js.map +1 -0
- package/dist/dashboard-observation.d.ts +28 -0
- package/dist/dashboard-observation.d.ts.map +1 -0
- package/dist/dashboard-observation.js +86 -0
- package/dist/dashboard-observation.js.map +1 -0
- package/dist/debrief-contract.d.ts +65 -0
- package/dist/debrief-contract.d.ts.map +1 -0
- package/dist/debrief-contract.js +151 -0
- package/dist/debrief-contract.js.map +1 -0
- package/dist/debrief-fixture.d.ts +16 -0
- package/dist/debrief-fixture.d.ts.map +1 -0
- package/dist/debrief-fixture.js +41 -0
- package/dist/debrief-fixture.js.map +1 -0
- package/dist/debrief-host.d.ts +59 -0
- package/dist/debrief-host.d.ts.map +1 -0
- package/dist/debrief-host.js +49 -0
- package/dist/debrief-host.js.map +1 -0
- package/dist/debrief-render.d.ts +5 -0
- package/dist/debrief-render.d.ts.map +1 -0
- package/dist/debrief-render.js +65 -0
- package/dist/debrief-render.js.map +1 -0
- package/dist/debrief.d.ts +90 -0
- package/dist/debrief.d.ts.map +1 -0
- package/dist/debrief.js +263 -0
- package/dist/debrief.js.map +1 -0
- package/dist/delegate-types.d.ts +2 -0
- package/dist/delegate-types.d.ts.map +1 -1
- package/dist/delegate-types.js.map +1 -1
- package/dist/delegate.d.ts.map +1 -1
- package/dist/delegate.js +1 -0
- package/dist/delegate.js.map +1 -1
- package/dist/dispatch-control.d.ts +45 -0
- package/dist/dispatch-control.d.ts.map +1 -0
- package/dist/dispatch-control.js +76 -0
- package/dist/dispatch-control.js.map +1 -0
- package/dist/effect-profile-runtime.d.ts +40 -0
- package/dist/effect-profile-runtime.d.ts.map +1 -0
- package/dist/effect-profile-runtime.js +51 -0
- package/dist/effect-profile-runtime.js.map +1 -0
- package/dist/effect-profile.d.ts +40 -0
- package/dist/effect-profile.d.ts.map +1 -0
- package/dist/effect-profile.js +152 -0
- package/dist/effect-profile.js.map +1 -0
- package/dist/execution-retention.d.ts +90 -0
- package/dist/execution-retention.d.ts.map +1 -0
- package/dist/execution-retention.js +247 -0
- package/dist/execution-retention.js.map +1 -0
- package/dist/experiment-contract.d.ts +56 -0
- package/dist/experiment-contract.d.ts.map +1 -0
- package/dist/experiment-contract.js +80 -0
- package/dist/experiment-contract.js.map +1 -0
- package/dist/experiment-state.d.ts +22 -0
- package/dist/experiment-state.d.ts.map +1 -0
- package/dist/experiment-state.js +79 -0
- package/dist/experiment-state.js.map +1 -0
- package/dist/experiment-store.d.ts +30 -0
- package/dist/experiment-store.d.ts.map +1 -0
- package/dist/experiment-store.js +147 -0
- package/dist/experiment-store.js.map +1 -0
- package/dist/experiment.d.ts +65 -0
- package/dist/experiment.d.ts.map +1 -0
- package/dist/experiment.js +357 -0
- package/dist/experiment.js.map +1 -0
- package/dist/factory-contract.d.ts +79 -0
- package/dist/factory-contract.d.ts.map +1 -0
- package/dist/factory-contract.js +89 -0
- package/dist/factory-contract.js.map +1 -0
- package/dist/factory-migration.d.ts +20 -0
- package/dist/factory-migration.d.ts.map +1 -0
- package/dist/factory-migration.js +55 -0
- package/dist/factory-migration.js.map +1 -0
- package/dist/factory-order.d.ts +848 -0
- package/dist/factory-order.d.ts.map +1 -0
- package/dist/factory-order.js +83 -0
- package/dist/factory-order.js.map +1 -0
- package/dist/factory-registry.d.ts +121 -0
- package/dist/factory-registry.d.ts.map +1 -0
- package/dist/factory-registry.js +133 -0
- package/dist/factory-registry.js.map +1 -0
- package/dist/file-lock.d.ts +8 -2
- package/dist/file-lock.d.ts.map +1 -1
- package/dist/file-lock.js +78 -19
- package/dist/file-lock.js.map +1 -1
- package/dist/herdr-poll.d.ts +8 -0
- package/dist/herdr-poll.d.ts.map +1 -1
- package/dist/herdr-poll.js +23 -0
- package/dist/herdr-poll.js.map +1 -1
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- package/dist/intent-application.d.ts +17 -0
- package/dist/intent-application.d.ts.map +1 -0
- package/dist/intent-application.js +113 -0
- package/dist/intent-application.js.map +1 -0
- package/dist/intent-control.d.ts +201 -0
- package/dist/intent-control.d.ts.map +1 -0
- package/dist/intent-control.js +110 -0
- package/dist/intent-control.js.map +1 -0
- package/dist/intent-scheduling.d.ts +9 -0
- package/dist/intent-scheduling.d.ts.map +1 -0
- package/dist/intent-scheduling.js +15 -0
- package/dist/intent-scheduling.js.map +1 -0
- package/dist/ledger-append.d.ts +15 -0
- package/dist/ledger-append.d.ts.map +1 -0
- package/dist/ledger-append.js +94 -0
- package/dist/ledger-append.js.map +1 -0
- package/dist/ledger.d.ts +11 -0
- package/dist/ledger.d.ts.map +1 -1
- package/dist/ledger.js +3 -7
- package/dist/ledger.js.map +1 -1
- package/dist/native-session-target.d.ts +9 -0
- package/dist/native-session-target.d.ts.map +1 -0
- package/dist/native-session-target.js +29 -0
- package/dist/native-session-target.js.map +1 -0
- package/dist/native-session.d.ts +59 -0
- package/dist/native-session.d.ts.map +1 -0
- package/dist/native-session.js +154 -0
- package/dist/native-session.js.map +1 -0
- package/dist/order-schedule.d.ts +37 -0
- package/dist/order-schedule.d.ts.map +1 -0
- package/dist/order-schedule.js +81 -0
- package/dist/order-schedule.js.map +1 -0
- package/dist/ordinary-children.d.ts +52 -0
- package/dist/ordinary-children.d.ts.map +1 -0
- package/dist/ordinary-children.js +93 -0
- package/dist/ordinary-children.js.map +1 -0
- package/dist/producer-ipc-contract.d.ts +29 -0
- package/dist/producer-ipc-contract.d.ts.map +1 -0
- package/dist/producer-ipc-contract.js +29 -0
- package/dist/producer-ipc-contract.js.map +1 -0
- package/dist/producer-ipc.d.ts +55 -0
- package/dist/producer-ipc.d.ts.map +1 -0
- package/dist/producer-ipc.js +143 -0
- package/dist/producer-ipc.js.map +1 -0
- package/dist/resource-budget.d.ts +334 -0
- package/dist/resource-budget.d.ts.map +1 -0
- package/dist/resource-budget.js +415 -0
- package/dist/resource-budget.js.map +1 -0
- package/dist/retention-contract.d.ts +73 -0
- package/dist/retention-contract.d.ts.map +1 -0
- package/dist/retention-contract.js +104 -0
- package/dist/retention-contract.js.map +1 -0
- package/dist/retention-json.d.ts +3 -0
- package/dist/retention-json.d.ts.map +1 -0
- package/dist/retention-json.js +32 -0
- package/dist/retention-json.js.map +1 -0
- package/dist/run-child.d.ts +4 -0
- package/dist/run-child.d.ts.map +1 -1
- package/dist/run-child.js +16 -2
- package/dist/run-child.js.map +1 -1
- package/dist/run-herdr.d.ts +6 -0
- package/dist/run-herdr.d.ts.map +1 -1
- package/dist/run-herdr.js +19 -6
- package/dist/run-herdr.js.map +1 -1
- package/dist/vendor/adoption.d.ts +129 -0
- package/dist/vendor/adoption.d.ts.map +1 -0
- package/dist/vendor/adoption.js +102 -0
- package/dist/vendor/adoption.js.map +1 -0
- package/dist/work-command.d.ts +30 -0
- package/dist/work-command.d.ts.map +1 -0
- package/dist/work-command.js +148 -0
- package/dist/work-command.js.map +1 -0
- package/dist/work-ledger-destination.d.ts +20 -0
- package/dist/work-ledger-destination.d.ts.map +1 -0
- package/dist/work-ledger-destination.js +131 -0
- package/dist/work-ledger-destination.js.map +1 -0
- package/dist/work-ledger-json.d.ts +25 -0
- package/dist/work-ledger-json.d.ts.map +1 -0
- package/dist/work-ledger-json.js +267 -0
- package/dist/work-ledger-json.js.map +1 -0
- package/dist/work-ledger-occurrences.d.ts +227 -0
- package/dist/work-ledger-occurrences.d.ts.map +1 -0
- package/dist/work-ledger-occurrences.js +115 -0
- package/dist/work-ledger-occurrences.js.map +1 -0
- package/dist/work-ledger-projection.d.ts +295 -0
- package/dist/work-ledger-projection.d.ts.map +1 -0
- package/dist/work-ledger-projection.js +237 -0
- package/dist/work-ledger-projection.js.map +1 -0
- package/dist/work-ledger-snapshot.d.ts +29 -0
- package/dist/work-ledger-snapshot.d.ts.map +1 -0
- package/dist/work-ledger-snapshot.js +267 -0
- package/dist/work-ledger-snapshot.js.map +1 -0
- package/dist/work-ledger-types.d.ts +261 -0
- package/dist/work-ledger-types.d.ts.map +1 -0
- package/dist/work-ledger-types.js +13 -0
- package/dist/work-ledger-types.js.map +1 -0
- package/dist/work-ledger-validation.d.ts +14 -0
- package/dist/work-ledger-validation.d.ts.map +1 -0
- package/dist/work-ledger-validation.js +226 -0
- package/dist/work-ledger-validation.js.map +1 -0
- package/dist/work-ledger.d.ts +43 -0
- package/dist/work-ledger.d.ts.map +1 -0
- package/dist/work-ledger.js +225 -0
- package/dist/work-ledger.js.map +1 -0
- package/extensions/daily-dashboard-session.ts +30 -0
- package/extensions/daily-work-session.ts +20 -0
- package/extensions/delegate-chain.ts +1 -0
- package/extensions/delegation-native.ts +12 -0
- package/extensions/delegation.ts +25 -11
- package/extensions/execute-child.ts +44 -5
- package/extensions/executor-session.ts +9 -0
- package/extensions/grants-command.ts +14 -15
- package/extensions/grants-connected-command.ts +19 -0
- package/extensions/grants.ts +26 -2
- package/extensions/ordinary-runtime.ts +14 -0
- package/extensions/primary-shadow.ts +11 -0
- package/extensions/run-delegation.ts +9 -7
- package/extensions/session.ts +10 -20
- package/extensions/work-runtime.ts +44 -0
- package/package.json +78 -4
- package/src/check-runner.ts +20 -2
- package/src/cli.ts +41 -4
- package/src/control-journal.ts +26 -0
- package/src/daily-dashboard-host.ts +49 -0
- package/src/daily-view-input.ts +59 -0
- package/src/daily-view-render.ts +44 -0
- package/src/daily-view.ts +152 -0
- package/src/dashboard-cli.ts +108 -4
- package/src/dashboard-harness.ts +37 -0
- package/src/dashboard-herdr.ts +7 -2
- package/src/dashboard-host-contract.ts +45 -0
- package/src/dashboard-host-transport.ts +40 -0
- package/src/dashboard-host.ts +191 -0
- package/src/dashboard-observation.ts +45 -0
- package/src/debrief-contract.ts +127 -0
- package/src/debrief-fixture.ts +29 -0
- package/src/debrief-host.ts +53 -0
- package/src/debrief-render.ts +49 -0
- package/src/debrief.ts +198 -0
- package/src/delegate-types.ts +2 -0
- package/src/delegate.ts +1 -0
- package/src/dispatch-control.ts +81 -0
- package/src/effect-profile-runtime.ts +46 -0
- package/src/effect-profile.ts +129 -0
- package/src/execution-retention.ts +230 -0
- package/src/experiment-contract.ts +66 -0
- package/src/experiment-state.ts +44 -0
- package/src/experiment-store.ts +98 -0
- package/src/experiment.ts +231 -0
- package/src/factory-contract.ts +47 -0
- package/src/factory-migration.ts +29 -0
- package/src/factory-order.ts +56 -0
- package/src/factory-registry.ts +60 -0
- package/src/file-lock.ts +47 -11
- package/src/herdr-poll.ts +18 -0
- package/src/index.ts +32 -0
- package/src/intent-application.ts +90 -0
- package/src/intent-control.ts +107 -0
- package/src/intent-scheduling.ts +14 -0
- package/src/ledger-append.ts +72 -0
- package/src/ledger.ts +3 -9
- package/src/native-session-target.ts +23 -0
- package/src/native-session.ts +139 -0
- package/src/order-schedule.ts +42 -0
- package/src/ordinary-children.ts +59 -0
- package/src/producer-ipc-contract.ts +26 -0
- package/src/producer-ipc.ts +107 -0
- package/src/resource-budget.ts +349 -0
- package/src/retention-contract.ts +84 -0
- package/src/retention-json.ts +20 -0
- package/src/run-child.ts +13 -2
- package/src/run-herdr.ts +11 -7
- package/src/vendor/adoption.ts +109 -0
- package/src/work-command.ts +179 -0
- package/src/work-ledger-destination.ts +113 -0
- package/src/work-ledger-json.ts +228 -0
- package/src/work-ledger-occurrences.ts +99 -0
- package/src/work-ledger-projection.ts +262 -0
- package/src/work-ledger-snapshot.ts +246 -0
- package/src/work-ledger-types.ts +229 -0
- package/src/work-ledger-validation.ts +174 -0
- package/src/work-ledger.ts +186 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# Execution retention 2.0 — committed producer input for P03
|
|
2
|
+
|
|
3
|
+
This version replaces the **wire semantics**, not the authority model, of the Sept7 1.0 candidate.
|
|
4
|
+
The old v1 document and all prior receipts remain historical. Ledger v2/v3 and work-v4 are unchanged.
|
|
5
|
+
Formal acceptance and independent overall review remain pending; fixture validity is not live qualification.
|
|
6
|
+
|
|
7
|
+
## Ordinary host integration (additive local candidate)
|
|
8
|
+
|
|
9
|
+
`PI_GRANTS_RETAIN_NATIVE_SESSIONS=1` plus an existing private canonical `PI_GRANTS_NATIVE_SESSION_ROOT`
|
|
10
|
+
now allocates an exclusive per-execution target through shared public delegate/all/chain planning. The
|
|
11
|
+
same plan/audit/executor receives `--session`; model tool parameters never select a target. Invalid roots
|
|
12
|
+
or reused occurrences refuse; unset preserves default ephemeral behavior. This does not alter wire2.0,
|
|
13
|
+
claim producer quiescence/active TUI branch or turn observations into acceptance. The new connected host
|
|
14
|
+
can ingest these exact authorized manifests/blobs through real harness policy/checkpoint adapters into
|
|
15
|
+
actual daily status; see `contracts/dashboard-host/v1/README.md`. No observer session-entry writes.
|
|
16
|
+
|
|
17
|
+
## Public contract and reproducibility
|
|
18
|
+
|
|
19
|
+
- API: `pi-daddy/execution-retention` (also the package root).
|
|
20
|
+
- Strict JSON Schema: `pi-daddy/contracts/execution-retention/v2/manifest.schema.json`.
|
|
21
|
+
- Six standalone manifest fixtures and their exact referenced blob bytes:
|
|
22
|
+
`pi-daddy/contracts/execution-retention/v2/fixtures/*`.
|
|
23
|
+
- Source-owned schema, closed/frozen builder, exact integer/duplicate-aware JSON reader:
|
|
24
|
+
`src/retention-contract.ts`, exported as `RETENTION_SCHEMA`, `buildExecutionRetentionManifest`,
|
|
25
|
+
`parseExecutionRetentionManifest`.
|
|
26
|
+
- Source-owned generator: `scripts/generate-retention-contract.ts`. No import-time writes or default target.
|
|
27
|
+
|
|
28
|
+
From the repository root, with retained Node/dependencies (no package manager or lifecycle):
|
|
29
|
+
|
|
30
|
+
```sh
|
|
31
|
+
node packages/pi-daddy/scripts/generate-retention-contract.ts --check packages/pi-daddy/contracts/execution-retention/v2
|
|
32
|
+
node packages/pi-daddy/scripts/generate-retention-contract.ts --write /absolute/new-parent/fresh-output
|
|
33
|
+
node --test packages/pi-daddy/test/retention-contract.test.ts packages/pi-daddy/test/native-session-retention.test.ts
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
The write target must not exist and its parent must exist. `--check` is read-only and checks the complete
|
|
37
|
+
fixture inventory, not just known files. Each fixture is built with the same producer wire builder and
|
|
38
|
+
native-byte parser as runtime output; all declarations are deterministic synthetic examples, **not**
|
|
39
|
+
provider/native-issued receipts. Two fixtures deliberately share identical transcript bytes but have
|
|
40
|
+
different branch knowledge. Exact bytes alone cannot tell an external reader which branch is active.
|
|
41
|
+
|
|
42
|
+
## Activation and supported native routes
|
|
43
|
+
|
|
44
|
+
`PI_GRANTS_EXECUTION_ARCHIVE=/private/archive` still opts in to asynchronous output/receipt retention.
|
|
45
|
+
Native **file content** additionally needs `PI_GRANTS_NATIVE_SESSION_ROOT=/private/native-sessions`.
|
|
46
|
+
That root must be an absolute, owner-private directory (0700); admitted files must be owned regular
|
|
47
|
+
single-link `.jsonl` files within its canonical boundary. Symlink files/outside targets, missing headers,
|
|
48
|
+
wrong expected session IDs and arbitrary non-session files are refused. No directory scan, auth read,
|
|
49
|
+
parent-transcript traversal, session migration or rewrite occurs. A native file's ordinary 0644 mode is
|
|
50
|
+
acceptable behind the checked private root; this is not hostile-filesystem race containment.
|
|
51
|
+
|
|
52
|
+
Existing governed launch paths now consume:
|
|
53
|
+
|
|
54
|
+
1. **Herdr 0.8.2 protocol 20 `AgentInfo.agent_session`**, from already-required `agent start/get` replies.
|
|
55
|
+
The exact started pane ID and `agent:"pi"` must match. `kind:"id"` records that native session ID with
|
|
56
|
+
missing transcript bytes. `kind:"path"` locates a private session file; the ID is read from its valid
|
|
57
|
+
v3 header, never inferred from the pathname, pane, PID, terminal output or logical name. The reference's
|
|
58
|
+
integration source is observation provenance, not work authority. No additional Herdr RPC is issued.
|
|
59
|
+
2. **Explicit pi `--session` files** on an already-governed process plan. Argv is only a locator, not proof:
|
|
60
|
+
the asynchronous reader must actually open stable private bytes and validate the native header before
|
|
61
|
+
publishing an ID. Start/end observations are coalesced, so missing early files can become available.
|
|
62
|
+
The default `--no-session` behavior is deliberately unchanged; archive activation does not enable
|
|
63
|
+
persistence or alter a worker's control/error behavior.
|
|
64
|
+
3. **The public read-only pi `SessionManager` API**, when a host actually owns that native manager:
|
|
65
|
+
`retention.observeSessionManager(manager)` or `readNativeSession({source:"pi-session-manager", manager,
|
|
66
|
+
path:manager.getSessionFile(), allowedRoot})`. The reader samples `getSessionId/getSessionFile/getLeafId`
|
|
67
|
+
before/after the descriptor read and requires the leaf's complete parent chain in the retained bytes.
|
|
68
|
+
This supplies an observed leaf (including an observed null after `resetLeaf`), not a guessed file tail.
|
|
69
|
+
An in-memory manager has no retained file on this route and remains explicitly missing.
|
|
70
|
+
|
|
71
|
+
**Exact unsupported routes:** default ephemeral process children have no session-file bytes. Current
|
|
72
|
+
print-mode/interactive Herdr launch seams do not expose a live child `SessionManager`. Herdr protocol 20
|
|
73
|
+
session references contain no leaf. Pi 0.84.2 `branch()`/`resetLeaf()` change only its in-memory pointer,
|
|
74
|
+
so reopening a JSONL file reports the last appended entry, not necessarily the live active branch.
|
|
75
|
+
Consequently **file-only and Herdr-only active branches stay unknown**, even when transcript bytes are
|
|
76
|
+
retained. Pi RPC `get_entries` does expose `leafId`, but replacing the current governed print/interactive
|
|
77
|
+
executor with a new RPC control protocol is not implemented or claimed here. No monitoring extension,
|
|
78
|
+
injected status prompt, additional worker turn, or model call is used to bridge these gaps.
|
|
79
|
+
|
|
80
|
+
## Version 2 fields and authority separation
|
|
81
|
+
|
|
82
|
+
The wire remains a small `manifest.json` with relative content-addressed blob basenames, plus LF.
|
|
83
|
+
It is replaced atomically after all referenced bytes are written. Every generation passes the strict
|
|
84
|
+
producer builder before publication. There is no fsync or full-process-crash durability promise.
|
|
85
|
+
|
|
86
|
+
The v1 identity, terminal outcome, content reference and observation-only fields remain, with these
|
|
87
|
+
**explicitly versioned** changes:
|
|
88
|
+
|
|
89
|
+
- `version` is `2.0`; the v2 reader rejects `1.0` rather than silently interpreting it as v2.
|
|
90
|
+
- New required `nativeSession`: source, status, session ID/path, `parentSessionPath`, branch state/leaf,
|
|
91
|
+
last persisted entry ID, byte digest and a reason. No parent file is read from the header pointer.
|
|
92
|
+
- `native.sessionId/sessionPath/branchLeafId` are checked display projections of that observation.
|
|
93
|
+
Callers cannot inject these through the PID/pane display setter.
|
|
94
|
+
- `content.session` now refers to actual retained native bytes when available. A valid header followed
|
|
95
|
+
by a partial/invalid tail may still have retained bytes, but its status is `truncated`/`invalid`, and
|
|
96
|
+
no active branch is promoted. Bad or mismatched headers do not admit bytes.
|
|
97
|
+
- `nativeSession.status:"verified"` means stable private native-format bytes passed header/tree checks.
|
|
98
|
+
It is **not authentication**, successful execution, accepted work, or proof the active branch is known.
|
|
99
|
+
- `branchState:"observed"` is possible only on a matching live manager observation; `unknown` always
|
|
100
|
+
has a null leaf. `lastPersistedEntryId` is separately labelled and never elected as active.
|
|
101
|
+
- The first native session ID and opened inode pin that observation. Replacement/mismatch clears the
|
|
102
|
+
current reference/branch, records a gap and leaves previously written blob bytes intact.
|
|
103
|
+
|
|
104
|
+
Public call IDs come from the actual tool execute argument on delegate/all/chain, not output labels.
|
|
105
|
+
Execution IDs/parent execution IDs remain separate from native session parent pointers. Two concurrent
|
|
106
|
+
calls with the same logical name do not share attempts, sessions or archive directories. Terminal outcome
|
|
107
|
+
and check receipts are never acceptance authority. Every manifest keeps `acceptance:"not-assessed"` and
|
|
108
|
+
`coverage.complete:false`. P03 must independently reconstruct P01 authority before claiming accepted work.
|
|
109
|
+
|
|
110
|
+
## Bounds, interruption and consumer obligations
|
|
111
|
+
|
|
112
|
+
At most 32 archive observations are active. Stream/snapshot bytes share 1 MiB; assembled result, complete
|
|
113
|
+
check receipt and native-session bytes each have their own 1 MiB ceiling. A single native read is active
|
|
114
|
+
per observation, with one coalesced latest request; there is no growing read queue or polling timer.
|
|
115
|
+
Worker control never awaits these reads/writes. External `flush()` waits at quiescence only, with a host-
|
|
116
|
+
owned timeout. Archive admission/write loss, missing/truncated/changed native state, and initial coverage
|
|
117
|
+
gaps remain explicit. Loss strings are historical observations, not a recomputed assurance score.
|
|
118
|
+
|
|
119
|
+
An interrupted worker retains available output/check/session bytes already observed; a producer-process
|
|
120
|
+
crash may leave only a running checkpoint. That must stay incomplete. A successful tool return can have
|
|
121
|
+
pending archive writes; failed required provisioning/lease/check ledger receipts retain their existing
|
|
122
|
+
failure semantics. Receipt bytes available before a mandatory append failure do not turn that failure
|
|
123
|
+
into success. No receipt is partially published as a complete receipt.
|
|
124
|
+
|
|
125
|
+
The archive never harvests environment or auth state. Raw worker/session content can itself contain
|
|
126
|
+
sensitive data: explicit private-root consent and an access-controlled external archive are required;
|
|
127
|
+
no universal secret-redaction guarantee is made.
|
|
128
|
+
|
|
129
|
+
A public consumer must validate the manifest, enforce basename/size limits, then verify **actual bytes**:
|
|
130
|
+
|
|
131
|
+
```js
|
|
132
|
+
import { readFile } from 'node:fs/promises';
|
|
133
|
+
import { dirname, join } from 'node:path';
|
|
134
|
+
import { parseExecutionRetentionManifest, verifyRetainedBytes } from 'pi-daddy/execution-retention';
|
|
135
|
+
const manifest = parseExecutionRetentionManifest(await readFile(manifestPath, 'utf8'));
|
|
136
|
+
const reference = manifest.content.session;
|
|
137
|
+
let bytes;
|
|
138
|
+
if (reference.path) {
|
|
139
|
+
try { bytes = await readFile(join(dirname(manifestPath), reference.path)); } catch { /* missing */ }
|
|
140
|
+
}
|
|
141
|
+
const retained = verifyRetainedBytes(reference, bytes); // retained | missing | mismatch
|
|
142
|
+
// A path/digest/status alone returns missing. Even verified retained bytes are not accepted work.
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Use bounded reads in an untrusted archive. Installed/compiled consumption needs a fresh build; historical
|
|
146
|
+
owner `dist` was preserved, not reused as proof of the new API. The native tests invoke real installed
|
|
147
|
+
SessionManager persistence/navigation without creating an AgentSession or model runtime; Herdr tests use
|
|
148
|
+
schema-shaped deterministic replies. Neither is live pi/Herdr/model qualification.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "2.0",
|
|
3
|
+
"archiveId": "00000000-0000-4000-8000-000000000005",
|
|
4
|
+
"identity": {
|
|
5
|
+
"executionId": "exec:00000000-0000-4000-8000-000000000005",
|
|
6
|
+
"parentExecutionId": "exec:00000000-0000-4000-8000-000000000099",
|
|
7
|
+
"childId": "layout-worker",
|
|
8
|
+
"toolCallId": "call:layout:5",
|
|
9
|
+
"executor": "herdr",
|
|
10
|
+
"taskDigest": "043fd4cb12f188c5bd67ae5274e2afe936cf22d8cf6b133504992023117e6cc5",
|
|
11
|
+
"definitionDigest": null,
|
|
12
|
+
"configurationDigest": "dd4f902362cd72e3601b2440aa9cf3a8bcc913eeace499d284b6a067e032e22a",
|
|
13
|
+
"workspaceId": "layout"
|
|
14
|
+
},
|
|
15
|
+
"native": {
|
|
16
|
+
"pid": null,
|
|
17
|
+
"paneId": "w1:p5",
|
|
18
|
+
"agentName": "layout-worker",
|
|
19
|
+
"tabId": "w1:t5",
|
|
20
|
+
"sessionId": "11111111-1111-4111-8111-111111111111",
|
|
21
|
+
"sessionPath": "/fixture/private/child.jsonl",
|
|
22
|
+
"branchLeafId": null
|
|
23
|
+
},
|
|
24
|
+
"nativeSession": {
|
|
25
|
+
"source": "herdr-path",
|
|
26
|
+
"status": "truncated",
|
|
27
|
+
"sessionId": "11111111-1111-4111-8111-111111111111",
|
|
28
|
+
"sessionPath": "/fixture/private/child.jsonl",
|
|
29
|
+
"parentSessionPath": "/fixture/private/parent.jsonl",
|
|
30
|
+
"branchLeafId": null,
|
|
31
|
+
"branchState": "unknown",
|
|
32
|
+
"lastPersistedEntryId": null,
|
|
33
|
+
"sha256": "2ec1f134bc739984434f7fca689e1c3d1c39fce2dcadae709e9b6faedfcc4ac7",
|
|
34
|
+
"reason": "native-session-incomplete-bytes"
|
|
35
|
+
},
|
|
36
|
+
"state": "terminal",
|
|
37
|
+
"outcome": {
|
|
38
|
+
"code": null,
|
|
39
|
+
"signal": "SIGTERM",
|
|
40
|
+
"timedOut": false,
|
|
41
|
+
"aborted": true,
|
|
42
|
+
"truncated": true,
|
|
43
|
+
"failed": true
|
|
44
|
+
},
|
|
45
|
+
"content": {
|
|
46
|
+
"stdout": {
|
|
47
|
+
"status": "missing",
|
|
48
|
+
"path": null,
|
|
49
|
+
"sha256": null,
|
|
50
|
+
"bytes": null
|
|
51
|
+
},
|
|
52
|
+
"stderr": {
|
|
53
|
+
"status": "missing",
|
|
54
|
+
"path": null,
|
|
55
|
+
"sha256": null,
|
|
56
|
+
"bytes": null
|
|
57
|
+
},
|
|
58
|
+
"paneSnapshot": {
|
|
59
|
+
"status": "missing",
|
|
60
|
+
"path": null,
|
|
61
|
+
"sha256": null,
|
|
62
|
+
"bytes": null
|
|
63
|
+
},
|
|
64
|
+
"result": {
|
|
65
|
+
"status": "retained",
|
|
66
|
+
"path": "result-82c620cdfeb8ca6b858cf653d7f5e2eedca5315d6244216d60e8b36f03223d6a.bin",
|
|
67
|
+
"sha256": "82c620cdfeb8ca6b858cf653d7f5e2eedca5315d6244216d60e8b36f03223d6a",
|
|
68
|
+
"bytes": 9
|
|
69
|
+
},
|
|
70
|
+
"checkReceipt": {
|
|
71
|
+
"status": "missing",
|
|
72
|
+
"path": null,
|
|
73
|
+
"sha256": null,
|
|
74
|
+
"bytes": null
|
|
75
|
+
},
|
|
76
|
+
"session": {
|
|
77
|
+
"status": "retained",
|
|
78
|
+
"path": "session-2ec1f134bc739984434f7fca689e1c3d1c39fce2dcadae709e9b6faedfcc4ac7.bin",
|
|
79
|
+
"sha256": "2ec1f134bc739984434f7fca689e1c3d1c39fce2dcadae709e9b6faedfcc4ac7",
|
|
80
|
+
"bytes": 772
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"coverage": {
|
|
84
|
+
"complete": false,
|
|
85
|
+
"losses": [
|
|
86
|
+
"not-acceptance-evidence",
|
|
87
|
+
"native-session-incomplete-bytes"
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
"acceptance": "not-assessed"
|
|
91
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "2.0",
|
|
3
|
+
"archiveId": "00000000-0000-4000-8000-000000000001",
|
|
4
|
+
"identity": {
|
|
5
|
+
"executionId": "exec:00000000-0000-4000-8000-000000000001",
|
|
6
|
+
"parentExecutionId": "exec:00000000-0000-4000-8000-000000000099",
|
|
7
|
+
"childId": "layout-worker",
|
|
8
|
+
"toolCallId": "call:layout:1",
|
|
9
|
+
"executor": "herdr",
|
|
10
|
+
"taskDigest": "043fd4cb12f188c5bd67ae5274e2afe936cf22d8cf6b133504992023117e6cc5",
|
|
11
|
+
"definitionDigest": null,
|
|
12
|
+
"configurationDigest": "dd4f902362cd72e3601b2440aa9cf3a8bcc913eeace499d284b6a067e032e22a",
|
|
13
|
+
"workspaceId": "layout"
|
|
14
|
+
},
|
|
15
|
+
"native": {
|
|
16
|
+
"pid": null,
|
|
17
|
+
"paneId": "w1:p1",
|
|
18
|
+
"agentName": "layout-worker",
|
|
19
|
+
"tabId": "w1:t1",
|
|
20
|
+
"sessionId": null,
|
|
21
|
+
"sessionPath": null,
|
|
22
|
+
"branchLeafId": null
|
|
23
|
+
},
|
|
24
|
+
"nativeSession": {
|
|
25
|
+
"source": null,
|
|
26
|
+
"status": "missing",
|
|
27
|
+
"sessionId": null,
|
|
28
|
+
"sessionPath": null,
|
|
29
|
+
"parentSessionPath": null,
|
|
30
|
+
"branchLeafId": null,
|
|
31
|
+
"branchState": "unknown",
|
|
32
|
+
"lastPersistedEntryId": null,
|
|
33
|
+
"sha256": null,
|
|
34
|
+
"reason": "native-session-unavailable"
|
|
35
|
+
},
|
|
36
|
+
"state": "terminal",
|
|
37
|
+
"outcome": {
|
|
38
|
+
"code": 0,
|
|
39
|
+
"signal": null,
|
|
40
|
+
"timedOut": false,
|
|
41
|
+
"aborted": false,
|
|
42
|
+
"truncated": false,
|
|
43
|
+
"failed": false
|
|
44
|
+
},
|
|
45
|
+
"content": {
|
|
46
|
+
"stdout": {
|
|
47
|
+
"status": "missing",
|
|
48
|
+
"path": null,
|
|
49
|
+
"sha256": null,
|
|
50
|
+
"bytes": null
|
|
51
|
+
},
|
|
52
|
+
"stderr": {
|
|
53
|
+
"status": "missing",
|
|
54
|
+
"path": null,
|
|
55
|
+
"sha256": null,
|
|
56
|
+
"bytes": null
|
|
57
|
+
},
|
|
58
|
+
"paneSnapshot": {
|
|
59
|
+
"status": "missing",
|
|
60
|
+
"path": null,
|
|
61
|
+
"sha256": null,
|
|
62
|
+
"bytes": null
|
|
63
|
+
},
|
|
64
|
+
"result": {
|
|
65
|
+
"status": "missing",
|
|
66
|
+
"path": null,
|
|
67
|
+
"sha256": null,
|
|
68
|
+
"bytes": null
|
|
69
|
+
},
|
|
70
|
+
"checkReceipt": {
|
|
71
|
+
"status": "missing",
|
|
72
|
+
"path": null,
|
|
73
|
+
"sha256": null,
|
|
74
|
+
"bytes": null
|
|
75
|
+
},
|
|
76
|
+
"session": {
|
|
77
|
+
"status": "missing",
|
|
78
|
+
"path": null,
|
|
79
|
+
"sha256": null,
|
|
80
|
+
"bytes": null
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"coverage": {
|
|
84
|
+
"complete": false,
|
|
85
|
+
"losses": [
|
|
86
|
+
"native-session-unavailable",
|
|
87
|
+
"active-branch-unknown"
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
"acceptance": "not-assessed"
|
|
91
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "2.0",
|
|
3
|
+
"archiveId": "00000000-0000-4000-8000-000000000003",
|
|
4
|
+
"identity": {
|
|
5
|
+
"executionId": "exec:00000000-0000-4000-8000-000000000003",
|
|
6
|
+
"parentExecutionId": "exec:00000000-0000-4000-8000-000000000099",
|
|
7
|
+
"childId": "layout-worker",
|
|
8
|
+
"toolCallId": "call:layout:3",
|
|
9
|
+
"executor": "herdr",
|
|
10
|
+
"taskDigest": "043fd4cb12f188c5bd67ae5274e2afe936cf22d8cf6b133504992023117e6cc5",
|
|
11
|
+
"definitionDigest": null,
|
|
12
|
+
"configurationDigest": "dd4f902362cd72e3601b2440aa9cf3a8bcc913eeace499d284b6a067e032e22a",
|
|
13
|
+
"workspaceId": "layout"
|
|
14
|
+
},
|
|
15
|
+
"native": {
|
|
16
|
+
"pid": null,
|
|
17
|
+
"paneId": "w1:p3",
|
|
18
|
+
"agentName": "layout-worker",
|
|
19
|
+
"tabId": "w1:t3",
|
|
20
|
+
"sessionId": "11111111-1111-4111-8111-111111111111",
|
|
21
|
+
"sessionPath": "/fixture/private/child.jsonl",
|
|
22
|
+
"branchLeafId": null
|
|
23
|
+
},
|
|
24
|
+
"nativeSession": {
|
|
25
|
+
"source": "herdr-path",
|
|
26
|
+
"status": "verified",
|
|
27
|
+
"sessionId": "11111111-1111-4111-8111-111111111111",
|
|
28
|
+
"sessionPath": "/fixture/private/child.jsonl",
|
|
29
|
+
"parentSessionPath": "/fixture/private/parent.jsonl",
|
|
30
|
+
"branchLeafId": null,
|
|
31
|
+
"branchState": "unknown",
|
|
32
|
+
"lastPersistedEntryId": "bbbbbbbb",
|
|
33
|
+
"sha256": "9bdb4bd16a901da31580acf056bda525225259e15ec409e0410480109011772f",
|
|
34
|
+
"reason": "active-branch-unknown"
|
|
35
|
+
},
|
|
36
|
+
"state": "terminal",
|
|
37
|
+
"outcome": {
|
|
38
|
+
"code": 0,
|
|
39
|
+
"signal": null,
|
|
40
|
+
"timedOut": false,
|
|
41
|
+
"aborted": false,
|
|
42
|
+
"truncated": false,
|
|
43
|
+
"failed": false
|
|
44
|
+
},
|
|
45
|
+
"content": {
|
|
46
|
+
"stdout": {
|
|
47
|
+
"status": "missing",
|
|
48
|
+
"path": null,
|
|
49
|
+
"sha256": null,
|
|
50
|
+
"bytes": null
|
|
51
|
+
},
|
|
52
|
+
"stderr": {
|
|
53
|
+
"status": "missing",
|
|
54
|
+
"path": null,
|
|
55
|
+
"sha256": null,
|
|
56
|
+
"bytes": null
|
|
57
|
+
},
|
|
58
|
+
"paneSnapshot": {
|
|
59
|
+
"status": "missing",
|
|
60
|
+
"path": null,
|
|
61
|
+
"sha256": null,
|
|
62
|
+
"bytes": null
|
|
63
|
+
},
|
|
64
|
+
"result": {
|
|
65
|
+
"status": "retained",
|
|
66
|
+
"path": "result-82c620cdfeb8ca6b858cf653d7f5e2eedca5315d6244216d60e8b36f03223d6a.bin",
|
|
67
|
+
"sha256": "82c620cdfeb8ca6b858cf653d7f5e2eedca5315d6244216d60e8b36f03223d6a",
|
|
68
|
+
"bytes": 9
|
|
69
|
+
},
|
|
70
|
+
"checkReceipt": {
|
|
71
|
+
"status": "missing",
|
|
72
|
+
"path": null,
|
|
73
|
+
"sha256": null,
|
|
74
|
+
"bytes": null
|
|
75
|
+
},
|
|
76
|
+
"session": {
|
|
77
|
+
"status": "retained",
|
|
78
|
+
"path": "session-9bdb4bd16a901da31580acf056bda525225259e15ec409e0410480109011772f.bin",
|
|
79
|
+
"sha256": "9bdb4bd16a901da31580acf056bda525225259e15ec409e0410480109011772f",
|
|
80
|
+
"bytes": 782
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"coverage": {
|
|
84
|
+
"complete": false,
|
|
85
|
+
"losses": [
|
|
86
|
+
"not-acceptance-evidence",
|
|
87
|
+
"active-branch-unknown"
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
"acceptance": "not-assessed"
|
|
91
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "2.0",
|
|
3
|
+
"archiveId": "00000000-0000-4000-8000-000000000002",
|
|
4
|
+
"identity": {
|
|
5
|
+
"executionId": "exec:00000000-0000-4000-8000-000000000002",
|
|
6
|
+
"parentExecutionId": "exec:00000000-0000-4000-8000-000000000099",
|
|
7
|
+
"childId": "layout-worker",
|
|
8
|
+
"toolCallId": "call:layout:2",
|
|
9
|
+
"executor": "herdr",
|
|
10
|
+
"taskDigest": "043fd4cb12f188c5bd67ae5274e2afe936cf22d8cf6b133504992023117e6cc5",
|
|
11
|
+
"definitionDigest": null,
|
|
12
|
+
"configurationDigest": "dd4f902362cd72e3601b2440aa9cf3a8bcc913eeace499d284b6a067e032e22a",
|
|
13
|
+
"workspaceId": "layout"
|
|
14
|
+
},
|
|
15
|
+
"native": {
|
|
16
|
+
"pid": null,
|
|
17
|
+
"paneId": "w1:p2",
|
|
18
|
+
"agentName": "layout-worker",
|
|
19
|
+
"tabId": "w1:t2",
|
|
20
|
+
"sessionId": "11111111-1111-4111-8111-111111111111",
|
|
21
|
+
"sessionPath": null,
|
|
22
|
+
"branchLeafId": null
|
|
23
|
+
},
|
|
24
|
+
"nativeSession": {
|
|
25
|
+
"source": "herdr-id",
|
|
26
|
+
"status": "missing",
|
|
27
|
+
"sessionId": "11111111-1111-4111-8111-111111111111",
|
|
28
|
+
"sessionPath": null,
|
|
29
|
+
"parentSessionPath": null,
|
|
30
|
+
"branchLeafId": null,
|
|
31
|
+
"branchState": "unknown",
|
|
32
|
+
"lastPersistedEntryId": null,
|
|
33
|
+
"sha256": null,
|
|
34
|
+
"reason": "native-session-path-unavailable"
|
|
35
|
+
},
|
|
36
|
+
"state": "terminal",
|
|
37
|
+
"outcome": {
|
|
38
|
+
"code": 0,
|
|
39
|
+
"signal": null,
|
|
40
|
+
"timedOut": false,
|
|
41
|
+
"aborted": false,
|
|
42
|
+
"truncated": false,
|
|
43
|
+
"failed": false
|
|
44
|
+
},
|
|
45
|
+
"content": {
|
|
46
|
+
"stdout": {
|
|
47
|
+
"status": "missing",
|
|
48
|
+
"path": null,
|
|
49
|
+
"sha256": null,
|
|
50
|
+
"bytes": null
|
|
51
|
+
},
|
|
52
|
+
"stderr": {
|
|
53
|
+
"status": "missing",
|
|
54
|
+
"path": null,
|
|
55
|
+
"sha256": null,
|
|
56
|
+
"bytes": null
|
|
57
|
+
},
|
|
58
|
+
"paneSnapshot": {
|
|
59
|
+
"status": "missing",
|
|
60
|
+
"path": null,
|
|
61
|
+
"sha256": null,
|
|
62
|
+
"bytes": null
|
|
63
|
+
},
|
|
64
|
+
"result": {
|
|
65
|
+
"status": "missing",
|
|
66
|
+
"path": null,
|
|
67
|
+
"sha256": null,
|
|
68
|
+
"bytes": null
|
|
69
|
+
},
|
|
70
|
+
"checkReceipt": {
|
|
71
|
+
"status": "missing",
|
|
72
|
+
"path": null,
|
|
73
|
+
"sha256": null,
|
|
74
|
+
"bytes": null
|
|
75
|
+
},
|
|
76
|
+
"session": {
|
|
77
|
+
"status": "missing",
|
|
78
|
+
"path": null,
|
|
79
|
+
"sha256": null,
|
|
80
|
+
"bytes": null
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"coverage": {
|
|
84
|
+
"complete": false,
|
|
85
|
+
"losses": [
|
|
86
|
+
"native-session-unavailable",
|
|
87
|
+
"active-branch-unknown"
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
"acceptance": "not-assessed"
|
|
91
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "2.0",
|
|
3
|
+
"archiveId": "00000000-0000-4000-8000-000000000004",
|
|
4
|
+
"identity": {
|
|
5
|
+
"executionId": "exec:00000000-0000-4000-8000-000000000004",
|
|
6
|
+
"parentExecutionId": "exec:00000000-0000-4000-8000-000000000099",
|
|
7
|
+
"childId": "layout-worker",
|
|
8
|
+
"toolCallId": "call:layout:4",
|
|
9
|
+
"executor": "herdr",
|
|
10
|
+
"taskDigest": "043fd4cb12f188c5bd67ae5274e2afe936cf22d8cf6b133504992023117e6cc5",
|
|
11
|
+
"definitionDigest": null,
|
|
12
|
+
"configurationDigest": "dd4f902362cd72e3601b2440aa9cf3a8bcc913eeace499d284b6a067e032e22a",
|
|
13
|
+
"workspaceId": "layout"
|
|
14
|
+
},
|
|
15
|
+
"native": {
|
|
16
|
+
"pid": null,
|
|
17
|
+
"paneId": "w1:p4",
|
|
18
|
+
"agentName": "layout-worker",
|
|
19
|
+
"tabId": "w1:t4",
|
|
20
|
+
"sessionId": "11111111-1111-4111-8111-111111111111",
|
|
21
|
+
"sessionPath": "/fixture/private/child.jsonl",
|
|
22
|
+
"branchLeafId": "aaaaaaaa"
|
|
23
|
+
},
|
|
24
|
+
"nativeSession": {
|
|
25
|
+
"source": "pi-session-manager",
|
|
26
|
+
"status": "verified",
|
|
27
|
+
"sessionId": "11111111-1111-4111-8111-111111111111",
|
|
28
|
+
"sessionPath": "/fixture/private/child.jsonl",
|
|
29
|
+
"parentSessionPath": "/fixture/private/parent.jsonl",
|
|
30
|
+
"branchLeafId": "aaaaaaaa",
|
|
31
|
+
"branchState": "observed",
|
|
32
|
+
"lastPersistedEntryId": "bbbbbbbb",
|
|
33
|
+
"sha256": "9bdb4bd16a901da31580acf056bda525225259e15ec409e0410480109011772f",
|
|
34
|
+
"reason": null
|
|
35
|
+
},
|
|
36
|
+
"state": "terminal",
|
|
37
|
+
"outcome": {
|
|
38
|
+
"code": 0,
|
|
39
|
+
"signal": null,
|
|
40
|
+
"timedOut": false,
|
|
41
|
+
"aborted": false,
|
|
42
|
+
"truncated": false,
|
|
43
|
+
"failed": false
|
|
44
|
+
},
|
|
45
|
+
"content": {
|
|
46
|
+
"stdout": {
|
|
47
|
+
"status": "missing",
|
|
48
|
+
"path": null,
|
|
49
|
+
"sha256": null,
|
|
50
|
+
"bytes": null
|
|
51
|
+
},
|
|
52
|
+
"stderr": {
|
|
53
|
+
"status": "missing",
|
|
54
|
+
"path": null,
|
|
55
|
+
"sha256": null,
|
|
56
|
+
"bytes": null
|
|
57
|
+
},
|
|
58
|
+
"paneSnapshot": {
|
|
59
|
+
"status": "missing",
|
|
60
|
+
"path": null,
|
|
61
|
+
"sha256": null,
|
|
62
|
+
"bytes": null
|
|
63
|
+
},
|
|
64
|
+
"result": {
|
|
65
|
+
"status": "retained",
|
|
66
|
+
"path": "result-82c620cdfeb8ca6b858cf653d7f5e2eedca5315d6244216d60e8b36f03223d6a.bin",
|
|
67
|
+
"sha256": "82c620cdfeb8ca6b858cf653d7f5e2eedca5315d6244216d60e8b36f03223d6a",
|
|
68
|
+
"bytes": 9
|
|
69
|
+
},
|
|
70
|
+
"checkReceipt": {
|
|
71
|
+
"status": "missing",
|
|
72
|
+
"path": null,
|
|
73
|
+
"sha256": null,
|
|
74
|
+
"bytes": null
|
|
75
|
+
},
|
|
76
|
+
"session": {
|
|
77
|
+
"status": "retained",
|
|
78
|
+
"path": "session-9bdb4bd16a901da31580acf056bda525225259e15ec409e0410480109011772f.bin",
|
|
79
|
+
"sha256": "9bdb4bd16a901da31580acf056bda525225259e15ec409e0410480109011772f",
|
|
80
|
+
"bytes": 782
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"coverage": {
|
|
84
|
+
"complete": false,
|
|
85
|
+
"losses": [
|
|
86
|
+
"not-acceptance-evidence"
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
"acceptance": "not-assessed"
|
|
90
|
+
}
|