@openrig/cli 0.5.11 → 0.5.12

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 (666) hide show
  1. package/LICENSE +190 -0
  2. package/daemon/assets/plugins/openrig-core/skills/agent-operated-software/SKILL.md +7 -4
  3. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/SKILL.md +34 -23
  4. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  5. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +92 -21
  6. package/daemon/context-packs/skills/agent-operated-software/SKILL.md +7 -4
  7. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  8. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  9. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  10. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  11. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  12. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  13. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  14. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  15. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  16. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  17. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  18. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  19. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  20. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  21. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  22. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  23. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  24. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  25. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  26. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  27. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  31. package/daemon/context-packs/skills/openrig-operating-model/SKILL.md +34 -23
  32. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  34. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  35. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  45. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  46. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  48. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  50. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  55. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  57. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  59. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  60. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  61. package/daemon/dist/adapters/codex-resume.d.ts +1 -0
  62. package/daemon/dist/adapters/codex-resume.d.ts.map +1 -1
  63. package/daemon/dist/adapters/codex-resume.js +2 -9
  64. package/daemon/dist/adapters/codex-resume.js.map +1 -1
  65. package/daemon/dist/adapters/codex-runtime-adapter.d.ts +7 -3
  66. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  67. package/daemon/dist/adapters/codex-runtime-adapter.js +26 -30
  68. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  69. package/daemon/dist/adapters/tmux.d.ts +15 -1
  70. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  71. package/daemon/dist/adapters/tmux.js +64 -1
  72. package/daemon/dist/adapters/tmux.js.map +1 -1
  73. package/daemon/dist/build-info.js +3 -3
  74. package/daemon/dist/domain/active-occupant.d.ts +2 -2
  75. package/daemon/dist/domain/active-occupant.d.ts.map +1 -1
  76. package/daemon/dist/domain/active-occupant.js +5 -5
  77. package/daemon/dist/domain/active-occupant.js.map +1 -1
  78. package/daemon/dist/domain/crash-cart-discovery.d.ts +3 -1
  79. package/daemon/dist/domain/crash-cart-discovery.d.ts.map +1 -1
  80. package/daemon/dist/domain/crash-cart-discovery.js +15 -4
  81. package/daemon/dist/domain/crash-cart-discovery.js.map +1 -1
  82. package/daemon/dist/domain/execution-view.d.ts.map +1 -1
  83. package/daemon/dist/domain/execution-view.js +44 -2
  84. package/daemon/dist/domain/execution-view.js.map +1 -1
  85. package/daemon/dist/domain/fresh-occupant-relation.d.ts +8 -0
  86. package/daemon/dist/domain/fresh-occupant-relation.d.ts.map +1 -0
  87. package/daemon/dist/domain/fresh-occupant-relation.js +31 -0
  88. package/daemon/dist/domain/fresh-occupant-relation.js.map +1 -0
  89. package/daemon/dist/domain/gateway/connections-projection.d.ts +30 -1
  90. package/daemon/dist/domain/gateway/connections-projection.d.ts.map +1 -1
  91. package/daemon/dist/domain/gateway/connections-projection.js +36 -14
  92. package/daemon/dist/domain/gateway/connections-projection.js.map +1 -1
  93. package/daemon/dist/domain/kernel-boot.d.ts +2 -0
  94. package/daemon/dist/domain/kernel-boot.d.ts.map +1 -1
  95. package/daemon/dist/domain/kernel-boot.js +1 -1
  96. package/daemon/dist/domain/kernel-boot.js.map +1 -1
  97. package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
  98. package/daemon/dist/domain/native-resume-probe.js +35 -23
  99. package/daemon/dist/domain/native-resume-probe.js.map +1 -1
  100. package/daemon/dist/domain/parked-query.d.ts +1 -0
  101. package/daemon/dist/domain/parked-query.d.ts.map +1 -1
  102. package/daemon/dist/domain/parked-query.js +2 -1
  103. package/daemon/dist/domain/parked-query.js.map +1 -1
  104. package/daemon/dist/domain/policies/parked-owner-consumer.d.ts +2 -0
  105. package/daemon/dist/domain/policies/parked-owner-consumer.d.ts.map +1 -1
  106. package/daemon/dist/domain/policies/parked-owner-consumer.js +2 -2
  107. package/daemon/dist/domain/policies/parked-owner-consumer.js.map +1 -1
  108. package/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -1
  109. package/daemon/dist/domain/policies/workflow-keepalive.js +12 -5
  110. package/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -1
  111. package/daemon/dist/domain/project-lifecycle-compiler.d.ts +2 -0
  112. package/daemon/dist/domain/project-lifecycle-compiler.d.ts.map +1 -1
  113. package/daemon/dist/domain/project-lifecycle-compiler.js +2 -0
  114. package/daemon/dist/domain/project-lifecycle-compiler.js.map +1 -1
  115. package/daemon/dist/domain/proof/judgments.d.ts +138 -0
  116. package/daemon/dist/domain/proof/judgments.d.ts.map +1 -0
  117. package/daemon/dist/domain/proof/judgments.js +361 -0
  118. package/daemon/dist/domain/proof/judgments.js.map +1 -0
  119. package/daemon/dist/domain/proof/source-watch.d.ts +17 -0
  120. package/daemon/dist/domain/proof/source-watch.d.ts.map +1 -0
  121. package/daemon/dist/domain/proof/source-watch.js +60 -0
  122. package/daemon/dist/domain/proof/source-watch.js.map +1 -0
  123. package/daemon/dist/domain/queue-owner.d.ts +12 -0
  124. package/daemon/dist/domain/queue-owner.d.ts.map +1 -0
  125. package/daemon/dist/domain/queue-owner.js +28 -0
  126. package/daemon/dist/domain/queue-owner.js.map +1 -0
  127. package/daemon/dist/domain/queue-pickup.d.ts +3 -0
  128. package/daemon/dist/domain/queue-pickup.d.ts.map +1 -1
  129. package/daemon/dist/domain/queue-pickup.js +14 -15
  130. package/daemon/dist/domain/queue-pickup.js.map +1 -1
  131. package/daemon/dist/domain/queue-recovery.d.ts +10 -0
  132. package/daemon/dist/domain/queue-recovery.d.ts.map +1 -0
  133. package/daemon/dist/domain/queue-recovery.js +27 -0
  134. package/daemon/dist/domain/queue-recovery.js.map +1 -0
  135. package/daemon/dist/domain/queue-repository.d.ts +13 -6
  136. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  137. package/daemon/dist/domain/queue-repository.js +177 -63
  138. package/daemon/dist/domain/queue-repository.js.map +1 -1
  139. package/daemon/dist/domain/queue-stuck-sweep.d.ts +2 -11
  140. package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
  141. package/daemon/dist/domain/queue-stuck-sweep.js +51 -52
  142. package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
  143. package/daemon/dist/domain/queue-wait-backoff.d.ts +29 -2
  144. package/daemon/dist/domain/queue-wait-backoff.d.ts.map +1 -1
  145. package/daemon/dist/domain/queue-wait-backoff.js +73 -14
  146. package/daemon/dist/domain/queue-wait-backoff.js.map +1 -1
  147. package/daemon/dist/domain/queue-waiting.d.ts +61 -0
  148. package/daemon/dist/domain/queue-waiting.d.ts.map +1 -0
  149. package/daemon/dist/domain/queue-waiting.js +108 -0
  150. package/daemon/dist/domain/queue-waiting.js.map +1 -0
  151. package/daemon/dist/domain/queue-wake-ladder.d.ts +9 -0
  152. package/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -1
  153. package/daemon/dist/domain/queue-wake-ladder.js +122 -62
  154. package/daemon/dist/domain/queue-wake-ladder.js.map +1 -1
  155. package/daemon/dist/domain/queue-wake-repository.d.ts +2 -0
  156. package/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -1
  157. package/daemon/dist/domain/queue-wake-repository.js +1 -0
  158. package/daemon/dist/domain/queue-wake-repository.js.map +1 -1
  159. package/daemon/dist/domain/rehydrate-eligibility.d.ts.map +1 -1
  160. package/daemon/dist/domain/rehydrate-eligibility.js +5 -3
  161. package/daemon/dist/domain/rehydrate-eligibility.js.map +1 -1
  162. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  163. package/daemon/dist/domain/restore-orchestrator.js +1 -0
  164. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  165. package/daemon/dist/domain/restore-plan-preview.d.ts +7 -4
  166. package/daemon/dist/domain/restore-plan-preview.d.ts.map +1 -1
  167. package/daemon/dist/domain/restore-plan-preview.js +12 -6
  168. package/daemon/dist/domain/restore-plan-preview.js.map +1 -1
  169. package/daemon/dist/domain/review/compose.d.ts +9 -1
  170. package/daemon/dist/domain/review/compose.d.ts.map +1 -1
  171. package/daemon/dist/domain/review/compose.js +26 -7
  172. package/daemon/dist/domain/review/compose.js.map +1 -1
  173. package/daemon/dist/domain/review/gather.d.ts.map +1 -1
  174. package/daemon/dist/domain/review/gather.js +3 -0
  175. package/daemon/dist/domain/review/gather.js.map +1 -1
  176. package/daemon/dist/domain/review/types.d.ts +2 -0
  177. package/daemon/dist/domain/review/types.d.ts.map +1 -1
  178. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  179. package/daemon/dist/domain/runtime-adapter.js +1 -0
  180. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  181. package/daemon/dist/domain/scope/scope-view-projection.d.ts +8 -0
  182. package/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
  183. package/daemon/dist/domain/scope/scope-view-projection.js +6 -25
  184. package/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
  185. package/daemon/dist/domain/seat-lifecycle-service.d.ts +21 -0
  186. package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  187. package/daemon/dist/domain/seat-lifecycle-service.js +47 -1
  188. package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  189. package/daemon/dist/domain/slices/slice-detail-projector.d.ts +2 -0
  190. package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
  191. package/daemon/dist/domain/slices/slice-detail-projector.js +11 -4
  192. package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
  193. package/daemon/dist/domain/slices/slice-indexer.d.ts +2 -0
  194. package/daemon/dist/domain/slices/slice-indexer.d.ts.map +1 -1
  195. package/daemon/dist/domain/slices/slice-indexer.js +26 -0
  196. package/daemon/dist/domain/slices/slice-indexer.js.map +1 -1
  197. package/daemon/dist/domain/snapshot-capture.d.ts.map +1 -1
  198. package/daemon/dist/domain/snapshot-capture.js +4 -2
  199. package/daemon/dist/domain/snapshot-capture.js.map +1 -1
  200. package/daemon/dist/domain/startup-orchestrator.d.ts +11 -0
  201. package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  202. package/daemon/dist/domain/startup-orchestrator.js +43 -10
  203. package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  204. package/daemon/dist/domain/types.d.ts +13 -0
  205. package/daemon/dist/domain/types.d.ts.map +1 -1
  206. package/daemon/dist/domain/types.js.map +1 -1
  207. package/daemon/dist/domain/user-settings/settings-browser.d.ts +33 -0
  208. package/daemon/dist/domain/user-settings/settings-browser.d.ts.map +1 -0
  209. package/daemon/dist/domain/user-settings/settings-browser.js +261 -0
  210. package/daemon/dist/domain/user-settings/settings-browser.js.map +1 -0
  211. package/daemon/dist/domain/view-event-bridge.d.ts.map +1 -1
  212. package/daemon/dist/domain/view-event-bridge.js +2 -0
  213. package/daemon/dist/domain/view-event-bridge.js.map +1 -1
  214. package/daemon/dist/domain/view-projector.d.ts.map +1 -1
  215. package/daemon/dist/domain/view-projector.js +4 -0
  216. package/daemon/dist/domain/view-projector.js.map +1 -1
  217. package/daemon/dist/domain/watchdog-policy-engine.d.ts +4 -0
  218. package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  219. package/daemon/dist/domain/watchdog-policy-engine.js +8 -1
  220. package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  221. package/daemon/dist/domain/watchdog-scheduler.d.ts +3 -0
  222. package/daemon/dist/domain/watchdog-scheduler.d.ts.map +1 -1
  223. package/daemon/dist/domain/watchdog-scheduler.js +3 -0
  224. package/daemon/dist/domain/watchdog-scheduler.js.map +1 -1
  225. package/daemon/dist/domain/workflow-exception-escalation.d.ts.map +1 -1
  226. package/daemon/dist/domain/workflow-exception-escalation.js +13 -32
  227. package/daemon/dist/domain/workflow-exception-escalation.js.map +1 -1
  228. package/daemon/dist/domain/workflow-exception-readiness.d.ts +39 -0
  229. package/daemon/dist/domain/workflow-exception-readiness.d.ts.map +1 -0
  230. package/daemon/dist/domain/workflow-exception-readiness.js +77 -0
  231. package/daemon/dist/domain/workflow-exception-readiness.js.map +1 -0
  232. package/daemon/dist/domain/workflow-exception-router.d.ts +3 -0
  233. package/daemon/dist/domain/workflow-exception-router.d.ts.map +1 -1
  234. package/daemon/dist/domain/workflow-exception-router.js +6 -1
  235. package/daemon/dist/domain/workflow-exception-router.js.map +1 -1
  236. package/daemon/dist/domain/workflow-exception.d.ts +6 -0
  237. package/daemon/dist/domain/workflow-exception.d.ts.map +1 -1
  238. package/daemon/dist/domain/workflow-exception.js +10 -3
  239. package/daemon/dist/domain/workflow-exception.js.map +1 -1
  240. package/daemon/dist/domain/workflow-guidance.d.ts +53 -0
  241. package/daemon/dist/domain/workflow-guidance.d.ts.map +1 -0
  242. package/daemon/dist/domain/workflow-guidance.js +212 -0
  243. package/daemon/dist/domain/workflow-guidance.js.map +1 -0
  244. package/daemon/dist/domain/workflow-instance-store.d.ts +2 -0
  245. package/daemon/dist/domain/workflow-instance-store.d.ts.map +1 -1
  246. package/daemon/dist/domain/workflow-instance-store.js +7 -0
  247. package/daemon/dist/domain/workflow-instance-store.js.map +1 -1
  248. package/daemon/dist/domain/workflow-planning-context.d.ts +3 -0
  249. package/daemon/dist/domain/workflow-planning-context.d.ts.map +1 -0
  250. package/daemon/dist/domain/workflow-planning-context.js +36 -0
  251. package/daemon/dist/domain/workflow-planning-context.js.map +1 -0
  252. package/daemon/dist/domain/workflow-projector.d.ts +11 -2
  253. package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
  254. package/daemon/dist/domain/workflow-projector.js +83 -73
  255. package/daemon/dist/domain/workflow-projector.js.map +1 -1
  256. package/daemon/dist/domain/workflow-reconciliation.d.ts +55 -0
  257. package/daemon/dist/domain/workflow-reconciliation.d.ts.map +1 -0
  258. package/daemon/dist/domain/workflow-reconciliation.js +228 -0
  259. package/daemon/dist/domain/workflow-reconciliation.js.map +1 -0
  260. package/daemon/dist/domain/workflow-runtime.d.ts +79 -2
  261. package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
  262. package/daemon/dist/domain/workflow-runtime.js +97 -25
  263. package/daemon/dist/domain/workflow-runtime.js.map +1 -1
  264. package/daemon/dist/index.d.ts.map +1 -1
  265. package/daemon/dist/index.js +1 -0
  266. package/daemon/dist/index.js.map +1 -1
  267. package/daemon/dist/routes/activity.js +1 -1
  268. package/daemon/dist/routes/activity.js.map +1 -1
  269. package/daemon/dist/routes/config.d.ts +3 -1
  270. package/daemon/dist/routes/config.d.ts.map +1 -1
  271. package/daemon/dist/routes/config.js +11 -1
  272. package/daemon/dist/routes/config.js.map +1 -1
  273. package/daemon/dist/routes/missions.d.ts.map +1 -1
  274. package/daemon/dist/routes/missions.js +5 -2
  275. package/daemon/dist/routes/missions.js.map +1 -1
  276. package/daemon/dist/routes/proof.d.ts +3 -0
  277. package/daemon/dist/routes/proof.d.ts.map +1 -0
  278. package/daemon/dist/routes/proof.js +65 -0
  279. package/daemon/dist/routes/proof.js.map +1 -0
  280. package/daemon/dist/routes/review.d.ts.map +1 -1
  281. package/daemon/dist/routes/review.js +3 -2
  282. package/daemon/dist/routes/review.js.map +1 -1
  283. package/daemon/dist/routes/rigs.d.ts.map +1 -1
  284. package/daemon/dist/routes/rigs.js +4 -3
  285. package/daemon/dist/routes/rigs.js.map +1 -1
  286. package/daemon/dist/routes/scopes.d.ts.map +1 -1
  287. package/daemon/dist/routes/scopes.js +15 -4
  288. package/daemon/dist/routes/scopes.js.map +1 -1
  289. package/daemon/dist/routes/seat.d.ts +4 -0
  290. package/daemon/dist/routes/seat.d.ts.map +1 -1
  291. package/daemon/dist/routes/seat.js +1 -1
  292. package/daemon/dist/routes/seat.js.map +1 -1
  293. package/daemon/dist/routes/slices.d.ts.map +1 -1
  294. package/daemon/dist/routes/slices.js +8 -2
  295. package/daemon/dist/routes/slices.js.map +1 -1
  296. package/daemon/dist/routes/startup.d.ts +7 -0
  297. package/daemon/dist/routes/startup.d.ts.map +1 -0
  298. package/daemon/dist/routes/startup.js +221 -0
  299. package/daemon/dist/routes/startup.js.map +1 -0
  300. package/daemon/dist/routes/up.d.ts.map +1 -1
  301. package/daemon/dist/routes/up.js +2 -1
  302. package/daemon/dist/routes/up.js.map +1 -1
  303. package/daemon/dist/routes/workflow.d.ts.map +1 -1
  304. package/daemon/dist/routes/workflow.js +43 -2
  305. package/daemon/dist/routes/workflow.js.map +1 -1
  306. package/daemon/dist/server.d.ts +1 -0
  307. package/daemon/dist/server.d.ts.map +1 -1
  308. package/daemon/dist/server.js +5 -0
  309. package/daemon/dist/server.js.map +1 -1
  310. package/daemon/dist/startup.d.ts.map +1 -1
  311. package/daemon/dist/startup.js +15 -2
  312. package/daemon/dist/startup.js.map +1 -1
  313. package/daemon/docs/reference/agent-spec.md +1 -1
  314. package/daemon/docs/reference/getting-started.md +28 -17
  315. package/daemon/docs/reference/legacy-topology-migration.md +1 -2
  316. package/daemon/docs/reference/mission-install.md +5 -11
  317. package/daemon/docs/reference/planning-dial.md +12 -14
  318. package/daemon/docs/reference/project-release-profile.yaml +4 -0
  319. package/daemon/docs/reference/refocus-channel.md +1 -4
  320. package/daemon/docs/reference/release-boundary.md +33 -30
  321. package/daemon/docs/reference/rig-spec.md +6 -6
  322. package/daemon/docs/reference/sdlc-conventions.md +16 -5
  323. package/daemon/docs/reference/wave-sdlc.md +5 -16
  324. package/daemon/docs/reference/worktree-builds.md +3 -3
  325. package/daemon/policies/examples/my-cautious-dev.policy.md +1 -1
  326. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +3 -3
  327. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/startup/context.md +11 -12
  328. package/dist/bin-wrapper.d.ts +1 -0
  329. package/dist/bin-wrapper.d.ts.map +1 -1
  330. package/dist/bin-wrapper.js +13 -0
  331. package/dist/bin-wrapper.js.map +1 -1
  332. package/dist/build-info.js +3 -3
  333. package/dist/commands/crash-cart.d.ts.map +1 -1
  334. package/dist/commands/crash-cart.js +20 -6
  335. package/dist/commands/crash-cart.js.map +1 -1
  336. package/dist/commands/proof.d.ts +2 -2
  337. package/dist/commands/proof.d.ts.map +1 -1
  338. package/dist/commands/proof.js +84 -4
  339. package/dist/commands/proof.js.map +1 -1
  340. package/dist/commands/queue.js +1 -1
  341. package/dist/commands/queue.js.map +1 -1
  342. package/dist/commands/workflow-render.d.ts +50 -0
  343. package/dist/commands/workflow-render.d.ts.map +1 -1
  344. package/dist/commands/workflow-render.js +41 -0
  345. package/dist/commands/workflow-render.js.map +1 -1
  346. package/dist/commands/workflow.d.ts.map +1 -1
  347. package/dist/commands/workflow.js +106 -5
  348. package/dist/commands/workflow.js.map +1 -1
  349. package/dist/front-door.d.ts.map +1 -1
  350. package/dist/front-door.js +4 -1
  351. package/dist/front-door.js.map +1 -1
  352. package/node_modules/@openrig/daemon/dist/adapters/codex-resume.d.ts +1 -0
  353. package/node_modules/@openrig/daemon/dist/adapters/codex-resume.d.ts.map +1 -1
  354. package/node_modules/@openrig/daemon/dist/adapters/codex-resume.js +2 -9
  355. package/node_modules/@openrig/daemon/dist/adapters/codex-resume.js.map +1 -1
  356. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.d.ts +7 -3
  357. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  358. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.js +26 -30
  359. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  360. package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts +15 -1
  361. package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts.map +1 -1
  362. package/node_modules/@openrig/daemon/dist/adapters/tmux.js +64 -1
  363. package/node_modules/@openrig/daemon/dist/adapters/tmux.js.map +1 -1
  364. package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
  365. package/node_modules/@openrig/daemon/dist/domain/active-occupant.d.ts +2 -2
  366. package/node_modules/@openrig/daemon/dist/domain/active-occupant.d.ts.map +1 -1
  367. package/node_modules/@openrig/daemon/dist/domain/active-occupant.js +5 -5
  368. package/node_modules/@openrig/daemon/dist/domain/active-occupant.js.map +1 -1
  369. package/node_modules/@openrig/daemon/dist/domain/crash-cart-discovery.d.ts +3 -1
  370. package/node_modules/@openrig/daemon/dist/domain/crash-cart-discovery.d.ts.map +1 -1
  371. package/node_modules/@openrig/daemon/dist/domain/crash-cart-discovery.js +15 -4
  372. package/node_modules/@openrig/daemon/dist/domain/crash-cart-discovery.js.map +1 -1
  373. package/node_modules/@openrig/daemon/dist/domain/execution-view.d.ts.map +1 -1
  374. package/node_modules/@openrig/daemon/dist/domain/execution-view.js +44 -2
  375. package/node_modules/@openrig/daemon/dist/domain/execution-view.js.map +1 -1
  376. package/node_modules/@openrig/daemon/dist/domain/fresh-occupant-relation.d.ts +8 -0
  377. package/node_modules/@openrig/daemon/dist/domain/fresh-occupant-relation.d.ts.map +1 -0
  378. package/node_modules/@openrig/daemon/dist/domain/fresh-occupant-relation.js +31 -0
  379. package/node_modules/@openrig/daemon/dist/domain/fresh-occupant-relation.js.map +1 -0
  380. package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.d.ts +30 -1
  381. package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.d.ts.map +1 -1
  382. package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.js +36 -14
  383. package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.js.map +1 -1
  384. package/node_modules/@openrig/daemon/dist/domain/kernel-boot.d.ts +2 -0
  385. package/node_modules/@openrig/daemon/dist/domain/kernel-boot.d.ts.map +1 -1
  386. package/node_modules/@openrig/daemon/dist/domain/kernel-boot.js +1 -1
  387. package/node_modules/@openrig/daemon/dist/domain/kernel-boot.js.map +1 -1
  388. package/node_modules/@openrig/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
  389. package/node_modules/@openrig/daemon/dist/domain/native-resume-probe.js +35 -23
  390. package/node_modules/@openrig/daemon/dist/domain/native-resume-probe.js.map +1 -1
  391. package/node_modules/@openrig/daemon/dist/domain/parked-query.d.ts +1 -0
  392. package/node_modules/@openrig/daemon/dist/domain/parked-query.d.ts.map +1 -1
  393. package/node_modules/@openrig/daemon/dist/domain/parked-query.js +2 -1
  394. package/node_modules/@openrig/daemon/dist/domain/parked-query.js.map +1 -1
  395. package/node_modules/@openrig/daemon/dist/domain/policies/parked-owner-consumer.d.ts +2 -0
  396. package/node_modules/@openrig/daemon/dist/domain/policies/parked-owner-consumer.d.ts.map +1 -1
  397. package/node_modules/@openrig/daemon/dist/domain/policies/parked-owner-consumer.js +2 -2
  398. package/node_modules/@openrig/daemon/dist/domain/policies/parked-owner-consumer.js.map +1 -1
  399. package/node_modules/@openrig/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -1
  400. package/node_modules/@openrig/daemon/dist/domain/policies/workflow-keepalive.js +12 -5
  401. package/node_modules/@openrig/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -1
  402. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.d.ts +2 -0
  403. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.d.ts.map +1 -1
  404. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.js +2 -0
  405. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.js.map +1 -1
  406. package/node_modules/@openrig/daemon/dist/domain/proof/judgments.d.ts +138 -0
  407. package/node_modules/@openrig/daemon/dist/domain/proof/judgments.d.ts.map +1 -0
  408. package/node_modules/@openrig/daemon/dist/domain/proof/judgments.js +361 -0
  409. package/node_modules/@openrig/daemon/dist/domain/proof/judgments.js.map +1 -0
  410. package/node_modules/@openrig/daemon/dist/domain/proof/source-watch.d.ts +17 -0
  411. package/node_modules/@openrig/daemon/dist/domain/proof/source-watch.d.ts.map +1 -0
  412. package/node_modules/@openrig/daemon/dist/domain/proof/source-watch.js +60 -0
  413. package/node_modules/@openrig/daemon/dist/domain/proof/source-watch.js.map +1 -0
  414. package/node_modules/@openrig/daemon/dist/domain/queue-owner.d.ts +12 -0
  415. package/node_modules/@openrig/daemon/dist/domain/queue-owner.d.ts.map +1 -0
  416. package/node_modules/@openrig/daemon/dist/domain/queue-owner.js +28 -0
  417. package/node_modules/@openrig/daemon/dist/domain/queue-owner.js.map +1 -0
  418. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.d.ts +3 -0
  419. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.d.ts.map +1 -1
  420. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.js +14 -15
  421. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.js.map +1 -1
  422. package/node_modules/@openrig/daemon/dist/domain/queue-recovery.d.ts +10 -0
  423. package/node_modules/@openrig/daemon/dist/domain/queue-recovery.d.ts.map +1 -0
  424. package/node_modules/@openrig/daemon/dist/domain/queue-recovery.js +27 -0
  425. package/node_modules/@openrig/daemon/dist/domain/queue-recovery.js.map +1 -0
  426. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts +13 -6
  427. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  428. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js +177 -63
  429. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js.map +1 -1
  430. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.d.ts +2 -11
  431. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
  432. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.js +51 -52
  433. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
  434. package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.d.ts +29 -2
  435. package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.d.ts.map +1 -1
  436. package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.js +73 -14
  437. package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.js.map +1 -1
  438. package/node_modules/@openrig/daemon/dist/domain/queue-waiting.d.ts +61 -0
  439. package/node_modules/@openrig/daemon/dist/domain/queue-waiting.d.ts.map +1 -0
  440. package/node_modules/@openrig/daemon/dist/domain/queue-waiting.js +108 -0
  441. package/node_modules/@openrig/daemon/dist/domain/queue-waiting.js.map +1 -0
  442. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.d.ts +9 -0
  443. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -1
  444. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.js +122 -62
  445. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.js.map +1 -1
  446. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts +2 -0
  447. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -1
  448. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js +1 -0
  449. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js.map +1 -1
  450. package/node_modules/@openrig/daemon/dist/domain/rehydrate-eligibility.d.ts.map +1 -1
  451. package/node_modules/@openrig/daemon/dist/domain/rehydrate-eligibility.js +5 -3
  452. package/node_modules/@openrig/daemon/dist/domain/rehydrate-eligibility.js.map +1 -1
  453. package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  454. package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.js +1 -0
  455. package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  456. package/node_modules/@openrig/daemon/dist/domain/restore-plan-preview.d.ts +7 -4
  457. package/node_modules/@openrig/daemon/dist/domain/restore-plan-preview.d.ts.map +1 -1
  458. package/node_modules/@openrig/daemon/dist/domain/restore-plan-preview.js +12 -6
  459. package/node_modules/@openrig/daemon/dist/domain/restore-plan-preview.js.map +1 -1
  460. package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts +9 -1
  461. package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts.map +1 -1
  462. package/node_modules/@openrig/daemon/dist/domain/review/compose.js +26 -7
  463. package/node_modules/@openrig/daemon/dist/domain/review/compose.js.map +1 -1
  464. package/node_modules/@openrig/daemon/dist/domain/review/gather.d.ts.map +1 -1
  465. package/node_modules/@openrig/daemon/dist/domain/review/gather.js +3 -0
  466. package/node_modules/@openrig/daemon/dist/domain/review/gather.js.map +1 -1
  467. package/node_modules/@openrig/daemon/dist/domain/review/types.d.ts +2 -0
  468. package/node_modules/@openrig/daemon/dist/domain/review/types.d.ts.map +1 -1
  469. package/node_modules/@openrig/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  470. package/node_modules/@openrig/daemon/dist/domain/runtime-adapter.js +1 -0
  471. package/node_modules/@openrig/daemon/dist/domain/runtime-adapter.js.map +1 -1
  472. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.d.ts +8 -0
  473. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
  474. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js +6 -25
  475. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
  476. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.d.ts +21 -0
  477. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  478. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.js +47 -1
  479. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  480. package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.d.ts +2 -0
  481. package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
  482. package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.js +11 -4
  483. package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
  484. package/node_modules/@openrig/daemon/dist/domain/slices/slice-indexer.d.ts +2 -0
  485. package/node_modules/@openrig/daemon/dist/domain/slices/slice-indexer.d.ts.map +1 -1
  486. package/node_modules/@openrig/daemon/dist/domain/slices/slice-indexer.js +26 -0
  487. package/node_modules/@openrig/daemon/dist/domain/slices/slice-indexer.js.map +1 -1
  488. package/node_modules/@openrig/daemon/dist/domain/snapshot-capture.d.ts.map +1 -1
  489. package/node_modules/@openrig/daemon/dist/domain/snapshot-capture.js +4 -2
  490. package/node_modules/@openrig/daemon/dist/domain/snapshot-capture.js.map +1 -1
  491. package/node_modules/@openrig/daemon/dist/domain/startup-orchestrator.d.ts +11 -0
  492. package/node_modules/@openrig/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  493. package/node_modules/@openrig/daemon/dist/domain/startup-orchestrator.js +43 -10
  494. package/node_modules/@openrig/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  495. package/node_modules/@openrig/daemon/dist/domain/types.d.ts +13 -0
  496. package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
  497. package/node_modules/@openrig/daemon/dist/domain/types.js.map +1 -1
  498. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-browser.d.ts +33 -0
  499. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-browser.d.ts.map +1 -0
  500. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-browser.js +261 -0
  501. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-browser.js.map +1 -0
  502. package/node_modules/@openrig/daemon/dist/domain/view-event-bridge.d.ts.map +1 -1
  503. package/node_modules/@openrig/daemon/dist/domain/view-event-bridge.js +2 -0
  504. package/node_modules/@openrig/daemon/dist/domain/view-event-bridge.js.map +1 -1
  505. package/node_modules/@openrig/daemon/dist/domain/view-projector.d.ts.map +1 -1
  506. package/node_modules/@openrig/daemon/dist/domain/view-projector.js +4 -0
  507. package/node_modules/@openrig/daemon/dist/domain/view-projector.js.map +1 -1
  508. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.d.ts +4 -0
  509. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  510. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.js +8 -1
  511. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  512. package/node_modules/@openrig/daemon/dist/domain/watchdog-scheduler.d.ts +3 -0
  513. package/node_modules/@openrig/daemon/dist/domain/watchdog-scheduler.d.ts.map +1 -1
  514. package/node_modules/@openrig/daemon/dist/domain/watchdog-scheduler.js +3 -0
  515. package/node_modules/@openrig/daemon/dist/domain/watchdog-scheduler.js.map +1 -1
  516. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-escalation.d.ts.map +1 -1
  517. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-escalation.js +13 -32
  518. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-escalation.js.map +1 -1
  519. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-readiness.d.ts +39 -0
  520. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-readiness.d.ts.map +1 -0
  521. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-readiness.js +77 -0
  522. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-readiness.js.map +1 -0
  523. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-router.d.ts +3 -0
  524. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-router.d.ts.map +1 -1
  525. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-router.js +6 -1
  526. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-router.js.map +1 -1
  527. package/node_modules/@openrig/daemon/dist/domain/workflow-exception.d.ts +6 -0
  528. package/node_modules/@openrig/daemon/dist/domain/workflow-exception.d.ts.map +1 -1
  529. package/node_modules/@openrig/daemon/dist/domain/workflow-exception.js +10 -3
  530. package/node_modules/@openrig/daemon/dist/domain/workflow-exception.js.map +1 -1
  531. package/node_modules/@openrig/daemon/dist/domain/workflow-guidance.d.ts +53 -0
  532. package/node_modules/@openrig/daemon/dist/domain/workflow-guidance.d.ts.map +1 -0
  533. package/node_modules/@openrig/daemon/dist/domain/workflow-guidance.js +212 -0
  534. package/node_modules/@openrig/daemon/dist/domain/workflow-guidance.js.map +1 -0
  535. package/node_modules/@openrig/daemon/dist/domain/workflow-instance-store.d.ts +2 -0
  536. package/node_modules/@openrig/daemon/dist/domain/workflow-instance-store.d.ts.map +1 -1
  537. package/node_modules/@openrig/daemon/dist/domain/workflow-instance-store.js +7 -0
  538. package/node_modules/@openrig/daemon/dist/domain/workflow-instance-store.js.map +1 -1
  539. package/node_modules/@openrig/daemon/dist/domain/workflow-planning-context.d.ts +3 -0
  540. package/node_modules/@openrig/daemon/dist/domain/workflow-planning-context.d.ts.map +1 -0
  541. package/node_modules/@openrig/daemon/dist/domain/workflow-planning-context.js +36 -0
  542. package/node_modules/@openrig/daemon/dist/domain/workflow-planning-context.js.map +1 -0
  543. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.d.ts +11 -2
  544. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
  545. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.js +83 -73
  546. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.js.map +1 -1
  547. package/node_modules/@openrig/daemon/dist/domain/workflow-reconciliation.d.ts +55 -0
  548. package/node_modules/@openrig/daemon/dist/domain/workflow-reconciliation.d.ts.map +1 -0
  549. package/node_modules/@openrig/daemon/dist/domain/workflow-reconciliation.js +228 -0
  550. package/node_modules/@openrig/daemon/dist/domain/workflow-reconciliation.js.map +1 -0
  551. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.d.ts +79 -2
  552. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
  553. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.js +97 -25
  554. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.js.map +1 -1
  555. package/node_modules/@openrig/daemon/dist/index.d.ts.map +1 -1
  556. package/node_modules/@openrig/daemon/dist/index.js +1 -0
  557. package/node_modules/@openrig/daemon/dist/index.js.map +1 -1
  558. package/node_modules/@openrig/daemon/dist/routes/activity.js +1 -1
  559. package/node_modules/@openrig/daemon/dist/routes/activity.js.map +1 -1
  560. package/node_modules/@openrig/daemon/dist/routes/config.d.ts +3 -1
  561. package/node_modules/@openrig/daemon/dist/routes/config.d.ts.map +1 -1
  562. package/node_modules/@openrig/daemon/dist/routes/config.js +11 -1
  563. package/node_modules/@openrig/daemon/dist/routes/config.js.map +1 -1
  564. package/node_modules/@openrig/daemon/dist/routes/missions.d.ts.map +1 -1
  565. package/node_modules/@openrig/daemon/dist/routes/missions.js +5 -2
  566. package/node_modules/@openrig/daemon/dist/routes/missions.js.map +1 -1
  567. package/node_modules/@openrig/daemon/dist/routes/proof.d.ts +3 -0
  568. package/node_modules/@openrig/daemon/dist/routes/proof.d.ts.map +1 -0
  569. package/node_modules/@openrig/daemon/dist/routes/proof.js +65 -0
  570. package/node_modules/@openrig/daemon/dist/routes/proof.js.map +1 -0
  571. package/node_modules/@openrig/daemon/dist/routes/review.d.ts.map +1 -1
  572. package/node_modules/@openrig/daemon/dist/routes/review.js +3 -2
  573. package/node_modules/@openrig/daemon/dist/routes/review.js.map +1 -1
  574. package/node_modules/@openrig/daemon/dist/routes/rigs.d.ts.map +1 -1
  575. package/node_modules/@openrig/daemon/dist/routes/rigs.js +4 -3
  576. package/node_modules/@openrig/daemon/dist/routes/rigs.js.map +1 -1
  577. package/node_modules/@openrig/daemon/dist/routes/scopes.d.ts.map +1 -1
  578. package/node_modules/@openrig/daemon/dist/routes/scopes.js +15 -4
  579. package/node_modules/@openrig/daemon/dist/routes/scopes.js.map +1 -1
  580. package/node_modules/@openrig/daemon/dist/routes/seat.d.ts +4 -0
  581. package/node_modules/@openrig/daemon/dist/routes/seat.d.ts.map +1 -1
  582. package/node_modules/@openrig/daemon/dist/routes/seat.js +1 -1
  583. package/node_modules/@openrig/daemon/dist/routes/seat.js.map +1 -1
  584. package/node_modules/@openrig/daemon/dist/routes/slices.d.ts.map +1 -1
  585. package/node_modules/@openrig/daemon/dist/routes/slices.js +8 -2
  586. package/node_modules/@openrig/daemon/dist/routes/slices.js.map +1 -1
  587. package/node_modules/@openrig/daemon/dist/routes/startup.d.ts +7 -0
  588. package/node_modules/@openrig/daemon/dist/routes/startup.d.ts.map +1 -0
  589. package/node_modules/@openrig/daemon/dist/routes/startup.js +221 -0
  590. package/node_modules/@openrig/daemon/dist/routes/startup.js.map +1 -0
  591. package/node_modules/@openrig/daemon/dist/routes/up.d.ts.map +1 -1
  592. package/node_modules/@openrig/daemon/dist/routes/up.js +2 -1
  593. package/node_modules/@openrig/daemon/dist/routes/up.js.map +1 -1
  594. package/node_modules/@openrig/daemon/dist/routes/workflow.d.ts.map +1 -1
  595. package/node_modules/@openrig/daemon/dist/routes/workflow.js +43 -2
  596. package/node_modules/@openrig/daemon/dist/routes/workflow.js.map +1 -1
  597. package/node_modules/@openrig/daemon/dist/server.d.ts +1 -0
  598. package/node_modules/@openrig/daemon/dist/server.d.ts.map +1 -1
  599. package/node_modules/@openrig/daemon/dist/server.js +5 -0
  600. package/node_modules/@openrig/daemon/dist/server.js.map +1 -1
  601. package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
  602. package/node_modules/@openrig/daemon/dist/startup.js +15 -2
  603. package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
  604. package/node_modules/@openrig/daemon/package.json +1 -1
  605. package/package.json +3 -2
  606. package/tui/dist/commands/registry.d.ts.map +1 -1
  607. package/tui/dist/commands/registry.js +5 -1
  608. package/tui/dist/commands/registry.js.map +1 -1
  609. package/tui/dist/config/config-model.d.ts +69 -0
  610. package/tui/dist/config/config-model.d.ts.map +1 -0
  611. package/tui/dist/config/config-model.js +215 -0
  612. package/tui/dist/config/config-model.js.map +1 -0
  613. package/tui/dist/crash-cart/from-emit.d.ts +5 -5
  614. package/tui/dist/crash-cart/from-emit.d.ts.map +1 -1
  615. package/tui/dist/crash-cart/from-emit.js +15 -9
  616. package/tui/dist/crash-cart/from-emit.js.map +1 -1
  617. package/tui/dist/crash-cart/keys.d.ts +1 -1
  618. package/tui/dist/crash-cart/keys.d.ts.map +1 -1
  619. package/tui/dist/crash-cart/keys.js +2 -0
  620. package/tui/dist/crash-cart/keys.js.map +1 -1
  621. package/tui/dist/crash-cart/start-daemon.d.ts +4 -0
  622. package/tui/dist/crash-cart/start-daemon.d.ts.map +1 -0
  623. package/tui/dist/crash-cart/start-daemon.js +12 -0
  624. package/tui/dist/crash-cart/start-daemon.js.map +1 -0
  625. package/tui/dist/daemon-client.d.ts +10 -0
  626. package/tui/dist/daemon-client.d.ts.map +1 -1
  627. package/tui/dist/daemon-client.js +37 -3
  628. package/tui/dist/daemon-client.js.map +1 -1
  629. package/tui/dist/execution/execution-model.d.ts +14 -0
  630. package/tui/dist/execution/execution-model.d.ts.map +1 -1
  631. package/tui/dist/execution/execution-model.js +48 -21
  632. package/tui/dist/execution/execution-model.js.map +1 -1
  633. package/tui/dist/execution/workflow-model.d.ts.map +1 -1
  634. package/tui/dist/execution/workflow-model.js +13 -1
  635. package/tui/dist/execution/workflow-model.js.map +1 -1
  636. package/tui/dist/hydrate.d.ts.map +1 -1
  637. package/tui/dist/hydrate.js +40 -0
  638. package/tui/dist/hydrate.js.map +1 -1
  639. package/tui/dist/live.d.ts +2 -0
  640. package/tui/dist/live.d.ts.map +1 -1
  641. package/tui/dist/live.js +17 -1
  642. package/tui/dist/live.js.map +1 -1
  643. package/tui/dist/main.js +151 -10
  644. package/tui/dist/main.js.map +1 -1
  645. package/tui/dist/render.d.ts +5 -0
  646. package/tui/dist/render.d.ts.map +1 -1
  647. package/tui/dist/render.js +51 -8
  648. package/tui/dist/render.js.map +1 -1
  649. package/tui/dist/scopes/scopes-model.d.ts +44 -0
  650. package/tui/dist/scopes/scopes-model.d.ts.map +1 -1
  651. package/tui/dist/scopes/scopes-model.js +68 -6
  652. package/tui/dist/scopes/scopes-model.js.map +1 -1
  653. package/tui/dist/sections.d.ts.map +1 -1
  654. package/tui/dist/sections.js +1 -0
  655. package/tui/dist/sections.js.map +1 -1
  656. package/tui/dist/startup.d.ts +82 -0
  657. package/tui/dist/startup.d.ts.map +1 -0
  658. package/tui/dist/startup.js +273 -0
  659. package/tui/dist/startup.js.map +1 -0
  660. package/tui/dist/state.d.ts.map +1 -1
  661. package/tui/dist/state.js +34 -8
  662. package/tui/dist/state.js.map +1 -1
  663. package/tui/dist/types.d.ts +16 -1
  664. package/tui/dist/types.d.ts.map +1 -1
  665. package/ui/dist/assets/{index-wyX378xb.js → index-BVW54ItO.js} +165 -165
  666. package/ui/dist/index.html +1 -1
@@ -2,29 +2,27 @@
2
2
 
3
3
  A CHECKLIST OF JUDGMENT GUIDES, not gates: every item says WHY, most items are one
4
4
  act, and anything situational expires at the next boundary. Runs once per release
5
- fence, after the prior release's ceremony completes. Graduated 2026-08-28 from the
6
- working SOP; the graduating team's seat-specific ceremony details stay in its
7
- playbook.
5
+ fence, after the prior release's ceremony completes. The project and seat owners
6
+ select the applicable actions and preserve their reasons in the boundary record.
8
7
 
9
8
  ## 1. Seats — reset or re-prime, per each seat's continuity needs
10
9
 
11
- - **Builder, QA, and reviewer seats: FRESH GENERATIONS.** Graceful exit with a
12
- deposit (recap where provisioned), then relaunch. Why, twice proven: accumulated
13
- release context becomes noise that reads as knowledge, and long-running seats
14
- carry stale injected catalogs — only a fresh launch carries current skills and
15
- canon.
16
- - **Planning seats: MANAGED COMPACTION + RE-PRIME,** not fresh — planning continuity
17
- is the seat's point; the post-compaction restore is exactly the width-restore case
18
- the context machinery exists for.
19
- - **The continuity-bearing orchestration seat: STAYS.** Its memory is the release's
20
- memory and the ceremony's custody. Known cost, accepted: its injected catalog
21
- stays stale until its own next generation — the capability delta covers the gap by
22
- content.
10
+ - **Choose continuity per seat, with its owner.** Fresh launch, managed compaction
11
+ with re-prime, or retaining the current session serve different needs. Role names
12
+ alone do not select one. Record the choice, the reason and custody of open work;
13
+ selecting a procedure does not itself authorize a lifecycle action.
14
+ - **Fresh launch** can clear accumulated context and load current startup guidance.
15
+ Before an authorized exit, preserve the seat's earned knowledge and continuation
16
+ (recap where provisioned); verify the new occupant's actual identity and install.
17
+ - **Managed compaction with re-prime** can retain planning continuity while
18
+ restoring the context needed for the next phase. **Retaining the current session**
19
+ can preserve ongoing custody. In either case, inspect which guidance is stale and
20
+ deliver the selected current context; an edit on disk is not delivery to a session.
23
21
  - **Re-prime = the world walk + the current capability delta + the mission install**
24
22
  per the mission-install convention (`docs/reference/mission-install.md`): the world
25
23
  half restores where-you-are; the project half (five layers, two depth profiles,
26
- paced pointer-walk) restores what-you-are-doing. Composing the packet by
27
- improvisation is the trap this convention closed.
24
+ paced pointer-walk) restores what-you-are-doing. Composing from named artifacts
25
+ keeps source precedence visible.
28
26
  - **THE CEREMONY IS THE EXPERIMENT.** Every act above runs on the product's own
29
27
  primitives, so the ceremony doubles as their live test. Observe passively: what did
30
28
  each re-primed seat's first natural turns reach for, and what broke? Findings land
@@ -45,8 +43,8 @@ playbook.
45
43
  - Every seat sweeps its DESTINATION for open rows (wakes are unreliable; the sweep
46
44
  is the read). Each open row from the finished release gets exactly one of:
47
45
  done-with-receipt · carried-to-the-new-mission (re-filed against the new plan,
48
- never dragged) · closed-superseded. Ghost obligations accumulate silently without
49
- this — the measured specimen was a dozen cold rows against one seat.
46
+ never dragged) · closed-superseded. The sweep exposes obligations that a missed
47
+ wake or a stale remembered work list can hide.
50
48
  - Verify every closing-paper inheritance has a live intake row with an owner. Zero
51
49
  orphans.
52
50
 
@@ -79,17 +77,22 @@ playbook.
79
77
  ## 6. The capability-delta lifecycle (standing law)
80
78
 
81
79
  Each release's capability delta is authored at the fence and bound to the exact
82
- published cut. Its baseline is the canon's actual last-absorbed marker, not an
83
- assumption that the immediately prior semver was absorbed. When canon is behind, the
84
- new delta is a cumulative synthesis of every intervening delta, preserving
85
- supersessions and pivots rather than concatenating old prose.
86
-
87
- Canon absorbs the kept public-product truths; the canon header then names the delta,
88
- which EXPIRES it — verify the expiry fired, and never cite an expired delta. Private
89
- project topology, host practice, and release ownership go to the versioned project
90
- world instead of leaking into the public package. The new release's delta obligations
91
- start at ITS cut. A delta that outlives its absorption is a stale teaching site
92
- wearing a version number.
80
+ candidate, then reconciled to the published cut. Its baseline is the canon's actual
81
+ last-absorbed marker, not an assumption that the immediately prior semver was
82
+ absorbed. When canon is behind, the new delta is a cumulative synthesis of every
83
+ intervening delta, preserving supersessions and pivots rather than concatenating
84
+ old prose.
85
+
86
+ Canon absorbs the kept public-product truths. Expiry requires BOTH the canon header
87
+ naming that exact delta AND a distinct successor delta file existing. A header alone
88
+ does not expire it; missing or unreadable inputs remain unknown/live. At the actual
89
+ boundary, verify the event before recording expiry, then stop citing the expired
90
+ delta. Do not create a successor merely to make the condition true. Candidate
91
+ absorption is not proof of publication or served production adoption.
92
+
93
+ Private project topology, host practice, and release ownership go to the versioned
94
+ project world instead of leaking into the public package. The new release's delta
95
+ obligations start at ITS cut.
93
96
 
94
97
  ## 7. World absorption and discoverability
95
98
 
@@ -174,7 +174,7 @@ edges:
174
174
  | `name` | string | yes | — | Rig name. Used in session naming (`{pod}-{member}@{name}`), snapshot identification, and spec library lookup. |
175
175
  | `summary` | string | no | — | Human-readable description. Shown in spec library, review surfaces, and `rig specs show`. |
176
176
  | `culture_file` | string | no | — | Relative path to a rig-wide culture/constitution file. Must be a safe relative path (no `..`, no absolute). |
177
- | `permission_policy` | string | no | — | Permission policy attached to the rig. Either a built-in (`builtin:locked`, `builtin:standard`, `builtin:open`, `builtin:operator`) or a safe relative path to a custom policy file (resolved from this spec's directory; no `..`, no absolute). Absent leaves the default floor. A member may set its own `permission_policy`, which takes precedence over the rig-level one. See "Attaching a permission policy" below. |
177
+ | `permission_policy` | string | no | — | Permission policy attached to the rig. Either a built-in (`builtin:locked`, `builtin:standard`, `builtin:open`, `builtin:yolo`) or a safe relative path to a custom policy file (resolved from this spec's directory; no `..`, no absolute). Absent leaves the default floor. A member may set its own `permission_policy`, which takes precedence over the rig-level one. See "Attaching a permission policy" below. |
178
178
  | `docs` | Doc[] | no | — | Documentation files that should travel with the rig. Included in rig bundles. Each entry has a `path` field (safe relative path). The engine does not consume these — they are for humans and agents setting up the environment before launch. |
179
179
  | `startup` | StartupBlock | no | — | Rig-level startup files and actions. Applied to all members via the startup layering model. |
180
180
  | `services` | ServicesBlock | no | — | Optional managed services (Docker Compose). When present, services boot before any agent launches. |
@@ -193,7 +193,7 @@ permission_policy: builtin:standard
193
193
  permission_policy: policies/my-cautious-dev.policy.md
194
194
  ```
195
195
 
196
- Built-in policies (`locked` / `standard` / `open` / `operator`) are read-only and are
196
+ Built-in policies (`locked` / `standard` / `open` / `yolo`) are read-only and are
197
197
  referenced as `builtin:<name>`. A custom policy lives in your own project and is
198
198
  referenced by a safe relative path (no `..`, no absolute). A shipped example of the
199
199
  custom shape is `packages/daemon/policies/examples/my-cautious-dev.policy.md` — copy it
@@ -530,8 +530,8 @@ These are the built-in specs shipped with OpenRig. Read them as worked examples.
530
530
 
531
531
  | Spec | Location | Pods | Members | Services |
532
532
  |------|----------|------|---------|----------|
533
- | `product-team` | `packages/daemon/specs/rigs/product-team.yaml` | orch, dev, rev | 7 (lead, peer, impl, qa, design, r1, r2) | no |
534
- | `implementation-pair` | `packages/daemon/specs/rigs/implementation-pair.yaml` | dev | 2 (impl, qa) | no |
535
- | `adversarial-review` | `packages/daemon/specs/rigs/adversarial-review.yaml` | orch, rev | 3 (lead, r1, r2) | no |
536
- | `research-team` | `packages/daemon/specs/rigs/research-team.yaml` | orch, research | 3 (lead, analyst, synthesizer) | no |
533
+ | `product-team` | `packages/daemon/specs/rigs/preview/product-team/rig.yaml` | orch1, dev1, rev1 | 7 (lead, peer, impl, qa, design, r1, r2) | no |
534
+ | `implementation-pair` | `packages/daemon/specs/rigs/launch/implementation-pair/rig.yaml` | dev | 2 (impl, qa) | no |
535
+ | `adversarial-review` | `packages/daemon/specs/rigs/focused/adversarial-review/rig.yaml` | orch, review | 3 (lead, r1, r2) | no |
536
+ | `research-team` | `packages/daemon/specs/rigs/focused/research-team/rig.yaml` | orch, research | 3 (lead, analyst, synthesizer) | no |
537
537
  | `secrets-manager` | `packages/daemon/specs/rigs/launch/secrets-manager/rig.yaml` | vault | 1 (specialist) | yes (Vault) |
@@ -7,10 +7,10 @@
7
7
 
8
8
  OpenRig is a software factory the human steers from a high altitude. The human
9
9
  records intent; agents turn intent into a plan, the plan into a build, the
10
- build into proof. The TUI is a **plain projection of well-formed
11
- markdown on disk** — agents change the files, the UI re-projects. These
12
- conventions define "well-formed." Everything here is **advisory / fail-open
13
- for agents**: nothing below blocks a write; the audit records and advises.
10
+ build into proof. The TUI projects authored work on disk and, where an owning
11
+ proof policy is selected, derives readiness from recorded judgments. These
12
+ authoring conventions are **advisory / fail-open for agents**: the audit
13
+ records and advises; the selected proof policy separately governs who may judge.
14
14
 
15
15
 
16
16
  ## HOW TO READ THIS DOCUMENT — two parts, and only one of them is the default
@@ -38,7 +38,7 @@ one does not deprecate the others. Nothing below deletes or overrides an existin
38
38
  | **PLAN** | **The planning dial** — planning rigor is a spectrum chosen per piece: P0 mini-requirements and pointers (simple, reversible work) · P1 an authored spec with a proof contract (the default) · P2 plus a research round before the spec freezes, run BEFORE build dispatch · P3 plus an adversarial pass by a non-author, judged against product goals, landing amendments with proof-contract teeth · P4 plus a blind from-scratch design diffed against priors before proceeding. Dial up by what the piece is, exactly as build care is priced below. Full reference: `planning-dial.md`. |
39
39
  | **BUILD** | **Part A, the simple flow** (below — the default) · **product-journey components** — a mission-selectable menu for greenfield work, drift recovery, public journey probes, one evidence-gated look at the layer below, minimal repair, independent QA/review, integration, and installed smoke; compose only what the work needs in mission/slice YAML, never as a new mode or mandatory pipeline. Full reference: `product-journey-sdlc.md` · **the wave model** — slices build in parallel in disjoint file territories, an integrator merges serially, and independent review fires once per wave (two reviewers with different vantages, never the writers; fix rounds re-earn verdicts at one final revision; per-slice discipline stays failing-test-first and verify-by-effect). The wave IS the care dial: what shares a wave decides how much review each piece gets · **Part B, the rigorous overlay** (below — only when assigned). These combine: a wave can carry one Part-B piece. Full wave reference: `wave-sdlc.md`. |
40
40
  | **DISPATCH DATA** | **The execution-data conventions (S27)** — three tiny data disciplines that make execution state derivable instead of hand-tabulated, consumed by `rig view show execution`. **EC-1, edges in frontmatter:** every open slice carries its hard edges in `depends_on:` (an inline JSON array; an explicit `[]` is a statement, absence is INDETERMINATE); soft/serialization edges are one machine-readable Territory line, exactly `SOFT-AFTER: [ids] — reason`. **EC-2, wave-as-data:** wave composition + review model live on a durable queue row tagged `wave-map` + `format:wave-map-v1` whose body carries one fenced ```json block (`{format:"wave-map-v1", mission, waves:[{id, slices, serialized_order?, review_model?}]}`) — composition only, never status labels (status derives at read time); the planning dial recorded at lock surfaces as the frontmatter field `approved-spec-dial:` beside the approve stamp. **EC-3, dispatch names the worktree:** build batons carry the exact body line `worktree_path=<path>` from dispatch onward — it is Q1's join key; batons without it join by naming only and the view marks them `fragile_join`. Existing batons are never rewritten. |
41
- | **RELEASE** | The release ceremony conventions (publication identity, honest release notes) and the CAPABILITY-DELTA LIFECYCLE LAW: each release's delta is authored at the fence, bound to the exact published cut; canon absorbs its named items; the canon header then names the delta, which expires it — verify the expiry fired, and never cite an expired delta. Full statement: `release-boundary.md` §6. |
41
+ | **RELEASE** | The release ceremony conventions (publication identity, honest release notes) and the CAPABILITY-DELTA LIFECYCLE LAW: each release's delta is authored at the fence and bound to the exact candidate, then reconciled to the published cut. Expiry requires both the canon header naming the absorbed delta and a distinct successor delta existing; a draft header alone is insufficient. Verify the actual boundary event and stop citing an expired delta. Full statement: `release-boundary.md` §6. |
42
42
  | **BOUNDARY** | **The release boundary** — housekeeping run once per fence so the next release starts clean: seats reset or re-primed per their continuity needs, memory distilled (keep what changed a decision recently), every queue swept by destination and dispositioned, substrate torn down, boards frozen as records, a clean-box baseline captured. A checklist of judgment guides, not gates. Full reference: `release-boundary.md`. |
43
43
 
44
44
  > Full reference documents for each component (graduated 2026-08-28): the
@@ -112,6 +112,17 @@ Legacy `README.md`, `IMPLEMENTATION-PRD.md`, and pre-convention trees remain
112
112
  readable indefinitely. New scaffolds do not create or mirror them, and repair
113
113
  is additive: it never deletes, renames, or rewrites legacy bytes.
114
114
 
115
+ When the owning scope selects `proofPolicy.judges`, use `rig proof judge` to
116
+ record an attributed accept, reject or withdraw decision on a contract item,
117
+ and `rig proof show` to read derived readiness up through slice, mission and
118
+ project. The nearest slice, mission or project policy selects authorized judges;
119
+ `rig proof --help` describes setup, selectors and evidence requirements. A
120
+ correction preserves history and unrelated judgments without editing ancestor
121
+ status checklists. An artifact can identify non-code work without a fabricated
122
+ commit. Evidence capture (`proof add`), policy acceptance, higher outcome
123
+ judgment and publication are distinct. This optional component does not select
124
+ Part B or add a mandatory review gate.
125
+
115
126
  The three sections project into the UI's one review structure: a vertical
116
127
  stack of **INTENT → PLAN → DELIVERED**. A slice missing a section still
117
128
  renders (the projection degrades to a muted "—", never invents content) —
@@ -1,9 +1,9 @@
1
1
  # The wave SDLC — parallel build, wave-level review, composition as the care dial
2
2
 
3
- Graduated 2026-08-28 from the working playbook of the team that proved it live; the
4
- team-specific custody mechanics stay in that team's playbook. Lock stamps in this
5
- model are ADDITIVE: approval appends metadata and never rewrites authored bytes, so
6
- a candidate's identity survives its own approval.
3
+ This is a selectable build and review model from `sdlc-conventions.md`'s component
4
+ menu. The mission owner decides whether it fits the work. Lock stamps in this model
5
+ are ADDITIVE: approval appends metadata and never rewrites authored bytes, so a
6
+ candidate's identity survives its own approval.
7
7
 
8
8
  ## The model in one paragraph
9
9
 
@@ -87,7 +87,7 @@ design session first). Anything irreversible within the hour (publish, cutover,
87
87
  destructive operations) — that is the heavy path. And when no independent non-writing
88
88
  reviewers exist: nothing ever self-reviews; without them the wave gate is theater.
89
89
 
90
- ## Failure modes, with the mitigations that worked (dated observations, 2026-08)
90
+ ## Failure modes and mitigations
91
91
 
92
92
  - **Freeze-merge races:** a candidate freezes seconds before a merge moves the tip.
93
93
  Mitigation: zero-overlap restack with content-identity proof (stable patch-id) in
@@ -100,14 +100,3 @@ reviewers exist: nothing ever self-reviews; without them the wave gate is theate
100
100
  line still prints. Rule: pin the ABSENCE of the false claim in every encoding.
101
101
  - **Phantom checkout status:** merge-by-reference leaves a shared checkout's index
102
102
  stale. Never build or commit from a shared checkout; sync its index at fences.
103
-
104
- ## Measured outcome from the proving run (dated, one team, 2026-08)
105
-
106
- Eight slices plus five fix candidates plus two addenda built and merged in ~2.5 hours
107
- across five writing seats; two wave passes plus three fix-round passes replaced ~20
108
- per-slice review rounds. Defect yield went UP: the reviewers' findings never
109
- overlapped once across three consecutive verdicts, and the builders' green suites had
110
- missed every one of them — wave-level review sees cross-slice seams per-slice review
111
- structurally cannot. Correction latency: one live defect went found→root-caused→
112
- specced→locked→built→merged in 24 minutes, because no review round stood between a
113
- locked spec and a building seat.
@@ -21,11 +21,11 @@ A worktree can therefore report green against code it does not contain.
21
21
 
22
22
  ## Rules
23
23
 
24
- 1. **Run `npm install` in each worktree** (~4s, one time). It is not the slow path; it is the
25
- only path that resolves workspace packages to the worktree's own source.
24
+ 1. **Run `npm install` in each worktree** so workspace packages resolve to the
25
+ worktree's own source.
26
26
  2. **Never symlink `node_modules` from the primary checkout.** It appears to work — builds pass,
27
27
  typechecks pass — which is exactly the danger.
28
- 3. **`npx tsc` with no `node_modules` installs an unrelated 12-year-old `tsc` package** and prints
28
+ 3. **`npx tsc` with no `node_modules` installs an unrelated `tsc` package** and prints
29
29
  "This is not the tsc command you are looking for". That message means *no install*, not a
30
30
  TypeScript error.
31
31
  4. **Build `@openrig/daemon` before typechecking `@openrig/cli`** in a fresh worktree: cli imports
@@ -35,6 +35,6 @@ permission_policy: policies/my-cautious-dev.policy.md
35
35
  ```
36
36
 
37
37
  Copy it, rename it, and edit the lists to taste — it's yours to change. The built-in
38
- policies (locked / standard / open / operator) stay read-only and are referenced as
38
+ policies (locked / standard / open / yolo) stay read-only and are referenced as
39
39
  `builtin:<name>`; a custom policy like this one lives in your project and is referenced
40
40
  by path.
@@ -19,11 +19,11 @@ human channel; a terminal attachment is not a person's address.
19
19
  ## What you do
20
20
 
21
21
  - Bring rigs up and down (`rig up <spec>`, `rig down <rigId>`).
22
- - Restart work after a reboot. **The kernel is the only auto-start
23
- rig**; other rigs require explicit operator-initiated restart.
22
+ - Restart selected work after a reboot. Bare `rig` starts only the daemon;
23
+ the TUI recommends kernel first and lets the user select individual seats.
24
24
  When the user says "bring my rigs back online":
25
25
  1. List rigs that were running pre-reboot using daemon persisted
26
- state (`rig ps --json`) and any operator-saved roster.
26
+ state (`rig ps --json`), then inspect actual selected seat state.
27
27
  2. Confirm with the user which subset to restart.
28
28
  3. Restart each via `rig up <spec>` (or `rig restore <snapshot>`
29
29
  if a snapshot exists).
@@ -22,14 +22,12 @@ restart:
22
22
  survived (daemon-restart-only, host stayed up) → marked healthy.
23
23
  If tmux is gone (host reboot) → marked detached.
24
24
 
25
- If the host rebooted (not just the daemon), the kernel's member
26
- tmux sessions are gone. You own the agent-restart workflow:
27
-
28
- 1. `rig ps --nodes --rig kernel --json` shows which kernel members
29
- are detached.
30
- 2. Re-launch each detached member via the normal launch path
31
- (the canonical commands live in the `openrig-operator` skill).
32
- 3. `rig ps --nodes --rig kernel --json` again to confirm healthy.
25
+ After a host reboot, a person can type bare `rig` to open the same TUI,
26
+ start the daemon only, and select the existing kernel operator or other seats.
27
+ The TUI recommends kernel first without starting every member. Its default
28
+ for a previously occupied seat is to resume the authoritative conversation.
29
+ Missing or ambiguous history needs repair or a separate named fresh-start
30
+ decision; authentication failure is not a reason to replace history.
33
31
 
34
32
  Other rigs (project rigs the user spun up) are NEVER auto-instantiated
35
33
  by the daemon. If the user asks you to bring those back:
@@ -41,13 +39,14 @@ by the daemon. If the user asks you to bring those back:
41
39
  <name>` for warm-restore when a snapshot exists.
42
40
  4. `rig ps --nodes --rig <name>` to verify healthy.
43
41
 
44
- This is the agent-driven workflow replacing silent auto-restore.
45
- See the `openrig-operator` skill for the canonical script.
42
+ The TUI is the normal human entry. Explicit CLI automation remains available;
43
+ use the applicable lifecycle help for an authorized agent-driven operation.
46
44
 
47
45
  ## What's already running
48
46
 
49
- - The kernel rig itself (you, advisor.lead, queue.worker, the shared
50
- operator terminal).
47
+ - Your own successful startup does not prove the other kernel seats are
48
+ running. Read actual state before routing work to a peer; the user may
49
+ have selected only this operator.
51
50
  - Whatever non-kernel rigs were running before the daemon restarted
52
51
  have their rig records persisted in SQLite (the daemon does NOT
53
52
  cull rigs on restart) but their member sessions are likely
@@ -2,5 +2,6 @@
2
2
  export declare function resolveBinEntry(invokedPath?: string | undefined, moduleUrl?: string): string;
3
3
  export declare function isDirectRun(argv1?: string | undefined, moduleUrl?: string): boolean;
4
4
  export declare function resolveNodeReexecBinary(currentExecPath?: string, invokedPath?: string | undefined, env?: NodeJS.ProcessEnv, exists?: (candidate: string) => boolean, realpath?: (candidate: string) => string): string | null;
5
+ export declare function canLoadInstalledNative(node: string, wrapper: string): boolean;
5
6
  export declare function run(argv?: string[]): Promise<void>;
6
7
  //# sourceMappingURL=bin-wrapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bin-wrapper.d.ts","sourceRoot":"","sources":["../src/bin-wrapper.ts"],"names":[],"mappings":";AASA,wBAAgB,eAAe,CAAC,WAAW,qBAAkB,EAAE,SAAS,SAAkB,GAAG,MAAM,CAIlG;AAED,wBAAgB,WAAW,CAAC,KAAK,qBAAkB,EAAE,SAAS,SAAkB,GAAG,OAAO,CAOzF;AAED,wBAAgB,uBAAuB,CACrC,eAAe,SAAmB,EAClC,WAAW,qBAAkB,EAC7B,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,MAAM,GAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAoB,EACnD,QAAQ,GAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAqB,GACrD,MAAM,GAAG,IAAI,CAiBf;AAsBD,wBAAsB,GAAG,CAAC,IAAI,WAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB5D"}
1
+ {"version":3,"file":"bin-wrapper.d.ts","sourceRoot":"","sources":["../src/bin-wrapper.ts"],"names":[],"mappings":";AASA,wBAAgB,eAAe,CAAC,WAAW,qBAAkB,EAAE,SAAS,SAAkB,GAAG,MAAM,CAIlG;AAED,wBAAgB,WAAW,CAAC,KAAK,qBAAkB,EAAE,SAAS,SAAkB,GAAG,OAAO,CAOzF;AAED,wBAAgB,uBAAuB,CACrC,eAAe,SAAmB,EAClC,WAAW,qBAAkB,EAC7B,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,MAAM,GAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAoB,EACnD,QAAQ,GAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAqB,GACrD,MAAM,GAAG,IAAI,CAiBf;AA0BD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAM7E;AAED,wBAAsB,GAAG,CAAC,IAAI,WAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB5D"}
@@ -44,6 +44,12 @@ function maybeReexecWithSiblingNode(argv = process.argv) {
44
44
  if (!preferredNode)
45
45
  return;
46
46
  const scriptPath = argv[1] ? realpathSync(argv[1]) : fileURLToPath(import.meta.url);
47
+ // An alias is not runtime authority. Keep a working interpreter; only switch
48
+ // when the installed native dependency actually loads under the alternative.
49
+ if (canLoadInstalledNative(process.execPath, scriptPath))
50
+ return;
51
+ if (!canLoadInstalledNative(preferredNode, scriptPath))
52
+ return;
47
53
  const result = spawnSync(preferredNode, [scriptPath, ...argv.slice(2)], {
48
54
  stdio: "inherit",
49
55
  env: {
@@ -56,6 +62,13 @@ function maybeReexecWithSiblingNode(argv = process.argv) {
56
62
  }
57
63
  process.exit(result.status ?? 0);
58
64
  }
65
+ export function canLoadInstalledNative(node, wrapper) {
66
+ const probe = spawnSync(node, ["--input-type=module", "-e",
67
+ "import {createRequire} from 'node:module'; const require=createRequire(process.argv[1]); const D=require('better-sqlite3'); new D(':memory:').close();",
68
+ wrapper,
69
+ ], { encoding: "utf8", timeout: 5000, stdio: ["ignore", "pipe", "pipe"] });
70
+ return probe.status === 0;
71
+ }
59
72
  export async function run(argv = process.argv) {
60
73
  const normalizedArgv = [...argv];
61
74
  if (normalizedArgv[1]) {
@@ -1 +1 @@
1
- {"version":3,"file":"bin-wrapper.js","sourceRoot":"","sources":["../src/bin-wrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bin-wrapper.js","sourceRoot":"","sources":["../src/bin-wrapper.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  // GENERATED by scripts/build-package.sh — the packaged build-identity stamp.
2
2
  export const BUILD_INFO = {
3
- semver: "0.5.11",
4
- commit: "ffd5ac1dd71367561ed8357bc42d5131821ee5f2",
3
+ semver: "0.5.12",
4
+ commit: "b6c8d8f0444bc721d0ba4062a7384d25601c1c6f",
5
5
  dirty: false,
6
- builtAt: "2026-09-07T18:39:28Z",
6
+ builtAt: "2026-09-09T12:31:47Z",
7
7
  };
8
8
  export function stampFields(info = BUILD_INFO) {
9
9
  if (!info.commit) return {};
@@ -1 +1 @@
1
- {"version":3,"file":"crash-cart.d.ts","sourceRoot":"","sources":["../../src/commands/crash-cart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,YAAY,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,gGAAgG;IAChG,IAAI,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IACnC,uCAAuC;IACvC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B;AA2ED,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAgB9E"}
1
+ {"version":3,"file":"crash-cart.d.ts","sourceRoot":"","sources":["../../src/commands/crash-cart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,YAAY,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,gGAAgG;IAChG,IAAI,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IACnC,uCAAuC;IACvC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B;AAkFD,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAgB9E"}
@@ -1,7 +1,8 @@
1
1
  import { Command } from "commander";
2
- import { copyFileSync, existsSync, mkdtempSync, readFileSync, rmSync } from "node:fs";
2
+ import { copyFileSync, lstatSync, mkdtempSync, readFileSync, rmSync } from "node:fs";
3
3
  import { homedir, tmpdir } from "node:os";
4
4
  import { join } from "node:path";
5
+ import { ConfigStore } from "../config-store.js";
5
6
  function openrigHome() {
6
7
  return process.env.OPENRIG_HOME ?? join(homedir(), ".openrig");
7
8
  }
@@ -9,17 +10,29 @@ function openrigHome() {
9
10
  * the detector's readDaemonJson omits it). */
10
11
  function readDaemonJsonWithDb(home) {
11
12
  const p = join(home, "daemon.json");
12
- if (!existsSync(p))
13
+ if (!existsOrThrow(p))
13
14
  return undefined;
14
15
  try {
15
16
  const j = JSON.parse(readFileSync(p, "utf8"));
16
17
  if (typeof j.pid === "number" && typeof j.port === "number" && typeof j.db === "string") {
17
18
  return { pid: j.pid, port: j.port, host: typeof j.host === "string" ? j.host : undefined, db: j.db };
18
19
  }
19
- return undefined;
20
+ throw new Error("daemon.json has no usable PID, port and database path");
20
21
  }
21
- catch {
22
- return undefined;
22
+ catch (error) {
23
+ throw new Error(`Cannot read recorded daemon state at ${p}: ${error instanceof Error ? error.message : String(error)}`);
24
+ }
25
+ }
26
+ /** Only ENOENT means absent; permissions and dangling links must fail visibly. */
27
+ function existsOrThrow(path) {
28
+ try {
29
+ lstatSync(path);
30
+ return true;
31
+ }
32
+ catch (error) {
33
+ if (error.code === "ENOENT")
34
+ return false;
35
+ throw error;
23
36
  }
24
37
  }
25
38
  /**
@@ -62,7 +75,8 @@ async function realEmit() {
62
75
  isProcessAlive: cc.isProcessAlive,
63
76
  probeHealthz: (url) => probeClassified(url).then((r) => r === "answered"),
64
77
  copyFile: copyFileSync,
65
- exists: existsSync,
78
+ exists: existsOrThrow,
79
+ configuredDbPath: new ConfigStore().resolve().db.path,
66
80
  makeScratchDir: () => mkdtempSync(join(tmpdir(), "crash-cart-")),
67
81
  removeScratchDir: (d) => rmSync(d, { recursive: true, force: true }),
68
82
  openDb: cc.openDaemonDbReadonly,
@@ -1 +1 @@
1
- {"version":3,"file":"crash-cart.js","sourceRoot":"","sources":["../../src/commands/crash-cart.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crash-cart.js","sourceRoot":"","sources":["../../src/commands/crash-cart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AA4BjD,SAAS,WAAW;IAClB,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACjE,CAAC;AAED;+CAC+C;AAC/C,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACpC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAoE,CAAC;QACjH,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YACxF,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QACvG,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1H,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,CAAC;QAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IACrC,OAAO,KAAK,EAAE,CAAC;QAAC,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAAC,MAAM,KAAK,CAAC;IAAC,CAAC;AACtG,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,QAAQ;IACrB,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IAC3C,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,EAAE,CACtC,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,IAAmB,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9F,MAAM,UAAU,GAAG;QACjB,WAAW,EAAE,IAAI;QACjB,cAAc,EAAE,EAAE,CAAC,cAAc;QACjC,cAAc,EAAE,EAAE,CAAC,cAAc;QACjC,YAAY,EAAE,eAAe;QAC7B,UAAU;KACX,CAAC;IACF,OAAO,EAAE,CAAC,kBAAkB,CAAC;QAC3B,YAAY,EAAE,GAAG,EAAE,CACjB,EAAE,CAAC,kBAAkB,CAAC,EAAE,GAAG,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;QACjI,gBAAgB,EAAE,KAAK,IAAI,EAAE;YAC3B,MAAM,KAAK,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,KAAK;gBACpB,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC;oBAC5B,CAAC,CAAC,cAAc,KAAK,CAAC,GAAG,GAAG;oBAC5B,CAAC,CAAC,aAAa,KAAK,CAAC,GAAG,GAAG;gBAC7B,CAAC,CAAC,gBAAgB,CAAC;YACrB,MAAM,GAAG,GAAG,UAAU;gBACpB,CAAC,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU;gBAC5C,CAAC,CAAC,UAAU,KAAK,EAAE,IAAI,IAAI,WAAW,IAAI,KAAK,EAAE,IAAI,IAAI,IAAI,UAAU,CAAC;YAC1E,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;YAC/C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,WAAW,OAAO,GAAG,EAAE,EAAE,CAAC;QACrF,CAAC;QACD,aAAa,EAAE,KAAK,IAAI,EAAE;YACxB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC,sBAAsB,CAAC;gBACpD,WAAW,EAAE,IAAI;gBACjB,cAAc,EAAE,oBAAoB;gBACpC,cAAc,EAAE,EAAE,CAAC,cAAc;gBACjC,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC;gBACzE,QAAQ,EAAE,YAAY;gBACtB,MAAM,EAAE,aAAa;gBACrB,gBAAgB,EAAE,IAAI,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,IAAI;gBACrD,cAAc,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC;gBAChE,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;gBACpE,MAAM,EAAE,EAAE,CAAC,oBAAoB;gBAC/B,UAAU;aACX,CAAC,CAAC;YACH,OAAO,SAAS,CAAC;QACnB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAoC;IACnE,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAC/C,wEAAwE,CACzE,CAAC;IACF,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,+CAA+C,CAAC,CAAC;IACtE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,QAAQ,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;QACnF,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;QAC5B,gGAAgG;QAChG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9B,kFAAkF;QAClF,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { Command } from "commander";
2
2
  /**
3
- * `rig proof` — the proof-drop write path (OPR.0.4.4.19 FR-8 + FR-11;
3
+ * `rig proof add` — the evidence-capture write path (OPR.0.4.4.19 FR-8 + FR-11;
4
4
  * conventions C1 + C2 + C8, D2 attestation).
5
5
  *
6
- * CLI-side filesystem only (plan-review + arch-lead confirmed): the drop
6
+ * The capture leg is CLI-side filesystem only: the drop
7
7
  * validates the C1 header AT THE MOMENT THE EVIDENCE IS IN-HAND, writes the
8
8
  * artifact into the slice's proof/ dir, and echoes the parsed header (the
9
9
  * seat sees what the composer will see). No daemon involvement, no synthetic
@@ -1 +1 @@
1
- {"version":3,"file":"proof.d.ts","sourceRoot":"","sources":["../../src/commands/proof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;;;;;;;;;;;;;;;;;GAkBG;AAEH;8CAC8C;AAC9C,eAAO,MAAM,iBAAiB,gEAAiE,CAAC;AAChG,eAAO,MAAM,WAAW,mEAAoE,CAAC;AAK7F,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CAC9E;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,kBAAkB,CAc9E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAgBtE;AAMD,wBAAgB,YAAY,IAAI,OAAO,CA4StC"}
1
+ {"version":3,"file":"proof.d.ts","sourceRoot":"","sources":["../../src/commands/proof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC;;;;;;;;;;;;;;;;;;GAkBG;AAEH;8CAC8C;AAC9C,eAAO,MAAM,iBAAiB,gEAAiE,CAAC;AAChG,eAAO,MAAM,WAAW,mEAAoE,CAAC;AAK7F,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CAC9E;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,kBAAkB,CAc9E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAgBtE;AAMD,wBAAgB,YAAY,IAAI,OAAO,CA+WtC"}
@@ -2,15 +2,16 @@ import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import { Command } from "commander";
4
4
  import YAML from "yaml";
5
+ import { DaemonClient } from "../client.js";
5
6
  import { findSlice, resolveMissionsRoot } from "../lib/scope/scope-fs.js";
6
7
  import { ScopeCliError } from "../lib/scope/types.js";
7
8
  import { selectProofContractBody, isScaffoldPlaceholderText } from "../lib/scope/scaffold-placeholder.js";
8
9
  import { parseLogicalCheckboxes } from "../lib/scope/logical-checkbox.js";
9
10
  /**
10
- * `rig proof` — the proof-drop write path (OPR.0.4.4.19 FR-8 + FR-11;
11
+ * `rig proof add` — the evidence-capture write path (OPR.0.4.4.19 FR-8 + FR-11;
11
12
  * conventions C1 + C2 + C8, D2 attestation).
12
13
  *
13
- * CLI-side filesystem only (plan-review + arch-lead confirmed): the drop
14
+ * The capture leg is CLI-side filesystem only: the drop
14
15
  * validates the C1 header AT THE MOMENT THE EVIDENCE IS IN-HAND, writes the
15
16
  * artifact into the slice's proof/ dir, and echoes the parsed header (the
16
17
  * seat sees what the composer will see). No daemon involvement, no synthetic
@@ -80,8 +81,87 @@ function isVideoFile(filePath) {
80
81
  return VIDEO_EXTENSIONS.has(path.extname(filePath).toLowerCase());
81
82
  }
82
83
  export function proofCommand() {
83
- const cmd = new Command("proof").description("Proof artifacts — drop gate/proof evidence into a slice's proof/ dir with the machine-readable C1 header, validated at the natural moment (OPR.0.4.4.19 FR-8). The drop is the SDLC's proof leg: --evidences joins it to the slice's ## Proof contract items (what the Living Notes DELIVERED section pairs + renders); proof-lock afterwards via rig scope slice approve --scope delivery. Conventions SSOT: docs/reference/sdlc-conventions.md (installed: $OPENRIG_HOME/reference/sdlc-conventions.md).");
84
- cmd.option("--workspace <path>", "Override workspace root (else cwd walk or $OPENRIG_WORK_ROOT)");
84
+ const cmd = new Command("proof").description("Capture evidence (add), record an attributed item judgment (judge), and read derived readiness (show). Capture, policy acceptance, higher outcome judgment and publication are separate.");
85
+ cmd.addHelpText("after", `
86
+ The selected daemon owns show/judge. Scope addresses are mission/slices/slice#item.
87
+ The project owner selects proofPolicy: { judges: [exact-seat-address] } in the
88
+ owning slice.yaml, mission.yaml or project.yaml (nearest wins; no default gate roles).
89
+ The contract is the authored ## Proof contract. A sole item needs no # selector.
90
+
91
+ Example (existing evidence, no copied hashes or operation key):
92
+ rig proof judge trial/slices/01-build#1 --verdict accept --reason 'Observed the promised outcome' --evidence proof/result.md
93
+ rig proof show trial --json
94
+ rig proof judge trial/slices/01-build#1 --verdict withdraw --reason 'The result no longer supports acceptance'
95
+
96
+ Corrections retain prior receipts in proof/judgments/. --replace deliberately
97
+ reaffirms a historical identical judgment after a correction; an ordinary retry
98
+ returns its original receipt plus current readiness and never reinstates old truth.
99
+ Use judge --help for patch-equivalent comparison receipts and advanced identities.
100
+ Legacy proof add artifacts may be referenced directly; queue done and stored
101
+ checkboxes do not accept an item under the selected proof policy.
102
+ `);
103
+ cmd.option("--workspace <path>", "Capture/add only: override workspace root; show/judge use the selected daemon workspace");
104
+ const client = () => {
105
+ if (cmd.opts().workspace)
106
+ throw new Error("--workspace applies to proof add. Select the judgment daemon using OPENRIG_URL; proof show reports its scope basis.");
107
+ return new DaemonClient();
108
+ };
109
+ const response = async (r) => {
110
+ const data = r.data;
111
+ if (r.status >= 400)
112
+ throw new Error(`${data.error ?? r.status}: ${data.message ?? "Read the named source and retry"}`);
113
+ return data;
114
+ };
115
+ cmd.command("show [scope]").description("Read current attributed proof readiness for a slice, mission or active project; no status files are changed.")
116
+ .option("--json", "Structured readiness, item revisions and retained judgment references")
117
+ .action(async (scope, opts) => {
118
+ try {
119
+ const data = await response(await client().get(`/api/proof${scope ? `?scope=${encodeURIComponent(scope)}` : ""}`));
120
+ console.log(opts.json ? JSON.stringify(data) : JSON.stringify(data, null, 2));
121
+ }
122
+ catch (e) {
123
+ console.error(e instanceof Error ? e.message : String(e));
124
+ process.exitCode = 1;
125
+ }
126
+ });
127
+ cmd.command("judge <scope-item>").description("Record one attributed item judgment and derive readiness. Use mission/slices/slice#item (index, text or ID). Policy inherits proofPolicy.judges from owning slice, mission or project.")
128
+ .requiredOption("--verdict <verdict>", "accept | reject | withdraw")
129
+ .requiredOption("--reason <text>", "The evidence-backed judgment being made")
130
+ .option("--evidence <ref>", "Existing evidence, relative to slice or workspace missions/; repeat for multiple references", (v, prior) => [...prior, v], [])
131
+ .option("--subject <kind:ref>", "artifact, commit or patch-equivalent subject; artifact inferred when omitted")
132
+ .option("--comparison <ref>", "Patch-equivalent subject: actual comparison/adoption receipt alongside outcome evidence")
133
+ .option("--revision <revision>", "Advanced: deliberately require this item revision")
134
+ .option("--operation-id <id>", "Advanced: explicit retry identity")
135
+ .option("--replace", "Deliberately reaffirm a historical judgment after a later correction")
136
+ .option("--json", "Return committed receipt and current readiness")
137
+ .action(async (address, opts) => {
138
+ try {
139
+ const at = address.indexOf("#"), scope = at < 0 ? address : address.slice(0, at), selector = at < 0 ? null : address.slice(at + 1);
140
+ const refs = [...new Set([...opts.evidence, ...(opts.comparison ? [opts.comparison] : [])])];
141
+ const query = new URLSearchParams({ scope });
142
+ for (const ref of refs)
143
+ query.append("evidence", ref);
144
+ const c = client(), view = await response(await c.get(`/api/proof?${query}`));
145
+ const items = view.items;
146
+ const item = selector ? items?.find(i => i.id === selector || i.text === selector || String(i.index) === selector) : items?.length === 1 ? items[0] : undefined;
147
+ if (!item)
148
+ throw new Error("Select one current item with scope#item; rig proof show lists IDs, text and indices");
149
+ const subjectAt = opts.subject?.indexOf(":") ?? -1;
150
+ if (opts.subject && subjectAt < 1)
151
+ throw new Error("--subject must be kind:ref");
152
+ const body = { scope, item: item.id, verdict: opts.verdict, reason: opts.reason,
153
+ ...(refs.length ? { evidence: refs, expectedEvidence: view.preparedEvidence } : {}),
154
+ ...(opts.subject ? { subject: { kind: opts.subject.slice(0, subjectAt), ref: opts.subject.slice(subjectAt + 1), ...(opts.comparison ? { comparison: opts.comparison } : {}) } } : {}),
155
+ expectedRevision: opts.revision ?? item.revision, expectedPrevious: item.judgment?.id ?? null,
156
+ operationId: opts.operationId, replace: opts.replace === true };
157
+ const result = await response(await c.post("/api/proof/judge", body));
158
+ console.log(opts.json ? JSON.stringify(result) : JSON.stringify(result, null, 2));
159
+ }
160
+ catch (e) {
161
+ console.error(e instanceof Error ? e.message : String(e));
162
+ process.exitCode = 1;
163
+ }
164
+ });
85
165
  cmd
86
166
  .command("add <slice-path>")
87
167
  .description("Drop a proof artifact: authors the C1 frontmatter from flags, writes <slice>/proof/<name>, echoes the parsed header. Contract/self-check/C8 outputs are advisories (exit 0) — never gates.")