@openrig/cli 0.5.6 → 0.5.8

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 (562) hide show
  1. package/daemon/assets/plugins/openrig-core/README.md +1 -1
  2. package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +25 -2
  3. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/precompact-hook.mjs +95 -8
  4. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/restore-from-jsonl.mjs +9 -1
  5. package/daemon/assets/plugins/openrig-core/skills/loading-addressable-markdown/SKILL.md +34 -0
  6. package/daemon/assets/plugins/openrig-core/skills/loading-addressable-markdown/scripts/resolve-markdown.mjs +170 -0
  7. package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +1 -4
  8. package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/SKILL.md +3 -3
  9. package/daemon/assets/plugins/openrig-core/skills/software-for-agents/SKILL.md +4 -9
  10. package/daemon/assets/vm-preview-fixtures/workflows/sample-basic-loop.yaml +3 -3
  11. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  12. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +40 -15
  13. package/daemon/context-packs/skills/applying-a-permission-policy/SKILL.md +120 -0
  14. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +10 -0
  15. package/daemon/context-packs/skills/claude-compaction-restore/SKILL.md +166 -0
  16. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +18 -0
  17. package/daemon/context-packs/skills/claude-compaction-restore/scripts/precompact-hook.mjs +261 -0
  18. package/daemon/context-packs/skills/claude-compaction-restore/scripts/restore-from-jsonl.mjs +495 -0
  19. package/daemon/context-packs/skills/claude-compaction-restore/templates/compact-instruction.md +1 -0
  20. package/daemon/context-packs/skills/claude-compaction-restore/templates/post-compact-restore-instruction.md +1 -0
  21. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  22. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -1
  23. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  24. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  25. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  26. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  27. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/core/openrig-skills/SKILL.md +1 -4
  31. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  32. package/daemon/context-packs/skills/core/openrig-upgrade/SKILL.md +120 -355
  33. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +9 -3
  34. package/daemon/context-packs/skills/core/openrig-upgrade/scripts/backup-sqlite.mjs +62 -0
  35. package/daemon/context-packs/skills/core/openrig-upgrade/scripts/inspect-upgrade.mjs +40 -0
  36. package/daemon/context-packs/skills/core/openrig-upgrade/scripts/refresh-managed-plugin.mjs +151 -0
  37. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/delegating-work/SKILL.md +43 -0
  44. package/daemon/context-packs/skills/delegating-work/manifest.yaml +10 -0
  45. package/daemon/context-packs/skills/forming-an-openrig-mental-model/SKILL.md +318 -0
  46. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +10 -0
  47. package/daemon/context-packs/skills/loading-addressable-markdown/SKILL.md +34 -0
  48. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +12 -0
  49. package/daemon/context-packs/skills/loading-addressable-markdown/scripts/resolve-markdown.mjs +170 -0
  50. package/daemon/context-packs/skills/mission-slice-sop/SKILL.md +94 -0
  51. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +10 -0
  52. package/daemon/context-packs/skills/openrig-operating-model/SKILL.md +397 -0
  53. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +30 -0
  54. package/daemon/context-packs/skills/openrig-operating-model/scripts/compose.py +572 -0
  55. package/daemon/context-packs/skills/openrig-operating-model/scripts/scaffold.sh +34 -0
  56. package/daemon/context-packs/skills/openrig-operating-model/scripts/trace-due.sh +32 -0
  57. package/daemon/context-packs/skills/openrig-operating-model/scripts/trace-stamp.sh +5 -0
  58. package/daemon/context-packs/skills/openrig-operating-model/scripts/trunk-diff.sh +18 -0
  59. package/daemon/context-packs/skills/openrig-operating-model/templates/LEARNED.md +40 -0
  60. package/daemon/context-packs/skills/openrig-operating-model/templates/NOTES.md +9 -0
  61. package/daemon/context-packs/skills/openrig-operating-model/templates/PLAYBOOK.md +5 -0
  62. package/daemon/context-packs/skills/openrig-operating-model/templates/SOP.md +24 -0
  63. package/daemon/context-packs/skills/openrig-operating-model/templates/SPEC.md +54 -0
  64. package/daemon/context-packs/skills/openrig-user/SKILL.md +1374 -0
  65. package/daemon/context-packs/skills/openrig-user/manifest.yaml +10 -0
  66. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/CHANGELOG.md +64 -0
  67. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/SKILL.md +250 -0
  68. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +12 -0
  69. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  70. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  71. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  72. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  73. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  74. package/daemon/context-packs/skills/pm/requirements-writer/SKILL.md +21 -15
  75. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +3 -3
  76. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  77. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  78. package/daemon/context-packs/skills/pods/orchestration-team/SKILL.md +1 -1
  79. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  80. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  81. package/daemon/context-packs/skills/pods/review-team/SKILL.md +1 -1
  82. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  83. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  84. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  85. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  86. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  87. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  88. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  89. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  90. package/daemon/context-packs/skills/queue-handoff/SKILL.md +192 -0
  91. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +10 -0
  92. package/daemon/context-packs/skills/refocusing/SKILL.md +31 -0
  93. package/daemon/context-packs/skills/refocusing/manifest.yaml +14 -0
  94. package/daemon/context-packs/skills/refocusing/references/refocus.md +22 -0
  95. package/daemon/context-packs/skills/refocusing/scripts/trace-to-root.py +264 -0
  96. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/CHANGELOG.md +48 -0
  97. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/SKILL.md +231 -0
  98. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +12 -0
  99. package/daemon/context-packs/skills/seat-continuity-and-handover/SKILL.md +151 -0
  100. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +16 -0
  101. package/daemon/context-packs/skills/seat-continuity-and-handover/references/apprentice-evidence-toolkit.md +32 -0
  102. package/daemon/context-packs/skills/seat-continuity-and-handover/references/apprentice-successor-seat-cutover.md +256 -0
  103. package/daemon/context-packs/skills/seat-continuity-and-handover/references/orchestrator-role.md +40 -0
  104. package/daemon/context-packs/skills/session-compaction-and-restore/SKILL.md +163 -0
  105. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +10 -0
  106. package/daemon/context-packs/skills/software-for-agents/SKILL.md +187 -0
  107. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +10 -0
  108. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  109. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  110. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  111. package/daemon/dist/adapters/codex-runtime-adapter.js +249 -2
  112. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  113. package/daemon/dist/adapters/tmux.d.ts +6 -5
  114. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  115. package/daemon/dist/adapters/tmux.js +29 -12
  116. package/daemon/dist/adapters/tmux.js.map +1 -1
  117. package/daemon/dist/build-info.js +3 -3
  118. package/daemon/dist/builtins/workflow-specs/basic-loop.yaml +3 -3
  119. package/daemon/dist/builtins/workflow-specs/conveyor.yaml +1 -1
  120. package/daemon/dist/builtins/workflow-specs/factory-rsi.yaml +1 -1
  121. package/daemon/dist/db/all-migrations.d.ts +1 -1
  122. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  123. package/daemon/dist/db/all-migrations.js +6 -2
  124. package/daemon/dist/db/all-migrations.js.map +1 -1
  125. package/daemon/dist/db/migrations/077_node_session_source.d.ts +4 -0
  126. package/daemon/dist/db/migrations/077_node_session_source.d.ts.map +1 -0
  127. package/daemon/dist/db/migrations/077_node_session_source.js +6 -0
  128. package/daemon/dist/db/migrations/077_node_session_source.js.map +1 -0
  129. package/daemon/dist/db/migrations/078_idle_gate_fired_condition.d.ts +17 -0
  130. package/daemon/dist/db/migrations/078_idle_gate_fired_condition.d.ts.map +1 -0
  131. package/daemon/dist/db/migrations/078_idle_gate_fired_condition.js +21 -0
  132. package/daemon/dist/db/migrations/078_idle_gate_fired_condition.js.map +1 -0
  133. package/daemon/dist/domain/active-occupant.d.ts +6 -0
  134. package/daemon/dist/domain/active-occupant.d.ts.map +1 -1
  135. package/daemon/dist/domain/active-occupant.js +14 -0
  136. package/daemon/dist/domain/active-occupant.js.map +1 -1
  137. package/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -1
  138. package/daemon/dist/domain/context-packs/manifest-parser.js +5 -6
  139. package/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -1
  140. package/daemon/dist/domain/context-packs/profile-composer.d.ts +1 -1
  141. package/daemon/dist/domain/context-packs/profile-composer.d.ts.map +1 -1
  142. package/daemon/dist/domain/context-packs/profile-composer.js +2 -2
  143. package/daemon/dist/domain/context-packs/profile-composer.js.map +1 -1
  144. package/daemon/dist/domain/context-packs/profile-source-resolver.d.ts +3 -1
  145. package/daemon/dist/domain/context-packs/profile-source-resolver.d.ts.map +1 -1
  146. package/daemon/dist/domain/context-packs/profile-source-resolver.js +3 -2
  147. package/daemon/dist/domain/context-packs/profile-source-resolver.js.map +1 -1
  148. package/daemon/dist/domain/current-work.d.ts +73 -0
  149. package/daemon/dist/domain/current-work.d.ts.map +1 -0
  150. package/daemon/dist/domain/current-work.js +225 -0
  151. package/daemon/dist/domain/current-work.js.map +1 -0
  152. package/daemon/dist/domain/execution-view.d.ts.map +1 -1
  153. package/daemon/dist/domain/execution-view.js +215 -13
  154. package/daemon/dist/domain/execution-view.js.map +1 -1
  155. package/daemon/dist/domain/gateway/human-registry.d.ts +3 -2
  156. package/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  157. package/daemon/dist/domain/gateway/human-registry.js +113 -18
  158. package/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  159. package/daemon/dist/domain/model-divergence/effective-model-readers.d.ts +3 -2
  160. package/daemon/dist/domain/model-divergence/effective-model-readers.d.ts.map +1 -1
  161. package/daemon/dist/domain/model-divergence/effective-model-readers.js +7 -5
  162. package/daemon/dist/domain/model-divergence/effective-model-readers.js.map +1 -1
  163. package/daemon/dist/domain/policies/idle-gate-qitem.d.ts +5 -5
  164. package/daemon/dist/domain/policies/idle-gate-qitem.d.ts.map +1 -1
  165. package/daemon/dist/domain/policies/idle-gate-qitem.js +130 -22
  166. package/daemon/dist/domain/policies/idle-gate-qitem.js.map +1 -1
  167. package/daemon/dist/domain/policies/types.d.ts +12 -0
  168. package/daemon/dist/domain/policies/types.d.ts.map +1 -1
  169. package/daemon/dist/domain/queue-repository.d.ts +37 -2
  170. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  171. package/daemon/dist/domain/queue-repository.js +171 -16
  172. package/daemon/dist/domain/queue-repository.js.map +1 -1
  173. package/daemon/dist/domain/queue-wake-repository.d.ts +19 -0
  174. package/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -1
  175. package/daemon/dist/domain/queue-wake-repository.js +33 -0
  176. package/daemon/dist/domain/queue-wake-repository.js.map +1 -1
  177. package/daemon/dist/domain/reconciler.d.ts.map +1 -1
  178. package/daemon/dist/domain/reconciler.js +4 -1
  179. package/daemon/dist/domain/reconciler.js.map +1 -1
  180. package/daemon/dist/domain/rehydrate-eligibility.d.ts +11 -1
  181. package/daemon/dist/domain/rehydrate-eligibility.d.ts.map +1 -1
  182. package/daemon/dist/domain/rehydrate-eligibility.js +34 -0
  183. package/daemon/dist/domain/rehydrate-eligibility.js.map +1 -1
  184. package/daemon/dist/domain/restore-orchestrator.d.ts +9 -0
  185. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  186. package/daemon/dist/domain/restore-orchestrator.js +32 -0
  187. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  188. package/daemon/dist/domain/restore-plan-preview.js +2 -2
  189. package/daemon/dist/domain/restore-plan-preview.js.map +1 -1
  190. package/daemon/dist/domain/rig-lifecycle-service.d.ts +24 -4
  191. package/daemon/dist/domain/rig-lifecycle-service.d.ts.map +1 -1
  192. package/daemon/dist/domain/rig-lifecycle-service.js +116 -6
  193. package/daemon/dist/domain/rig-lifecycle-service.js.map +1 -1
  194. package/daemon/dist/domain/rig-repository.d.ts +2 -1
  195. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  196. package/daemon/dist/domain/rig-repository.js +7 -0
  197. package/daemon/dist/domain/rig-repository.js.map +1 -1
  198. package/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -1
  199. package/daemon/dist/domain/rigspec-exporter.js +4 -0
  200. package/daemon/dist/domain/rigspec-exporter.js.map +1 -1
  201. package/daemon/dist/domain/rigspec-instantiator.d.ts +15 -9
  202. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  203. package/daemon/dist/domain/rigspec-instantiator.js +68 -83
  204. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  205. package/daemon/dist/domain/rigspec-schema.d.ts +5 -1
  206. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  207. package/daemon/dist/domain/rigspec-schema.js +41 -2
  208. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  209. package/daemon/dist/domain/seat-attention-reconciler.d.ts +32 -1
  210. package/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
  211. package/daemon/dist/domain/seat-attention-reconciler.js +183 -4
  212. package/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
  213. package/daemon/dist/domain/session-transport.d.ts +5 -0
  214. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  215. package/daemon/dist/domain/session-transport.js +33 -7
  216. package/daemon/dist/domain/session-transport.js.map +1 -1
  217. package/daemon/dist/domain/snapshot-capture.d.ts.map +1 -1
  218. package/daemon/dist/domain/snapshot-capture.js +4 -2
  219. package/daemon/dist/domain/snapshot-capture.js.map +1 -1
  220. package/daemon/dist/domain/topology-defaults-installer.d.ts +4 -2
  221. package/daemon/dist/domain/topology-defaults-installer.d.ts.map +1 -1
  222. package/daemon/dist/domain/topology-defaults-installer.js +27 -0
  223. package/daemon/dist/domain/topology-defaults-installer.js.map +1 -1
  224. package/daemon/dist/domain/types.d.ts +3 -1
  225. package/daemon/dist/domain/types.d.ts.map +1 -1
  226. package/daemon/dist/domain/types.js.map +1 -1
  227. package/daemon/dist/domain/up-command-router.d.ts.map +1 -1
  228. package/daemon/dist/domain/up-command-router.js +19 -0
  229. package/daemon/dist/domain/up-command-router.js.map +1 -1
  230. package/daemon/dist/domain/watchdog-jobs-repository.d.ts +9 -0
  231. package/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
  232. package/daemon/dist/domain/watchdog-jobs-repository.js +15 -2
  233. package/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
  234. package/daemon/dist/domain/watchdog-policy-engine.d.ts +7 -0
  235. package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  236. package/daemon/dist/domain/watchdog-policy-engine.js +47 -0
  237. package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  238. package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -1
  239. package/daemon/dist/domain/workspace/default-workspace-scaffold.js +37 -2
  240. package/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
  241. package/daemon/dist/routes/context-packs.d.ts.map +1 -1
  242. package/daemon/dist/routes/context-packs.js +146 -6
  243. package/daemon/dist/routes/context-packs.js.map +1 -1
  244. package/daemon/dist/routes/queue.d.ts.map +1 -1
  245. package/daemon/dist/routes/queue.js +31 -10
  246. package/daemon/dist/routes/queue.js.map +1 -1
  247. package/daemon/dist/routes/rigs.js +17 -6
  248. package/daemon/dist/routes/rigs.js.map +1 -1
  249. package/daemon/dist/routes/rigspec.d.ts.map +1 -1
  250. package/daemon/dist/routes/rigspec.js +37 -0
  251. package/daemon/dist/routes/rigspec.js.map +1 -1
  252. package/daemon/dist/routes/sessions.js +7 -3
  253. package/daemon/dist/routes/sessions.js.map +1 -1
  254. package/daemon/dist/routes/up.js +10 -3
  255. package/daemon/dist/routes/up.js.map +1 -1
  256. package/daemon/dist/startup.d.ts.map +1 -1
  257. package/daemon/dist/startup.js +19 -7
  258. package/daemon/dist/startup.js.map +1 -1
  259. package/daemon/docs/reference/agent-spec.md +34 -1
  260. package/daemon/docs/reference/chain-file-convention.md +17 -12
  261. package/daemon/docs/reference/mission-install.md +23 -2
  262. package/daemon/docs/reference/product-journey-sdlc.md +305 -0
  263. package/daemon/docs/reference/release-boundary.md +29 -5
  264. package/daemon/docs/reference/sdlc-conventions.md +15 -2
  265. package/daemon/specs/agents/apps/vault-specialist/agent.yaml +1 -1
  266. package/daemon/specs/agents/apps/vault-specialist/guidance/role.md +0 -1
  267. package/daemon/specs/agents/conveyor/builder/agent.yaml +1 -1
  268. package/daemon/specs/agents/conveyor/builder/guidance/role.md +0 -1
  269. package/daemon/specs/agents/conveyor/lead/agent.yaml +1 -1
  270. package/daemon/specs/agents/conveyor/lead/guidance/role.md +0 -3
  271. package/daemon/specs/agents/conveyor/planner/agent.yaml +1 -1
  272. package/daemon/specs/agents/conveyor/planner/guidance/role.md +0 -1
  273. package/daemon/specs/agents/design/product-designer/agent.yaml +3 -4
  274. package/daemon/specs/agents/design/product-designer/guidance/role.md +0 -3
  275. package/daemon/specs/agents/development/implementer/agent.yaml +3 -4
  276. package/daemon/specs/agents/development/implementer/guidance/role.md +0 -3
  277. package/daemon/specs/agents/development/qa/agent.yaml +4 -4
  278. package/daemon/specs/agents/development/qa/guidance/role.md +1 -4
  279. package/daemon/specs/agents/factory-rsi/dogfood/agent.yaml +1 -1
  280. package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +1 -1
  281. package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +3 -4
  282. package/daemon/specs/agents/orchestration/orchestrator/guidance/role.md +0 -4
  283. package/daemon/specs/agents/review/independent-reviewer/agent.yaml +3 -4
  284. package/daemon/specs/agents/review/independent-reviewer/guidance/role.md +0 -3
  285. package/daemon/specs/agents/shared/agent.yaml +2 -10
  286. package/daemon/specs/agents/shared/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -1
  287. package/daemon/specs/agents/shared/skills/core/openrig-skills/SKILL.md +1 -4
  288. package/daemon/specs/agents/shared/skills/core/openrig-upgrade/SKILL.md +120 -355
  289. package/daemon/specs/agents/shared/skills/core/openrig-upgrade/scripts/backup-sqlite.mjs +62 -0
  290. package/daemon/specs/agents/shared/skills/core/openrig-upgrade/scripts/inspect-upgrade.mjs +40 -0
  291. package/daemon/specs/agents/shared/skills/core/openrig-upgrade/scripts/refresh-managed-plugin.mjs +151 -0
  292. package/daemon/specs/agents/shared/skills/pm/requirements-writer/SKILL.md +21 -15
  293. package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +1 -1
  294. package/daemon/specs/agents/shared/skills/pods/review-team/SKILL.md +1 -1
  295. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/agent.yaml +1 -1
  296. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/guidance/role.md +2 -3
  297. package/daemon/specs/rigs/preview/product-team/topology/instance/CRAFT.md +4 -4
  298. package/daemon/specs/rigs/preview/product-team/topology/rig/ORCHESTRATION-CRAFT.md +3 -3
  299. package/dist/build-info.js +3 -3
  300. package/dist/commands/config-init-workspace.d.ts.map +1 -1
  301. package/dist/commands/config-init-workspace.js +38 -3
  302. package/dist/commands/config-init-workspace.js.map +1 -1
  303. package/dist/commands/context.d.ts.map +1 -1
  304. package/dist/commands/context.js +90 -7
  305. package/dist/commands/context.js.map +1 -1
  306. package/dist/commands/create.d.ts +4 -0
  307. package/dist/commands/create.d.ts.map +1 -0
  308. package/dist/commands/create.js +84 -0
  309. package/dist/commands/create.js.map +1 -0
  310. package/dist/commands/grow.d.ts +4 -0
  311. package/dist/commands/grow.d.ts.map +1 -0
  312. package/dist/commands/grow.js +182 -0
  313. package/dist/commands/grow.js.map +1 -0
  314. package/dist/commands/import.d.ts.map +1 -1
  315. package/dist/commands/import.js +27 -1
  316. package/dist/commands/import.js.map +1 -1
  317. package/dist/commands/remove.d.ts.map +1 -1
  318. package/dist/commands/remove.js +9 -1
  319. package/dist/commands/remove.js.map +1 -1
  320. package/dist/commands/rig.d.ts.map +1 -1
  321. package/dist/commands/rig.js +48 -1
  322. package/dist/commands/rig.js.map +1 -1
  323. package/dist/commands/scope.d.ts.map +1 -1
  324. package/dist/commands/scope.js +21 -2
  325. package/dist/commands/scope.js.map +1 -1
  326. package/dist/commands/shrink.d.ts.map +1 -1
  327. package/dist/commands/shrink.js +6 -1
  328. package/dist/commands/shrink.js.map +1 -1
  329. package/dist/commands/topology-default-agent.d.ts +4 -0
  330. package/dist/commands/topology-default-agent.d.ts.map +1 -0
  331. package/dist/commands/topology-default-agent.js +13 -0
  332. package/dist/commands/topology-default-agent.js.map +1 -0
  333. package/dist/commands/walk.d.ts.map +1 -1
  334. package/dist/commands/walk.js +3 -0
  335. package/dist/commands/walk.js.map +1 -1
  336. package/dist/commands/watchdog.d.ts.map +1 -1
  337. package/dist/commands/watchdog.js +51 -3
  338. package/dist/commands/watchdog.js.map +1 -1
  339. package/dist/front-door.d.ts.map +1 -1
  340. package/dist/front-door.js +16 -4
  341. package/dist/front-door.js.map +1 -1
  342. package/dist/index.d.ts +2 -0
  343. package/dist/index.d.ts.map +1 -1
  344. package/dist/index.js +4 -0
  345. package/dist/index.js.map +1 -1
  346. package/dist/lib/topology-trace.d.ts +3 -2
  347. package/dist/lib/topology-trace.d.ts.map +1 -1
  348. package/dist/lib/topology-trace.js +12 -2
  349. package/dist/lib/topology-trace.js.map +1 -1
  350. package/dist/lib/work-install.d.ts +39 -0
  351. package/dist/lib/work-install.d.ts.map +1 -0
  352. package/dist/lib/work-install.js +312 -0
  353. package/dist/lib/work-install.js.map +1 -0
  354. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  355. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.js +249 -2
  356. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  357. package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts +6 -5
  358. package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts.map +1 -1
  359. package/node_modules/@openrig/daemon/dist/adapters/tmux.js +29 -12
  360. package/node_modules/@openrig/daemon/dist/adapters/tmux.js.map +1 -1
  361. package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
  362. package/node_modules/@openrig/daemon/dist/builtins/workflow-specs/basic-loop.yaml +3 -3
  363. package/node_modules/@openrig/daemon/dist/builtins/workflow-specs/conveyor.yaml +1 -1
  364. package/node_modules/@openrig/daemon/dist/builtins/workflow-specs/factory-rsi.yaml +1 -1
  365. package/node_modules/@openrig/daemon/dist/db/all-migrations.d.ts +1 -1
  366. package/node_modules/@openrig/daemon/dist/db/all-migrations.d.ts.map +1 -1
  367. package/node_modules/@openrig/daemon/dist/db/all-migrations.js +6 -2
  368. package/node_modules/@openrig/daemon/dist/db/all-migrations.js.map +1 -1
  369. package/node_modules/@openrig/daemon/dist/db/migrations/077_node_session_source.d.ts +4 -0
  370. package/node_modules/@openrig/daemon/dist/db/migrations/077_node_session_source.d.ts.map +1 -0
  371. package/node_modules/@openrig/daemon/dist/db/migrations/077_node_session_source.js +6 -0
  372. package/node_modules/@openrig/daemon/dist/db/migrations/077_node_session_source.js.map +1 -0
  373. package/node_modules/@openrig/daemon/dist/db/migrations/078_idle_gate_fired_condition.d.ts +17 -0
  374. package/node_modules/@openrig/daemon/dist/db/migrations/078_idle_gate_fired_condition.d.ts.map +1 -0
  375. package/node_modules/@openrig/daemon/dist/db/migrations/078_idle_gate_fired_condition.js +21 -0
  376. package/node_modules/@openrig/daemon/dist/db/migrations/078_idle_gate_fired_condition.js.map +1 -0
  377. package/node_modules/@openrig/daemon/dist/domain/active-occupant.d.ts +6 -0
  378. package/node_modules/@openrig/daemon/dist/domain/active-occupant.d.ts.map +1 -1
  379. package/node_modules/@openrig/daemon/dist/domain/active-occupant.js +14 -0
  380. package/node_modules/@openrig/daemon/dist/domain/active-occupant.js.map +1 -1
  381. package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -1
  382. package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.js +5 -6
  383. package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -1
  384. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.d.ts +1 -1
  385. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.d.ts.map +1 -1
  386. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.js +2 -2
  387. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.js.map +1 -1
  388. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.d.ts +3 -1
  389. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.d.ts.map +1 -1
  390. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.js +3 -2
  391. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.js.map +1 -1
  392. package/node_modules/@openrig/daemon/dist/domain/current-work.d.ts +73 -0
  393. package/node_modules/@openrig/daemon/dist/domain/current-work.d.ts.map +1 -0
  394. package/node_modules/@openrig/daemon/dist/domain/current-work.js +225 -0
  395. package/node_modules/@openrig/daemon/dist/domain/current-work.js.map +1 -0
  396. package/node_modules/@openrig/daemon/dist/domain/execution-view.d.ts.map +1 -1
  397. package/node_modules/@openrig/daemon/dist/domain/execution-view.js +215 -13
  398. package/node_modules/@openrig/daemon/dist/domain/execution-view.js.map +1 -1
  399. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts +3 -2
  400. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  401. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js +113 -18
  402. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  403. package/node_modules/@openrig/daemon/dist/domain/model-divergence/effective-model-readers.d.ts +3 -2
  404. package/node_modules/@openrig/daemon/dist/domain/model-divergence/effective-model-readers.d.ts.map +1 -1
  405. package/node_modules/@openrig/daemon/dist/domain/model-divergence/effective-model-readers.js +7 -5
  406. package/node_modules/@openrig/daemon/dist/domain/model-divergence/effective-model-readers.js.map +1 -1
  407. package/node_modules/@openrig/daemon/dist/domain/policies/idle-gate-qitem.d.ts +5 -5
  408. package/node_modules/@openrig/daemon/dist/domain/policies/idle-gate-qitem.d.ts.map +1 -1
  409. package/node_modules/@openrig/daemon/dist/domain/policies/idle-gate-qitem.js +130 -22
  410. package/node_modules/@openrig/daemon/dist/domain/policies/idle-gate-qitem.js.map +1 -1
  411. package/node_modules/@openrig/daemon/dist/domain/policies/types.d.ts +12 -0
  412. package/node_modules/@openrig/daemon/dist/domain/policies/types.d.ts.map +1 -1
  413. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts +37 -2
  414. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  415. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js +171 -16
  416. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js.map +1 -1
  417. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts +19 -0
  418. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -1
  419. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js +33 -0
  420. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js.map +1 -1
  421. package/node_modules/@openrig/daemon/dist/domain/reconciler.d.ts.map +1 -1
  422. package/node_modules/@openrig/daemon/dist/domain/reconciler.js +4 -1
  423. package/node_modules/@openrig/daemon/dist/domain/reconciler.js.map +1 -1
  424. package/node_modules/@openrig/daemon/dist/domain/rehydrate-eligibility.d.ts +11 -1
  425. package/node_modules/@openrig/daemon/dist/domain/rehydrate-eligibility.d.ts.map +1 -1
  426. package/node_modules/@openrig/daemon/dist/domain/rehydrate-eligibility.js +34 -0
  427. package/node_modules/@openrig/daemon/dist/domain/rehydrate-eligibility.js.map +1 -1
  428. package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.d.ts +9 -0
  429. package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  430. package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.js +32 -0
  431. package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  432. package/node_modules/@openrig/daemon/dist/domain/restore-plan-preview.js +2 -2
  433. package/node_modules/@openrig/daemon/dist/domain/restore-plan-preview.js.map +1 -1
  434. package/node_modules/@openrig/daemon/dist/domain/rig-lifecycle-service.d.ts +24 -4
  435. package/node_modules/@openrig/daemon/dist/domain/rig-lifecycle-service.d.ts.map +1 -1
  436. package/node_modules/@openrig/daemon/dist/domain/rig-lifecycle-service.js +116 -6
  437. package/node_modules/@openrig/daemon/dist/domain/rig-lifecycle-service.js.map +1 -1
  438. package/node_modules/@openrig/daemon/dist/domain/rig-repository.d.ts +2 -1
  439. package/node_modules/@openrig/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  440. package/node_modules/@openrig/daemon/dist/domain/rig-repository.js +7 -0
  441. package/node_modules/@openrig/daemon/dist/domain/rig-repository.js.map +1 -1
  442. package/node_modules/@openrig/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -1
  443. package/node_modules/@openrig/daemon/dist/domain/rigspec-exporter.js +4 -0
  444. package/node_modules/@openrig/daemon/dist/domain/rigspec-exporter.js.map +1 -1
  445. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts +15 -9
  446. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  447. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js +68 -83
  448. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  449. package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.d.ts +5 -1
  450. package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  451. package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.js +41 -2
  452. package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.js.map +1 -1
  453. package/node_modules/@openrig/daemon/dist/domain/seat-attention-reconciler.d.ts +32 -1
  454. package/node_modules/@openrig/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
  455. package/node_modules/@openrig/daemon/dist/domain/seat-attention-reconciler.js +183 -4
  456. package/node_modules/@openrig/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
  457. package/node_modules/@openrig/daemon/dist/domain/session-transport.d.ts +5 -0
  458. package/node_modules/@openrig/daemon/dist/domain/session-transport.d.ts.map +1 -1
  459. package/node_modules/@openrig/daemon/dist/domain/session-transport.js +33 -7
  460. package/node_modules/@openrig/daemon/dist/domain/session-transport.js.map +1 -1
  461. package/node_modules/@openrig/daemon/dist/domain/snapshot-capture.d.ts.map +1 -1
  462. package/node_modules/@openrig/daemon/dist/domain/snapshot-capture.js +4 -2
  463. package/node_modules/@openrig/daemon/dist/domain/snapshot-capture.js.map +1 -1
  464. package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.d.ts +4 -2
  465. package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.d.ts.map +1 -1
  466. package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.js +27 -0
  467. package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.js.map +1 -1
  468. package/node_modules/@openrig/daemon/dist/domain/types.d.ts +3 -1
  469. package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
  470. package/node_modules/@openrig/daemon/dist/domain/types.js.map +1 -1
  471. package/node_modules/@openrig/daemon/dist/domain/up-command-router.d.ts.map +1 -1
  472. package/node_modules/@openrig/daemon/dist/domain/up-command-router.js +19 -0
  473. package/node_modules/@openrig/daemon/dist/domain/up-command-router.js.map +1 -1
  474. package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.d.ts +9 -0
  475. package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
  476. package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.js +15 -2
  477. package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
  478. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.d.ts +7 -0
  479. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  480. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.js +47 -0
  481. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  482. package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -1
  483. package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.js +37 -2
  484. package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
  485. package/node_modules/@openrig/daemon/dist/routes/context-packs.d.ts.map +1 -1
  486. package/node_modules/@openrig/daemon/dist/routes/context-packs.js +146 -6
  487. package/node_modules/@openrig/daemon/dist/routes/context-packs.js.map +1 -1
  488. package/node_modules/@openrig/daemon/dist/routes/queue.d.ts.map +1 -1
  489. package/node_modules/@openrig/daemon/dist/routes/queue.js +31 -10
  490. package/node_modules/@openrig/daemon/dist/routes/queue.js.map +1 -1
  491. package/node_modules/@openrig/daemon/dist/routes/rigs.js +17 -6
  492. package/node_modules/@openrig/daemon/dist/routes/rigs.js.map +1 -1
  493. package/node_modules/@openrig/daemon/dist/routes/rigspec.d.ts.map +1 -1
  494. package/node_modules/@openrig/daemon/dist/routes/rigspec.js +37 -0
  495. package/node_modules/@openrig/daemon/dist/routes/rigspec.js.map +1 -1
  496. package/node_modules/@openrig/daemon/dist/routes/sessions.js +7 -3
  497. package/node_modules/@openrig/daemon/dist/routes/sessions.js.map +1 -1
  498. package/node_modules/@openrig/daemon/dist/routes/up.js +10 -3
  499. package/node_modules/@openrig/daemon/dist/routes/up.js.map +1 -1
  500. package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
  501. package/node_modules/@openrig/daemon/dist/startup.js +19 -7
  502. package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
  503. package/node_modules/@openrig/daemon/package.json +1 -1
  504. package/package.json +2 -1
  505. package/tui/dist/daemon-client.d.ts +2 -0
  506. package/tui/dist/daemon-client.d.ts.map +1 -1
  507. package/tui/dist/daemon-client.js +4 -0
  508. package/tui/dist/daemon-client.js.map +1 -1
  509. package/tui/dist/execution/execution-model.d.ts +19 -0
  510. package/tui/dist/execution/execution-model.d.ts.map +1 -0
  511. package/tui/dist/execution/execution-model.js +518 -0
  512. package/tui/dist/execution/execution-model.js.map +1 -0
  513. package/tui/dist/hydrate.d.ts +1 -1
  514. package/tui/dist/hydrate.d.ts.map +1 -1
  515. package/tui/dist/hydrate.js +6 -2
  516. package/tui/dist/hydrate.js.map +1 -1
  517. package/tui/dist/input.d.ts +7 -0
  518. package/tui/dist/input.d.ts.map +1 -1
  519. package/tui/dist/input.js +13 -0
  520. package/tui/dist/input.js.map +1 -1
  521. package/tui/dist/live.d.ts +10 -0
  522. package/tui/dist/live.d.ts.map +1 -1
  523. package/tui/dist/live.js +34 -1
  524. package/tui/dist/live.js.map +1 -1
  525. package/tui/dist/main.js +22 -3
  526. package/tui/dist/main.js.map +1 -1
  527. package/tui/dist/render.d.ts.map +1 -1
  528. package/tui/dist/render.js +13 -2
  529. package/tui/dist/render.js.map +1 -1
  530. package/tui/dist/scopes/scopes-model.d.ts +1 -0
  531. package/tui/dist/scopes/scopes-model.d.ts.map +1 -1
  532. package/tui/dist/scopes/scopes-model.js +4 -2
  533. package/tui/dist/scopes/scopes-model.js.map +1 -1
  534. package/tui/dist/sections.js +2 -2
  535. package/tui/dist/sections.js.map +1 -1
  536. package/tui/dist/state.d.ts.map +1 -1
  537. package/tui/dist/state.js +15 -2
  538. package/tui/dist/state.js.map +1 -1
  539. package/tui/dist/stylize.js +2 -2
  540. package/tui/dist/stylize.js.map +1 -1
  541. package/tui/dist/types.d.ts +20 -0
  542. package/tui/dist/types.d.ts.map +1 -1
  543. package/daemon/context-packs/skills/process/brainstorming/OPENRIG.md +0 -48
  544. package/daemon/context-packs/skills/process/brainstorming/SKILL.md +0 -107
  545. package/daemon/context-packs/skills/process/brainstorming/manifest.yaml +0 -12
  546. package/daemon/context-packs/skills/process/executing-plans/OPENRIG.md +0 -56
  547. package/daemon/context-packs/skills/process/executing-plans/SKILL.md +0 -94
  548. package/daemon/context-packs/skills/process/executing-plans/manifest.yaml +0 -12
  549. package/daemon/context-packs/skills/process/using-superpowers/OPENRIG.md +0 -48
  550. package/daemon/context-packs/skills/process/using-superpowers/SKILL.md +0 -106
  551. package/daemon/context-packs/skills/process/using-superpowers/manifest.yaml +0 -12
  552. package/daemon/context-packs/skills/process/writing-plans/OPENRIG.md +0 -52
  553. package/daemon/context-packs/skills/process/writing-plans/SKILL.md +0 -126
  554. package/daemon/context-packs/skills/process/writing-plans/manifest.yaml +0 -12
  555. package/daemon/specs/agents/shared/skills/process/brainstorming/OPENRIG.md +0 -48
  556. package/daemon/specs/agents/shared/skills/process/brainstorming/SKILL.md +0 -107
  557. package/daemon/specs/agents/shared/skills/process/executing-plans/OPENRIG.md +0 -56
  558. package/daemon/specs/agents/shared/skills/process/executing-plans/SKILL.md +0 -94
  559. package/daemon/specs/agents/shared/skills/process/using-superpowers/OPENRIG.md +0 -48
  560. package/daemon/specs/agents/shared/skills/process/using-superpowers/SKILL.md +0 -106
  561. package/daemon/specs/agents/shared/skills/process/writing-plans/OPENRIG.md +0 -52
  562. package/daemon/specs/agents/shared/skills/process/writing-plans/SKILL.md +0 -126
@@ -4,7 +4,7 @@ Canonical OpenRig skills and hooks for cross-runtime agent topology coordination
4
4
 
5
5
  ## What this plugin ships
6
6
 
7
- **Skills (16):** canonical OpenRig operating knowledge, including the public `refocusing` skill and
7
+ **Skills (17):** canonical OpenRig operating knowledge, including the public `refocusing` skill and
8
8
  its path-only topology/work trace.
9
9
 
10
10
  **Hooks:** activity tracking, compaction continuity, and the default-on refocus channel. Refocus is
@@ -91,6 +91,28 @@ function readConfiguredContent(home) {
91
91
  };
92
92
  }
93
93
 
94
+ // A live seat carries no OPENRIG_REFOCUS_WORK_NODE, so the trace used to report an
95
+ // unresolved work node while the daemon could already name the seat's typed baton. Ask it.
96
+ // The explicit variable always wins and short-circuits the call; any failure here returns
97
+ // null and leaves the pre-existing gap line intact, because refusing to answer is correct
98
+ // and guessing a work node would silently re-point the whole trace.
99
+ function deriveWorkStart() {
100
+ if (process.env.OPENRIG_REFOCUS_WORK_NODE) return process.env.OPENRIG_REFOCUS_WORK_NODE;
101
+ const result = spawnSync("rig", ["queue", "whoami", "--json"], {
102
+ encoding: "utf8",
103
+ env: process.env,
104
+ timeout: 2_000,
105
+ maxBuffer: 16 * 1024 * 1024,
106
+ });
107
+ if (result.error || result.status !== 0 || !result.stdout || !result.stdout.trim()) return null;
108
+ try {
109
+ const workNodePath = JSON.parse(result.stdout)?.currentWork?.workNodePath;
110
+ return typeof workNodePath === "string" && workNodePath ? workNodePath : null;
111
+ } catch {
112
+ return null;
113
+ }
114
+ }
115
+
94
116
  function renderTrace() {
95
117
  const script = path.resolve(__dirname, "../../skills/refocusing/scripts/trace-to-root.py");
96
118
  const args = [
@@ -101,8 +123,9 @@ function renderTrace() {
101
123
  if (process.env.OPENRIG_REFOCUS_TOPOLOGY_NODE) {
102
124
  args.push("--topology-start", process.env.OPENRIG_REFOCUS_TOPOLOGY_NODE);
103
125
  }
104
- if (process.env.OPENRIG_REFOCUS_WORK_NODE) {
105
- args.push("--work-start", process.env.OPENRIG_REFOCUS_WORK_NODE);
126
+ const workStart = deriveWorkStart();
127
+ if (workStart) {
128
+ args.push("--work-start", workStart);
106
129
  }
107
130
  const result = spawnSync(process.env.PYTHON || "python3", args, {
108
131
  encoding: "utf8",
@@ -6,7 +6,12 @@ import { spawnSync } from "node:child_process";
6
6
 
7
7
  const skillRoot = path.resolve(new URL("..", import.meta.url).pathname);
8
8
  const restoreScript = path.join(skillRoot, "scripts", "restore-from-jsonl.mjs");
9
- const outRoot = "/tmp/claude-compaction-restore";
9
+ // P6(C) injectable output-root: the packet base defaults to the shared
10
+ // /tmp/claude-compaction-restore (production), but becomes per-run isolated when the
11
+ // hermetic env-var OPENRIG_COMPACTION_OUT_ROOT is set — so concurrent writers with the
12
+ // same injected clock + sessionId no longer collide on the same `${sessionId}-${stamp}`
13
+ // dir. Mirrors the injectable-clock seam (OPENRIG_TEST_CLOCK_NOW). Empty/absent = /tmp.
14
+ const outRoot = process.env.OPENRIG_COMPACTION_OUT_ROOT || "/tmp/claude-compaction-restore";
10
15
  const defaultRestoreInstruction =
11
16
  "Read the claude-compaction-restore skill and follow its \"If You Just Compacted\" protocol.";
12
17
 
@@ -24,6 +29,14 @@ function getOpenRigHome() {
24
29
  return process.env.OPENRIG_HOME || process.env.RIGGED_HOME || path.join(os.homedir(), ".openrig");
25
30
  }
26
31
 
32
+ // A3-R3 injectable clock (slice 51-01): marker.createdAt defaults to real wall-clock,
33
+ // but becomes deterministic when the shared hermetic env-var OPENRIG_TEST_CLOCK_NOW is
34
+ // set (an ISO instant). Empty/absent = production real-time.
35
+ function nowIso() {
36
+ const injected = process.env.OPENRIG_TEST_CLOCK_NOW;
37
+ return typeof injected === "string" && injected.trim().length > 0 ? injected : new Date().toISOString();
38
+ }
39
+
27
40
  function expandInstructionPath(filePath) {
28
41
  if (filePath.startsWith("~/")) return path.join(os.homedir(), filePath.slice(2));
29
42
  if (filePath.startsWith("${OPENRIG_HOME}/")) {
@@ -41,6 +54,50 @@ function readInstructionFile(filePath) {
41
54
  return fs.readFileSync(expanded, "utf8");
42
55
  }
43
56
 
57
+ // OPR.0.4.1.09 / R5 marker-lifecycle (foreign-content-in-marker face): the hook
58
+ // path must apply the SAME seat-check the daemon enforcer's resolvePostCompactExtra
59
+ // applies (rev1-r2 dcd95bd9), or a FOREIGN seat's global messageFilePath leaks into
60
+ // THIS seat's marker. Parse a WELL-FORMED leading `---` frontmatter for a declared
61
+ // seat (target_seat / seat / session); body text is never scanned; a broken/absent
62
+ // fence is GENERIC (valid for any seat). Byte-mirrors the enforcer regexes.
63
+ function declaredSeatOf(content) {
64
+ const fm = /^\s*---\s*\n([\s\S]*?)\n---/.exec(content);
65
+ if (!fm) return null;
66
+ const m = /^[ \t]*(?:target[_-]?seat|seat|session(?:[_-]?name)?)[ \t]*:[ \t]*["']?([^"'\n#]+?)["']?[ \t]*$/im.exec(fm[1]);
67
+ return m ? m[1].trim() : null;
68
+ }
69
+
70
+ function sanitizeSeat(value) {
71
+ return value.replace(/[^a-zA-Z0-9_.@-]/g, "_");
72
+ }
73
+
74
+ // Resolve the post-compaction extra FOR THIS SEAT (mirror of the enforcer): (1) prefer
75
+ // a per-seat compaction/post-compact-extra/<seat>.md — no cross-seat contamination
76
+ // possible; (2) fall back to the global ONLY when it does not declare a DIFFERENT seat
77
+ // (a wrong-seat global is REFUSED). Generic/undeclared/configured-but-absent stay
78
+ // allowed. Returns the path to read, or null when nothing valid for this seat.
79
+ function resolveSeatSafeExtraPath(globalFilePathRaw) {
80
+ const rawSeat = process.env.OPENRIG_SESSION_NAME || process.env.RIGGED_SESSION_NAME || "";
81
+ const seatKey = rawSeat ? sanitizeSeat(rawSeat) : "";
82
+ if (seatKey) {
83
+ const perSeatPath = path.join(getOpenRigHome(), "compaction", "post-compact-extra", `${seatKey}.md`);
84
+ if (fs.existsSync(perSeatPath)) {
85
+ const declared = declaredSeatOf(fs.readFileSync(perSeatPath, "utf8"));
86
+ if (declared && sanitizeSeat(declared) !== seatKey) return null; // wrong-seat per-seat file
87
+ return perSeatPath;
88
+ }
89
+ }
90
+ const trimmed = (globalFilePathRaw || "").trim();
91
+ if (!trimmed) return null;
92
+ const expanded = expandInstructionPath(trimmed);
93
+ // configured-but-absent: keep the path (an absent file cannot be a wrong-seat leak;
94
+ // readInstructionFile returns "" so nothing is appended).
95
+ if (!fs.existsSync(expanded)) return trimmed;
96
+ const declared = declaredSeatOf(fs.readFileSync(expanded, "utf8"));
97
+ if (declared && sanitizeSeat(declared) !== seatKey) return null; // foreign-seat global REFUSED
98
+ return trimmed;
99
+ }
100
+
44
101
  function sessionKey(input) {
45
102
  const raw = [
46
103
  process.env.OPENRIG_SESSION_NAME,
@@ -58,12 +115,28 @@ function pendingMarkerPath(input) {
58
115
  return path.join(getOpenRigHome(), "compaction", "restore-pending", `${sessionKey(input)}.json`);
59
116
  }
60
117
 
118
+ // R5 absent-when-needed: drop a lightweight EXPECTED sentinel FIRST (before the packet is
119
+ // generated + the marker is written), carrying the SAME identity binding the marker gets.
120
+ // Its presence-without-a-marker is what lets the bridge be LOUD about a missing packet
121
+ // (hook died partway / write failed); policy off = no hook = no sentinel = silent.
122
+ function writeExpectedSentinel(input) {
123
+ const p = path.join(getOpenRigHome(), "compaction", "restore-pending", `${sessionKey(input)}.expected.json`);
124
+ fs.mkdirSync(path.dirname(p), { recursive: true });
125
+ fs.writeFileSync(p, `${JSON.stringify({
126
+ version: 1,
127
+ sessionName: process.env.OPENRIG_SESSION_NAME || process.env.RIGGED_SESSION_NAME || null,
128
+ sessionId: input.session_id || input.sessionId || null,
129
+ transcriptPath: input.transcript_path || null,
130
+ createdAt: nowIso(),
131
+ }, null, 2)}\n`, "utf8");
132
+ }
133
+
61
134
  function writePendingRestoreMarker(input, parsed, restoreInstruction, customMessage) {
62
135
  const markerPath = pendingMarkerPath(input);
63
136
  fs.mkdirSync(path.dirname(markerPath), { recursive: true });
64
137
  const payload = {
65
138
  version: 1,
66
- createdAt: new Date().toISOString(),
139
+ createdAt: nowIso(),
67
140
  sessionName: process.env.OPENRIG_SESSION_NAME || process.env.RIGGED_SESSION_NAME || null,
68
141
  sessionId: input.session_id || input.sessionId || null,
69
142
  transcriptPath: input.transcript_path || null,
@@ -118,13 +191,18 @@ function readClaudeCompactionMessage() {
118
191
  parts.push(`Inline restore instruction:\n${inline}`);
119
192
  }
120
193
  if (filePath && filePath.length > 0) {
121
- try {
122
- const fileText = readInstructionFile(filePath);
123
- if (fileText) {
124
- parts.push(`Additional restore instruction file (${filePath}):\n${fileText}`);
194
+ // R5 seat-check: resolve to the per-seat extra or a seat-safe global; a
195
+ // foreign-seat global resolves to null and is never injected into this marker.
196
+ const resolved = resolveSeatSafeExtraPath(filePath);
197
+ if (resolved) {
198
+ try {
199
+ const fileText = readInstructionFile(resolved);
200
+ if (fileText) {
201
+ parts.push(`Additional restore instruction file (${resolved}):\n${fileText}`);
202
+ }
203
+ } catch {
204
+ // Keep any inline instruction; unreadable extra files degrade quietly.
125
205
  }
126
- } catch {
127
- // Keep any inline instruction; unreadable extra files degrade quietly.
128
206
  }
129
207
  }
130
208
  if (parts.length > 0) return parts.join("\n\n");
@@ -140,7 +218,16 @@ function buildSystemMessage(restoreInstruction, customMessage) {
140
218
  }
141
219
 
142
220
  try {
221
+ // Slice 51-01 RIDER (leak-visibility, review-r1 escalation): OPENRIG_TEST_CLOCK_NOW is
222
+ // read by nowIso() to make createdAt deterministic in tests — but a LEAKED var in a
223
+ // real seat would silently FREEZE production createdAt. Announce loudly on stderr when
224
+ // active so any leak is visible in seat logs; absence stays silent (production path).
225
+ // MUST stay byte-identical to STUB_CLOCK_ANNOUNCEMENT in stub-runner.ts.
226
+ if (typeof process.env.OPENRIG_TEST_CLOCK_NOW === "string" && process.env.OPENRIG_TEST_CLOCK_NOW.trim().length > 0) {
227
+ process.stderr.write("OPENRIG_TEST_CLOCK_NOW active — timestamps are injected\n");
228
+ }
143
229
  const input = readHookInput();
230
+ writeExpectedSentinel(input); // R5: sentinel FIRST, before the packet + marker (catches hook-died-partway)
144
231
  const args = [restoreScript, "--out", outRoot, "--json"];
145
232
  if (input.cwd) args.push("--cwd", input.cwd);
146
233
  if (input.transcript_path && input.transcript_path.endsWith(".jsonl") && fs.existsSync(input.transcript_path)) {
@@ -423,8 +423,16 @@ function restoreInstructions(summary, outputPaths) {
423
423
  return lines.join("\n");
424
424
  }
425
425
 
426
+ // A3-R3 injectable clock (slice 51-01): the packet output-dir timestamped path
427
+ // defaults to real wall-clock, but becomes deterministic when the shared hermetic
428
+ // env-var OPENRIG_TEST_CLOCK_NOW is set (an ISO instant). Empty/absent = production.
429
+ function nowIso() {
430
+ const injected = process.env.OPENRIG_TEST_CLOCK_NOW;
431
+ return typeof injected === "string" && injected.trim().length > 0 ? injected : new Date().toISOString();
432
+ }
433
+
426
434
  function writeOutputs(summary, outRoot) {
427
- const stamp = new Date().toISOString().replace(/[:.]/g, "-");
435
+ const stamp = nowIso().replace(/[:.]/g, "-");
428
436
  const base = path.join(outRoot, `${summary.sessionId ?? "unknown-session"}-${stamp}`);
429
437
  fs.mkdirSync(base, { recursive: true });
430
438
 
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: loading-addressable-markdown
3
+ description: Use when a mission, slice, dashboard, or task references Markdown as path#h2-slug or path#h2-slug/h3-slug outside the OpenRig context-pack library.
4
+ ---
5
+
6
+ # Loading Addressable Markdown
7
+
8
+ ## Overview
9
+
10
+ Load exactly one addressed Markdown section from any filesystem tree. The resolver mirrors OpenRig's shipped H2/H3 grammar without requiring the file to live in the context library.
11
+
12
+ ## Use
13
+
14
+ Run the bundled script. Relative file references resolve from `--root`; without it they resolve from the current directory.
15
+
16
+ ```bash
17
+ node ~/.agents/skills/loading-addressable-markdown/scripts/resolve-markdown.mjs \
18
+ --root /path/to/mission \
19
+ 'slices/09-source-cleanup/SPEC.md#proposal'
20
+ ```
21
+
22
+ The accepted forms are:
23
+
24
+ - `file.md` — whole file
25
+ - `file.md#h2-slug` — full H2 span, including child sections
26
+ - `file.md#h2-slug/h3-slug` — full H3 span
27
+
28
+ Slugs are lowercase; Markdown emphasis/code markers are removed; each other non-alphanumeric run becomes `-`. Duplicate or missing paths fail loudly. Headings inside fenced code blocks are ignored.
29
+
30
+ ## Common mistakes
31
+
32
+ - Do not use `rig context get` for an arbitrary filesystem path; that command resolves context-library refs.
33
+ - Do not hand-slice headings with `sed` or line numbers; the bundled resolver owns span and fence behavior.
34
+ - Quote addresses in shell commands.
@@ -0,0 +1,170 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { readFile } from "node:fs/promises";
4
+ import { realpathSync } from "node:fs";
5
+ import path from "node:path";
6
+ import { fileURLToPath } from "node:url";
7
+
8
+ const MIN_LEVEL = 2;
9
+ const MAX_LEVEL = 3;
10
+
11
+ export class AddressResolutionError extends Error {
12
+ constructor(message) {
13
+ super(message);
14
+ this.name = "AddressResolutionError";
15
+ }
16
+ }
17
+
18
+ export function slugifyHeader(title) {
19
+ return title
20
+ .toLowerCase()
21
+ .replace(/[`*_~]/g, "")
22
+ .replace(/[^a-z0-9]+/g, "-")
23
+ .replace(/^-+|-+$/g, "");
24
+ }
25
+
26
+ export function parseAddress(address) {
27
+ const hashCount = (address.match(/#/g) ?? []).length;
28
+ if (hashCount > 1) {
29
+ throw new AddressResolutionError(`address '${address}' must contain at most one '#' separator`);
30
+ }
31
+
32
+ const [ref, headerPart] = hashCount === 1 ? address.split("#") : [address, undefined];
33
+ if (!ref) throw new AddressResolutionError(`address '${address}' has no file before '#'`);
34
+ if (headerPart === undefined) return { ref, headerPath: [] };
35
+
36
+ const headerPath = headerPart.split("/");
37
+ if (headerPath.some((segment) => segment.length === 0)) {
38
+ throw new AddressResolutionError(`address '${address}' has an empty header segment`);
39
+ }
40
+ if (headerPath.length > MAX_LEVEL - MIN_LEVEL + 1) {
41
+ throw new AddressResolutionError(`address '${address}' is too deep; addresses target H2 and H3 only`);
42
+ }
43
+ return { ref, headerPath };
44
+ }
45
+
46
+ function scanHeaders(lines) {
47
+ const hits = [];
48
+ let fence = null;
49
+
50
+ for (let lineNumber = 0; lineNumber < lines.length; lineNumber++) {
51
+ const line = lines[lineNumber];
52
+ const fenceMatch = line.match(/^\s{0,3}(`{3,}|~{3,})/);
53
+ if (fenceMatch) {
54
+ const marker = fenceMatch[1][0];
55
+ const length = fenceMatch[1].length;
56
+ if (!fence) fence = { marker, length };
57
+ else if (fence.marker === marker && length >= fence.length) fence = null;
58
+ continue;
59
+ }
60
+ if (fence) continue;
61
+
62
+ const heading = line.match(/^(#{1,6})\s+(.*\S)\s*$/);
63
+ if (heading) hits.push({ level: heading[1].length, title: heading[2], line: lineNumber });
64
+ }
65
+ return hits;
66
+ }
67
+
68
+ export function parseMarkdownSections(text) {
69
+ const lines = text.split("\n");
70
+ const headers = scanHeaders(lines);
71
+ const sections = [];
72
+ let currentH2 = null;
73
+
74
+ for (let index = 0; index < headers.length; index++) {
75
+ const heading = headers[index];
76
+ if (heading.level < MIN_LEVEL || heading.level > MAX_LEVEL) {
77
+ if (heading.level < MIN_LEVEL) currentH2 = null;
78
+ continue;
79
+ }
80
+
81
+ const slug = slugifyHeader(heading.title);
82
+ if (heading.level === 2) currentH2 = slug;
83
+ const headerPath = heading.level === 2
84
+ ? [slug]
85
+ : currentH2 !== null
86
+ ? [currentH2, slug]
87
+ : [slug];
88
+ const fullEnd = headers.slice(index + 1).find((next) => next.level <= heading.level)?.line ?? lines.length;
89
+ const ownEnd = headers[index + 1]?.line ?? lines.length;
90
+
91
+ sections.push({
92
+ level: heading.level,
93
+ title: heading.title,
94
+ headerPath,
95
+ headerLine: heading.line,
96
+ text: lines.slice(heading.line, fullEnd).join("\n"),
97
+ ownText: lines.slice(heading.line, ownEnd).join("\n"),
98
+ });
99
+ }
100
+ return sections;
101
+ }
102
+
103
+ export function resolveAddress(text, headerPath) {
104
+ if (headerPath.length === 0) {
105
+ throw new AddressResolutionError("a bare file resolves without section lookup");
106
+ }
107
+
108
+ const sections = parseMarkdownSections(text);
109
+ const wanted = headerPath.join("/");
110
+ const hits = sections.filter((section) => section.headerPath.join("/") === wanted);
111
+ if (hits.length > 1) {
112
+ throw new AddressResolutionError(
113
+ `address '#${wanted}' is AMBIGUOUS: ${hits.length} sections match at lines ${hits.map((hit) => hit.headerLine + 1).join(", ")}`,
114
+ );
115
+ }
116
+ if (hits.length === 1) return hits[0];
117
+
118
+ const parentPath = headerPath.slice(0, -1).join("/");
119
+ const candidates = sections
120
+ .filter((section) => section.headerPath.slice(0, -1).join("/") === parentPath)
121
+ .map((section) => section.headerPath.join("/"));
122
+ throw new AddressResolutionError(
123
+ `address '#${wanted}' matches no header. ` +
124
+ (candidates.length > 0
125
+ ? `Addressable sections under '${parentPath || "(top)"}': ${candidates.join(", ")}.`
126
+ : `Addressable sections: ${sections.map((section) => section.headerPath.join("/")).join(", ") || "(none)"}.`),
127
+ );
128
+ }
129
+
130
+ function usage() {
131
+ return "Usage: resolve-markdown.mjs [--root DIR] FILE[#h2-slug[/h3-slug]]\n";
132
+ }
133
+
134
+ async function main(argv) {
135
+ let root = process.cwd();
136
+ const args = [...argv];
137
+
138
+ if (args[0] === "--help" || args[0] === "-h") {
139
+ process.stdout.write(usage());
140
+ return;
141
+ }
142
+ if (args[0] === "--root") {
143
+ if (!args[1]) throw new AddressResolutionError("--root needs a directory");
144
+ root = path.resolve(args[1]);
145
+ args.splice(0, 2);
146
+ }
147
+ if (args.length !== 1) throw new AddressResolutionError(usage().trim());
148
+
149
+ const { ref, headerPath } = parseAddress(args[0]);
150
+ const filePath = path.isAbsolute(ref) ? ref : path.resolve(root, ref);
151
+ const text = await readFile(filePath, "utf8");
152
+ process.stdout.write(headerPath.length === 0 ? text : resolveAddress(text, headerPath).text);
153
+ }
154
+
155
+ function isMainModule() {
156
+ const entry = process.argv[1];
157
+ if (!entry) return false;
158
+ try {
159
+ return realpathSync(entry) === realpathSync(fileURLToPath(import.meta.url));
160
+ } catch {
161
+ return false;
162
+ }
163
+ }
164
+
165
+ if (isMainModule()) {
166
+ main(process.argv.slice(2)).catch((error) => {
167
+ process.stderr.write(`${error.name ?? "Error"}: ${error.message}\n`);
168
+ process.exitCode = 1;
169
+ });
170
+ }
@@ -54,6 +54,7 @@ These are auto-delivered to every rig; their name+description are already in you
54
54
  - **applying-a-permission-policy** — a rig or seat has a permission policy attached, or you're setting one up: translate it into the live harness configuration.
55
55
  - **claude-compaction-restore** — you just compacted (Claude). Restore from durable evidence before resuming real work.
56
56
  - **delegating-work** — deciding who should do a task: you, a spawned subagent, or a durable peer seat that already holds the context.
57
+ - **loading-addressable-markdown** — a task names Markdown as `path#h2-slug` or `path#h2-slug/h3-slug` outside the context-pack library.
57
58
  - **session-compaction-and-restore** — preparing for, or recovering from, compaction (any runtime). The write- and read-side protocol.
58
59
  - **queue-handoff** — you're passing durable work to another seat or ending your turn. The queue is the work ledger, not chat.
59
60
  - **refocusing** — a long-running seat may have lost the product outcome, crossed a major boundary, or compacted and needs a fresh path-based trace.
@@ -105,10 +106,6 @@ General engineering skills OpenRig ships as vendored copies. Open when the task
105
106
  - **test-driven-development** — implementing a feature or bugfix: write the failing test first.
106
107
  - **verification-before-completion** — about to claim done / passing / fixed: run the check and read the output first.
107
108
  - **systematic-debugging** — debugging: find the root cause before the fix.
108
- - **writing-plans** — writing an implementation plan.
109
- - **executing-plans** — working through a written plan.
110
- - **brainstorming** — divergent ideation before converging.
111
- - **using-superpowers** — discovering and using the vendored "superpowers" skill set.
112
109
  - **agent-browser** — driving a browser (screenshot / screencast) from an agent.
113
110
  - **frontend-design** — designing frontend / UI.
114
111
  - **dogfood** — web-QA / dogfooding a shipped UI.
@@ -107,9 +107,9 @@ tenure:
107
107
  - **tombstone** — one line: what this tenure did, written by the retiring agent itself
108
108
 
109
109
  **Why it works (zero search infrastructure):** any timestamped record — a git commit, a
110
- qitem, a MISSION_NOTES line, a stream item — joins to the seat's ledger by interval match →
111
- generation + session token → wake that tenure. One row per handover, append-only. (Per-seat
112
- MISSION_NOTES continuation entries already *are* this record — the ledger formalizes them.)
110
+ qitem, a NOTES.md line, a stream item — joins to the seat's ledger by interval match →
111
+ generation + session token → wake that tenure. One row per handover, append-only. The
112
+ ledger is the tenure record; work-tree notes remain lived context, not identity state.
113
113
 
114
114
  **Crash-ended tenures** get their row appended **post-hoc** by the crash-cart / restore path,
115
115
  flagged **honest-approximate** (the boot-captured session id is what makes this recoverable).
@@ -1,15 +1,10 @@
1
1
  ---
2
2
  name: software-for-agents
3
3
  description: |
4
- Load this FIRST, before you assume how anything here works — especially before building, modifying, or
5
- "fixing a bug" in an OpenRig or studio-box system, or when something behaves unexpectedly and you're
6
- about to treat it as a code bug. You are almost certainly NOT operating in traditional software. This
7
- is a self-improving MARKDOWN CONTROL PLANE: the substrate is markdown + YAML + JSON + folder structure
8
- (skills, instructions, bootstrap files, schemas, conventions), and most "bugs" are coherence gaps in
9
- that layer, not broken functions. Read this to form the correct mental model so your fixes land at the
10
- precise spot that stops the footgun for every future rig — not just patch a symptom. It also covers why STUDIO APPS skip the mockup phase — for an agent-built app the build is as fast as the mockup, so the PRD is the fleshed intent (velocity as method, not a quality waiver). NOTE: the
11
- bug-tolerance in this model is SCOPED to agent-managed software; the OpenRig core and rigs.to stay
12
- rock-solid — see the scope block up top before you apply anything here.
4
+ Use when building, modifying, or diagnosing an OpenRig or studio-box system; when surprising behavior
5
+ looks like a code bug but may come from Markdown, YAML, JSON, bootstrap files, schemas, skills, or
6
+ conventions; or when deciding whether an agent-built studio app needs a separate mockup phase. NOT for
7
+ treating defects in OpenRig core or rigs.to as tolerable control-plane drift.
13
8
  metadata:
14
9
  openrig:
15
10
  stage: factory-approved
@@ -18,16 +18,16 @@ workflow:
18
18
  skill_refs: [openrig-user, backlog-capture]
19
19
  preferred_targets: [intake-lead@conveyor]
20
20
  planner:
21
- skill_refs: [openrig-user, writing-plans]
21
+ skill_refs: [openrig-user, verification-before-completion]
22
22
  preferred_targets: [plan-planner@conveyor]
23
23
  builder:
24
- skill_refs: [openrig-user, executing-plans]
24
+ skill_refs: [openrig-user]
25
25
  preferred_targets: [build-builder@conveyor]
26
26
  reviewer:
27
27
  skill_refs: [openrig-user, review-team]
28
28
  preferred_targets: [review-reviewer@conveyor]
29
29
  closer:
30
- skill_refs: [openrig-user, verification-before-completion]
30
+ skill_refs: [openrig-user]
31
31
  preferred_targets: [intake-lead@conveyor]
32
32
  steps:
33
33
  - id: intake
@@ -1,6 +1,6 @@
1
1
  # Public capability and source-map width for the default onboarding walk.
2
2
  name: onboarding-width
3
- version: "0.5.6"
3
+ version: "0.5.8"
4
4
  # OPR.0.5.6.10 — affordances knowledge (what this system can do) is world
5
5
  # content under the coining-session definitions.
6
6
  taxonomy: world