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.
Files changed (385) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +12 -6
  3. package/contracts/daily-view/v1/README.md +114 -0
  4. package/contracts/daily-view/v1/fixtures/view.json +525 -0
  5. package/contracts/daily-view/v1/fixtures/view.txt +75 -0
  6. package/contracts/daily-view/v1/fixtures/work.jsonl +17 -0
  7. package/contracts/daily-view/v1/p03/README.md +26 -0
  8. package/contracts/daily-view/v1/p03/fixtures/retained-executions.json +241 -0
  9. package/contracts/daily-view/v1/p03/projection.schema.json +194 -0
  10. package/contracts/daily-view/v1/p03/provenance.json +21 -0
  11. package/contracts/dashboard-host/v1/README.md +176 -0
  12. package/contracts/debrief/v1/README.md +146 -0
  13. package/contracts/debrief/v1/intervention/README.md +32 -0
  14. package/contracts/debrief/v1/intervention/fixtures/artifact-3ee11136beb864f518252e5024dae9197421fbf97b6e981d3243c782b5c44bd0.txt +1 -0
  15. package/contracts/debrief/v1/intervention/fixtures/artifact-58905d872dd3c54a9705f67b05fa82edbad7af6476ae8993faf1a7b9fadfb905.txt +1 -0
  16. package/contracts/debrief/v1/intervention/fixtures/assessment.json +29 -0
  17. package/contracts/debrief/v1/intervention/fixtures/blind-view.json +20 -0
  18. package/contracts/debrief/v1/intervention/fixtures/choice.json +7 -0
  19. package/contracts/debrief/v1/intervention/fixtures/manifest.json +57 -0
  20. package/contracts/debrief/v1/intervention/fixtures/reveal.json +39 -0
  21. package/contracts/debrief/v1/provenance.json +89 -0
  22. package/contracts/debrief/v1/work-capture/README.md +38 -0
  23. package/contracts/debrief/v1/work-capture/fixtures/batch.json +17 -0
  24. package/contracts/debrief/v1/work-capture/fixtures/cases.json +184 -0
  25. package/contracts/debrief/v1/work-capture/fixtures/review.json +184 -0
  26. package/contracts/debrief/v1/work-capture/review-request.schema.json +41 -0
  27. package/contracts/debrief/v1/work-capture/work-case.schema.json +190 -0
  28. package/contracts/debrief/v2/README.md +71 -0
  29. package/contracts/debrief/v2/input-pin.json +66 -0
  30. package/contracts/debrief/v2/intervention-upstream.md +40 -0
  31. package/contracts/debrief/v2/work-signals-upstream.md +22 -0
  32. package/contracts/dispatch-control/v1/README.md +109 -0
  33. package/contracts/dispatch-control/v1/request.schema.json +19 -0
  34. package/contracts/effect-profile/v1/README.md +124 -0
  35. package/contracts/execution-retention/v1/README.md +109 -0
  36. package/contracts/execution-retention/v2/README.md +148 -0
  37. package/contracts/execution-retention/v2/fixtures/interrupted-native-bytes.json +91 -0
  38. package/contracts/execution-retention/v2/fixtures/missing-native-session.json +91 -0
  39. package/contracts/execution-retention/v2/fixtures/native-file-unknown-branch.json +91 -0
  40. package/contracts/execution-retention/v2/fixtures/native-id-without-bytes.json +91 -0
  41. package/contracts/execution-retention/v2/fixtures/native-live-branch.json +90 -0
  42. package/contracts/execution-retention/v2/fixtures/replaced-native-session.json +92 -0
  43. package/contracts/execution-retention/v2/fixtures/result-82c620cdfeb8ca6b858cf653d7f5e2eedca5315d6244216d60e8b36f03223d6a.bin +1 -0
  44. package/contracts/execution-retention/v2/fixtures/session-2ec1f134bc739984434f7fca689e1c3d1c39fce2dcadae709e9b6faedfcc4ac7.bin +3 -0
  45. package/contracts/execution-retention/v2/fixtures/session-9bdb4bd16a901da31580acf056bda525225259e15ec409e0410480109011772f.bin +3 -0
  46. package/contracts/execution-retention/v2/manifest.schema.json +858 -0
  47. package/contracts/experiment/v1/README.md +164 -0
  48. package/contracts/factory-order/v1/README.md +151 -0
  49. package/contracts/factory-order/v1/adoption-pin.json +8 -0
  50. package/contracts/intent-control/v1/README.md +135 -0
  51. package/contracts/intent-control/v1/request.schema.json +1096 -0
  52. package/contracts/intent-control/v2/README.md +34 -0
  53. package/contracts/intent-control/v2/request.schema.json +1070 -0
  54. package/contracts/ledger/v4/README.md +241 -0
  55. package/contracts/ledger/v4/fixtures/layout-options.json +428 -0
  56. package/contracts/ledger/v4/fixtures/work-acceptance.json +57 -0
  57. package/contracts/ledger/v4/fixtures/work-occurrence.json +44 -0
  58. package/contracts/ledger/v4/fixtures/work-revision.json +26 -0
  59. package/contracts/ledger/v4/fixtures/work-snapshot.json +73 -0
  60. package/contracts/ledger/v4/ledger-event.schema.json +162 -0
  61. package/contracts/ordinary-control/v1/README.md +59 -0
  62. package/contracts/producer-ipc/v1/README.md +137 -0
  63. package/dist/check-runner.d.ts +5 -0
  64. package/dist/check-runner.d.ts.map +1 -1
  65. package/dist/check-runner.js +16 -2
  66. package/dist/check-runner.js.map +1 -1
  67. package/dist/cli.d.ts +3 -1
  68. package/dist/cli.d.ts.map +1 -1
  69. package/dist/cli.js +49 -3
  70. package/dist/cli.js.map +1 -1
  71. package/dist/control-journal.d.ts +20 -0
  72. package/dist/control-journal.d.ts.map +1 -0
  73. package/dist/control-journal.js +73 -0
  74. package/dist/control-journal.js.map +1 -0
  75. package/dist/daily-dashboard-host.d.ts +99 -0
  76. package/dist/daily-dashboard-host.d.ts.map +1 -0
  77. package/dist/daily-dashboard-host.js +71 -0
  78. package/dist/daily-dashboard-host.js.map +1 -0
  79. package/dist/daily-view-input.d.ts +44 -0
  80. package/dist/daily-view-input.d.ts.map +1 -0
  81. package/dist/daily-view-input.js +68 -0
  82. package/dist/daily-view-input.js.map +1 -0
  83. package/dist/daily-view-render.d.ts +4 -0
  84. package/dist/daily-view-render.d.ts.map +1 -0
  85. package/dist/daily-view-render.js +41 -0
  86. package/dist/daily-view-render.js.map +1 -0
  87. package/dist/daily-view.d.ts +74 -0
  88. package/dist/daily-view.d.ts.map +1 -0
  89. package/dist/daily-view.js +170 -0
  90. package/dist/daily-view.js.map +1 -0
  91. package/dist/dashboard-cli.d.ts +26 -1
  92. package/dist/dashboard-cli.d.ts.map +1 -1
  93. package/dist/dashboard-cli.js +128 -3
  94. package/dist/dashboard-cli.js.map +1 -1
  95. package/dist/dashboard-harness.d.ts +22 -0
  96. package/dist/dashboard-harness.d.ts.map +1 -0
  97. package/dist/dashboard-harness.js +89 -0
  98. package/dist/dashboard-harness.js.map +1 -0
  99. package/dist/dashboard-herdr.d.ts.map +1 -1
  100. package/dist/dashboard-herdr.js +7 -2
  101. package/dist/dashboard-herdr.js.map +1 -1
  102. package/dist/dashboard-host-contract.d.ts +116 -0
  103. package/dist/dashboard-host-contract.d.ts.map +1 -0
  104. package/dist/dashboard-host-contract.js +14 -0
  105. package/dist/dashboard-host-contract.js.map +1 -0
  106. package/dist/dashboard-host-transport.d.ts +16 -0
  107. package/dist/dashboard-host-transport.d.ts.map +1 -0
  108. package/dist/dashboard-host-transport.js +124 -0
  109. package/dist/dashboard-host-transport.js.map +1 -0
  110. package/dist/dashboard-host.d.ts +203 -0
  111. package/dist/dashboard-host.d.ts.map +1 -0
  112. package/dist/dashboard-host.js +376 -0
  113. package/dist/dashboard-host.js.map +1 -0
  114. package/dist/dashboard-observation.d.ts +28 -0
  115. package/dist/dashboard-observation.d.ts.map +1 -0
  116. package/dist/dashboard-observation.js +86 -0
  117. package/dist/dashboard-observation.js.map +1 -0
  118. package/dist/debrief-contract.d.ts +65 -0
  119. package/dist/debrief-contract.d.ts.map +1 -0
  120. package/dist/debrief-contract.js +151 -0
  121. package/dist/debrief-contract.js.map +1 -0
  122. package/dist/debrief-fixture.d.ts +16 -0
  123. package/dist/debrief-fixture.d.ts.map +1 -0
  124. package/dist/debrief-fixture.js +41 -0
  125. package/dist/debrief-fixture.js.map +1 -0
  126. package/dist/debrief-host.d.ts +59 -0
  127. package/dist/debrief-host.d.ts.map +1 -0
  128. package/dist/debrief-host.js +49 -0
  129. package/dist/debrief-host.js.map +1 -0
  130. package/dist/debrief-render.d.ts +5 -0
  131. package/dist/debrief-render.d.ts.map +1 -0
  132. package/dist/debrief-render.js +65 -0
  133. package/dist/debrief-render.js.map +1 -0
  134. package/dist/debrief.d.ts +90 -0
  135. package/dist/debrief.d.ts.map +1 -0
  136. package/dist/debrief.js +263 -0
  137. package/dist/debrief.js.map +1 -0
  138. package/dist/delegate-types.d.ts +2 -0
  139. package/dist/delegate-types.d.ts.map +1 -1
  140. package/dist/delegate-types.js.map +1 -1
  141. package/dist/delegate.d.ts.map +1 -1
  142. package/dist/delegate.js +1 -0
  143. package/dist/delegate.js.map +1 -1
  144. package/dist/dispatch-control.d.ts +45 -0
  145. package/dist/dispatch-control.d.ts.map +1 -0
  146. package/dist/dispatch-control.js +76 -0
  147. package/dist/dispatch-control.js.map +1 -0
  148. package/dist/effect-profile-runtime.d.ts +40 -0
  149. package/dist/effect-profile-runtime.d.ts.map +1 -0
  150. package/dist/effect-profile-runtime.js +51 -0
  151. package/dist/effect-profile-runtime.js.map +1 -0
  152. package/dist/effect-profile.d.ts +40 -0
  153. package/dist/effect-profile.d.ts.map +1 -0
  154. package/dist/effect-profile.js +152 -0
  155. package/dist/effect-profile.js.map +1 -0
  156. package/dist/execution-retention.d.ts +90 -0
  157. package/dist/execution-retention.d.ts.map +1 -0
  158. package/dist/execution-retention.js +247 -0
  159. package/dist/execution-retention.js.map +1 -0
  160. package/dist/experiment-contract.d.ts +56 -0
  161. package/dist/experiment-contract.d.ts.map +1 -0
  162. package/dist/experiment-contract.js +80 -0
  163. package/dist/experiment-contract.js.map +1 -0
  164. package/dist/experiment-state.d.ts +22 -0
  165. package/dist/experiment-state.d.ts.map +1 -0
  166. package/dist/experiment-state.js +79 -0
  167. package/dist/experiment-state.js.map +1 -0
  168. package/dist/experiment-store.d.ts +30 -0
  169. package/dist/experiment-store.d.ts.map +1 -0
  170. package/dist/experiment-store.js +147 -0
  171. package/dist/experiment-store.js.map +1 -0
  172. package/dist/experiment.d.ts +65 -0
  173. package/dist/experiment.d.ts.map +1 -0
  174. package/dist/experiment.js +357 -0
  175. package/dist/experiment.js.map +1 -0
  176. package/dist/factory-contract.d.ts +79 -0
  177. package/dist/factory-contract.d.ts.map +1 -0
  178. package/dist/factory-contract.js +89 -0
  179. package/dist/factory-contract.js.map +1 -0
  180. package/dist/factory-migration.d.ts +20 -0
  181. package/dist/factory-migration.d.ts.map +1 -0
  182. package/dist/factory-migration.js +55 -0
  183. package/dist/factory-migration.js.map +1 -0
  184. package/dist/factory-order.d.ts +848 -0
  185. package/dist/factory-order.d.ts.map +1 -0
  186. package/dist/factory-order.js +83 -0
  187. package/dist/factory-order.js.map +1 -0
  188. package/dist/factory-registry.d.ts +121 -0
  189. package/dist/factory-registry.d.ts.map +1 -0
  190. package/dist/factory-registry.js +133 -0
  191. package/dist/factory-registry.js.map +1 -0
  192. package/dist/file-lock.d.ts +8 -2
  193. package/dist/file-lock.d.ts.map +1 -1
  194. package/dist/file-lock.js +78 -19
  195. package/dist/file-lock.js.map +1 -1
  196. package/dist/herdr-poll.d.ts +8 -0
  197. package/dist/herdr-poll.d.ts.map +1 -1
  198. package/dist/herdr-poll.js +23 -0
  199. package/dist/herdr-poll.js.map +1 -1
  200. package/dist/index.d.ts +20 -0
  201. package/dist/index.d.ts.map +1 -1
  202. package/dist/index.js +20 -0
  203. package/dist/index.js.map +1 -1
  204. package/dist/intent-application.d.ts +17 -0
  205. package/dist/intent-application.d.ts.map +1 -0
  206. package/dist/intent-application.js +113 -0
  207. package/dist/intent-application.js.map +1 -0
  208. package/dist/intent-control.d.ts +201 -0
  209. package/dist/intent-control.d.ts.map +1 -0
  210. package/dist/intent-control.js +110 -0
  211. package/dist/intent-control.js.map +1 -0
  212. package/dist/intent-scheduling.d.ts +9 -0
  213. package/dist/intent-scheduling.d.ts.map +1 -0
  214. package/dist/intent-scheduling.js +15 -0
  215. package/dist/intent-scheduling.js.map +1 -0
  216. package/dist/ledger-append.d.ts +15 -0
  217. package/dist/ledger-append.d.ts.map +1 -0
  218. package/dist/ledger-append.js +94 -0
  219. package/dist/ledger-append.js.map +1 -0
  220. package/dist/ledger.d.ts +11 -0
  221. package/dist/ledger.d.ts.map +1 -1
  222. package/dist/ledger.js +3 -7
  223. package/dist/ledger.js.map +1 -1
  224. package/dist/native-session-target.d.ts +9 -0
  225. package/dist/native-session-target.d.ts.map +1 -0
  226. package/dist/native-session-target.js +29 -0
  227. package/dist/native-session-target.js.map +1 -0
  228. package/dist/native-session.d.ts +59 -0
  229. package/dist/native-session.d.ts.map +1 -0
  230. package/dist/native-session.js +154 -0
  231. package/dist/native-session.js.map +1 -0
  232. package/dist/order-schedule.d.ts +37 -0
  233. package/dist/order-schedule.d.ts.map +1 -0
  234. package/dist/order-schedule.js +81 -0
  235. package/dist/order-schedule.js.map +1 -0
  236. package/dist/ordinary-children.d.ts +52 -0
  237. package/dist/ordinary-children.d.ts.map +1 -0
  238. package/dist/ordinary-children.js +93 -0
  239. package/dist/ordinary-children.js.map +1 -0
  240. package/dist/producer-ipc-contract.d.ts +29 -0
  241. package/dist/producer-ipc-contract.d.ts.map +1 -0
  242. package/dist/producer-ipc-contract.js +29 -0
  243. package/dist/producer-ipc-contract.js.map +1 -0
  244. package/dist/producer-ipc.d.ts +55 -0
  245. package/dist/producer-ipc.d.ts.map +1 -0
  246. package/dist/producer-ipc.js +143 -0
  247. package/dist/producer-ipc.js.map +1 -0
  248. package/dist/resource-budget.d.ts +334 -0
  249. package/dist/resource-budget.d.ts.map +1 -0
  250. package/dist/resource-budget.js +415 -0
  251. package/dist/resource-budget.js.map +1 -0
  252. package/dist/retention-contract.d.ts +73 -0
  253. package/dist/retention-contract.d.ts.map +1 -0
  254. package/dist/retention-contract.js +104 -0
  255. package/dist/retention-contract.js.map +1 -0
  256. package/dist/retention-json.d.ts +3 -0
  257. package/dist/retention-json.d.ts.map +1 -0
  258. package/dist/retention-json.js +32 -0
  259. package/dist/retention-json.js.map +1 -0
  260. package/dist/run-child.d.ts +4 -0
  261. package/dist/run-child.d.ts.map +1 -1
  262. package/dist/run-child.js +16 -2
  263. package/dist/run-child.js.map +1 -1
  264. package/dist/run-herdr.d.ts +6 -0
  265. package/dist/run-herdr.d.ts.map +1 -1
  266. package/dist/run-herdr.js +19 -6
  267. package/dist/run-herdr.js.map +1 -1
  268. package/dist/vendor/adoption.d.ts +129 -0
  269. package/dist/vendor/adoption.d.ts.map +1 -0
  270. package/dist/vendor/adoption.js +102 -0
  271. package/dist/vendor/adoption.js.map +1 -0
  272. package/dist/work-command.d.ts +30 -0
  273. package/dist/work-command.d.ts.map +1 -0
  274. package/dist/work-command.js +148 -0
  275. package/dist/work-command.js.map +1 -0
  276. package/dist/work-ledger-destination.d.ts +20 -0
  277. package/dist/work-ledger-destination.d.ts.map +1 -0
  278. package/dist/work-ledger-destination.js +131 -0
  279. package/dist/work-ledger-destination.js.map +1 -0
  280. package/dist/work-ledger-json.d.ts +25 -0
  281. package/dist/work-ledger-json.d.ts.map +1 -0
  282. package/dist/work-ledger-json.js +267 -0
  283. package/dist/work-ledger-json.js.map +1 -0
  284. package/dist/work-ledger-occurrences.d.ts +227 -0
  285. package/dist/work-ledger-occurrences.d.ts.map +1 -0
  286. package/dist/work-ledger-occurrences.js +115 -0
  287. package/dist/work-ledger-occurrences.js.map +1 -0
  288. package/dist/work-ledger-projection.d.ts +295 -0
  289. package/dist/work-ledger-projection.d.ts.map +1 -0
  290. package/dist/work-ledger-projection.js +237 -0
  291. package/dist/work-ledger-projection.js.map +1 -0
  292. package/dist/work-ledger-snapshot.d.ts +29 -0
  293. package/dist/work-ledger-snapshot.d.ts.map +1 -0
  294. package/dist/work-ledger-snapshot.js +267 -0
  295. package/dist/work-ledger-snapshot.js.map +1 -0
  296. package/dist/work-ledger-types.d.ts +261 -0
  297. package/dist/work-ledger-types.d.ts.map +1 -0
  298. package/dist/work-ledger-types.js +13 -0
  299. package/dist/work-ledger-types.js.map +1 -0
  300. package/dist/work-ledger-validation.d.ts +14 -0
  301. package/dist/work-ledger-validation.d.ts.map +1 -0
  302. package/dist/work-ledger-validation.js +226 -0
  303. package/dist/work-ledger-validation.js.map +1 -0
  304. package/dist/work-ledger.d.ts +43 -0
  305. package/dist/work-ledger.d.ts.map +1 -0
  306. package/dist/work-ledger.js +225 -0
  307. package/dist/work-ledger.js.map +1 -0
  308. package/extensions/daily-dashboard-session.ts +30 -0
  309. package/extensions/daily-work-session.ts +20 -0
  310. package/extensions/delegate-chain.ts +1 -0
  311. package/extensions/delegation-native.ts +12 -0
  312. package/extensions/delegation.ts +25 -11
  313. package/extensions/execute-child.ts +44 -5
  314. package/extensions/executor-session.ts +9 -0
  315. package/extensions/grants-command.ts +14 -15
  316. package/extensions/grants-connected-command.ts +19 -0
  317. package/extensions/grants.ts +26 -2
  318. package/extensions/ordinary-runtime.ts +14 -0
  319. package/extensions/primary-shadow.ts +11 -0
  320. package/extensions/run-delegation.ts +9 -7
  321. package/extensions/session.ts +10 -20
  322. package/extensions/work-runtime.ts +44 -0
  323. package/package.json +78 -4
  324. package/src/check-runner.ts +20 -2
  325. package/src/cli.ts +41 -4
  326. package/src/control-journal.ts +26 -0
  327. package/src/daily-dashboard-host.ts +49 -0
  328. package/src/daily-view-input.ts +59 -0
  329. package/src/daily-view-render.ts +44 -0
  330. package/src/daily-view.ts +152 -0
  331. package/src/dashboard-cli.ts +108 -4
  332. package/src/dashboard-harness.ts +37 -0
  333. package/src/dashboard-herdr.ts +7 -2
  334. package/src/dashboard-host-contract.ts +45 -0
  335. package/src/dashboard-host-transport.ts +40 -0
  336. package/src/dashboard-host.ts +191 -0
  337. package/src/dashboard-observation.ts +45 -0
  338. package/src/debrief-contract.ts +127 -0
  339. package/src/debrief-fixture.ts +29 -0
  340. package/src/debrief-host.ts +53 -0
  341. package/src/debrief-render.ts +49 -0
  342. package/src/debrief.ts +198 -0
  343. package/src/delegate-types.ts +2 -0
  344. package/src/delegate.ts +1 -0
  345. package/src/dispatch-control.ts +81 -0
  346. package/src/effect-profile-runtime.ts +46 -0
  347. package/src/effect-profile.ts +129 -0
  348. package/src/execution-retention.ts +230 -0
  349. package/src/experiment-contract.ts +66 -0
  350. package/src/experiment-state.ts +44 -0
  351. package/src/experiment-store.ts +98 -0
  352. package/src/experiment.ts +231 -0
  353. package/src/factory-contract.ts +47 -0
  354. package/src/factory-migration.ts +29 -0
  355. package/src/factory-order.ts +56 -0
  356. package/src/factory-registry.ts +60 -0
  357. package/src/file-lock.ts +47 -11
  358. package/src/herdr-poll.ts +18 -0
  359. package/src/index.ts +32 -0
  360. package/src/intent-application.ts +90 -0
  361. package/src/intent-control.ts +107 -0
  362. package/src/intent-scheduling.ts +14 -0
  363. package/src/ledger-append.ts +72 -0
  364. package/src/ledger.ts +3 -9
  365. package/src/native-session-target.ts +23 -0
  366. package/src/native-session.ts +139 -0
  367. package/src/order-schedule.ts +42 -0
  368. package/src/ordinary-children.ts +59 -0
  369. package/src/producer-ipc-contract.ts +26 -0
  370. package/src/producer-ipc.ts +107 -0
  371. package/src/resource-budget.ts +349 -0
  372. package/src/retention-contract.ts +84 -0
  373. package/src/retention-json.ts +20 -0
  374. package/src/run-child.ts +13 -2
  375. package/src/run-herdr.ts +11 -7
  376. package/src/vendor/adoption.ts +109 -0
  377. package/src/work-command.ts +179 -0
  378. package/src/work-ledger-destination.ts +113 -0
  379. package/src/work-ledger-json.ts +228 -0
  380. package/src/work-ledger-occurrences.ts +99 -0
  381. package/src/work-ledger-projection.ts +262 -0
  382. package/src/work-ledger-snapshot.ts +246 -0
  383. package/src/work-ledger-types.ts +229 -0
  384. package/src/work-ledger-validation.ts +174 -0
  385. package/src/work-ledger.ts +186 -0
@@ -0,0 +1,184 @@
1
+ [
2
+ {
3
+ "capture_schema": 2,
4
+ "id": "cde56f1d95d336f923660c39fe28e229ab35a617bc10f95e721a09f844308696",
5
+ "detector": {
6
+ "id": "repeat_without_progress",
7
+ "version": "fixture-v1",
8
+ "population": "layout"
9
+ },
10
+ "target": {
11
+ "kind": "work",
12
+ "snapshotDigest": "2faa2f05b5b02895c1a132e371ed41ad589984a6fdabd1656e586689a19b8210",
13
+ "obligationId": "layout-1",
14
+ "obligationDigest": "a0fa4ebacf0486844bd388e4bc98a7af5c226485d412f46d1cd395c97f72287b"
15
+ },
16
+ "classification": "candidate_defect",
17
+ "reason": "repeat_without_progress",
18
+ "evidence": [
19
+ "e9cc4cf0642071e7f12c0fd62d4a94073b871c9694ee8c9b01cfd0d8c9ea9955"
20
+ ],
21
+ "metrics": {
22
+ "equivalentAttempts": 2
23
+ },
24
+ "status": "unresolved",
25
+ "visibility": "silent",
26
+ "causalAttribution": "not-established"
27
+ },
28
+ {
29
+ "capture_schema": 2,
30
+ "id": "9b2d86801bac09cf91b1ae79b66c4b5b06a3d1de8c540c0b82a1a9d63d05c2ae",
31
+ "detector": {
32
+ "id": "repeat_without_progress",
33
+ "version": "fixture-v1",
34
+ "population": "layout"
35
+ },
36
+ "target": {
37
+ "kind": "work",
38
+ "snapshotDigest": "2faa2f05b5b02895c1a132e371ed41ad589984a6fdabd1656e586689a19b8210",
39
+ "obligationId": "layout-2",
40
+ "obligationDigest": "70ffb2685bcd373e1cd46f1d07eb2156dce32a268db682babcb6579dbe206ae1"
41
+ },
42
+ "classification": "candidate_defect",
43
+ "reason": "repeat_without_progress",
44
+ "evidence": [
45
+ "e9cc4cf0642071e7f12c0fd62d4a94073b871c9694ee8c9b01cfd0d8c9ea9955"
46
+ ],
47
+ "metrics": {
48
+ "equivalentAttempts": 2
49
+ },
50
+ "status": "unresolved",
51
+ "visibility": "silent",
52
+ "causalAttribution": "not-established"
53
+ },
54
+ {
55
+ "capture_schema": 2,
56
+ "id": "a3a3840658bbfdb5fb6c29defa67f1694f762ce85f52c51df45b95822b8a40ac",
57
+ "detector": {
58
+ "id": "repeat_without_progress",
59
+ "version": "fixture-v1",
60
+ "population": "layout"
61
+ },
62
+ "target": {
63
+ "kind": "work",
64
+ "snapshotDigest": "2faa2f05b5b02895c1a132e371ed41ad589984a6fdabd1656e586689a19b8210",
65
+ "obligationId": "layout-3",
66
+ "obligationDigest": "91f6922af64a051483273f1ec7a9d26fff0181dd1ec308534ea2bacdbe7e7115"
67
+ },
68
+ "classification": "candidate_defect",
69
+ "reason": "repeat_without_progress",
70
+ "evidence": [
71
+ "e9cc4cf0642071e7f12c0fd62d4a94073b871c9694ee8c9b01cfd0d8c9ea9955"
72
+ ],
73
+ "metrics": {
74
+ "equivalentAttempts": 2
75
+ },
76
+ "status": "unresolved",
77
+ "visibility": "silent",
78
+ "causalAttribution": "not-established"
79
+ },
80
+ {
81
+ "capture_schema": 2,
82
+ "id": "b00ea15f36b19989370646e5147fd8c07fa6516166a9644406037e1a883ae2d8",
83
+ "detector": {
84
+ "id": "repeat_without_progress",
85
+ "version": "fixture-v1",
86
+ "population": "layout"
87
+ },
88
+ "target": {
89
+ "kind": "work",
90
+ "snapshotDigest": "2faa2f05b5b02895c1a132e371ed41ad589984a6fdabd1656e586689a19b8210",
91
+ "obligationId": "layout-4",
92
+ "obligationDigest": "57cf84e6c472010a3192fbbce4d6fb52d4f2ffb8f5469e8efebb729111ce085e"
93
+ },
94
+ "classification": "candidate_defect",
95
+ "reason": "repeat_without_progress",
96
+ "evidence": [
97
+ "e9cc4cf0642071e7f12c0fd62d4a94073b871c9694ee8c9b01cfd0d8c9ea9955"
98
+ ],
99
+ "metrics": {
100
+ "equivalentAttempts": 2
101
+ },
102
+ "status": "unresolved",
103
+ "visibility": "silent",
104
+ "causalAttribution": "not-established"
105
+ },
106
+ {
107
+ "capture_schema": 2,
108
+ "id": "d8501f65e20295b7fe243f04cf5948eec6324a6df752cb698fceb773d3cd0035",
109
+ "detector": {
110
+ "id": "repeat_without_progress",
111
+ "version": "fixture-v1",
112
+ "population": "layout"
113
+ },
114
+ "target": {
115
+ "kind": "work",
116
+ "snapshotDigest": "2faa2f05b5b02895c1a132e371ed41ad589984a6fdabd1656e586689a19b8210",
117
+ "obligationId": "layout-5",
118
+ "obligationDigest": "d6b30c9d90759d7e8b8c79610e8069111e1543ca754a04ef19f28f4a7e758691"
119
+ },
120
+ "classification": "candidate_defect",
121
+ "reason": "repeat_without_progress",
122
+ "evidence": [
123
+ "e9cc4cf0642071e7f12c0fd62d4a94073b871c9694ee8c9b01cfd0d8c9ea9955"
124
+ ],
125
+ "metrics": {
126
+ "equivalentAttempts": 2
127
+ },
128
+ "status": "unresolved",
129
+ "visibility": "silent",
130
+ "causalAttribution": "not-established"
131
+ },
132
+ {
133
+ "capture_schema": 2,
134
+ "id": "0d77c3aa02fcac76eda5b0e2b325c21e39cbf34aca02df3d4cce670c141bc16a",
135
+ "detector": {
136
+ "id": "repeat_without_progress",
137
+ "version": "fixture-v1",
138
+ "population": "layout"
139
+ },
140
+ "target": {
141
+ "kind": "work",
142
+ "snapshotDigest": "2faa2f05b5b02895c1a132e371ed41ad589984a6fdabd1656e586689a19b8210",
143
+ "obligationId": "layout-6",
144
+ "obligationDigest": "632be15828291b7ccaf216990c45dd72cf6700dc748cf2fb7fc4d243b0f799c8"
145
+ },
146
+ "classification": "candidate_defect",
147
+ "reason": "repeat_without_progress",
148
+ "evidence": [
149
+ "e9cc4cf0642071e7f12c0fd62d4a94073b871c9694ee8c9b01cfd0d8c9ea9955"
150
+ ],
151
+ "metrics": {
152
+ "equivalentAttempts": 2
153
+ },
154
+ "status": "unresolved",
155
+ "visibility": "silent",
156
+ "causalAttribution": "not-established"
157
+ },
158
+ {
159
+ "capture_schema": 2,
160
+ "id": "279ff762763d04bf18b0d91155e3bf2964b579d39a53d0569dc4ea51292c381b",
161
+ "detector": {
162
+ "id": "repeat_without_progress",
163
+ "version": "fixture-v1",
164
+ "population": "layout"
165
+ },
166
+ "target": {
167
+ "kind": "work",
168
+ "snapshotDigest": "2faa2f05b5b02895c1a132e371ed41ad589984a6fdabd1656e586689a19b8210",
169
+ "obligationId": "layout-7",
170
+ "obligationDigest": "858647bddfcb4f8d3c6eb9a10ac76e13eea7181875ddd670d06b9967986782ce"
171
+ },
172
+ "classification": "candidate_defect",
173
+ "reason": "repeat_without_progress",
174
+ "evidence": [
175
+ "e9cc4cf0642071e7f12c0fd62d4a94073b871c9694ee8c9b01cfd0d8c9ea9955"
176
+ ],
177
+ "metrics": {
178
+ "equivalentAttempts": 2
179
+ },
180
+ "status": "unresolved",
181
+ "visibility": "silent",
182
+ "causalAttribution": "not-established"
183
+ }
184
+ ]
@@ -0,0 +1,184 @@
1
+ {
2
+ "request": {
3
+ "caseManifestId": "8c558dfc1db9526c1635515d259f1b6328915e08fee9724b06771c4e739a003c",
4
+ "priorDecisionId": null,
5
+ "disposition": "skip",
6
+ "note": "synthetic fixture"
7
+ },
8
+ "response": {
9
+ "current": {
10
+ "decision_schema": 1,
11
+ "id": "d196cb64e7531f002d61387a85cb288077d858d81b2db3ab2efa4d2d31f96334",
12
+ "caseId": "cde56f1d95d336f923660c39fe28e229ab35a617bc10f95e721a09f844308696",
13
+ "priorDecisionId": null,
14
+ "disposition": "skip",
15
+ "author": "operator:fixture",
16
+ "evidence": [
17
+ "8c558dfc1db9526c1635515d259f1b6328915e08fee9724b06771c4e739a003c"
18
+ ],
19
+ "note": "synthetic fixture"
20
+ },
21
+ "replayed": false
22
+ },
23
+ "page": {
24
+ "total": 7,
25
+ "offset": 0,
26
+ "items": [
27
+ {
28
+ "caseManifestId": "30e6b213a7ad8c236f597484f644ec867874bfa0de56d5c2fd430f7a9178e1a4",
29
+ "candidate": {
30
+ "capture_schema": 2,
31
+ "id": "b00ea15f36b19989370646e5147fd8c07fa6516166a9644406037e1a883ae2d8",
32
+ "detector": {
33
+ "id": "repeat_without_progress",
34
+ "version": "fixture-v1",
35
+ "population": "layout"
36
+ },
37
+ "target": {
38
+ "kind": "work",
39
+ "snapshotDigest": "2faa2f05b5b02895c1a132e371ed41ad589984a6fdabd1656e586689a19b8210",
40
+ "obligationId": "layout-4",
41
+ "obligationDigest": "57cf84e6c472010a3192fbbce4d6fb52d4f2ffb8f5469e8efebb729111ce085e"
42
+ },
43
+ "classification": "candidate_defect",
44
+ "reason": "repeat_without_progress",
45
+ "evidence": [
46
+ "e9cc4cf0642071e7f12c0fd62d4a94073b871c9694ee8c9b01cfd0d8c9ea9955"
47
+ ],
48
+ "metrics": {
49
+ "equivalentAttempts": 2
50
+ },
51
+ "status": "unresolved",
52
+ "visibility": "silent",
53
+ "causalAttribution": "not-established"
54
+ },
55
+ "priorDecisionId": null,
56
+ "disposition": "unresolved"
57
+ },
58
+ {
59
+ "caseManifestId": "48910d9ba3af6ab7fd022e6ee38b14f5a4a02d3fca6fe4aa12dc3ada1ef1f181",
60
+ "candidate": {
61
+ "capture_schema": 2,
62
+ "id": "9b2d86801bac09cf91b1ae79b66c4b5b06a3d1de8c540c0b82a1a9d63d05c2ae",
63
+ "detector": {
64
+ "id": "repeat_without_progress",
65
+ "version": "fixture-v1",
66
+ "population": "layout"
67
+ },
68
+ "target": {
69
+ "kind": "work",
70
+ "snapshotDigest": "2faa2f05b5b02895c1a132e371ed41ad589984a6fdabd1656e586689a19b8210",
71
+ "obligationId": "layout-2",
72
+ "obligationDigest": "70ffb2685bcd373e1cd46f1d07eb2156dce32a268db682babcb6579dbe206ae1"
73
+ },
74
+ "classification": "candidate_defect",
75
+ "reason": "repeat_without_progress",
76
+ "evidence": [
77
+ "e9cc4cf0642071e7f12c0fd62d4a94073b871c9694ee8c9b01cfd0d8c9ea9955"
78
+ ],
79
+ "metrics": {
80
+ "equivalentAttempts": 2
81
+ },
82
+ "status": "unresolved",
83
+ "visibility": "silent",
84
+ "causalAttribution": "not-established"
85
+ },
86
+ "priorDecisionId": null,
87
+ "disposition": "unresolved"
88
+ },
89
+ {
90
+ "caseManifestId": "54856ce8abf12a39cf6e09f92c3b744bae4647bb6dd817a47611c230c69a9635",
91
+ "candidate": {
92
+ "capture_schema": 2,
93
+ "id": "279ff762763d04bf18b0d91155e3bf2964b579d39a53d0569dc4ea51292c381b",
94
+ "detector": {
95
+ "id": "repeat_without_progress",
96
+ "version": "fixture-v1",
97
+ "population": "layout"
98
+ },
99
+ "target": {
100
+ "kind": "work",
101
+ "snapshotDigest": "2faa2f05b5b02895c1a132e371ed41ad589984a6fdabd1656e586689a19b8210",
102
+ "obligationId": "layout-7",
103
+ "obligationDigest": "858647bddfcb4f8d3c6eb9a10ac76e13eea7181875ddd670d06b9967986782ce"
104
+ },
105
+ "classification": "candidate_defect",
106
+ "reason": "repeat_without_progress",
107
+ "evidence": [
108
+ "e9cc4cf0642071e7f12c0fd62d4a94073b871c9694ee8c9b01cfd0d8c9ea9955"
109
+ ],
110
+ "metrics": {
111
+ "equivalentAttempts": 2
112
+ },
113
+ "status": "unresolved",
114
+ "visibility": "silent",
115
+ "causalAttribution": "not-established"
116
+ },
117
+ "priorDecisionId": null,
118
+ "disposition": "unresolved"
119
+ },
120
+ {
121
+ "caseManifestId": "8c558dfc1db9526c1635515d259f1b6328915e08fee9724b06771c4e739a003c",
122
+ "candidate": {
123
+ "capture_schema": 2,
124
+ "id": "cde56f1d95d336f923660c39fe28e229ab35a617bc10f95e721a09f844308696",
125
+ "detector": {
126
+ "id": "repeat_without_progress",
127
+ "version": "fixture-v1",
128
+ "population": "layout"
129
+ },
130
+ "target": {
131
+ "kind": "work",
132
+ "snapshotDigest": "2faa2f05b5b02895c1a132e371ed41ad589984a6fdabd1656e586689a19b8210",
133
+ "obligationId": "layout-1",
134
+ "obligationDigest": "a0fa4ebacf0486844bd388e4bc98a7af5c226485d412f46d1cd395c97f72287b"
135
+ },
136
+ "classification": "candidate_defect",
137
+ "reason": "repeat_without_progress",
138
+ "evidence": [
139
+ "e9cc4cf0642071e7f12c0fd62d4a94073b871c9694ee8c9b01cfd0d8c9ea9955"
140
+ ],
141
+ "metrics": {
142
+ "equivalentAttempts": 2
143
+ },
144
+ "status": "unresolved",
145
+ "visibility": "silent",
146
+ "causalAttribution": "not-established"
147
+ },
148
+ "priorDecisionId": "d196cb64e7531f002d61387a85cb288077d858d81b2db3ab2efa4d2d31f96334",
149
+ "disposition": "skip"
150
+ },
151
+ {
152
+ "caseManifestId": "9dde8e074796e03ef02458e2bd158520e5a4fd7242f1fa88da2e86a6af20bddc",
153
+ "candidate": {
154
+ "capture_schema": 2,
155
+ "id": "a3a3840658bbfdb5fb6c29defa67f1694f762ce85f52c51df45b95822b8a40ac",
156
+ "detector": {
157
+ "id": "repeat_without_progress",
158
+ "version": "fixture-v1",
159
+ "population": "layout"
160
+ },
161
+ "target": {
162
+ "kind": "work",
163
+ "snapshotDigest": "2faa2f05b5b02895c1a132e371ed41ad589984a6fdabd1656e586689a19b8210",
164
+ "obligationId": "layout-3",
165
+ "obligationDigest": "91f6922af64a051483273f1ec7a9d26fff0181dd1ec308534ea2bacdbe7e7115"
166
+ },
167
+ "classification": "candidate_defect",
168
+ "reason": "repeat_without_progress",
169
+ "evidence": [
170
+ "e9cc4cf0642071e7f12c0fd62d4a94073b871c9694ee8c9b01cfd0d8c9ea9955"
171
+ ],
172
+ "metrics": {
173
+ "equivalentAttempts": 2
174
+ },
175
+ "status": "unresolved",
176
+ "visibility": "silent",
177
+ "causalAttribution": "not-established"
178
+ },
179
+ "priorDecisionId": null,
180
+ "disposition": "unresolved"
181
+ }
182
+ ]
183
+ }
184
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "caseManifestId": {
6
+ "type": "string",
7
+ "pattern": "^[a-f0-9]{64}$"
8
+ },
9
+ "priorDecisionId": {
10
+ "anyOf": [
11
+ {
12
+ "type": "string",
13
+ "pattern": "^[a-f0-9]{64}$"
14
+ },
15
+ {
16
+ "type": "null"
17
+ }
18
+ ]
19
+ },
20
+ "disposition": {
21
+ "enum": [
22
+ "confirmed_defect",
23
+ "expected_behavior",
24
+ "exemplar",
25
+ "uncertain",
26
+ "skip"
27
+ ]
28
+ },
29
+ "note": {
30
+ "type": "string",
31
+ "maxLength": 4000
32
+ }
33
+ },
34
+ "required": [
35
+ "caseManifestId",
36
+ "priorDecisionId",
37
+ "disposition",
38
+ "note"
39
+ ],
40
+ "additionalProperties": false
41
+ }
@@ -0,0 +1,190 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/mojomanyana/skill-harness/contracts/work-capture/v2/work-case.schema.json",
4
+ "type": "object",
5
+ "properties": {
6
+ "capture_schema": {
7
+ "const": 2
8
+ },
9
+ "id": {
10
+ "type": "string",
11
+ "pattern": "^[a-f0-9]{64}$"
12
+ },
13
+ "detector": {
14
+ "type": "object",
15
+ "properties": {
16
+ "id": {
17
+ "type": "string",
18
+ "minLength": 1,
19
+ "maxLength": 512,
20
+ "pattern": "^[^\\u0000-\\u001f\\u007f]+$"
21
+ },
22
+ "version": {
23
+ "type": "string",
24
+ "minLength": 1,
25
+ "maxLength": 512,
26
+ "pattern": "^[^\\u0000-\\u001f\\u007f]+$"
27
+ },
28
+ "population": {
29
+ "type": "string",
30
+ "minLength": 1,
31
+ "maxLength": 512,
32
+ "pattern": "^[^\\u0000-\\u001f\\u007f]+$"
33
+ }
34
+ },
35
+ "required": [
36
+ "id",
37
+ "version",
38
+ "population"
39
+ ],
40
+ "additionalProperties": false
41
+ },
42
+ "target": {
43
+ "type": "object",
44
+ "properties": {
45
+ "kind": {
46
+ "const": "work"
47
+ },
48
+ "snapshotDigest": {
49
+ "type": "string",
50
+ "pattern": "^[a-f0-9]{64}$"
51
+ },
52
+ "obligationId": {
53
+ "type": "string",
54
+ "minLength": 1,
55
+ "maxLength": 512,
56
+ "pattern": "^[^\\u0000-\\u001f\\u007f]+$"
57
+ },
58
+ "obligationDigest": {
59
+ "type": "string",
60
+ "pattern": "^[a-f0-9]{64}$"
61
+ }
62
+ },
63
+ "required": [
64
+ "kind",
65
+ "snapshotDigest",
66
+ "obligationId",
67
+ "obligationDigest"
68
+ ],
69
+ "additionalProperties": false
70
+ },
71
+ "classification": {
72
+ "enum": [
73
+ "candidate_defect",
74
+ "candidate_exemplar",
75
+ "coverage_issue"
76
+ ]
77
+ },
78
+ "reason": {
79
+ "enum": [
80
+ "repeat_without_progress",
81
+ "economical_exemplar",
82
+ "coverage_gap"
83
+ ]
84
+ },
85
+ "evidence": {
86
+ "type": "array",
87
+ "items": {
88
+ "type": "string",
89
+ "pattern": "^[a-f0-9]{64}$"
90
+ },
91
+ "minItems": 1,
92
+ "maxItems": 256,
93
+ "uniqueItems": true
94
+ },
95
+ "metrics": {
96
+ "type": "object",
97
+ "properties": {
98
+ "equivalentAttempts": {
99
+ "type": "integer",
100
+ "minimum": 2,
101
+ "maximum": 9007199254740991
102
+ },
103
+ "measuredCost": {
104
+ "type": "number",
105
+ "minimum": 0
106
+ },
107
+ "costLimit": {
108
+ "type": "number",
109
+ "minimum": 0
110
+ },
111
+ "costUnit": {
112
+ "enum": [
113
+ "wall_ms",
114
+ "tool_calls",
115
+ "usd"
116
+ ]
117
+ }
118
+ },
119
+ "required": [],
120
+ "additionalProperties": false
121
+ },
122
+ "status": {
123
+ "const": "unresolved"
124
+ },
125
+ "visibility": {
126
+ "const": "silent"
127
+ },
128
+ "causalAttribution": {
129
+ "const": "not-established"
130
+ }
131
+ },
132
+ "required": [
133
+ "capture_schema",
134
+ "id",
135
+ "detector",
136
+ "target",
137
+ "classification",
138
+ "reason",
139
+ "evidence",
140
+ "metrics",
141
+ "status",
142
+ "visibility",
143
+ "causalAttribution"
144
+ ],
145
+ "additionalProperties": false,
146
+ "oneOf": [
147
+ {
148
+ "properties": {
149
+ "reason": {
150
+ "const": "repeat_without_progress"
151
+ },
152
+ "classification": {
153
+ "const": "candidate_defect"
154
+ },
155
+ "metrics": {
156
+ "required": [
157
+ "equivalentAttempts"
158
+ ]
159
+ }
160
+ }
161
+ },
162
+ {
163
+ "properties": {
164
+ "reason": {
165
+ "const": "economical_exemplar"
166
+ },
167
+ "classification": {
168
+ "const": "candidate_exemplar"
169
+ },
170
+ "metrics": {
171
+ "required": [
172
+ "measuredCost",
173
+ "costLimit",
174
+ "costUnit"
175
+ ]
176
+ }
177
+ }
178
+ },
179
+ {
180
+ "properties": {
181
+ "reason": {
182
+ "const": "coverage_gap"
183
+ },
184
+ "classification": {
185
+ "const": "coverage_issue"
186
+ }
187
+ }
188
+ }
189
+ ]
190
+ }
@@ -0,0 +1,71 @@
1
+ # Explicit work-signal and durable blind host integration
2
+
3
+ Additive P08 integration; v1/manual case-v2 remains unchanged by default. No provider, automatic
4
+ worker prompt, attention hook, Herdr control, model evaluation, routing or acceptance is introduced.
5
+
6
+ ## Actual host boundary
7
+
8
+ `pi-daddy/debrief-host` (also root exports) accepts a trusted host's loaded harness modules:
9
+ `createWorkCaseReviewer`, `createWorkSignalReviewer`, `retainBlindIntervention`, `openBlindIntervention`.
10
+ The actual tested source is skill-harness638494af0a0058edf9a9b1b02e57af894ab46ed6. Exact source bodies,
11
+ SHA256 pins and ordinary isolated compilation are in test/fixtures/debrief-durable-host; upstream
12
+ contracts are retained beside this README. No dependency install, dynamic worker module loader,
13
+ replacement archive/decision ledger, cached permission or fake authenticated operator is supplied.
14
+ The structural DebriefHarness interface is NOT runtime module authentication: loading/provenance and
15
+ independent host authorization remain host obligations. No caller pin string can authorize a writer.
16
+
17
+ ```ts
18
+ // Explicit host action, with independently configured author and private archive.
19
+ const blind = retainDebriefBlind(harnessPorts, archiveRoot,
20
+ { manifest, evidence, qualification }, author);
21
+ // Retain blind.comparisonId AND author independently before reconnect/exposure.
22
+ const preview = openDebriefBlindPreview(harnessPorts, archiveRoot, blind);
23
+ // preview has ONLY view/readArtifact/quality, never archive metadata/choose/reveal.
24
+ const presenter = createRetainedDebrief(harnessPorts, {
25
+ archiveRoot, author, blind, scope: retainedAttentionScope, persistence: hostAttentionCAS,
26
+ cases: { version: 'work-signals-v1', batchId, observationId }, offset: 0,
27
+ });
28
+ await presenter.open({mode:'manual', userPresent:true});
29
+ // Existing dashboard presenter/actions, after explicit manual requests:
30
+ await presenter.choose({kind:'one', labels:[opaqueLabel]});
31
+ await presenter.reveal();
32
+ ```
33
+
34
+ Retention freezes private inputs through the actual adapter, including independent private random seed.
35
+ It is never implicit during open/reconnect. Reconnect binds the original comparison ID/author and reads
36
+ `quality()`, NOT `reveal()`, to discover an existing vote. The adapter re-reads original inputs/artifacts
37
+ on every access; missing/corrupt input or immutable choice refuses. Different choices remain refused
38
+ across presenter/process restarts. Same-choice replay does not create another vote. A required write/sync
39
+ failure remains failure even when complete choice bytes subsequently exist; explicit reopen may observe
40
+ those original bytes without another writer call or automatic reveal. No crash durability is inferred.
41
+
42
+ Only opaque labels, verified artifact previews and explicit quality state reach the pre-reveal blind card.
43
+ Private seed, raw roles, costs/configuration and archive metadata do not. Arbitrary artifact content can
44
+ still disclose identity; this is not universal redaction or a real blind study. The existing bounded
45
+ consumer supports2..4 arms, up to4 artifacts/card and64KiB/artifact, with320-character previews. Larger
46
+ producer comparisons are refused, not silently truncated into a qualified study.
47
+
48
+ ## Signal cases and attention
49
+
50
+ `cases.version:'work-signals-v1'` explicitly invokes createWorkSignalReviewer. Its page includes the exact
51
+ independent observation ID and issues, even with ZERO cards. Counts are SELECTED BATCH counts (<=1024),
52
+ not all live work or calibration denominators. Pages are<=5. Case-v3 reasons/metrics/IDs are validated
53
+ against the pinned formula; case-v2 coverage issues remain coverage, not defect labels. Existing v2
54
+ reviewer/batches are not silently reinterpreted. `work-case-v2` explicitly selects the old route.
55
+
56
+ The signal reader rederives exact case membership from the original retained observation; foreign cases,
57
+ old/wrong batch, malformed/missing input and stale author/CAS cannot become labels or promotion. Labels
58
+ use the existing durable decision writer/history and exact evidence/author/prior decision digest.
59
+ Skip, uncertainty, deferred/busy/absent context and unselected cards remain unresolved.
60
+
61
+ One blind question consumes ONE of FIVE TOTAL slots, normally four cases plus one blind. Answers, skip,
62
+ close/reopen and reconnect do not refill slots. No next page is inferred automatically. New explicit
63
+ host scope/offset and independent selection are required for another page.
64
+
65
+ Signals or durable blind binding opt into `debrief-checkpoint-v2`: original v1 fields plus bindingDigest
66
+ of the independently configured signal batch/observation and blind comparison/author. A changed/old
67
+ checkpoint refuses, including zero-card batch switches. Checkpoints retain attention/request transport
68
+ only; canonical case/quality decisions remain in harness storage. Loss/rollback-safe attention storage,
69
+ authenticated human identity and live pause policy remain host qualification, not properties inferred
70
+ from a file, a supplied identity string or a caller-present flag. Frame freshness stays snapshot-unknown,
71
+ automatic presentation unqualified and acceptance not-assessed.