pi-daddy 0.22.0 → 0.23.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.
Files changed (362) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/contracts/daily-view/v1/README.md +114 -0
  3. package/contracts/daily-view/v1/fixtures/view.json +525 -0
  4. package/contracts/daily-view/v1/fixtures/view.txt +75 -0
  5. package/contracts/daily-view/v1/fixtures/work.jsonl +17 -0
  6. package/contracts/daily-view/v1/p03/README.md +26 -0
  7. package/contracts/daily-view/v1/p03/fixtures/retained-executions.json +241 -0
  8. package/contracts/daily-view/v1/p03/projection.schema.json +194 -0
  9. package/contracts/daily-view/v1/p03/provenance.json +21 -0
  10. package/contracts/dashboard-host/v1/README.md +176 -0
  11. package/contracts/debrief/v1/README.md +146 -0
  12. package/contracts/debrief/v1/intervention/README.md +32 -0
  13. package/contracts/debrief/v1/intervention/fixtures/artifact-3ee11136beb864f518252e5024dae9197421fbf97b6e981d3243c782b5c44bd0.txt +1 -0
  14. package/contracts/debrief/v1/intervention/fixtures/artifact-58905d872dd3c54a9705f67b05fa82edbad7af6476ae8993faf1a7b9fadfb905.txt +1 -0
  15. package/contracts/debrief/v1/intervention/fixtures/assessment.json +29 -0
  16. package/contracts/debrief/v1/intervention/fixtures/blind-view.json +20 -0
  17. package/contracts/debrief/v1/intervention/fixtures/choice.json +7 -0
  18. package/contracts/debrief/v1/intervention/fixtures/manifest.json +57 -0
  19. package/contracts/debrief/v1/intervention/fixtures/reveal.json +39 -0
  20. package/contracts/debrief/v1/provenance.json +89 -0
  21. package/contracts/debrief/v1/work-capture/README.md +38 -0
  22. package/contracts/debrief/v1/work-capture/fixtures/batch.json +17 -0
  23. package/contracts/debrief/v1/work-capture/fixtures/cases.json +184 -0
  24. package/contracts/debrief/v1/work-capture/fixtures/review.json +184 -0
  25. package/contracts/debrief/v1/work-capture/review-request.schema.json +41 -0
  26. package/contracts/debrief/v1/work-capture/work-case.schema.json +190 -0
  27. package/contracts/debrief/v2/README.md +71 -0
  28. package/contracts/debrief/v2/input-pin.json +66 -0
  29. package/contracts/debrief/v2/intervention-upstream.md +40 -0
  30. package/contracts/debrief/v2/work-signals-upstream.md +22 -0
  31. package/contracts/dispatch-control/v1/README.md +109 -0
  32. package/contracts/dispatch-control/v1/request.schema.json +19 -0
  33. package/contracts/effect-profile/v1/README.md +124 -0
  34. package/contracts/execution-retention/v1/README.md +109 -0
  35. package/contracts/execution-retention/v2/README.md +148 -0
  36. package/contracts/execution-retention/v2/fixtures/interrupted-native-bytes.json +91 -0
  37. package/contracts/execution-retention/v2/fixtures/missing-native-session.json +91 -0
  38. package/contracts/execution-retention/v2/fixtures/native-file-unknown-branch.json +91 -0
  39. package/contracts/execution-retention/v2/fixtures/native-id-without-bytes.json +91 -0
  40. package/contracts/execution-retention/v2/fixtures/native-live-branch.json +90 -0
  41. package/contracts/execution-retention/v2/fixtures/replaced-native-session.json +92 -0
  42. package/contracts/execution-retention/v2/fixtures/result-82c620cdfeb8ca6b858cf653d7f5e2eedca5315d6244216d60e8b36f03223d6a.bin +1 -0
  43. package/contracts/execution-retention/v2/fixtures/session-2ec1f134bc739984434f7fca689e1c3d1c39fce2dcadae709e9b6faedfcc4ac7.bin +3 -0
  44. package/contracts/execution-retention/v2/fixtures/session-9bdb4bd16a901da31580acf056bda525225259e15ec409e0410480109011772f.bin +3 -0
  45. package/contracts/execution-retention/v2/manifest.schema.json +858 -0
  46. package/contracts/experiment/v1/README.md +164 -0
  47. package/contracts/factory-order/v1/README.md +151 -0
  48. package/contracts/factory-order/v1/adoption-pin.json +8 -0
  49. package/contracts/intent-control/v1/README.md +135 -0
  50. package/contracts/intent-control/v1/request.schema.json +1096 -0
  51. package/contracts/intent-control/v2/README.md +34 -0
  52. package/contracts/intent-control/v2/request.schema.json +1070 -0
  53. package/contracts/ledger/v4/README.md +241 -0
  54. package/contracts/ledger/v4/fixtures/layout-options.json +428 -0
  55. package/contracts/ledger/v4/fixtures/work-acceptance.json +57 -0
  56. package/contracts/ledger/v4/fixtures/work-occurrence.json +44 -0
  57. package/contracts/ledger/v4/fixtures/work-revision.json +26 -0
  58. package/contracts/ledger/v4/fixtures/work-snapshot.json +73 -0
  59. package/contracts/ledger/v4/ledger-event.schema.json +162 -0
  60. package/contracts/ordinary-control/v1/README.md +59 -0
  61. package/contracts/producer-ipc/v1/README.md +137 -0
  62. package/dist/check-runner.d.ts +5 -0
  63. package/dist/check-runner.d.ts.map +1 -1
  64. package/dist/check-runner.js +16 -2
  65. package/dist/check-runner.js.map +1 -1
  66. package/dist/control-journal.d.ts +20 -0
  67. package/dist/control-journal.d.ts.map +1 -0
  68. package/dist/control-journal.js +73 -0
  69. package/dist/control-journal.js.map +1 -0
  70. package/dist/daily-view-input.d.ts +44 -0
  71. package/dist/daily-view-input.d.ts.map +1 -0
  72. package/dist/daily-view-input.js +68 -0
  73. package/dist/daily-view-input.js.map +1 -0
  74. package/dist/daily-view-render.d.ts +4 -0
  75. package/dist/daily-view-render.d.ts.map +1 -0
  76. package/dist/daily-view-render.js +41 -0
  77. package/dist/daily-view-render.js.map +1 -0
  78. package/dist/daily-view.d.ts +74 -0
  79. package/dist/daily-view.d.ts.map +1 -0
  80. package/dist/daily-view.js +170 -0
  81. package/dist/daily-view.js.map +1 -0
  82. package/dist/dashboard-cli.d.ts +26 -1
  83. package/dist/dashboard-cli.d.ts.map +1 -1
  84. package/dist/dashboard-cli.js +121 -3
  85. package/dist/dashboard-cli.js.map +1 -1
  86. package/dist/dashboard-harness.d.ts +19 -0
  87. package/dist/dashboard-harness.d.ts.map +1 -0
  88. package/dist/dashboard-harness.js +75 -0
  89. package/dist/dashboard-harness.js.map +1 -0
  90. package/dist/dashboard-herdr.d.ts.map +1 -1
  91. package/dist/dashboard-herdr.js +7 -2
  92. package/dist/dashboard-herdr.js.map +1 -1
  93. package/dist/dashboard-host-contract.d.ts +111 -0
  94. package/dist/dashboard-host-contract.d.ts.map +1 -0
  95. package/dist/dashboard-host-contract.js +14 -0
  96. package/dist/dashboard-host-contract.js.map +1 -0
  97. package/dist/dashboard-host-transport.d.ts +15 -0
  98. package/dist/dashboard-host-transport.d.ts.map +1 -0
  99. package/dist/dashboard-host-transport.js +122 -0
  100. package/dist/dashboard-host-transport.js.map +1 -0
  101. package/dist/dashboard-host.d.ts +149 -0
  102. package/dist/dashboard-host.d.ts.map +1 -0
  103. package/dist/dashboard-host.js +329 -0
  104. package/dist/dashboard-host.js.map +1 -0
  105. package/dist/dashboard-observation.d.ts +28 -0
  106. package/dist/dashboard-observation.d.ts.map +1 -0
  107. package/dist/dashboard-observation.js +86 -0
  108. package/dist/dashboard-observation.js.map +1 -0
  109. package/dist/debrief-contract.d.ts +65 -0
  110. package/dist/debrief-contract.d.ts.map +1 -0
  111. package/dist/debrief-contract.js +151 -0
  112. package/dist/debrief-contract.js.map +1 -0
  113. package/dist/debrief-fixture.d.ts +16 -0
  114. package/dist/debrief-fixture.d.ts.map +1 -0
  115. package/dist/debrief-fixture.js +41 -0
  116. package/dist/debrief-fixture.js.map +1 -0
  117. package/dist/debrief-host.d.ts +59 -0
  118. package/dist/debrief-host.d.ts.map +1 -0
  119. package/dist/debrief-host.js +49 -0
  120. package/dist/debrief-host.js.map +1 -0
  121. package/dist/debrief-render.d.ts +5 -0
  122. package/dist/debrief-render.d.ts.map +1 -0
  123. package/dist/debrief-render.js +65 -0
  124. package/dist/debrief-render.js.map +1 -0
  125. package/dist/debrief.d.ts +90 -0
  126. package/dist/debrief.d.ts.map +1 -0
  127. package/dist/debrief.js +263 -0
  128. package/dist/debrief.js.map +1 -0
  129. package/dist/delegate-types.d.ts +2 -0
  130. package/dist/delegate-types.d.ts.map +1 -1
  131. package/dist/delegate-types.js.map +1 -1
  132. package/dist/delegate.d.ts.map +1 -1
  133. package/dist/delegate.js +1 -0
  134. package/dist/delegate.js.map +1 -1
  135. package/dist/dispatch-control.d.ts +45 -0
  136. package/dist/dispatch-control.d.ts.map +1 -0
  137. package/dist/dispatch-control.js +76 -0
  138. package/dist/dispatch-control.js.map +1 -0
  139. package/dist/effect-profile-runtime.d.ts +40 -0
  140. package/dist/effect-profile-runtime.d.ts.map +1 -0
  141. package/dist/effect-profile-runtime.js +51 -0
  142. package/dist/effect-profile-runtime.js.map +1 -0
  143. package/dist/effect-profile.d.ts +40 -0
  144. package/dist/effect-profile.d.ts.map +1 -0
  145. package/dist/effect-profile.js +152 -0
  146. package/dist/effect-profile.js.map +1 -0
  147. package/dist/execution-retention.d.ts +90 -0
  148. package/dist/execution-retention.d.ts.map +1 -0
  149. package/dist/execution-retention.js +247 -0
  150. package/dist/execution-retention.js.map +1 -0
  151. package/dist/experiment-contract.d.ts +56 -0
  152. package/dist/experiment-contract.d.ts.map +1 -0
  153. package/dist/experiment-contract.js +80 -0
  154. package/dist/experiment-contract.js.map +1 -0
  155. package/dist/experiment-state.d.ts +22 -0
  156. package/dist/experiment-state.d.ts.map +1 -0
  157. package/dist/experiment-state.js +79 -0
  158. package/dist/experiment-state.js.map +1 -0
  159. package/dist/experiment-store.d.ts +28 -0
  160. package/dist/experiment-store.d.ts.map +1 -0
  161. package/dist/experiment-store.js +130 -0
  162. package/dist/experiment-store.js.map +1 -0
  163. package/dist/experiment.d.ts +65 -0
  164. package/dist/experiment.d.ts.map +1 -0
  165. package/dist/experiment.js +357 -0
  166. package/dist/experiment.js.map +1 -0
  167. package/dist/factory-contract.d.ts +79 -0
  168. package/dist/factory-contract.d.ts.map +1 -0
  169. package/dist/factory-contract.js +89 -0
  170. package/dist/factory-contract.js.map +1 -0
  171. package/dist/factory-migration.d.ts +20 -0
  172. package/dist/factory-migration.d.ts.map +1 -0
  173. package/dist/factory-migration.js +55 -0
  174. package/dist/factory-migration.js.map +1 -0
  175. package/dist/factory-order.d.ts +848 -0
  176. package/dist/factory-order.d.ts.map +1 -0
  177. package/dist/factory-order.js +83 -0
  178. package/dist/factory-order.js.map +1 -0
  179. package/dist/factory-registry.d.ts +121 -0
  180. package/dist/factory-registry.d.ts.map +1 -0
  181. package/dist/factory-registry.js +133 -0
  182. package/dist/factory-registry.js.map +1 -0
  183. package/dist/file-lock.d.ts +8 -2
  184. package/dist/file-lock.d.ts.map +1 -1
  185. package/dist/file-lock.js +78 -19
  186. package/dist/file-lock.js.map +1 -1
  187. package/dist/herdr-poll.d.ts +8 -0
  188. package/dist/herdr-poll.d.ts.map +1 -1
  189. package/dist/herdr-poll.js +23 -0
  190. package/dist/herdr-poll.js.map +1 -1
  191. package/dist/index.d.ts +20 -0
  192. package/dist/index.d.ts.map +1 -1
  193. package/dist/index.js +20 -0
  194. package/dist/index.js.map +1 -1
  195. package/dist/intent-application.d.ts +17 -0
  196. package/dist/intent-application.d.ts.map +1 -0
  197. package/dist/intent-application.js +113 -0
  198. package/dist/intent-application.js.map +1 -0
  199. package/dist/intent-control.d.ts +201 -0
  200. package/dist/intent-control.d.ts.map +1 -0
  201. package/dist/intent-control.js +110 -0
  202. package/dist/intent-control.js.map +1 -0
  203. package/dist/intent-scheduling.d.ts +9 -0
  204. package/dist/intent-scheduling.d.ts.map +1 -0
  205. package/dist/intent-scheduling.js +15 -0
  206. package/dist/intent-scheduling.js.map +1 -0
  207. package/dist/ledger-append.d.ts +15 -0
  208. package/dist/ledger-append.d.ts.map +1 -0
  209. package/dist/ledger-append.js +94 -0
  210. package/dist/ledger-append.js.map +1 -0
  211. package/dist/ledger.d.ts +11 -0
  212. package/dist/ledger.d.ts.map +1 -1
  213. package/dist/ledger.js +3 -7
  214. package/dist/ledger.js.map +1 -1
  215. package/dist/native-session-target.d.ts +9 -0
  216. package/dist/native-session-target.d.ts.map +1 -0
  217. package/dist/native-session-target.js +29 -0
  218. package/dist/native-session-target.js.map +1 -0
  219. package/dist/native-session.d.ts +59 -0
  220. package/dist/native-session.d.ts.map +1 -0
  221. package/dist/native-session.js +154 -0
  222. package/dist/native-session.js.map +1 -0
  223. package/dist/order-schedule.d.ts +37 -0
  224. package/dist/order-schedule.d.ts.map +1 -0
  225. package/dist/order-schedule.js +81 -0
  226. package/dist/order-schedule.js.map +1 -0
  227. package/dist/ordinary-children.d.ts +52 -0
  228. package/dist/ordinary-children.d.ts.map +1 -0
  229. package/dist/ordinary-children.js +93 -0
  230. package/dist/ordinary-children.js.map +1 -0
  231. package/dist/producer-ipc-contract.d.ts +29 -0
  232. package/dist/producer-ipc-contract.d.ts.map +1 -0
  233. package/dist/producer-ipc-contract.js +29 -0
  234. package/dist/producer-ipc-contract.js.map +1 -0
  235. package/dist/producer-ipc.d.ts +55 -0
  236. package/dist/producer-ipc.d.ts.map +1 -0
  237. package/dist/producer-ipc.js +143 -0
  238. package/dist/producer-ipc.js.map +1 -0
  239. package/dist/resource-budget.d.ts +334 -0
  240. package/dist/resource-budget.d.ts.map +1 -0
  241. package/dist/resource-budget.js +415 -0
  242. package/dist/resource-budget.js.map +1 -0
  243. package/dist/retention-contract.d.ts +73 -0
  244. package/dist/retention-contract.d.ts.map +1 -0
  245. package/dist/retention-contract.js +104 -0
  246. package/dist/retention-contract.js.map +1 -0
  247. package/dist/retention-json.d.ts +3 -0
  248. package/dist/retention-json.d.ts.map +1 -0
  249. package/dist/retention-json.js +32 -0
  250. package/dist/retention-json.js.map +1 -0
  251. package/dist/run-child.d.ts +4 -0
  252. package/dist/run-child.d.ts.map +1 -1
  253. package/dist/run-child.js +16 -2
  254. package/dist/run-child.js.map +1 -1
  255. package/dist/run-herdr.d.ts +6 -0
  256. package/dist/run-herdr.d.ts.map +1 -1
  257. package/dist/run-herdr.js +19 -6
  258. package/dist/run-herdr.js.map +1 -1
  259. package/dist/vendor/adoption.d.ts +129 -0
  260. package/dist/vendor/adoption.d.ts.map +1 -0
  261. package/dist/vendor/adoption.js +102 -0
  262. package/dist/vendor/adoption.js.map +1 -0
  263. package/dist/work-ledger-destination.d.ts +20 -0
  264. package/dist/work-ledger-destination.d.ts.map +1 -0
  265. package/dist/work-ledger-destination.js +131 -0
  266. package/dist/work-ledger-destination.js.map +1 -0
  267. package/dist/work-ledger-json.d.ts +25 -0
  268. package/dist/work-ledger-json.d.ts.map +1 -0
  269. package/dist/work-ledger-json.js +267 -0
  270. package/dist/work-ledger-json.js.map +1 -0
  271. package/dist/work-ledger-occurrences.d.ts +227 -0
  272. package/dist/work-ledger-occurrences.d.ts.map +1 -0
  273. package/dist/work-ledger-occurrences.js +115 -0
  274. package/dist/work-ledger-occurrences.js.map +1 -0
  275. package/dist/work-ledger-projection.d.ts +295 -0
  276. package/dist/work-ledger-projection.d.ts.map +1 -0
  277. package/dist/work-ledger-projection.js +237 -0
  278. package/dist/work-ledger-projection.js.map +1 -0
  279. package/dist/work-ledger-snapshot.d.ts +29 -0
  280. package/dist/work-ledger-snapshot.d.ts.map +1 -0
  281. package/dist/work-ledger-snapshot.js +267 -0
  282. package/dist/work-ledger-snapshot.js.map +1 -0
  283. package/dist/work-ledger-types.d.ts +261 -0
  284. package/dist/work-ledger-types.d.ts.map +1 -0
  285. package/dist/work-ledger-types.js +13 -0
  286. package/dist/work-ledger-types.js.map +1 -0
  287. package/dist/work-ledger-validation.d.ts +14 -0
  288. package/dist/work-ledger-validation.d.ts.map +1 -0
  289. package/dist/work-ledger-validation.js +226 -0
  290. package/dist/work-ledger-validation.js.map +1 -0
  291. package/dist/work-ledger.d.ts +43 -0
  292. package/dist/work-ledger.d.ts.map +1 -0
  293. package/dist/work-ledger.js +225 -0
  294. package/dist/work-ledger.js.map +1 -0
  295. package/extensions/delegate-chain.ts +1 -0
  296. package/extensions/delegation-native.ts +12 -0
  297. package/extensions/delegation.ts +4 -3
  298. package/extensions/execute-child.ts +34 -4
  299. package/extensions/grants.ts +2 -0
  300. package/extensions/ordinary-runtime.ts +14 -0
  301. package/extensions/run-delegation.ts +7 -7
  302. package/extensions/session.ts +3 -1
  303. package/package.json +78 -4
  304. package/src/check-runner.ts +20 -2
  305. package/src/control-journal.ts +26 -0
  306. package/src/daily-view-input.ts +59 -0
  307. package/src/daily-view-render.ts +44 -0
  308. package/src/daily-view.ts +152 -0
  309. package/src/dashboard-cli.ts +103 -4
  310. package/src/dashboard-harness.ts +28 -0
  311. package/src/dashboard-herdr.ts +7 -2
  312. package/src/dashboard-host-contract.ts +42 -0
  313. package/src/dashboard-host-transport.ts +38 -0
  314. package/src/dashboard-host.ts +168 -0
  315. package/src/dashboard-observation.ts +44 -0
  316. package/src/debrief-contract.ts +127 -0
  317. package/src/debrief-fixture.ts +29 -0
  318. package/src/debrief-host.ts +53 -0
  319. package/src/debrief-render.ts +49 -0
  320. package/src/debrief.ts +198 -0
  321. package/src/delegate-types.ts +2 -0
  322. package/src/delegate.ts +1 -0
  323. package/src/dispatch-control.ts +81 -0
  324. package/src/effect-profile-runtime.ts +46 -0
  325. package/src/effect-profile.ts +129 -0
  326. package/src/execution-retention.ts +230 -0
  327. package/src/experiment-contract.ts +66 -0
  328. package/src/experiment-state.ts +44 -0
  329. package/src/experiment-store.ts +90 -0
  330. package/src/experiment.ts +231 -0
  331. package/src/factory-contract.ts +47 -0
  332. package/src/factory-migration.ts +29 -0
  333. package/src/factory-order.ts +56 -0
  334. package/src/factory-registry.ts +60 -0
  335. package/src/file-lock.ts +47 -11
  336. package/src/herdr-poll.ts +18 -0
  337. package/src/index.ts +32 -0
  338. package/src/intent-application.ts +90 -0
  339. package/src/intent-control.ts +107 -0
  340. package/src/intent-scheduling.ts +14 -0
  341. package/src/ledger-append.ts +72 -0
  342. package/src/ledger.ts +3 -9
  343. package/src/native-session-target.ts +23 -0
  344. package/src/native-session.ts +139 -0
  345. package/src/order-schedule.ts +42 -0
  346. package/src/ordinary-children.ts +59 -0
  347. package/src/producer-ipc-contract.ts +26 -0
  348. package/src/producer-ipc.ts +107 -0
  349. package/src/resource-budget.ts +349 -0
  350. package/src/retention-contract.ts +84 -0
  351. package/src/retention-json.ts +20 -0
  352. package/src/run-child.ts +13 -2
  353. package/src/run-herdr.ts +11 -7
  354. package/src/vendor/adoption.ts +109 -0
  355. package/src/work-ledger-destination.ts +113 -0
  356. package/src/work-ledger-json.ts +228 -0
  357. package/src/work-ledger-occurrences.ts +99 -0
  358. package/src/work-ledger-projection.ts +262 -0
  359. package/src/work-ledger-snapshot.ts +246 -0
  360. package/src/work-ledger-types.ts +229 -0
  361. package/src/work-ledger-validation.ts +174 -0
  362. package/src/work-ledger.ts +186 -0
package/CHANGELOG.md CHANGED
@@ -12,6 +12,36 @@ the record of how the package got here and are worth keeping; they are not worth
12
12
  > the record of how the package arrived at what it does, and because the reasoning behind each one is
13
13
  > usually the clearest statement of why the current behaviour is what it is.
14
14
 
15
+ ## 0.23.0 — bounded factory control and retained evidence (2026-09-11)
16
+
17
+ - Add an opt-in work-ledger v4 contract, strict builders/readers, deterministic fixtures and explicit
18
+ authority-scoped projection. Ledger v3 remains the default governance format; existing v2/v3 paths and
19
+ behavior are unchanged.
20
+ - Add opt-in execution retention for exact available process, Herdr and native-session evidence without
21
+ converting runtime completion into acceptance or claiming unavailable bytes.
22
+ - Add one fixed `linux-bwrap-digest-v1` effect profile with durable aggregate attempt/input/concurrency
23
+ accounting. It executes package-owned digest/hold code only; arbitrary shell/model profiles, shared
24
+ writable destinations and aggregate CPU/memory/money enforcement remain unsupported.
25
+ - Add versioned resource dispatch and work-intent controls, bounded experiments and factory orders. Exact
26
+ authority, CAS, quiescence, reservation and acknowledgement boundaries fail closed; unknown ownership is
27
+ never replayed, refunded or inferred as success.
28
+ - Add read-only daily projections, retained blind debrief/checkpoint adapters and an explicit dashboard host
29
+ transport over a private bounded socket. Presentation, steering and cancellation require independently
30
+ supplied exact authority; refresh remains read-only and does not authenticate a human or module.
31
+ - Retain original ordinary-child cancellation handles and intent admission holds without replacing caller
32
+ lifetimes. Best-effort terminal observation failure stays visible but no longer permanently poisons a
33
+ known-settled boundary; required failure, unknown ownership and late coverage still refuse quiescence.
34
+ - Reject benign stale dashboard CAS and immutable-ID mismatches without poisoning the host before any
35
+ claim/effect. Attempted or uncertain effects retain the existing failed/unknown stop.
36
+ - Remove each newly owned native-profile probe fixture after all probe children settle, on success and
37
+ failure, without sweeping historical or caller-selected directories.
38
+ - CI now provisions bubblewrap on its ephemeral Ubuntu 26.04 preview runners, records bounded runtime
39
+ diagnostics and stages a verified job-owned Node runtime. These observations do not establish a general
40
+ sandbox or a new supported-host guarantee.
41
+ - Add public subpath exports and versioned artifacts for the new work-ledger, resource, experiment,
42
+ factory-order, effect-profile, retention, debrief and dashboard-host APIs. The workspace root remains
43
+ private; `pi-daddy` is the only published package. No dependency ranges changed.
44
+
15
45
  ## 0.22.0 — fail-closed audit follow-ups (2026-09-04)
16
46
 
17
47
  - **BREAKING — invalid project stores now fail closed.** Malformed, unsupported, unreadable and wrong-directory
@@ -0,0 +1,114 @@
1
+ # P04 daily read-model v1 — input for P07/P08
2
+
3
+ Implemented candidate, local only. Independent overall review and formal acceptance remain pending.
4
+ This is an actual read-only path through the existing `pi-daddy-dashboard` CLI/Herdr plugin, not a control
5
+ API or an accepted-work counter derived from archive exits. P05 targeted control remains unavailable here.
6
+
7
+ The authority snapshot has its OWN identity namespace, distinct from the selected work snapshot.
8
+ Current/stale applicability derives from actual P01 claim/selection/matched-receipt validation, not equality
9
+ of those IDs/digests. Missing authority and superseded/mismatched receipts cannot carry acceptance forward.
10
+ The real walking P01 fixture with distinct identities is covered; P01 validation itself is unchanged.
11
+
12
+ ## Pinned P03 input, independent P01 authority
13
+
14
+ `p03/` vendors exact immutable Git blobs from skill-harness
15
+ `a311df8c991108ada7b6f4b901332232a78e9a44`. `p03/provenance.json` records paths/SHA256. Those schema/fixture
16
+ bytes are unchanged. Input version is exactly `execution-archive-projection-v1`; the reader rejects other
17
+ versions, duplicate JSON members/execution identities, contradictory terminal shapes and lossy numeric
18
+ forms. It supports the adapter's emitted integer-token subset. P03 is always partial/not-assessed.
19
+
20
+ Work intent is rebuilt with existing `projectWorkLedger` from separately configured strict work-v4 bytes.
21
+ Exact selected scope/obligation revisions and occurrence bindings attach attempts by **executionId**, not
22
+ child names, output labels, file tails, sessions or timestamps. Claimed P03 runtime and P01 runtime remain
23
+ separate; disagreements are diagnostic. P03 conflicts neither grant nor revoke independently supplied P01
24
+ acceptance. All active branches remain null, even if P01 labels or P03 reported sessions contain other hints.
25
+
26
+ Only a genuine host supplies `workContext` to `readDailyView`/`dashboardFrame`. The reader detaches it before
27
+ I/O and invokes P01 validation; it never manufactures decisions/availability from claims or loads authority
28
+ from a file/environment variable. Missing authority or authority for another selection means unresolved
29
+ acceptance, not zero completed work. Accepted results are explicitly **under supplied snapshot authority**,
30
+ not fresh native approval. The host must independently establish availability/authority when resupplying it.
31
+
32
+ ## Existing view path
33
+
34
+ The existing plugin command still calls `runDashboard`. Operator-only read settings are forwarded by its
35
+ existing open/reuse seam (no new plugin, worker hook or installation flow):
36
+
37
+ - `PI_DADDY_ARCHIVE_PROJECTION`: exact P03 snapshot file.
38
+ - `PI_DADDY_WORK_LEDGER`: exact separate work-v4 file.
39
+ - `PI_DADDY_WORK_SNAPSHOT`: JSON containing P01's exact `{snapshot:{id,digest},event:{eventId,digest}}` selection.
40
+ This is selection **only**, never authority. Pane reuse keys include these settings and their CWD.
41
+
42
+ CLI equivalents are `--archive-projection`, `--work-ledger`, `--work-snapshot`, plus `--once --no-color` or
43
+ `--once --daily-json`. No new files are discovered, installed or written by a status read. Legacy dashboard
44
+ behavior is unchanged when no daily input is configured. Existing core/plugin protocol validation remains.
45
+ Without a programmatic host-authority context the CLI intentionally cannot show authoritative acceptance.
46
+
47
+ ```ts
48
+ import { readDailyView, createDailyViewReader } from 'pi-daddy/daily-view';
49
+ const read = createDailyViewReader(); // session-local gap metadata, not an authority store
50
+ const view = await read({ archiveProjectionPath, workLedgerPath, workContext: independentlyVerifiedP01Context,
51
+ sourceManifestFiles: policyAuthorizedManifestPathsBySha256 });
52
+ // renderDailyView(view) is exported from the package root; dashboardFrame({cwd, dailyView: options})
53
+ // invokes the same reader/render path. Rendering an arbitrary caller object is not validation.
54
+ ```
55
+
56
+ ## Output contract
57
+
58
+ `version: "pi-daddy-daily-view-v1"`, `readOnly:true`, `freshness:"snapshot-unknown"`, `coverage:"partial"`.
59
+ Public TypeScript types: `DailyView`, `DailyObligation`, `DailyAttempt`, `DailyViewOptions` in `src/daily-view.ts`.
60
+ The deterministic `fixtures/view.json` and `fixtures/view.txt` are emitted by the actual reader/renderer.
61
+
62
+ - `scope` is an exact P01 revision or null; `selectedSnapshot` retains the exact selection references.
63
+ - `scopeState`, `authority`, and nullable `progress` are independent of runtime counts. Authority is
64
+ unavailable, stale-for-selection, or supplied-host-context. Obligations include intent/policy revisions,
65
+ acceptance, unstarted/attached activity, artifact/evidence coverage, matched receipt IDs, claim sources
66
+ and obstacle codes. IDs are shown because work-v4 has no verified human description text here.
67
+ - `attempts` preserves exact execution identity, P01 logical child/runtime and separate validated P03 row
68
+ (parents/public calls/archive IDs/reported sessions/outcome/issues). Reused child names stay separate.
69
+ `activeBranch` is always null. An archive exit0, including failed-control exit0, is never acceptance.
70
+ - `sourceAvailability` requires actual caller-authorized bytes matching each SHA256. No projection-supplied
71
+ path/URL is read. Missing mappings/deleted files are missing; mismatches/errors are not recovered facts.
72
+ Raw-manifest availability does not independently revalidate native transcript/check blobs or provenance.
73
+ - Check/evidence detail comes from P01's authority-aware coverage/receipt matching. P03 v1 has no named-check
74
+ receipt byte payload; that gap is printed, not inferred from a terminal result or an absent issue string.
75
+ - `sources` reports read/missing/error/unconfigured and exact file hashes. `issues` and `narrative` carry
76
+ deterministic coverage/obstacle explanations. No raw invalid input/error excerpts are rendered.
77
+
78
+ Reads are bounded regular non-symlink descriptor snapshots (4 MiB P03, 16 MiB work; at most 128 explicitly
79
+ mapped 64 KiB source manifests). Descriptor/path changes during read become errors. Every refresh rereads
80
+ rather than extending a cached execution history. Missing/error frames do not retain old runtime rows.
81
+ Reconnect produces a resnapshot and sticky gap label, never invented continuity. A new process starts with
82
+ an initial snapshot, not recovered history. Mtime is only a consistency check, never freshness or branch
83
+ proof. Rendering strips terminal control characters and caps lines/columns with visible omissions.
84
+
85
+ ## Supported and BLOCKED scope
86
+
87
+ Supported: deterministic file-backed read-only view, real CLI and freshly isolated compiled plugin-command
88
+ execution, plus fixture transport wiring through the existing plugin open seam. No worker/model/native-gate
89
+ call is needed. Repeated reads preserve session/control bytes and message counts; disconnected/unavailable
90
+ models do not prevent useful status. Model connectivity itself remains unknown, not falsely "connected".
91
+
92
+ **BLOCKED live qualification:** no deployed P03 live archive policy/subscription or actual passive live
93
+ transport freshness was supplied. No live Herdr pane/worker observation is claimed; no terminal read,
94
+ scroll, monitoring prompt or control message was used. Installed smoke is separate from isolated compiled
95
+ checks. Full native session/active-branch gaps from P02 and P06's arbitrary-shell/shared-write/aggregate
96
+ CPU-memory-PID-money limitations remain. No accepted packet, fresh source, steering, dispatch or recovery
97
+ can be inferred from the daily view. P07/P08 must preserve these distinctions.
98
+
99
+ ## Fixtures and reproduction
100
+
101
+ The fixture combines three fixed P01 obligations, two independently reconstructed fixture decisions and
102
+ one exited-but-unaccepted obligation with the exact six-row P03 fixture. P01's known branch labels are
103
+ explicit **test-world declarations**, not authentication of P03's unknown live branches. No authority is
104
+ constructed from incoming wire claims. Separate tests cover unstarted work, missing evidence, changed
105
+ scope/stale authority, unavailable sources, reconnect gaps and read-only repeated operation.
106
+
107
+ ```sh
108
+ node --test packages/pi-daddy/test/daily-view.test.ts
109
+ node packages/pi-daddy/scripts/generate-daily-view-fixture.ts --check packages/pi-daddy/contracts/daily-view/v1/fixtures /absolute/owned/scratch-parent
110
+ ```
111
+
112
+ The generator is repository fixture tooling, imports read-only and writes only explicit owned scratch/new
113
+ targets. Check does not change published fixtures; scratch is retained for inspection. No install, model
114
+ call, per-task review loop, mutation machinery or automatic authority/store update is involved.
@@ -0,0 +1,525 @@
1
+ {
2
+ "version": "pi-daddy-daily-view-v1",
3
+ "readOnly": true,
4
+ "freshness": "snapshot-unknown",
5
+ "model": "not-consulted-connectivity-unknown",
6
+ "continuity": "initial-snapshot",
7
+ "scopeChanged": false,
8
+ "scope": {
9
+ "kind": "scope",
10
+ "id": "daily-scope",
11
+ "revision": 1,
12
+ "digest": "a183590cd4dd4c8b5762782b50bd495bc58e29cc36a9364d67da50c58f725b7c"
13
+ },
14
+ "selectedSnapshot": {
15
+ "event": {
16
+ "digest": "afdef6f804e52f1e7bbb241a2431d074b2fcdad6741704d1c27e882a69c801e8",
17
+ "eventId": "daily:snapshot"
18
+ },
19
+ "snapshot": {
20
+ "digest": "c8036e5db5354f06df8aa599c4a423893cef907fbc10e67b0d7e7b155f8557f2",
21
+ "id": "daily-selected"
22
+ }
23
+ },
24
+ "scopeState": "valid",
25
+ "progress": {
26
+ "accepted": 2,
27
+ "total": 3
28
+ },
29
+ "authority": "supplied-host-context",
30
+ "coverage": "partial",
31
+ "sources": {
32
+ "archive": "read",
33
+ "work": "read",
34
+ "archiveSha256": "ef06d522a6430e9b3981eb133c8a3a56de774faeda239c3e5f3570c469a50641",
35
+ "workSha256": "6e45ad5ab8ba57a8939ab0c23881e9278749801f025cfd966f1d5a7372b0fb86"
36
+ },
37
+ "obligations": [
38
+ {
39
+ "key": "{\"artifact\":{\"digest\":\"34428e45f264ca6125d246ed999fafa97674da7c2b1aa4b26e3172b7eb9cfcfe\",\"id\":\"artifact-1\",\"kind\":\"artifact\",\"revision\":1},\"intent\":{\"digest\":\"0e0014e541bffa38ce48dedd9ad76bb4193a28d7816567dd7a57501ff2f5565a\",\"id\":\"intent-1\",\"kind\":\"goal\",\"revision\":1},\"obligation\":{\"digest\":\"e352f70479ce0611e5822ccd274f1636483a0304382f0ea44e94102883681661\",\"id\":\"obligation-1\",\"kind\":\"obligation\",\"revision\":1},\"policy\":{\"digest\":\"aa771e69db7d922dd497a3beb4b874e0b94f71a743f73e192dd94f42a466b056\",\"id\":\"daily-policy\",\"kind\":\"policy\",\"revision\":1}}",
40
+ "intent": {
41
+ "digest": "0e0014e541bffa38ce48dedd9ad76bb4193a28d7816567dd7a57501ff2f5565a",
42
+ "id": "intent-1",
43
+ "kind": "goal",
44
+ "revision": 1
45
+ },
46
+ "obligation": {
47
+ "digest": "e352f70479ce0611e5822ccd274f1636483a0304382f0ea44e94102883681661",
48
+ "id": "obligation-1",
49
+ "kind": "obligation",
50
+ "revision": 1
51
+ },
52
+ "policy": {
53
+ "digest": "aa771e69db7d922dd497a3beb4b874e0b94f71a743f73e192dd94f42a466b056",
54
+ "id": "daily-policy",
55
+ "kind": "policy",
56
+ "revision": 1
57
+ },
58
+ "acceptance": "accepted-under-supplied-authority",
59
+ "artifactCoverage": "available",
60
+ "evidenceCoverage": "available",
61
+ "receiptIds": [
62
+ "fixed-receipt-1"
63
+ ],
64
+ "claimReferences": [
65
+ "daily:claim:1:e4e48e94de0546cdb980012b2f846dbfc659de2c0e38cc363874d096dde288d1"
66
+ ],
67
+ "attempts": [
68
+ "exec:00000000-0000-4000-8000-000000000001"
69
+ ],
70
+ "activity": "attempts-attached",
71
+ "obstacles": []
72
+ },
73
+ {
74
+ "key": "{\"artifact\":{\"digest\":\"f316be953b1f8264975702e6a0d70584a514fd44847ef27011dc0c6334e1b361\",\"id\":\"artifact-2\",\"kind\":\"artifact\",\"revision\":1},\"intent\":{\"digest\":\"f51fb31058723a8807a039b2648c537277424b68acef1724ee521b045bdd2b09\",\"id\":\"intent-2\",\"kind\":\"goal\",\"revision\":1},\"obligation\":{\"digest\":\"09121f0e90f6737c4d46e1168b8dc47fb90285d2db8d0dd4280a31b73d494418\",\"id\":\"obligation-2\",\"kind\":\"obligation\",\"revision\":1},\"policy\":{\"digest\":\"aa771e69db7d922dd497a3beb4b874e0b94f71a743f73e192dd94f42a466b056\",\"id\":\"daily-policy\",\"kind\":\"policy\",\"revision\":1}}",
75
+ "intent": {
76
+ "digest": "f51fb31058723a8807a039b2648c537277424b68acef1724ee521b045bdd2b09",
77
+ "id": "intent-2",
78
+ "kind": "goal",
79
+ "revision": 1
80
+ },
81
+ "obligation": {
82
+ "digest": "09121f0e90f6737c4d46e1168b8dc47fb90285d2db8d0dd4280a31b73d494418",
83
+ "id": "obligation-2",
84
+ "kind": "obligation",
85
+ "revision": 1
86
+ },
87
+ "policy": {
88
+ "digest": "aa771e69db7d922dd497a3beb4b874e0b94f71a743f73e192dd94f42a466b056",
89
+ "id": "daily-policy",
90
+ "kind": "policy",
91
+ "revision": 1
92
+ },
93
+ "acceptance": "accepted-under-supplied-authority",
94
+ "artifactCoverage": "available",
95
+ "evidenceCoverage": "available",
96
+ "receiptIds": [
97
+ "fixed-receipt-2"
98
+ ],
99
+ "claimReferences": [
100
+ "daily:claim:2:8ced78eedd001ad5460d5ddd9dedd93f92d8614c1b797dd7235db5dadd89685b"
101
+ ],
102
+ "attempts": [
103
+ "exec:00000000-0000-4000-8000-000000000002"
104
+ ],
105
+ "activity": "attempts-attached",
106
+ "obstacles": []
107
+ },
108
+ {
109
+ "key": "{\"artifact\":{\"digest\":\"c563224d012b82fe5dd0a49742da45a416b086e10e48d134613b9d9d04c18246\",\"id\":\"artifact-3\",\"kind\":\"artifact\",\"revision\":1},\"intent\":{\"digest\":\"6bc0d8a965a8148879825be23be219c10eb430d224728d246b94ea469462306f\",\"id\":\"intent-3\",\"kind\":\"goal\",\"revision\":1},\"obligation\":{\"digest\":\"376ede207e70ab90dcf09f98f55e34593815f97b0aa8e7ff80754bef351f0e52\",\"id\":\"obligation-3\",\"kind\":\"obligation\",\"revision\":1},\"policy\":{\"digest\":\"aa771e69db7d922dd497a3beb4b874e0b94f71a743f73e192dd94f42a466b056\",\"id\":\"daily-policy\",\"kind\":\"policy\",\"revision\":1}}",
110
+ "intent": {
111
+ "digest": "6bc0d8a965a8148879825be23be219c10eb430d224728d246b94ea469462306f",
112
+ "id": "intent-3",
113
+ "kind": "goal",
114
+ "revision": 1
115
+ },
116
+ "obligation": {
117
+ "digest": "376ede207e70ab90dcf09f98f55e34593815f97b0aa8e7ff80754bef351f0e52",
118
+ "id": "obligation-3",
119
+ "kind": "obligation",
120
+ "revision": 1
121
+ },
122
+ "policy": {
123
+ "digest": "aa771e69db7d922dd497a3beb4b874e0b94f71a743f73e192dd94f42a466b056",
124
+ "id": "daily-policy",
125
+ "kind": "policy",
126
+ "revision": 1
127
+ },
128
+ "acceptance": "unaccepted",
129
+ "artifactCoverage": "unknown",
130
+ "evidenceCoverage": "unknown",
131
+ "receiptIds": [],
132
+ "claimReferences": [],
133
+ "attempts": [
134
+ "exec:00000000-0000-4000-8000-000000000003"
135
+ ],
136
+ "activity": "attempts-attached",
137
+ "obstacles": [
138
+ "P01:NO_CLAIM"
139
+ ]
140
+ }
141
+ ],
142
+ "attempts": [
143
+ {
144
+ "executionId": "exec:00000000-0000-4000-8000-000000000001",
145
+ "logicalChildId": "reused-worker",
146
+ "intentRuntime": "completed",
147
+ "archive": {
148
+ "executionId": "exec:00000000-0000-4000-8000-000000000001",
149
+ "parentExecutionIds": [
150
+ "exec:00000000-0000-4000-8000-000000000099"
151
+ ],
152
+ "retainedSessionIds": [],
153
+ "activeBranch": null,
154
+ "toolCallIds": [
155
+ "call:layout:1"
156
+ ],
157
+ "archiveIds": [
158
+ "00000000-0000-4000-8000-000000000001"
159
+ ],
160
+ "runtime": "terminal",
161
+ "outcome": {
162
+ "code": 0,
163
+ "signal": null,
164
+ "timedOut": false,
165
+ "aborted": false,
166
+ "truncated": false,
167
+ "failed": false
168
+ },
169
+ "sourceReferences": [
170
+ "aa913c6061b2e51e13a729facd19a0ca53c466cc603ba84d6da09842ff9d74f5"
171
+ ],
172
+ "issues": [
173
+ "active-branch-unknown",
174
+ "content-missing:checkReceipt",
175
+ "content-missing:paneSnapshot",
176
+ "content-missing:result",
177
+ "content-missing:session",
178
+ "content-missing:stderr",
179
+ "content-missing:stdout",
180
+ "native-session-unavailable",
181
+ "parent-not-in-snapshot"
182
+ ],
183
+ "coverage": "partial",
184
+ "acceptance": "not-assessed"
185
+ },
186
+ "sourceAvailability": [
187
+ {
188
+ "sha256": "aa913c6061b2e51e13a729facd19a0ca53c466cc603ba84d6da09842ff9d74f5",
189
+ "state": "missing"
190
+ }
191
+ ],
192
+ "issues": [
193
+ "P01-P03-parent-disagreement",
194
+ "P03:active-branch-unknown",
195
+ "P03:content-missing:checkReceipt",
196
+ "P03:content-missing:paneSnapshot",
197
+ "P03:content-missing:result",
198
+ "P03:content-missing:session",
199
+ "P03:content-missing:stderr",
200
+ "P03:content-missing:stdout",
201
+ "P03:native-session-unavailable",
202
+ "P03:parent-not-in-snapshot",
203
+ "source-bytes-unavailable-or-mismatched"
204
+ ],
205
+ "activeBranch": null
206
+ },
207
+ {
208
+ "executionId": "exec:00000000-0000-4000-8000-000000000002",
209
+ "logicalChildId": "reused-worker",
210
+ "intentRuntime": "completed",
211
+ "archive": {
212
+ "executionId": "exec:00000000-0000-4000-8000-000000000002",
213
+ "parentExecutionIds": [
214
+ "exec:00000000-0000-4000-8000-000000000099"
215
+ ],
216
+ "retainedSessionIds": [],
217
+ "activeBranch": null,
218
+ "toolCallIds": [
219
+ "call:layout:2"
220
+ ],
221
+ "archiveIds": [
222
+ "00000000-0000-4000-8000-000000000002"
223
+ ],
224
+ "runtime": "terminal",
225
+ "outcome": {
226
+ "code": 0,
227
+ "signal": null,
228
+ "timedOut": false,
229
+ "aborted": false,
230
+ "truncated": false,
231
+ "failed": false
232
+ },
233
+ "sourceReferences": [
234
+ "ce7f59468b935af873c7dbb063cac3431dc0d12ec5b969d9984dc12547d61192"
235
+ ],
236
+ "issues": [
237
+ "active-branch-unknown",
238
+ "content-missing:checkReceipt",
239
+ "content-missing:paneSnapshot",
240
+ "content-missing:result",
241
+ "content-missing:session",
242
+ "content-missing:stderr",
243
+ "content-missing:stdout",
244
+ "native-session-unavailable",
245
+ "parent-not-in-snapshot"
246
+ ],
247
+ "coverage": "partial",
248
+ "acceptance": "not-assessed"
249
+ },
250
+ "sourceAvailability": [
251
+ {
252
+ "sha256": "ce7f59468b935af873c7dbb063cac3431dc0d12ec5b969d9984dc12547d61192",
253
+ "state": "missing"
254
+ }
255
+ ],
256
+ "issues": [
257
+ "P01-P03-parent-disagreement",
258
+ "P03:active-branch-unknown",
259
+ "P03:content-missing:checkReceipt",
260
+ "P03:content-missing:paneSnapshot",
261
+ "P03:content-missing:result",
262
+ "P03:content-missing:session",
263
+ "P03:content-missing:stderr",
264
+ "P03:content-missing:stdout",
265
+ "P03:native-session-unavailable",
266
+ "P03:parent-not-in-snapshot",
267
+ "source-bytes-unavailable-or-mismatched"
268
+ ],
269
+ "activeBranch": null
270
+ },
271
+ {
272
+ "executionId": "exec:00000000-0000-4000-8000-000000000003",
273
+ "logicalChildId": "reused-worker",
274
+ "intentRuntime": "completed",
275
+ "archive": {
276
+ "executionId": "exec:00000000-0000-4000-8000-000000000003",
277
+ "parentExecutionIds": [
278
+ "exec:00000000-0000-4000-8000-000000000099"
279
+ ],
280
+ "retainedSessionIds": [
281
+ "11111111-1111-4111-8111-111111111111"
282
+ ],
283
+ "activeBranch": null,
284
+ "toolCallIds": [
285
+ "call:layout:3"
286
+ ],
287
+ "archiveIds": [
288
+ "00000000-0000-4000-8000-000000000003"
289
+ ],
290
+ "runtime": "terminal",
291
+ "outcome": {
292
+ "code": 0,
293
+ "signal": null,
294
+ "timedOut": false,
295
+ "aborted": false,
296
+ "truncated": false,
297
+ "failed": false
298
+ },
299
+ "sourceReferences": [
300
+ "a9b1899c783b41796342741fd38fdf5c77c7833047d4cb3d8f7829d1f62290bd"
301
+ ],
302
+ "issues": [
303
+ "active-branch-unknown",
304
+ "content-missing:checkReceipt",
305
+ "content-missing:paneSnapshot",
306
+ "content-missing:stderr",
307
+ "content-missing:stdout",
308
+ "not-acceptance-evidence",
309
+ "parent-not-in-snapshot"
310
+ ],
311
+ "coverage": "partial",
312
+ "acceptance": "not-assessed"
313
+ },
314
+ "sourceAvailability": [
315
+ {
316
+ "sha256": "a9b1899c783b41796342741fd38fdf5c77c7833047d4cb3d8f7829d1f62290bd",
317
+ "state": "missing"
318
+ }
319
+ ],
320
+ "issues": [
321
+ "P01-P03-parent-disagreement",
322
+ "P03:active-branch-unknown",
323
+ "P03:content-missing:checkReceipt",
324
+ "P03:content-missing:paneSnapshot",
325
+ "P03:content-missing:stderr",
326
+ "P03:content-missing:stdout",
327
+ "P03:not-acceptance-evidence",
328
+ "P03:parent-not-in-snapshot",
329
+ "source-bytes-unavailable-or-mismatched"
330
+ ],
331
+ "activeBranch": null
332
+ },
333
+ {
334
+ "executionId": "exec:00000000-0000-4000-8000-000000000004",
335
+ "logicalChildId": null,
336
+ "intentRuntime": "unknown",
337
+ "archive": {
338
+ "executionId": "exec:00000000-0000-4000-8000-000000000004",
339
+ "parentExecutionIds": [
340
+ "exec:00000000-0000-4000-8000-000000000099"
341
+ ],
342
+ "retainedSessionIds": [
343
+ "11111111-1111-4111-8111-111111111111"
344
+ ],
345
+ "activeBranch": null,
346
+ "toolCallIds": [
347
+ "call:layout:4"
348
+ ],
349
+ "archiveIds": [
350
+ "00000000-0000-4000-8000-000000000004"
351
+ ],
352
+ "runtime": "terminal",
353
+ "outcome": {
354
+ "code": 0,
355
+ "signal": null,
356
+ "timedOut": false,
357
+ "aborted": false,
358
+ "truncated": false,
359
+ "failed": false
360
+ },
361
+ "sourceReferences": [
362
+ "d0171dd7cf8e8853511eb5f5e85659de6c3348c82414bd6b77db93c4e243850f"
363
+ ],
364
+ "issues": [
365
+ "active-branch-not-independently-verified",
366
+ "content-missing:checkReceipt",
367
+ "content-missing:paneSnapshot",
368
+ "content-missing:stderr",
369
+ "content-missing:stdout",
370
+ "not-acceptance-evidence",
371
+ "parent-not-in-snapshot"
372
+ ],
373
+ "coverage": "partial",
374
+ "acceptance": "not-assessed"
375
+ },
376
+ "sourceAvailability": [
377
+ {
378
+ "sha256": "d0171dd7cf8e8853511eb5f5e85659de6c3348c82414bd6b77db93c4e243850f",
379
+ "state": "missing"
380
+ }
381
+ ],
382
+ "issues": [
383
+ "P03:active-branch-not-independently-verified",
384
+ "P03:content-missing:checkReceipt",
385
+ "P03:content-missing:paneSnapshot",
386
+ "P03:content-missing:stderr",
387
+ "P03:content-missing:stdout",
388
+ "P03:not-acceptance-evidence",
389
+ "P03:parent-not-in-snapshot",
390
+ "source-bytes-unavailable-or-mismatched"
391
+ ],
392
+ "activeBranch": null
393
+ },
394
+ {
395
+ "executionId": "exec:00000000-0000-4000-8000-000000000005",
396
+ "logicalChildId": null,
397
+ "intentRuntime": "unknown",
398
+ "archive": {
399
+ "executionId": "exec:00000000-0000-4000-8000-000000000005",
400
+ "parentExecutionIds": [
401
+ "exec:00000000-0000-4000-8000-000000000099"
402
+ ],
403
+ "retainedSessionIds": [
404
+ "11111111-1111-4111-8111-111111111111"
405
+ ],
406
+ "activeBranch": null,
407
+ "toolCallIds": [
408
+ "call:layout:5"
409
+ ],
410
+ "archiveIds": [
411
+ "00000000-0000-4000-8000-000000000005"
412
+ ],
413
+ "runtime": "terminal",
414
+ "outcome": {
415
+ "code": null,
416
+ "signal": "SIGTERM",
417
+ "timedOut": false,
418
+ "aborted": true,
419
+ "truncated": true,
420
+ "failed": true
421
+ },
422
+ "sourceReferences": [
423
+ "a6b253ade21351387e9df56fd2d686e022a356d72d46268a2feba346a6d616aa"
424
+ ],
425
+ "issues": [
426
+ "content-missing:checkReceipt",
427
+ "content-missing:paneSnapshot",
428
+ "content-missing:stderr",
429
+ "content-missing:stdout",
430
+ "native-session-incomplete-bytes",
431
+ "not-acceptance-evidence",
432
+ "parent-not-in-snapshot"
433
+ ],
434
+ "coverage": "partial",
435
+ "acceptance": "not-assessed"
436
+ },
437
+ "sourceAvailability": [
438
+ {
439
+ "sha256": "a6b253ade21351387e9df56fd2d686e022a356d72d46268a2feba346a6d616aa",
440
+ "state": "missing"
441
+ }
442
+ ],
443
+ "issues": [
444
+ "P03:content-missing:checkReceipt",
445
+ "P03:content-missing:paneSnapshot",
446
+ "P03:content-missing:stderr",
447
+ "P03:content-missing:stdout",
448
+ "P03:native-session-incomplete-bytes",
449
+ "P03:not-acceptance-evidence",
450
+ "P03:parent-not-in-snapshot",
451
+ "source-bytes-unavailable-or-mismatched"
452
+ ],
453
+ "activeBranch": null
454
+ },
455
+ {
456
+ "executionId": "exec:00000000-0000-4000-8000-000000000006",
457
+ "logicalChildId": null,
458
+ "intentRuntime": "unknown",
459
+ "archive": {
460
+ "executionId": "exec:00000000-0000-4000-8000-000000000006",
461
+ "parentExecutionIds": [
462
+ "exec:00000000-0000-4000-8000-000000000099"
463
+ ],
464
+ "retainedSessionIds": [],
465
+ "activeBranch": null,
466
+ "toolCallIds": [
467
+ "call:layout:6"
468
+ ],
469
+ "archiveIds": [
470
+ "00000000-0000-4000-8000-000000000006"
471
+ ],
472
+ "runtime": "terminal",
473
+ "outcome": {
474
+ "code": 0,
475
+ "signal": null,
476
+ "timedOut": false,
477
+ "aborted": false,
478
+ "truncated": false,
479
+ "failed": false
480
+ },
481
+ "sourceReferences": [
482
+ "4a3b22a4351f333b47a7b63ac7acf87757558ba16a2f80911f7055f205d2f795"
483
+ ],
484
+ "issues": [
485
+ "active-branch-unknown",
486
+ "content-missing:checkReceipt",
487
+ "content-missing:paneSnapshot",
488
+ "content-missing:result",
489
+ "content-missing:session",
490
+ "content-missing:stderr",
491
+ "content-missing:stdout",
492
+ "native-session-file-replaced",
493
+ "native-session-unavailable",
494
+ "parent-not-in-snapshot"
495
+ ],
496
+ "coverage": "partial",
497
+ "acceptance": "not-assessed"
498
+ },
499
+ "sourceAvailability": [
500
+ {
501
+ "sha256": "4a3b22a4351f333b47a7b63ac7acf87757558ba16a2f80911f7055f205d2f795",
502
+ "state": "missing"
503
+ }
504
+ ],
505
+ "issues": [
506
+ "P03:active-branch-unknown",
507
+ "P03:content-missing:checkReceipt",
508
+ "P03:content-missing:paneSnapshot",
509
+ "P03:content-missing:result",
510
+ "P03:content-missing:session",
511
+ "P03:content-missing:stderr",
512
+ "P03:content-missing:stdout",
513
+ "P03:native-session-file-replaced",
514
+ "P03:native-session-unavailable",
515
+ "P03:parent-not-in-snapshot",
516
+ "source-bytes-unavailable-or-mismatched"
517
+ ],
518
+ "activeBranch": null
519
+ }
520
+ ],
521
+ "issues": [
522
+ "P01:NO_CLAIM"
523
+ ],
524
+ "narrative": "3 scoped obligation(s); 2/3 accepted under supplied P01 authority; 6 distinct attempt(s). Runtime exits do not establish acceptance. Snapshot freshness unknown."
525
+ }