@openrig/cli 0.6.5 → 0.6.6

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 (821) hide show
  1. package/README.md +70 -49
  2. package/daemon/assets/onboarding/02-self-and-competent-action.md +39 -2
  3. package/daemon/assets/plugins/openrig-core/.claude-plugin/plugin.json +1 -1
  4. package/daemon/assets/plugins/openrig-core/.codex-plugin/plugin.json +1 -1
  5. package/daemon/assets/plugins/openrig-core/skills/applying-a-permission-policy/SKILL.md +41 -21
  6. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +13 -7
  7. package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +1 -1
  8. package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +3 -4
  9. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +9 -4
  10. package/daemon/context-packs/help/help.md +33 -8
  11. package/daemon/context-packs/help/manifest.yaml +1 -1
  12. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  13. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +6 -5
  14. package/daemon/context-packs/reference/getting-started.md +423 -113
  15. package/daemon/context-packs/reference/manifest.yaml +1 -1
  16. package/daemon/context-packs/reference/rig-spec.md +150 -26
  17. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  18. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  19. package/daemon/context-packs/skills/applying-a-permission-policy/SKILL.md +41 -21
  20. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  21. package/daemon/context-packs/skills/claude-compaction-restore/SKILL.md +13 -7
  22. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  23. package/daemon/context-packs/skills/core/agent-starters/SKILL.md +0 -6
  24. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  25. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -8
  26. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  27. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/core/openrig-architect/SKILL.md +5 -5
  31. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +3 -3
  32. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  34. package/daemon/context-packs/skills/core/openrig-skills/SKILL.md +3 -4
  35. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/core/openrig-software-factory/SKILL.md +12 -9
  37. package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/core/openrig-software-factory/references/worked-example.md +29 -29
  39. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/SKILL.md +0 -1
  41. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/core/session-source-fork/SKILL.md +0 -5
  44. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  45. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  46. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  48. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/forming-an-openrig-mental-model/SKILL.md +1 -1
  50. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/openrig-user/SKILL.md +9 -4
  55. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  57. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  59. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  60. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  61. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  62. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  63. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  64. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  65. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  66. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  67. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  68. package/daemon/context-packs/skills/process/agent-browser/OPENRIG.md +1 -1
  69. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  70. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  71. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  72. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  73. package/daemon/context-packs/skills/process/systematic-debugging/SKILL.md +0 -2
  74. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  75. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  76. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  77. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  78. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  79. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  80. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  81. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  82. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  83. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  84. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  85. package/daemon/dist/adapters/claude-code-adapter.d.ts +1 -1
  86. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  87. package/daemon/dist/adapters/claude-code-adapter.js +25 -13
  88. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  89. package/daemon/dist/adapters/claude-resume.d.ts +1 -1
  90. package/daemon/dist/adapters/claude-resume.d.ts.map +1 -1
  91. package/daemon/dist/adapters/claude-resume.js +7 -4
  92. package/daemon/dist/adapters/claude-resume.js.map +1 -1
  93. package/daemon/dist/adapters/codex-resume.d.ts +3 -1
  94. package/daemon/dist/adapters/codex-resume.d.ts.map +1 -1
  95. package/daemon/dist/adapters/codex-resume.js +10 -4
  96. package/daemon/dist/adapters/codex-resume.js.map +1 -1
  97. package/daemon/dist/adapters/codex-runtime-adapter.d.ts +3 -0
  98. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  99. package/daemon/dist/adapters/codex-runtime-adapter.js +59 -61
  100. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  101. package/daemon/dist/adapters/compose-services-adapter.js +1 -1
  102. package/daemon/dist/adapters/compose-services-adapter.js.map +1 -1
  103. package/daemon/dist/adapters/kernel-authority.d.ts +10 -0
  104. package/daemon/dist/adapters/kernel-authority.d.ts.map +1 -0
  105. package/daemon/dist/adapters/kernel-authority.js +53 -0
  106. package/daemon/dist/adapters/kernel-authority.js.map +1 -0
  107. package/daemon/dist/adapters/non-interruptive.d.ts +14 -0
  108. package/daemon/dist/adapters/non-interruptive.d.ts.map +1 -0
  109. package/daemon/dist/adapters/non-interruptive.js +38 -0
  110. package/daemon/dist/adapters/non-interruptive.js.map +1 -0
  111. package/daemon/dist/adapters/pi-resume.d.ts +3 -1
  112. package/daemon/dist/adapters/pi-resume.d.ts.map +1 -1
  113. package/daemon/dist/adapters/pi-resume.js +8 -1
  114. package/daemon/dist/adapters/pi-resume.js.map +1 -1
  115. package/daemon/dist/adapters/pi-runner-protocol.d.ts +15 -0
  116. package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -1
  117. package/daemon/dist/adapters/pi-runner-protocol.js +27 -0
  118. package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -1
  119. package/daemon/dist/adapters/pi-runner.d.ts +3 -0
  120. package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
  121. package/daemon/dist/adapters/pi-runner.js +79 -13
  122. package/daemon/dist/adapters/pi-runner.js.map +1 -1
  123. package/daemon/dist/adapters/pi-runtime-adapter.d.ts +8 -0
  124. package/daemon/dist/adapters/pi-runtime-adapter.d.ts.map +1 -1
  125. package/daemon/dist/adapters/pi-runtime-adapter.js +37 -9
  126. package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -1
  127. package/daemon/dist/adapters/stub-runner-protocol.d.ts +1 -1
  128. package/daemon/dist/adapters/stub-runner-protocol.d.ts.map +1 -1
  129. package/daemon/dist/adapters/stub-runner.d.ts +1 -1
  130. package/daemon/dist/adapters/stub-runner.d.ts.map +1 -1
  131. package/daemon/dist/adapters/stub-runtime-adapter.d.ts.map +1 -1
  132. package/daemon/dist/adapters/stub-runtime-adapter.js +10 -7
  133. package/daemon/dist/adapters/stub-runtime-adapter.js.map +1 -1
  134. package/daemon/dist/adapters/tmux.d.ts +7 -3
  135. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  136. package/daemon/dist/adapters/tmux.js +11 -6
  137. package/daemon/dist/adapters/tmux.js.map +1 -1
  138. package/daemon/dist/adapters/yolo-mode.d.ts +1 -1
  139. package/daemon/dist/adapters/yolo-mode.d.ts.map +1 -1
  140. package/daemon/dist/adapters/yolo-mode.js +3 -0
  141. package/daemon/dist/adapters/yolo-mode.js.map +1 -1
  142. package/daemon/dist/build-info.js +3 -3
  143. package/daemon/dist/bundle-behaviour-surface.d.ts +2 -0
  144. package/daemon/dist/bundle-behaviour-surface.d.ts.map +1 -0
  145. package/daemon/dist/bundle-behaviour-surface.js +2 -0
  146. package/daemon/dist/bundle-behaviour-surface.js.map +1 -0
  147. package/daemon/dist/bundle-identity-surface.d.ts +2 -0
  148. package/daemon/dist/bundle-identity-surface.d.ts.map +1 -0
  149. package/daemon/dist/bundle-identity-surface.js +4 -0
  150. package/daemon/dist/bundle-identity-surface.js.map +1 -0
  151. package/daemon/dist/daemon-shutdown.d.ts +1 -1
  152. package/daemon/dist/daemon-shutdown.d.ts.map +1 -1
  153. package/daemon/dist/daemon-shutdown.js +5 -1
  154. package/daemon/dist/daemon-shutdown.js.map +1 -1
  155. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  156. package/daemon/dist/db/all-migrations.js +2 -0
  157. package/daemon/dist/db/all-migrations.js.map +1 -1
  158. package/daemon/dist/db/migrations/095_rig_non_interruptive.d.ts +3 -0
  159. package/daemon/dist/db/migrations/095_rig_non_interruptive.d.ts.map +1 -0
  160. package/daemon/dist/db/migrations/095_rig_non_interruptive.js +5 -0
  161. package/daemon/dist/db/migrations/095_rig_non_interruptive.js.map +1 -0
  162. package/daemon/dist/domain/agent-manifest.d.ts.map +1 -1
  163. package/daemon/dist/domain/agent-manifest.js +4 -2
  164. package/daemon/dist/domain/agent-manifest.js.map +1 -1
  165. package/daemon/dist/domain/bootstrap-orchestrator.d.ts +10 -0
  166. package/daemon/dist/domain/bootstrap-orchestrator.d.ts.map +1 -1
  167. package/daemon/dist/domain/bootstrap-orchestrator.js +133 -31
  168. package/daemon/dist/domain/bootstrap-orchestrator.js.map +1 -1
  169. package/daemon/dist/domain/builtin-policy-reference.d.ts +1 -1
  170. package/daemon/dist/domain/builtin-policy-reference.d.ts.map +1 -1
  171. package/daemon/dist/domain/builtin-policy-reference.js +2 -2
  172. package/daemon/dist/domain/builtin-policy-reference.js.map +1 -1
  173. package/daemon/dist/domain/bundle-archive.d.ts +24 -0
  174. package/daemon/dist/domain/bundle-archive.d.ts.map +1 -1
  175. package/daemon/dist/domain/bundle-archive.js +52 -27
  176. package/daemon/dist/domain/bundle-archive.js.map +1 -1
  177. package/daemon/dist/domain/bundle-audit.d.ts +5 -0
  178. package/daemon/dist/domain/bundle-audit.d.ts.map +1 -1
  179. package/daemon/dist/domain/bundle-audit.js.map +1 -1
  180. package/daemon/dist/domain/bundle-behaviour-inspect.d.ts +4 -0
  181. package/daemon/dist/domain/bundle-behaviour-inspect.d.ts.map +1 -0
  182. package/daemon/dist/domain/bundle-behaviour-inspect.js +56 -0
  183. package/daemon/dist/domain/bundle-behaviour-inspect.js.map +1 -0
  184. package/daemon/dist/domain/bundle-behaviour.d.ts +118 -0
  185. package/daemon/dist/domain/bundle-behaviour.d.ts.map +1 -0
  186. package/daemon/dist/domain/bundle-behaviour.js +364 -0
  187. package/daemon/dist/domain/bundle-behaviour.js.map +1 -0
  188. package/daemon/dist/domain/bundle-carried-context-pack.d.ts +16 -0
  189. package/daemon/dist/domain/bundle-carried-context-pack.d.ts.map +1 -0
  190. package/daemon/dist/domain/bundle-carried-context-pack.js +67 -0
  191. package/daemon/dist/domain/bundle-carried-context-pack.js.map +1 -0
  192. package/daemon/dist/domain/bundle-carried-project.d.ts +13 -0
  193. package/daemon/dist/domain/bundle-carried-project.d.ts.map +1 -0
  194. package/daemon/dist/domain/bundle-carried-project.js +71 -0
  195. package/daemon/dist/domain/bundle-carried-project.js.map +1 -0
  196. package/daemon/dist/domain/bundle-conflict-detector.js +3 -3
  197. package/daemon/dist/domain/bundle-conflict-detector.js.map +1 -1
  198. package/daemon/dist/domain/bundle-content-routing.d.ts +49 -0
  199. package/daemon/dist/domain/bundle-content-routing.d.ts.map +1 -0
  200. package/daemon/dist/domain/bundle-content-routing.js +246 -0
  201. package/daemon/dist/domain/bundle-content-routing.js.map +1 -0
  202. package/daemon/dist/domain/bundle-context-packs-router.d.ts +7 -2
  203. package/daemon/dist/domain/bundle-context-packs-router.d.ts.map +1 -1
  204. package/daemon/dist/domain/bundle-context-packs-router.js +19 -0
  205. package/daemon/dist/domain/bundle-context-packs-router.js.map +1 -1
  206. package/daemon/dist/domain/bundle-identity.d.ts +27 -0
  207. package/daemon/dist/domain/bundle-identity.d.ts.map +1 -0
  208. package/daemon/dist/domain/bundle-identity.js +34 -0
  209. package/daemon/dist/domain/bundle-identity.js.map +1 -0
  210. package/daemon/dist/domain/bundle-install-context.d.ts +22 -0
  211. package/daemon/dist/domain/bundle-install-context.d.ts.map +1 -0
  212. package/daemon/dist/domain/bundle-install-context.js +51 -0
  213. package/daemon/dist/domain/bundle-install-context.js.map +1 -0
  214. package/daemon/dist/domain/bundle-integrity.d.ts +1 -0
  215. package/daemon/dist/domain/bundle-integrity.d.ts.map +1 -1
  216. package/daemon/dist/domain/bundle-integrity.js +1 -1
  217. package/daemon/dist/domain/bundle-integrity.js.map +1 -1
  218. package/daemon/dist/domain/bundle-source-resolver.d.ts +4 -1
  219. package/daemon/dist/domain/bundle-source-resolver.d.ts.map +1 -1
  220. package/daemon/dist/domain/bundle-source-resolver.js +73 -19
  221. package/daemon/dist/domain/bundle-source-resolver.js.map +1 -1
  222. package/daemon/dist/domain/bundle-types.d.ts +37 -0
  223. package/daemon/dist/domain/bundle-types.d.ts.map +1 -1
  224. package/daemon/dist/domain/bundle-types.js +78 -0
  225. package/daemon/dist/domain/bundle-types.js.map +1 -1
  226. package/daemon/dist/domain/claude-compaction-enforcer.d.ts +4 -1
  227. package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
  228. package/daemon/dist/domain/claude-compaction-enforcer.js +45 -10
  229. package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
  230. package/daemon/dist/domain/codex-team-workspace.d.ts +8 -0
  231. package/daemon/dist/domain/codex-team-workspace.d.ts.map +1 -0
  232. package/daemon/dist/domain/codex-team-workspace.js +54 -0
  233. package/daemon/dist/domain/codex-team-workspace.js.map +1 -0
  234. package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
  235. package/daemon/dist/domain/context-monitor.js +7 -1
  236. package/daemon/dist/domain/context-monitor.js.map +1 -1
  237. package/daemon/dist/domain/daemon-version.d.ts +3 -1
  238. package/daemon/dist/domain/daemon-version.d.ts.map +1 -1
  239. package/daemon/dist/domain/daemon-version.js +6 -1
  240. package/daemon/dist/domain/daemon-version.js.map +1 -1
  241. package/daemon/dist/domain/event-loop-monitor.d.ts +6 -0
  242. package/daemon/dist/domain/event-loop-monitor.d.ts.map +1 -1
  243. package/daemon/dist/domain/event-loop-monitor.js +13 -0
  244. package/daemon/dist/domain/event-loop-monitor.js.map +1 -1
  245. package/daemon/dist/domain/finite-telemetry.d.ts +74 -0
  246. package/daemon/dist/domain/finite-telemetry.d.ts.map +1 -0
  247. package/daemon/dist/domain/finite-telemetry.js +236 -0
  248. package/daemon/dist/domain/finite-telemetry.js.map +1 -0
  249. package/daemon/dist/domain/gateway/connections-projection.d.ts +1 -1
  250. package/daemon/dist/domain/gateway/gateway-subsystem.d.ts +2 -0
  251. package/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -1
  252. package/daemon/dist/domain/gateway/gateway-subsystem.js +4 -0
  253. package/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -1
  254. package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts +45 -0
  255. package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts.map +1 -0
  256. package/daemon/dist/domain/gateway/slack/channel-recovery.js +176 -0
  257. package/daemon/dist/domain/gateway/slack/channel-recovery.js.map +1 -0
  258. package/daemon/dist/domain/gateway/slack/inbound.d.ts +3 -1
  259. package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  260. package/daemon/dist/domain/gateway/slack/inbound.js +19 -8
  261. package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  262. package/daemon/dist/domain/gateway/slack/slack-api.d.ts +1 -0
  263. package/daemon/dist/domain/gateway/slack/slack-api.d.ts.map +1 -1
  264. package/daemon/dist/domain/gateway/slack/slack-api.js +3 -1
  265. package/daemon/dist/domain/gateway/slack/slack-api.js.map +1 -1
  266. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  267. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +7 -1
  268. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  269. package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +4 -0
  270. package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -1
  271. package/daemon/dist/domain/gateway/slack/socket-inbound.js +11 -1
  272. package/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -1
  273. package/daemon/dist/domain/gateway/slack/state-store.d.ts +24 -0
  274. package/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -1
  275. package/daemon/dist/domain/gateway/slack/state-store.js +84 -1
  276. package/daemon/dist/domain/gateway/slack/state-store.js.map +1 -1
  277. package/daemon/dist/domain/generated-file-hygiene.d.ts +3 -0
  278. package/daemon/dist/domain/generated-file-hygiene.d.ts.map +1 -0
  279. package/daemon/dist/domain/generated-file-hygiene.js +142 -0
  280. package/daemon/dist/domain/generated-file-hygiene.js.map +1 -0
  281. package/daemon/dist/domain/install-planner.d.ts.map +1 -1
  282. package/daemon/dist/domain/install-planner.js +17 -0
  283. package/daemon/dist/domain/install-planner.js.map +1 -1
  284. package/daemon/dist/domain/managed-blocks.d.ts +1 -0
  285. package/daemon/dist/domain/managed-blocks.d.ts.map +1 -1
  286. package/daemon/dist/domain/managed-blocks.js +3 -0
  287. package/daemon/dist/domain/managed-blocks.js.map +1 -1
  288. package/daemon/dist/domain/native-permission-store.d.ts +14 -0
  289. package/daemon/dist/domain/native-permission-store.d.ts.map +1 -1
  290. package/daemon/dist/domain/native-permission-store.js +168 -4
  291. package/daemon/dist/domain/native-permission-store.js.map +1 -1
  292. package/daemon/dist/domain/native-process-executable.d.ts +4 -0
  293. package/daemon/dist/domain/native-process-executable.d.ts.map +1 -0
  294. package/daemon/dist/domain/native-process-executable.js +53 -0
  295. package/daemon/dist/domain/native-process-executable.js.map +1 -0
  296. package/daemon/dist/domain/native-process-lineage.d.ts +2 -0
  297. package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
  298. package/daemon/dist/domain/native-process-lineage.js +34 -7
  299. package/daemon/dist/domain/native-process-lineage.js.map +1 -1
  300. package/daemon/dist/domain/native-resume-probe.d.ts +3 -1
  301. package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
  302. package/daemon/dist/domain/native-resume-probe.js +38 -7
  303. package/daemon/dist/domain/native-resume-probe.js.map +1 -1
  304. package/daemon/dist/domain/permission-policy/policy-ref.d.ts +6 -1
  305. package/daemon/dist/domain/permission-policy/policy-ref.d.ts.map +1 -1
  306. package/daemon/dist/domain/permission-policy/policy-ref.js +16 -4
  307. package/daemon/dist/domain/permission-policy/policy-ref.js.map +1 -1
  308. package/daemon/dist/domain/permission-policy/policy-spec.d.ts +1 -1
  309. package/daemon/dist/domain/permission-policy/policy-spec.d.ts.map +1 -1
  310. package/daemon/dist/domain/permission-policy/policy-spec.js +2 -2
  311. package/daemon/dist/domain/permission-policy/policy-spec.js.map +1 -1
  312. package/daemon/dist/domain/profile-resolver.d.ts +3 -2
  313. package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
  314. package/daemon/dist/domain/profile-resolver.js +71 -9
  315. package/daemon/dist/domain/profile-resolver.js.map +1 -1
  316. package/daemon/dist/domain/projection-planner.d.ts +11 -0
  317. package/daemon/dist/domain/projection-planner.d.ts.map +1 -1
  318. package/daemon/dist/domain/projection-planner.js +1 -1
  319. package/daemon/dist/domain/projection-planner.js.map +1 -1
  320. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  321. package/daemon/dist/domain/queue-repository.js +36 -10
  322. package/daemon/dist/domain/queue-repository.js.map +1 -1
  323. package/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
  324. package/daemon/dist/domain/queue-transition-log.js +12 -10
  325. package/daemon/dist/domain/queue-transition-log.js.map +1 -1
  326. package/daemon/dist/domain/readiness-timeout.d.ts +7 -0
  327. package/daemon/dist/domain/readiness-timeout.d.ts.map +1 -0
  328. package/daemon/dist/domain/readiness-timeout.js +19 -0
  329. package/daemon/dist/domain/readiness-timeout.js.map +1 -0
  330. package/daemon/dist/domain/request-phase-observer.d.ts +69 -0
  331. package/daemon/dist/domain/request-phase-observer.d.ts.map +1 -0
  332. package/daemon/dist/domain/request-phase-observer.js +206 -0
  333. package/daemon/dist/domain/request-phase-observer.js.map +1 -0
  334. package/daemon/dist/domain/restore-orchestrator.d.ts +2 -0
  335. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  336. package/daemon/dist/domain/restore-orchestrator.js +58 -12
  337. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  338. package/daemon/dist/domain/rig-mode/operating-posture.d.ts +17 -1
  339. package/daemon/dist/domain/rig-mode/operating-posture.d.ts.map +1 -1
  340. package/daemon/dist/domain/rig-mode/operating-posture.js +53 -15
  341. package/daemon/dist/domain/rig-mode/operating-posture.js.map +1 -1
  342. package/daemon/dist/domain/rig-repository.d.ts +12 -5
  343. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  344. package/daemon/dist/domain/rig-repository.js +49 -6
  345. package/daemon/dist/domain/rig-repository.js.map +1 -1
  346. package/daemon/dist/domain/rig-teardown.d.ts.map +1 -1
  347. package/daemon/dist/domain/rig-teardown.js +12 -3
  348. package/daemon/dist/domain/rig-teardown.js.map +1 -1
  349. package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
  350. package/daemon/dist/domain/rigspec-codec.js +2 -0
  351. package/daemon/dist/domain/rigspec-codec.js.map +1 -1
  352. package/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -1
  353. package/daemon/dist/domain/rigspec-exporter.js +1 -0
  354. package/daemon/dist/domain/rigspec-exporter.js.map +1 -1
  355. package/daemon/dist/domain/rigspec-instantiator.d.ts +8 -3
  356. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  357. package/daemon/dist/domain/rigspec-instantiator.js +45 -12
  358. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  359. package/daemon/dist/domain/rigspec-preflight.d.ts +3 -2
  360. package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
  361. package/daemon/dist/domain/rigspec-preflight.js +18 -10
  362. package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
  363. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  364. package/daemon/dist/domain/rigspec-schema.js +5 -1
  365. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  366. package/daemon/dist/domain/route-timing-recorder.d.ts.map +1 -1
  367. package/daemon/dist/domain/route-timing-recorder.js +2 -0
  368. package/daemon/dist/domain/route-timing-recorder.js.map +1 -1
  369. package/daemon/dist/domain/runtime-adapter.d.ts +12 -3
  370. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  371. package/daemon/dist/domain/runtime-adapter.js +1 -0
  372. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  373. package/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
  374. package/daemon/dist/domain/seat-attention-reconciler.js +10 -4
  375. package/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
  376. package/daemon/dist/domain/seat-handover-service.d.ts +2 -0
  377. package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  378. package/daemon/dist/domain/seat-handover-service.js +5 -7
  379. package/daemon/dist/domain/seat-handover-service.js.map +1 -1
  380. package/daemon/dist/domain/seat-launch-environment.d.ts.map +1 -1
  381. package/daemon/dist/domain/seat-launch-environment.js +4 -0
  382. package/daemon/dist/domain/seat-launch-environment.js.map +1 -1
  383. package/daemon/dist/domain/seat-lifecycle-service.d.ts +4 -0
  384. package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  385. package/daemon/dist/domain/seat-lifecycle-service.js +4 -0
  386. package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  387. package/daemon/dist/domain/seat-status-service.d.ts +2 -1
  388. package/daemon/dist/domain/seat-status-service.d.ts.map +1 -1
  389. package/daemon/dist/domain/seat-status-service.js +6 -4
  390. package/daemon/dist/domain/seat-status-service.js.map +1 -1
  391. package/daemon/dist/domain/service-orchestrator.d.ts +1 -0
  392. package/daemon/dist/domain/service-orchestrator.d.ts.map +1 -1
  393. package/daemon/dist/domain/service-orchestrator.js +4 -0
  394. package/daemon/dist/domain/service-orchestrator.js.map +1 -1
  395. package/daemon/dist/domain/session-transport.d.ts +5 -0
  396. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  397. package/daemon/dist/domain/session-transport.js +161 -14
  398. package/daemon/dist/domain/session-transport.js.map +1 -1
  399. package/daemon/dist/domain/skill-catalog.d.ts +19 -0
  400. package/daemon/dist/domain/skill-catalog.d.ts.map +1 -1
  401. package/daemon/dist/domain/skill-catalog.js +166 -17
  402. package/daemon/dist/domain/skill-catalog.js.map +1 -1
  403. package/daemon/dist/domain/skill-discovery.d.ts +1 -1
  404. package/daemon/dist/domain/skill-discovery.d.ts.map +1 -1
  405. package/daemon/dist/domain/skill-discovery.js +6 -0
  406. package/daemon/dist/domain/skill-discovery.js.map +1 -1
  407. package/daemon/dist/domain/slow-op-recorder.d.ts +5 -0
  408. package/daemon/dist/domain/slow-op-recorder.d.ts.map +1 -1
  409. package/daemon/dist/domain/slow-op-recorder.js +34 -1
  410. package/daemon/dist/domain/slow-op-recorder.js.map +1 -1
  411. package/daemon/dist/domain/startup-orchestrator.d.ts +30 -5
  412. package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  413. package/daemon/dist/domain/startup-orchestrator.js +143 -43
  414. package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  415. package/daemon/dist/domain/startup-proof.d.ts +7 -0
  416. package/daemon/dist/domain/startup-proof.d.ts.map +1 -1
  417. package/daemon/dist/domain/startup-proof.js +7 -0
  418. package/daemon/dist/domain/startup-proof.js.map +1 -1
  419. package/daemon/dist/domain/startup-submission-evidence.d.ts +5 -1
  420. package/daemon/dist/domain/startup-submission-evidence.d.ts.map +1 -1
  421. package/daemon/dist/domain/startup-submission-evidence.js +19 -2
  422. package/daemon/dist/domain/startup-submission-evidence.js.map +1 -1
  423. package/daemon/dist/domain/successor-session-launcher.d.ts +9 -3
  424. package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  425. package/daemon/dist/domain/successor-session-launcher.js +12 -4
  426. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  427. package/daemon/dist/domain/system-world.d.ts +3 -0
  428. package/daemon/dist/domain/system-world.d.ts.map +1 -1
  429. package/daemon/dist/domain/system-world.js +24 -21
  430. package/daemon/dist/domain/system-world.js.map +1 -1
  431. package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts.map +1 -1
  432. package/daemon/dist/domain/terminal/cmux-provider-adapter.js +2 -3
  433. package/daemon/dist/domain/terminal/cmux-provider-adapter.js.map +1 -1
  434. package/daemon/dist/domain/terminal/herdr-adapter.d.ts +19 -4
  435. package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -1
  436. package/daemon/dist/domain/terminal/herdr-adapter.js +102 -8
  437. package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -1
  438. package/daemon/dist/domain/terminal/terminal-provider.d.ts +2 -0
  439. package/daemon/dist/domain/terminal/terminal-provider.d.ts.map +1 -1
  440. package/daemon/dist/domain/terminal/terminal-service.d.ts +10 -0
  441. package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -1
  442. package/daemon/dist/domain/terminal/terminal-service.js +75 -6
  443. package/daemon/dist/domain/terminal/terminal-service.js.map +1 -1
  444. package/daemon/dist/domain/terminal/view-composer.d.ts +6 -0
  445. package/daemon/dist/domain/terminal/view-composer.d.ts.map +1 -1
  446. package/daemon/dist/domain/terminal/view-composer.js +4 -2
  447. package/daemon/dist/domain/terminal/view-composer.js.map +1 -1
  448. package/daemon/dist/domain/topology/remote-up-leaf.d.ts +1 -0
  449. package/daemon/dist/domain/topology/remote-up-leaf.d.ts.map +1 -1
  450. package/daemon/dist/domain/topology/remote-up-leaf.js.map +1 -1
  451. package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
  452. package/daemon/dist/domain/transcript-store.js +3 -2
  453. package/daemon/dist/domain/transcript-store.js.map +1 -1
  454. package/daemon/dist/domain/types.d.ts +6 -0
  455. package/daemon/dist/domain/types.d.ts.map +1 -1
  456. package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
  457. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  458. package/daemon/dist/domain/user-settings/settings-store.js +13 -0
  459. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  460. package/daemon/dist/domain/workflow-runtime.d.ts +1 -1
  461. package/daemon/dist/domain/workspace/project-catalog.d.ts +20 -0
  462. package/daemon/dist/domain/workspace/project-catalog.d.ts.map +1 -1
  463. package/daemon/dist/domain/workspace/project-catalog.js +92 -0
  464. package/daemon/dist/domain/workspace/project-catalog.js.map +1 -1
  465. package/daemon/dist/domain/workspace/project-registration.d.ts +49 -0
  466. package/daemon/dist/domain/workspace/project-registration.d.ts.map +1 -0
  467. package/daemon/dist/domain/workspace/project-registration.js +251 -0
  468. package/daemon/dist/domain/workspace/project-registration.js.map +1 -0
  469. package/daemon/dist/index.d.ts.map +1 -1
  470. package/daemon/dist/index.js +2 -1
  471. package/daemon/dist/index.js.map +1 -1
  472. package/daemon/dist/project-catalog-surface.d.ts +2 -1
  473. package/daemon/dist/project-catalog-surface.d.ts.map +1 -1
  474. package/daemon/dist/project-catalog-surface.js +1 -1
  475. package/daemon/dist/project-catalog-surface.js.map +1 -1
  476. package/daemon/dist/routes/bundles.d.ts.map +1 -1
  477. package/daemon/dist/routes/bundles.js +174 -413
  478. package/daemon/dist/routes/bundles.js.map +1 -1
  479. package/daemon/dist/routes/compaction.d.ts.map +1 -1
  480. package/daemon/dist/routes/compaction.js +14 -2
  481. package/daemon/dist/routes/compaction.js.map +1 -1
  482. package/daemon/dist/routes/env.d.ts.map +1 -1
  483. package/daemon/dist/routes/env.js +14 -4
  484. package/daemon/dist/routes/env.js.map +1 -1
  485. package/daemon/dist/routes/gateway.d.ts.map +1 -1
  486. package/daemon/dist/routes/gateway.js +5 -0
  487. package/daemon/dist/routes/gateway.js.map +1 -1
  488. package/daemon/dist/routes/projects.d.ts.map +1 -1
  489. package/daemon/dist/routes/projects.js +4 -2
  490. package/daemon/dist/routes/projects.js.map +1 -1
  491. package/daemon/dist/routes/rigs.d.ts.map +1 -1
  492. package/daemon/dist/routes/rigs.js +3 -2
  493. package/daemon/dist/routes/rigs.js.map +1 -1
  494. package/daemon/dist/routes/rigspec.js +4 -2
  495. package/daemon/dist/routes/rigspec.js.map +1 -1
  496. package/daemon/dist/routes/seat.js +11 -4
  497. package/daemon/dist/routes/seat.js.map +1 -1
  498. package/daemon/dist/routes/sessions.d.ts.map +1 -1
  499. package/daemon/dist/routes/sessions.js +2 -1
  500. package/daemon/dist/routes/sessions.js.map +1 -1
  501. package/daemon/dist/routes/telemetry.d.ts +2 -0
  502. package/daemon/dist/routes/telemetry.d.ts.map +1 -1
  503. package/daemon/dist/routes/telemetry.js +16 -0
  504. package/daemon/dist/routes/telemetry.js.map +1 -1
  505. package/daemon/dist/routes/up.js +9 -5
  506. package/daemon/dist/routes/up.js.map +1 -1
  507. package/daemon/dist/server.d.ts +1 -0
  508. package/daemon/dist/server.d.ts.map +1 -1
  509. package/daemon/dist/server.js +4 -1
  510. package/daemon/dist/server.js.map +1 -1
  511. package/daemon/dist/spec-validation-surface.d.ts +2 -0
  512. package/daemon/dist/spec-validation-surface.d.ts.map +1 -1
  513. package/daemon/dist/spec-validation-surface.js +2 -0
  514. package/daemon/dist/spec-validation-surface.js.map +1 -1
  515. package/daemon/dist/startup.d.ts.map +1 -1
  516. package/daemon/dist/startup.js +33 -11
  517. package/daemon/dist/startup.js.map +1 -1
  518. package/daemon/dist/system-world-surface.d.ts +1 -1
  519. package/daemon/dist/system-world-surface.d.ts.map +1 -1
  520. package/daemon/dist/system-world-surface.js +1 -1
  521. package/daemon/dist/system-world-surface.js.map +1 -1
  522. package/daemon/docs/reference/agent-spec.md +113 -67
  523. package/daemon/docs/reference/agent-startup-guide.md +106 -33
  524. package/daemon/docs/reference/agent-state-taxonomy.md +44 -13
  525. package/daemon/docs/reference/browser-access.md +8 -7
  526. package/daemon/docs/reference/bundle-formats.md +207 -0
  527. package/daemon/docs/reference/chain-file-convention.md +16 -7
  528. package/daemon/docs/reference/developing.md +7 -0
  529. package/daemon/docs/reference/edge-types.md +18 -10
  530. package/daemon/docs/reference/getting-started.md +423 -113
  531. package/daemon/docs/reference/health-diagnosis.md +14 -6
  532. package/daemon/docs/reference/help.md +33 -8
  533. package/daemon/docs/reference/host-resources.md +3 -2
  534. package/daemon/docs/reference/inventory-request-diagnostics.md +75 -0
  535. package/daemon/docs/reference/knowledge-maturity.md +3 -1
  536. package/daemon/docs/reference/legacy-topology-migration.md +4 -2
  537. package/daemon/docs/reference/lore-routing.md +3 -1
  538. package/daemon/docs/reference/mission-install.md +3 -1
  539. package/daemon/docs/reference/non-interruptive-mode.md +60 -0
  540. package/daemon/docs/reference/planning-dial.md +2 -1
  541. package/daemon/docs/reference/product-journey-sdlc.md +11 -6
  542. package/daemon/docs/reference/product-management-pass.md +3 -1
  543. package/daemon/docs/reference/project-workspace.md +80 -3
  544. package/daemon/docs/reference/publishing-a-rig-bundle.md +144 -0
  545. package/daemon/docs/reference/refocus-channel.md +14 -5
  546. package/daemon/docs/reference/release-boundary.md +7 -3
  547. package/daemon/docs/reference/rig-bundle.md +271 -42
  548. package/daemon/docs/reference/rig-spec.md +150 -26
  549. package/daemon/docs/reference/rosters.md +60 -0
  550. package/daemon/docs/reference/schemas/bundle-behaviour.v1.schema.json +546 -0
  551. package/daemon/docs/reference/schemas/bundle-common.v1.schema.json +110 -0
  552. package/daemon/docs/reference/schemas/bundle-configurations.v1.schema.json +67 -0
  553. package/daemon/docs/reference/schemas/bundle-status.v1.schema.json +323 -0
  554. package/daemon/docs/reference/schemas/fixtures/identity-vectors.json +80 -0
  555. package/daemon/docs/reference/schemas/fixtures/invalid/behaviour/not-generated-with-sections.json +60 -0
  556. package/daemon/docs/reference/schemas/fixtures/invalid/configurations/spaced-member.configurations.yaml +6 -0
  557. package/daemon/docs/reference/schemas/fixtures/invalid/registry/listed-with-withdrawn-on.yaml +21 -0
  558. package/daemon/docs/reference/schemas/fixtures/invalid/registry/missing-source.yaml +16 -0
  559. package/daemon/docs/reference/schemas/fixtures/invalid/registry/parent-folder.yaml +20 -0
  560. package/daemon/docs/reference/schemas/fixtures/invalid/registry/short-commit.yaml +20 -0
  561. package/daemon/docs/reference/schemas/fixtures/invalid/registry/withdrawn-without-date.yaml +20 -0
  562. package/daemon/docs/reference/schemas/fixtures/invalid/run-record/harness-check-with-configuration.json +75 -0
  563. package/daemon/docs/reference/schemas/fixtures/invalid/run-record/unlabelable-platform.json +97 -0
  564. package/daemon/docs/reference/schemas/fixtures/invalid/status/hand-edited-notice.json +61 -0
  565. package/daemon/docs/reference/schemas/fixtures/invalid/status/tested-with-assistance.json +62 -0
  566. package/daemon/docs/reference/schemas/fixtures/invalid/status/tested-without-records.json +59 -0
  567. package/daemon/docs/reference/schemas/fixtures/invalid/status/unavailable-harness-with-result.json +61 -0
  568. package/daemon/docs/reference/schemas/fixtures/invalid/status/unavailable-listing-with-label.json +61 -0
  569. package/daemon/docs/reference/schemas/fixtures/valid/behaviour/custom-not-generated.json +22 -0
  570. package/daemon/docs/reference/schemas/fixtures/valid/behaviour/legacy-archive-unknown-identity.json +53 -0
  571. package/daemon/docs/reference/schemas/fixtures/valid/behaviour/mixed-runtimes-default.json +101 -0
  572. package/daemon/docs/reference/schemas/fixtures/valid/behaviour/mixed-runtimes-yolo.json +102 -0
  573. package/daemon/docs/reference/schemas/fixtures/valid/behaviour/openrig-dev.recommended.json +258 -0
  574. package/daemon/docs/reference/schemas/fixtures/valid/configurations/openrig-dev.configurations.yaml +12 -0
  575. package/daemon/docs/reference/schemas/fixtures/valid/registry/openrig-dev.yaml +20 -0
  576. package/daemon/docs/reference/schemas/fixtures/valid/registry/withdrawn.yaml +21 -0
  577. package/daemon/docs/reference/schemas/fixtures/valid/run-record/pi-harness-check-blocked.json +74 -0
  578. package/daemon/docs/reference/schemas/fixtures/valid/run-record/team-assisted-pass.json +97 -0
  579. package/daemon/docs/reference/schemas/fixtures/valid/run-record/team-pass.json +97 -0
  580. package/daemon/docs/reference/schemas/fixtures/valid/run-record/withdraws-earlier.json +99 -0
  581. package/daemon/docs/reference/schemas/fixtures/valid/status/status.json +61 -0
  582. package/daemon/docs/reference/schemas/registry-entry.v1.schema.json +139 -0
  583. package/daemon/docs/reference/schemas/run-record.v1.schema.json +315 -0
  584. package/daemon/docs/reference/scoped-operating-posture.md +17 -9
  585. package/daemon/docs/reference/sdlc-conventions.md +42 -26
  586. package/daemon/docs/reference/slack-app-setup.md +52 -7
  587. package/daemon/docs/reference/stream-classifier-worker.md +21 -8
  588. package/daemon/docs/reference/telemetry.md +114 -0
  589. package/daemon/docs/reference/worktree-builds.md +12 -6
  590. package/daemon/policies/builtin/auto.policy.md +24 -0
  591. package/daemon/specs/agents/development/implementer/agent.yaml +2 -2
  592. package/daemon/specs/agents/development/qa/agent.yaml +1 -1
  593. package/daemon/specs/agents/product-management/pm/agent.yaml +10 -0
  594. package/daemon/specs/agents/shared/skills/core/agent-starters/SKILL.md +0 -6
  595. package/daemon/specs/agents/shared/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -8
  596. package/daemon/specs/agents/shared/skills/core/openrig-architect/SKILL.md +5 -5
  597. package/daemon/specs/agents/shared/skills/core/openrig-skills/SKILL.md +3 -4
  598. package/daemon/specs/agents/shared/skills/core/openrig-software-factory/SKILL.md +12 -9
  599. package/daemon/specs/agents/shared/skills/core/openrig-software-factory/references/worked-example.md +29 -29
  600. package/daemon/specs/agents/shared/skills/core/rig-bundles-and-shareable-artifacts/SKILL.md +0 -1
  601. package/daemon/specs/agents/shared/skills/core/session-source-fork/SKILL.md +0 -5
  602. package/daemon/specs/agents/shared/skills/process/agent-browser/OPENRIG.md +1 -1
  603. package/daemon/specs/agents/shared/skills/process/systematic-debugging/SKILL.md +0 -2
  604. package/daemon/specs/rigs/focused/{adversarial-review → code-review}/rig.yaml +1 -1
  605. package/daemon/specs/rigs/focused/pm/CULTURE.md +21 -0
  606. package/daemon/specs/rigs/focused/{pm-team → pm}/rig.yaml +5 -5
  607. package/daemon/specs/rigs/focused/{research-team → research}/rig.yaml +1 -1
  608. package/daemon/specs/rigs/launch/factory/CULTURE.md +96 -0
  609. package/daemon/specs/rigs/launch/factory/guidance/advisor-role.md +10 -0
  610. package/daemon/specs/rigs/launch/factory/guidance/lead-first-move.md +23 -0
  611. package/daemon/specs/rigs/launch/{demo → factory}/rig.yaml +46 -35
  612. package/daemon/specs/rigs/{preview/product-team → launch/factory}/topology/instance/CRAFT.md +1 -1
  613. package/daemon/specs/rigs/{preview/product-team → launch/factory}/topology/rig/CRAFT.md +2 -2
  614. package/daemon/specs/rigs/{preview/product-team → launch/factory}/topology/rig/ORCHESTRATION-CRAFT.md +2 -2
  615. package/daemon/specs/rigs/{preview/product-team/topology/seats/dev1-qa → launch/factory/topology/seats/dev-qa}/CRAFT.md +1 -1
  616. package/daemon/specs/rigs/{preview/product-team/topology/seats/orch1-lead → launch/factory/topology/seats/orch-lead}/CRAFT.md +1 -1
  617. package/daemon/specs/rigs/{preview/product-team/topology/seats/rev1-r1 → launch/factory/topology/seats/review-r1}/CRAFT.md +1 -1
  618. package/daemon/specs/rigs/{preview/product-team/topology/seats/rev1-r2 → launch/factory/topology/seats/review-r2}/CRAFT.md +1 -1
  619. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/guidance/role.md +37 -0
  620. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/startup/context.md +12 -13
  621. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +167 -4
  622. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/startup/context.md +30 -7
  623. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/guidance/role.md +37 -0
  624. package/daemon/specs/rigs/launch/kernel/culture/CULTURE.md +41 -0
  625. package/daemon/specs/rigs/launch/starter/CULTURE.md +39 -0
  626. package/daemon/specs/rigs/launch/starter/guidance/lead-first-move.md +23 -0
  627. package/daemon/specs/rigs/launch/{first-project-mixed → starter}/rig.yaml +11 -8
  628. package/dist/build-info.js +3 -3
  629. package/dist/bundle-behaviour.d.ts +10 -0
  630. package/dist/bundle-behaviour.d.ts.map +1 -0
  631. package/dist/bundle-behaviour.js +72 -0
  632. package/dist/bundle-behaviour.js.map +1 -0
  633. package/dist/commands/bootstrap.d.ts.map +1 -1
  634. package/dist/commands/bootstrap.js +30 -5
  635. package/dist/commands/bootstrap.js.map +1 -1
  636. package/dist/commands/bundle.d.ts +12 -0
  637. package/dist/commands/bundle.d.ts.map +1 -1
  638. package/dist/commands/bundle.js +286 -21
  639. package/dist/commands/bundle.js.map +1 -1
  640. package/dist/commands/capture.js +4 -4
  641. package/dist/commands/capture.js.map +1 -1
  642. package/dist/commands/compact-plan.js +2 -2
  643. package/dist/commands/compact-plan.js.map +1 -1
  644. package/dist/commands/config.d.ts.map +1 -1
  645. package/dist/commands/config.js +3 -0
  646. package/dist/commands/config.js.map +1 -1
  647. package/dist/commands/context.d.ts +3 -1
  648. package/dist/commands/context.d.ts.map +1 -1
  649. package/dist/commands/context.js +66 -18
  650. package/dist/commands/context.js.map +1 -1
  651. package/dist/commands/daemon.js +1 -1
  652. package/dist/commands/daemon.js.map +1 -1
  653. package/dist/commands/doctor.d.ts.map +1 -1
  654. package/dist/commands/doctor.js +7 -2
  655. package/dist/commands/doctor.js.map +1 -1
  656. package/dist/commands/down.d.ts.map +1 -1
  657. package/dist/commands/down.js +7 -1
  658. package/dist/commands/down.js.map +1 -1
  659. package/dist/commands/env.js +1 -1
  660. package/dist/commands/env.js.map +1 -1
  661. package/dist/commands/health.d.ts.map +1 -1
  662. package/dist/commands/health.js +4 -1
  663. package/dist/commands/health.js.map +1 -1
  664. package/dist/commands/host.d.ts +11 -0
  665. package/dist/commands/host.d.ts.map +1 -1
  666. package/dist/commands/host.js +25 -1
  667. package/dist/commands/host.js.map +1 -1
  668. package/dist/commands/import.d.ts.map +1 -1
  669. package/dist/commands/import.js +2 -0
  670. package/dist/commands/import.js.map +1 -1
  671. package/dist/commands/mcp.d.ts.map +1 -1
  672. package/dist/commands/mcp.js +25 -12
  673. package/dist/commands/mcp.js.map +1 -1
  674. package/dist/commands/policy.d.ts.map +1 -1
  675. package/dist/commands/policy.js +3 -2
  676. package/dist/commands/policy.js.map +1 -1
  677. package/dist/commands/project-jev.js +1 -1
  678. package/dist/commands/project-jev.js.map +1 -1
  679. package/dist/commands/project.d.ts.map +1 -1
  680. package/dist/commands/project.js +5 -3
  681. package/dist/commands/project.js.map +1 -1
  682. package/dist/commands/ps.d.ts +1 -0
  683. package/dist/commands/ps.d.ts.map +1 -1
  684. package/dist/commands/ps.js +12 -2
  685. package/dist/commands/ps.js.map +1 -1
  686. package/dist/commands/queue.d.ts.map +1 -1
  687. package/dist/commands/queue.js +4 -2
  688. package/dist/commands/queue.js.map +1 -1
  689. package/dist/commands/restore.d.ts.map +1 -1
  690. package/dist/commands/restore.js +5 -0
  691. package/dist/commands/restore.js.map +1 -1
  692. package/dist/commands/roster.d.ts +63 -0
  693. package/dist/commands/roster.d.ts.map +1 -0
  694. package/dist/commands/roster.js +169 -0
  695. package/dist/commands/roster.js.map +1 -0
  696. package/dist/commands/seat.d.ts.map +1 -1
  697. package/dist/commands/seat.js +57 -8
  698. package/dist/commands/seat.js.map +1 -1
  699. package/dist/commands/send.d.ts.map +1 -1
  700. package/dist/commands/send.js +20 -6
  701. package/dist/commands/send.js.map +1 -1
  702. package/dist/commands/setup.d.ts +1 -1
  703. package/dist/commands/setup.d.ts.map +1 -1
  704. package/dist/commands/setup.js +72 -25
  705. package/dist/commands/setup.js.map +1 -1
  706. package/dist/commands/slack.d.ts +1 -1
  707. package/dist/commands/slack.d.ts.map +1 -1
  708. package/dist/commands/slack.js +49 -4
  709. package/dist/commands/slack.js.map +1 -1
  710. package/dist/commands/specs.d.ts.map +1 -1
  711. package/dist/commands/specs.js +19 -2
  712. package/dist/commands/specs.js.map +1 -1
  713. package/dist/commands/start.js +1 -1
  714. package/dist/commands/start.js.map +1 -1
  715. package/dist/commands/telemetry.d.ts +5 -0
  716. package/dist/commands/telemetry.d.ts.map +1 -0
  717. package/dist/commands/telemetry.js +58 -0
  718. package/dist/commands/telemetry.js.map +1 -0
  719. package/dist/commands/terminal.js +1 -1
  720. package/dist/commands/terminal.js.map +1 -1
  721. package/dist/commands/tui.js +4 -4
  722. package/dist/commands/tui.js.map +1 -1
  723. package/dist/commands/up.d.ts.map +1 -1
  724. package/dist/commands/up.js +115 -68
  725. package/dist/commands/up.js.map +1 -1
  726. package/dist/commands/whoami.d.ts +3 -0
  727. package/dist/commands/whoami.d.ts.map +1 -1
  728. package/dist/commands/whoami.js +29 -2
  729. package/dist/commands/whoami.js.map +1 -1
  730. package/dist/config-store.d.ts +5 -1
  731. package/dist/config-store.d.ts.map +1 -1
  732. package/dist/config-store.js +16 -1
  733. package/dist/config-store.js.map +1 -1
  734. package/dist/daemon-auto-start.d.ts +8 -0
  735. package/dist/daemon-auto-start.d.ts.map +1 -0
  736. package/dist/daemon-auto-start.js +39 -0
  737. package/dist/daemon-auto-start.js.map +1 -0
  738. package/dist/front-door.d.ts.map +1 -1
  739. package/dist/front-door.js +3 -2
  740. package/dist/front-door.js.map +1 -1
  741. package/dist/index.d.ts +1 -0
  742. package/dist/index.d.ts.map +1 -1
  743. package/dist/index.js +4 -0
  744. package/dist/index.js.map +1 -1
  745. package/dist/lib/bundle-check.d.ts +13 -0
  746. package/dist/lib/bundle-check.d.ts.map +1 -0
  747. package/dist/lib/bundle-check.js +191 -0
  748. package/dist/lib/bundle-check.js.map +1 -0
  749. package/dist/lib/bundle-configuration.d.ts +60 -0
  750. package/dist/lib/bundle-configuration.d.ts.map +1 -0
  751. package/dist/lib/bundle-configuration.js +198 -0
  752. package/dist/lib/bundle-configuration.js.map +1 -0
  753. package/dist/lib/bundle-source.d.ts +57 -0
  754. package/dist/lib/bundle-source.d.ts.map +1 -0
  755. package/dist/lib/bundle-source.js +355 -0
  756. package/dist/lib/bundle-source.js.map +1 -0
  757. package/dist/lib/context-install.d.ts.map +1 -1
  758. package/dist/lib/context-install.js +2 -3
  759. package/dist/lib/context-install.js.map +1 -1
  760. package/dist/lib/permission-policy/policy-ref.d.ts +6 -1
  761. package/dist/lib/permission-policy/policy-ref.d.ts.map +1 -1
  762. package/dist/lib/permission-policy/policy-ref.js +16 -4
  763. package/dist/lib/permission-policy/policy-ref.js.map +1 -1
  764. package/dist/lib/permission-policy/policy-spec.d.ts +1 -1
  765. package/dist/lib/permission-policy/policy-spec.d.ts.map +1 -1
  766. package/dist/lib/permission-policy/policy-spec.js +2 -2
  767. package/dist/lib/permission-policy/policy-spec.js.map +1 -1
  768. package/dist/lib/scope/templates.d.ts.map +1 -1
  769. package/dist/lib/scope/templates.js +1 -0
  770. package/dist/lib/scope/templates.js.map +1 -1
  771. package/dist/lib/scope-templates/notes.md +1 -1
  772. package/dist/lib/work-install.d.ts +12 -0
  773. package/dist/lib/work-install.d.ts.map +1 -1
  774. package/dist/lib/work-install.js +55 -4
  775. package/dist/lib/work-install.js.map +1 -1
  776. package/package.json +1 -1
  777. package/tui/dist/commands/registry.d.ts.map +1 -1
  778. package/tui/dist/commands/registry.js +8 -3
  779. package/tui/dist/commands/registry.js.map +1 -1
  780. package/tui/dist/daemon-client.d.ts +1 -0
  781. package/tui/dist/daemon-client.d.ts.map +1 -1
  782. package/tui/dist/daemon-client.js +5 -2
  783. package/tui/dist/daemon-client.js.map +1 -1
  784. package/tui/dist/main.js +30 -3
  785. package/tui/dist/main.js.map +1 -1
  786. package/tui/dist/render.d.ts.map +1 -1
  787. package/tui/dist/render.js +66 -19
  788. package/tui/dist/render.js.map +1 -1
  789. package/tui/dist/specs/graph.d.ts +5 -0
  790. package/tui/dist/specs/graph.d.ts.map +1 -0
  791. package/tui/dist/specs/graph.js +16 -0
  792. package/tui/dist/specs/graph.js.map +1 -0
  793. package/tui/dist/specs/launch.d.ts +29 -0
  794. package/tui/dist/specs/launch.d.ts.map +1 -0
  795. package/tui/dist/specs/launch.js +64 -0
  796. package/tui/dist/specs/launch.js.map +1 -0
  797. package/tui/dist/startup.d.ts.map +1 -1
  798. package/tui/dist/startup.js +15 -6
  799. package/tui/dist/startup.js.map +1 -1
  800. package/tui/dist/state.d.ts +2 -2
  801. package/tui/dist/state.d.ts.map +1 -1
  802. package/tui/dist/state.js +41 -18
  803. package/tui/dist/state.js.map +1 -1
  804. package/tui/dist/terminals/terminal-model.d.ts +1 -0
  805. package/tui/dist/terminals/terminal-model.d.ts.map +1 -1
  806. package/tui/dist/terminals/terminal-model.js +19 -2
  807. package/tui/dist/terminals/terminal-model.js.map +1 -1
  808. package/tui/dist/types.d.ts +17 -0
  809. package/tui/dist/types.d.ts.map +1 -1
  810. package/daemon/specs/rigs/launch/conveyor/README.md +0 -33
  811. package/daemon/specs/rigs/launch/conveyor/rig.yaml +0 -72
  812. package/daemon/specs/rigs/launch/demo/project-example/README.md +0 -25
  813. package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/SPEC.md +0 -19
  814. package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/PROGRESS.md +0 -6
  815. package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/PROOF.md +0 -7
  816. package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/SPEC.md +0 -31
  817. package/daemon/specs/rigs/launch/first-project/rig.yaml +0 -31
  818. package/daemon/specs/rigs/launch/first-project-claude/rig.yaml +0 -30
  819. package/daemon/specs/rigs/launch/implementation-pair/rig.yaml +0 -27
  820. package/daemon/specs/rigs/preview/product-team/rig.yaml +0 -90
  821. /package/daemon/specs/rigs/launch/factory-rsi/{rig.yaml → world-bundle.yaml} +0 -0
@@ -1,13 +1,43 @@
1
1
  # Agent Startup Guide
2
2
 
3
- Version: 0.2.0
4
- Last validated: 2026-04-11
5
- Applies to: OpenRig 0.1.x
3
+ Last validated: 2026-10-05, against main `9b88b118`
4
+ Applies to: OpenRig 0.6.6
6
5
 
7
6
  This guide teaches you how to think about what goes into an agent's startup experience — what files to write, where to put them, and how the layering model delivers them. It is an authoring guide, not a schema reference. For field-level details, see `rig-spec.md` and `agent-spec.md`.
8
7
 
9
8
  ---
10
9
 
10
+ ## Continue after a native consent prompt
11
+
12
+ If a fresh Claude seat is waiting at its bypass-permissions warning, review and
13
+ answer that warning in the seat's native pane. Unless the rig was launched with
14
+ `--non-interruptive` (see [non-interruptive mode](non-interruptive-mode.md)),
15
+ OpenRig does not accept it for you, and it never sends configured startup context
16
+ into the active dialog. The seat reports `attention_required` and retains that
17
+ context for the same occupant.
18
+
19
+ After accepting, run `rig seat continue <seat>` (or press `c` on the seat in the
20
+ TUI, shown while its context is pending). This delivers the pending context
21
+ without relaunching Claude, and its first prompt reminds the seat that this is a
22
+ fresh conversation and how to find its work. It does not replay a delivery that
23
+ already started. A timeout, or a refusal because nothing is pending, reports an
24
+ unknown outcome; inspect `rig seat status <seat>` before taking another action.
25
+ It is also refused while the prompt is still showing (`attention_required`), or
26
+ when the seat's binding or runtime has changed since launch.
27
+ Runtime readiness, startup delivery, and orientation proof remain separate;
28
+ a missing proof does not block this continuation.
29
+
30
+ Other fresh-launch prerequisites, such as login or workspace trust, use the same
31
+ continuation: resolve the prerequisite in the native pane, then run the displayed
32
+ command. `rig ps --nodes` shows it under "Startup details (<seat>)", and
33
+ `rig up` and `rig bundle install` print it as "Startup attention (<seat>)":
34
+ "After resolving it in <session>, run: rig seat continue <session>".
35
+
36
+ The attention codes that stop startup this way are `trust_gate`,
37
+ `hook_trust_gate`, `update_gate`, `login_required`, `mcp_gate`,
38
+ `bypass_consent_gate`, `codex_auth_refusal` and `codex_client_incompatible`.
39
+ They are recognized from each harness's English prompt text.
40
+
11
41
  ## Two Categories of Startup
12
42
 
13
43
  Everything an agent receives at boot time falls into one of two categories:
@@ -26,14 +56,14 @@ Context loading shapes what the agent knows, believes, and is capable of:
26
56
  ### Category 2: Deterministic Configuration
27
57
 
28
58
  The rig spec declaratively installs things into the agent's runtime environment:
29
- - Hooks (git hooks, pre-commit scripts)
59
+ - Hooks (shipped inside plugins)
30
60
  - Permissions (`.claude/settings.json` allowlists, approval modes)
31
61
  - MCPs (Model Context Protocol servers)
32
62
  - System dependencies (tools, packages)
33
63
 
34
64
  See the **Current Support Matrix** section at the end of this guide for what is reliable today vs experimental.
35
65
 
36
- **The v0.2.0 recommendation:** Put as much of your setup logic as possible into Category 1 (context loading via markdown files). Describe the desired end state in startup files and let the agent handle the configuration. The deterministic path exists in the spec and will become more reliable over time, but for now the context-loading path is the one that works consistently across runtimes.
66
+ **The recommendation:** Put as much of your setup logic as possible into Category 1 (context loading via markdown files). Describe the desired end state in startup files and let the agent handle the configuration. The deterministic path exists in the spec and will become more reliable over time, but for now the context-loading path is the one that works consistently across runtimes.
37
67
 
38
68
  ---
39
69
 
@@ -118,30 +148,35 @@ Startup content is merged additively through layers. Each layer adds to what the
118
148
  ```
119
149
  1. Agent layer — from the AgentSpec's top-level startup block
120
150
  2. Profile layer — from the active profile's startup block
121
- 3. Rig layer — from the RigSpec's top-level startup block
122
- 4. Culture layer — from the RigSpec's culture_file
151
+ 3. Culture layer — OpenRig's default culture, then the RigSpec's culture_file
152
+ 4. Rig layer — from the RigSpec's top-level startup block
123
153
  5. Pod layer — from the pod's startup block
124
154
  6. Member layer — from the member's startup block in the RigSpec
125
- 7. Operator layer — injected at runtime (openrig-start overlay, context collector, etc.)
155
+ 7. Operator layer — added by OpenRig: openrig-start.md and, on a fresh start, the onboarding pack
126
156
  ```
127
157
 
158
+ A member with a `starter_ref` gets that agent starter's files in front of the agent layer. Terminal seats
159
+ (`builtin:terminal`) skip the agent and profile layers.
160
+
128
161
  ### What Each Layer Is For
129
162
 
130
163
  | Layer | Authored by | Purpose | Example content |
131
164
  |-------|-------------|---------|-----------------|
132
165
  | Agent | Agent spec author | Core identity and capabilities that travel with this agent type | Role guidance, default skills |
133
166
  | Profile | Agent spec author | Profile-specific variations | Different skill sets for "default" vs "minimal" profiles |
134
- | Rig | Rig spec author | Rig-wide context for all agents | Team norms, project documentation |
135
- | Culture | Rig spec author | Rig constitution | `CULTURE.md` — communication, quality, operating philosophy |
167
+ | Culture | OpenRig, then the rig spec author | Team norms | OpenRig's `CULTURE-default.md` for every seat, then the rig's own `CULTURE.md` |
168
+ | Rig | Rig spec author | Rig-wide context for all agents | Project documentation |
136
169
  | Pod | Rig spec author | Pod-specific coordination context | Pod SOP, intra-pod workflow |
137
170
  | Member | Rig spec author | Individual member overrides | Member-specific instructions, cwd-specific context |
138
- | Operator | OpenRig system | System-injected runtime content | `openrig-start.md`, context collector |
171
+ | Operator | OpenRig system | System-injected runtime content | `openrig-start.md` (optional delivery); on a fresh start, `openrig-onboarding-01.md` and `-02.md` unless `onboarding.default_pack.enabled` is false |
172
+
173
+ After the files, OpenRig sends a session-identity message (rig, pod, member, logical ID) once the seat is ready.
139
174
 
140
175
  ### Practical Guidance
141
176
 
142
- **Most rigs only need three layers:** agent (role.md), rig (culture), and operator (openrig-start). Start simple. Add pod and member layers only when agents in the same pod need different startup content.
177
+ **Most rigs only need three layers:** agent (role.md), culture, and the built-in operator layer. Start simple. Add pod and member layers only when agents in the same pod need different startup content.
143
178
 
144
- **The culture layer is high-value and often skipped.** A rig without a `CULTURE.md` relies on agents to guess how the team communicates and coordinates. Write one. Even a short culture file dramatically improves team coherence.
179
+ **The rig's own culture file is high-value and often skipped.** Every seat gets OpenRig's default culture, but that says nothing about how this team communicates and coordinates. Write a `CULTURE.md`. Even a short one dramatically improves team coherence.
145
180
 
146
181
  **Member-level startup is for exceptions, not the rule.** If every member has its own startup block, the layering model is being used as a configuration dump. Refactor shared content up to the pod or rig level.
147
182
 
@@ -153,8 +188,8 @@ Startup content is merged additively through layers. Each layer adds to what the
153
188
 
154
189
  | Delivery Hint | When | How | Use For |
155
190
  |---------------|------|-----|---------|
156
- | `auto` | Before harness boot | System chooses | Default — let OpenRig decide |
157
- | `guidance_merge` | Before harness boot | Merged into `CLAUDE.md` / `AGENTS.md` as a managed block | Role guidance, culture, project context |
191
+ | `auto` | Depends on the file | Resolved per file: a `SKILL.md` (or content starting `# SKILL`) is `skill_install`, any other `.md` is `guidance_merge`, and any other file is `send_text` | Default — let OpenRig decide |
192
+ | `guidance_merge` | Before harness boot | Merged as a managed block into `AGENTS.md` (Codex, Pi) or `CLAUDE.md` (Claude; `CLAUDE.local.md` with the rig's `managed_blocks: { claude-code: CLAUDE.local.md }`) | Role guidance, culture, project context |
158
193
  | `skill_install` | Before harness boot | Copied to runtime's skill directory | Skills |
159
194
  | `send_text` | After harness is ready | Sent as text to agent's terminal via tmux | Boot-time grounding, identity hints, instructions to read skills |
160
195
 
@@ -167,11 +202,46 @@ Files delivered via `send_text` happen AFTER the harness is ready. The agent rec
167
202
  - Instructions to load skills (the files are already projected, the message tells the agent to read them)
168
203
  - Context that should feel like an operator briefing, not pre-loaded content
169
204
 
205
+ On a fresh launch the first message is one turn: the session identity, the first `send_text` file and, when a startup
206
+ proof is selected, its challenge (below).
207
+
208
+ A file's `required` field defaults to `true`: a required file that can't be delivered fails startup, and an optional
209
+ one is dropped without a message.
210
+
211
+ ### Readiness, startup proof and failure
212
+
213
+ **Readiness.** After launch OpenRig polls the pane until the harness is interactive (backing off 1, 2, 4, 8 and 16
214
+ seconds), for up to 30 seconds by default. Change the window with
215
+ `rig config set runtime.readiness_timeout_seconds <1-600>` (or `OPENRIG_RUNTIME_READINESS_TIMEOUT_SECONDS`); it
216
+ applies to the next launch. A recognized prompt (the attention codes above) ends the wait at once as
217
+ `attention_required`. A timeout ends startup as `failed` ("Readiness timeout after Ns — harness did not become
218
+ interactive"), and the post-launch files aren't sent.
219
+
220
+ **Claude submission check.** For each startup message to a Claude seat, OpenRig makes a bounded check that the prompt
221
+ was submitted. When the capture can't tell, it records the submission as unverified and carries on. When it sees the
222
+ same prompt still sitting in the input, it presses Enter once more; if it's still there, it warns "Startup prompt still
223
+ staged in <session>; press Enter in that pane." The seat can still end `ready` with its submission `unverified` or
224
+ `staged`, so `ready` doesn't prove the prompt was submitted. After all files and actions are delivered, readiness is
225
+ checked once more, so a prompt that appears by then gives `attention_required`.
226
+
227
+ **Startup proof.** A `startup_proof` action selects `authenticated` or `none` (the default is none; the last applicable
228
+ one wins, and it needs `idempotent: true`). With `authenticated`, a fresh launch of an agent seat includes a challenge,
229
+ and the seat answers it with `rig startup-proof submit --challenge-id <id> --answer <answer>`. `rig ps --nodes --full`
230
+ shows the result in the ORIENTED column: `verified`, `missing`, `rejected` or `n-a`. A missing proof doesn't block startup.
231
+
232
+ **After a failure.** Delivery, launch and action failures, and readiness timeouts, give `failed`. Every 30 seconds the
233
+ context monitor marks a `failed` or `attention_required` seat `ready` once its pane reads ready, unless fresh context
234
+ is still pending for `rig seat continue`. A seat that timed out can therefore read `ready` without having received its
235
+ post-launch files. If it needs them, first look at what that occupant has done; then
236
+ `rig seat launch <seat> --fresh --reason <text>` starts a blank conversation for the seat. If the occupant is still
237
+ live, the command refuses with `session_live` unless you also pass `--stop`, which replaces that occupant deliberately.
238
+
170
239
  ### The `applies_on` Field
171
240
 
172
241
  Each startup file and action specifies when it applies:
173
- - `fresh_start` — delivered on first launch only
174
- - `restore` — delivered on restore from snapshot
242
+ - `fresh_start` — delivered when a new conversation starts: the first launch, `rig seat launch --fresh`,
243
+ `rig seat continue`, and seats restored with `--fresh`
244
+ - `restore` — delivered when a seat is restored, including a restore whose resume falls back to a fresh conversation
175
245
  - Default: `[fresh_start, restore]` (both)
176
246
 
177
247
  Use this to avoid re-sending context that the agent already has from its resumed conversation. For example, a one-time project briefing might only apply on `fresh_start`, while identity grounding should apply on both.
@@ -184,15 +254,8 @@ The AgentSpec and RigSpec allow declaring deterministic environment configuratio
184
254
 
185
255
  ### What the Spec Supports
186
256
 
187
- **Hooks** (in `resources.hooks`):
188
- ```yaml
189
- resources:
190
- hooks:
191
- - id: pre-commit
192
- path: hooks/pre-commit.sh
193
- runtimes: [claude-code]
194
- ```
195
- Hooks are scripts copied to the agent's workspace. They can be git hooks, automation scripts, or environment setup.
257
+ **Hooks** ship inside plugins: declare the plugin under `resources.plugins[]`. AgentSpec validation refuses
258
+ `resources.hooks`.
196
259
 
197
260
  **Runtime resources** (in `resources.runtime_resources`):
198
261
  ```yaml
@@ -214,23 +277,26 @@ startup:
214
277
  phase: after_ready
215
278
  idempotent: true
216
279
  ```
217
- Commands sent to the agent's terminal after it's ready. Can install MCPs, run setup commands, etc.
280
+ Each value is typed into the harness's input and submitted, so it is a prompt or a slash command, not a shell command.
281
+ Types are `send_text`, `slash_command` and `startup_proof` (see "Startup proof" above); `shell` is refused.
282
+ `idempotent` is required, and an action that isn't idempotent must not list `restore` in `applies_on`. Both phases
283
+ run after the harness is ready: `after_files` (the default) after the post-launch files, then `after_ready`.
218
284
 
219
- ### Current Support Matrix (OpenRig 0.1.x)
285
+ ### Current Support Matrix
220
286
 
221
287
  | Capability | Status | Notes |
222
288
  |------------|--------|-------|
223
289
  | Guidance file projection (`guidance_merge`) | **Supported** | Reliable. Primary delivery mechanism. |
224
290
  | Skill projection (`skill_install`) | **Supported** | Reliable. Skills are copied to workspace. |
225
291
  | `send_text` delivery after ready | **Supported** | Reliable. Requires harness to be ready. |
226
- | Hook projection | **Experimental** | Files are copied but execution/integration varies by runtime. |
292
+ | Hooks | **Through plugins** | Declare a plugin under `resources.plugins[]`; `resources.hooks` is refused. |
227
293
  | Runtime resource projection | **Supported for recognized fragments** | `claude_settings_fragment`, `claude_mcp_fragment`, and `codex_config_fragment` are applied to provider config. Unknown types are copied to runtime extension directories. |
228
- | Permission configuration | **Native settings plus managed launch flags** | OpenRig launches Claude with `acceptEdits` and Codex with `workspace-write` unless an explicit supported selection changes them. It does not add a global Claude `Bash(rig:*)` allowance. Use [the first-user permission guide](getting-started.md#opt-in-permissive-operation) for opt-in and custom choices. |
229
- | MCP installation | **Experimental** | Claude Code: `/mcp` interactive command or `claude mcp add` from CLI. Can also be described in startup files for agent self-configuration. Reliability depends on runtime TUI state. |
294
+ | Permission configuration | **Native settings plus managed launch flags** | OpenRig launches Claude with `acceptEdits` and Codex with `workspace-write` unless an explicit supported selection changes them; the `kernel` rig's seats get a wider operational default ([rig spec, "At launch"](rig-spec.md)). It does not add a global Claude `Bash(rig:*)` allowance. Use [the first-user permission guide](getting-started.md#opt-in-permissive-operation) for opt-in and custom choices. |
295
+ | MCP installation | **Supported for Claude fragments** | A selected `claude_mcp_fragment` is merged into the project's `.mcp.json`. Claude asks to approve new servers found there; that prompt stops startup as `mcp_gate` until someone answers it and runs `rig seat continue`. Otherwise use `/mcp` or `claude mcp add`, or describe the servers in startup files for the agent to configure. |
230
296
  | System dependency installation | **Not deterministic** | Describe in startup files; agent handles via shell commands. |
231
297
  | Recurring tasks / wake timers | **Runtime-dependent** | Claude Code supports recurring tasks via the `/loop` command. Codex does not have a confirmed equivalent. Orchestrators should include `/loop` instructions in startup for Claude Code agents. |
232
298
 
233
- ### The v0.2.0 Approach: Describe, Then Let the Agent Handle It
299
+ ### The Approach: Describe, Then Let the Agent Handle It
234
300
 
235
301
  For anything beyond `guidance_merge`, `skill_install`, and `send_text`, the recommended approach is:
236
302
 
@@ -329,6 +395,13 @@ remain shared.
329
395
  `CODEX_HOME`, read its login and fetch managed policy, as a Codex start does.
330
396
  - Can self-install dependencies from instructions but timer/recurring behavior is not reliably available
331
397
 
398
+ **Pi and OMP:**
399
+ - Read `AGENTS.md` in the working directory; guidance is merged there, added to Pi's own system prompt
400
+ - Selected skills are projected into the seat's own agent directory under OpenRig's state, not into a shared
401
+ workspace folder
402
+
403
+ **Terminal seats** (`builtin:terminal`) get no agent or profile layers and no startup proof.
404
+
332
405
  When authoring startup content, note which instructions are runtime-specific. For example, an orchestrator that needs a monitoring loop should include instructions like: "If running Claude Code, use `/loop 3m` to periodically check rig health. If running Codex, check rig health at the start of each task cycle instead."
333
406
 
334
407
  ---
@@ -399,7 +472,7 @@ This prompts the agent to actually invoke the skills, not just have them as pass
399
472
 
400
473
  After identity recovery, verify:
401
474
  1. `rig ps --nodes` shows your rig running (scoped to your session's rig by default; outside a managed session name it explicitly: `rig ps --nodes --rig <name>`)
402
- 2. `rig env status` shows services healthy (if applicable)
475
+ 2. `rig env status <rig>` shows services healthy (if applicable)
403
476
  3. Your working directory is correct
404
477
  4. Required tools are available (node, npm, git, etc.)
405
478
 
@@ -1,8 +1,11 @@
1
1
  # Agent state taxonomy
2
2
 
3
- The formal state language every OpenRig surface renders from — TUI, `rig ps`, the node
4
- inventory, and any future consumer. One oracle computes it; surfaces render it; no
5
- surface keeps a private vocabulary.
3
+ The formal activity language OpenRig's surfaces render from — the TUI and the `rig ps`
4
+ ACTIVITY column. One oracle computes it; surfaces render it. Two exceptions remain: the web
5
+ UI's graph node still derives its own running/needs-input/idle/unknown from the legacy
6
+ `agentActivity`, and `rig ps --active` / `--filter agentActivity.state` filter on that legacy
7
+ field. Startup, orientation, restore and attention states are separate vocabularies, listed
8
+ under "Other state on the same surfaces" below.
6
9
 
7
10
  **This document is the canonical text for the shipped taxonomy** and adds the
8
11
  engineering reconciliation; it never forks a second vocabulary. Its typed source of
@@ -16,6 +19,12 @@ truth is `packages/daemon/src/domain/activity-taxonomy.ts`.
16
19
  | activity | `working` · `idle-at-prompt` · `unknown` (+ needs-input as count+reason, below) | what a present agent is doing |
17
20
  | resumability | `live` · `resumable` · `context-walled` | what a non-present agent can come back as |
18
21
 
22
+ Only the activity axis is served today. The session and resumability values are declared in
23
+ `activity-taxonomy.ts` but no surface reads them: `rig ps --nodes --full` shows the raw session
24
+ STATUS, both node views show a LIFECYCLE of `running`, `detached`, `recoverable` or `attention_required` (`run`, `det`, `rec`,
25
+ `att`), and node inventory serves `occupantLifecycle` (`active`, `retiring`, `retired`,
26
+ `context_walled`, `compacted`, `crashed`, `unknown`).
27
+
19
28
  The axes never blend. Reachability is strict; revival optimism is a different field
20
29
  (omnigent's strict-liveness split). `unknown` is a first-class honest value — the oracle
21
30
  saying it cannot tell. Unknown beats a confident wrong answer.
@@ -35,15 +44,18 @@ collision in both codebases.
35
44
  ## Derived diagnoses — computed at read time, never stored
36
45
 
37
46
  - **PARKED** — the disease: `(activity = idle-at-prompt OR needs-input pending) ×
38
- (open obligations exist)`. A dropped baton or an unanswered block. Queryable at rig and
39
- seat level; the join lives in the parked query surface, never inside the oracle
40
- (the oracle's non-inference contract: it never reads queue state).
47
+ (open obligations OR unhealthy HELD rows)`. A dropped baton or an unanswered block. When
48
+ activity is `unknown` the verdict is `indeterminate`, never parked or not-parked. Queryable
49
+ at rig and seat level with `rig parked [seat] [--rig <name>] [--json]`; the join lives in the
50
+ parked query, never inside the oracle (the oracle's non-inference contract: it never reads
51
+ queue state).
41
52
  - **HELD** — the deliberate counterpart: a queue-level hold with a named owner and an
42
53
  armed wake (`rig view show held`). Stopping on purpose is HELD; stopping by accident is
43
- PARKED. A HELD row is **not** parked.
54
+ PARKED. A HELD row is healthy only while its wake is live, and not fired-but-unconsumed
55
+ unless the stuck sweep owns its recovery; an unhealthy HELD row on a stopped seat makes
56
+ the seat parked.
44
57
  - **DONE-UNSEEN** — finished work whose completion nobody consumed (herdr derives it as
45
- idle ∧ unseen). Declared here and computed at read time from claims/transitions,
46
- outside the activity oracle, preserving its non-inference boundary.
58
+ idle ∧ unseen). Declared as a concept only; no surface computes it yet.
47
59
 
48
60
  ## Reconciliation with prior art
49
61
 
@@ -65,8 +77,10 @@ time-bounded evidence. Rungs, top down, with each rung's retirement condition:
65
77
  - **r3 — Claude `sessions/<pid>.json` self-report** (busy/shell/idle/waiting, since
66
78
  v2.1.139): standing, above hooks for working/idle. Undocumented internal — unreadable
67
79
  means fall down the ladder, never error.
68
- - **r2 — lifecycle hooks** (Claude Stop/StopFailure; Codex UserPromptSubmit/Stop/
69
- PermissionRequest): standing. Exactly-once turn boundaries; SubagentStop filtered (it
80
+ - **r2 — lifecycle hooks** (Claude SessionStart/UserPromptSubmit/Stop/Notification;
81
+ Codex SessionStart/UserPromptSubmit/Stop/PermissionRequest): standing for Claude; Codex's
82
+ hook rung starts at trial and is promoted after 50 agreeing observations over at least an
83
+ hour. Exactly-once turn boundaries; SubagentStop filtered (it
70
84
  can fire post-turn and must never revive an idle seat). Hook-rung authority is
71
85
  TIME-BOUNDED: the hook rung is the only rung that does not self-date its evidence, so
72
86
  persistent cross-rung contradiction degrades it to identity-only, visibly, with a
@@ -76,8 +90,9 @@ time-bounded evidence. Rungs, top down, with each rung's retirement condition:
76
90
  - **r1 — window-activity sampling** (today's oracle): the fallback tier. Retires
77
91
  PER-HARNESS when that harness's hook rung earns trust through a measured agreement
78
92
  window in production — never by fixture pass alone (symmetric admission: a fixture
79
- pass admits a rung to TRIAL; production agreement promotes it; identity-only until
80
- promoted).
93
+ pass admits a rung to TRIAL, where it is measured but not consulted; production agreement
94
+ promotes it). Undeclared and partial-coverage rungs are identity-only, which is also where
95
+ a degraded rung goes.
81
96
 
82
97
  Partial-coverage honesty: a source with partial lifecycle coverage gets identity-only
83
98
  trust. The ladder is also the migration path — new oracles slot in above existing
@@ -88,6 +103,22 @@ generation swap is its own visible event — never an activity transition — an
88
103
  rung-inventory re-declaration: a successor never inherits its predecessor's rung
89
104
  authority (hooks live in occupant config while the pane is seat-persistent).
90
105
 
106
+ ## Other state on the same surfaces
107
+
108
+ These are separate vocabularies, not activity values. `rig ps --nodes --full` shows them in
109
+ its STARTUP, ORIENTED, LIFECYCLE and RESTORE columns (the default compact view shows only
110
+ LIFECYCLE); see the
111
+ [startup guide](agent-startup-guide.md) for how each arises.
112
+
113
+ - **Startup status:** `pending`, `ready`, `attention_required`, `failed`. `ready` means
114
+ startup finished, never that the seat is oriented, and a seat isn't marked `ready` while
115
+ its startup context is still pending for `rig seat continue`.
116
+ - **Oriented:** `verified`, `missing`, `rejected`, `n-a`, from the startup proof.
117
+ - **Attention codes:** `trust_gate`, `hook_trust_gate`, `update_gate`, `login_required`,
118
+ `mcp_gate`, `bypass_consent_gate`, `codex_auth_refusal`, `codex_client_incompatible`.
119
+ - **Restore outcome:** `resumed`, `fresh-primed`, `awaiting-decision`, `attention_required`,
120
+ `failed` (plus `rebuilt`, `operator_recovered` and the legacy `fresh`).
121
+
91
122
  ## Rejected oracles — dated receipts (2026-08-26), so nobody re-derives them expensively
92
123
 
93
124
  - **transcript-quiescence as an activity oracle: REJECTED.** omnigent's 1-second version
@@ -12,10 +12,9 @@ comes from a web page, only when that page is the OpenRig UI or a page you allow
12
12
  its own Tailscale name (for example `my-machine.your-tailnet.ts.net`, or the short `my-machine`).
13
13
  The daemon learns its own Tailscale name automatically from Tailscale on this machine.
14
14
  - The web UI, when it is turned on (`rig config set ui.enabled true`, then restart the daemon) and
15
- opened at the daemon's own address and port. To open it at a non-loopback name or address, such
16
- as its Tailscale name, also list that page's exact origin in `OPENRIG_ALLOWED_ORIGINS` (for
17
- example `http://my-machine.your-tailnet.ts.net:7433`), then restart the daemon. Without it, the
18
- UI's terminal is refused there, and at a non-loopback IPv6 address its API requests are too.
15
+ opened over `http` on the daemon's own port at any address the daemon accepts, including its
16
+ Tailscale name. A UI page served any other way, such as over `https` through your own domain,
17
+ also needs its exact origin in `OPENRIG_ALLOWED_ORIGINS`, then a daemon restart.
19
18
 
20
19
  ### When you see a refusal
21
20
 
@@ -35,14 +34,16 @@ The daemon answers `403` with a sentence that says what to do. There are two kin
35
34
 
36
35
  `OPENRIG_ALLOWED_HOSTS` lists names you use to reach the daemon. `OPENRIG_ALLOWED_ORIGINS` lists
37
36
  web pages allowed to call it. They are separate: a UI served through your own domain usually needs
38
- both. Pages on other origins cannot read the refusal; the message is for you, the CLI and agents.
37
+ both. Separate several entries with commas. Pages on other origins cannot read the refusal; the
38
+ message is for you, the CLI and agents.
39
39
 
40
40
  ### Limits
41
41
 
42
42
  - If you rename the machine in Tailscale, the daemon keeps accepting its previous name until it
43
43
  restarts or until it next looks its name up after seeing an unrecognized one.
44
- - If the daemon cannot reach Tailscale's resolver, its Tailscale name is refused until a later
45
- lookup succeeds. `localhost` and IP addresses keep working.
44
+ - If the daemon has not reached Tailscale's resolver since it started, its Tailscale name is
45
+ refused until a lookup succeeds. A later failed lookup keeps the name it already learned.
46
+ `localhost` and IP addresses keep working.
46
47
  - This protects against unknown web pages and unknown names. It is not complete browser isolation:
47
48
  a page on another site can still cause a simple read request to an address the daemon accepts,
48
49
  although it cannot read the answer. Keep the daemon on loopback or your tailnet.
@@ -0,0 +1,207 @@
1
+ # Bundle formats (v1)
2
+
3
+ The shared data formats for sharing rig bundles: the configurations a bundle offers, the before-install view of what it
4
+ will do, run records and the public status file, and registry entries. The schemas are in [`schemas/`](schemas/), with
5
+ fixtures that pass and fail them in [`schemas/fixtures/`](schemas/fixtures/). Tools outside this repository read them
6
+ at a pinned commit.
7
+
8
+ **A v1 format only grows:** new optional properties may appear, and consumers ignore properties they don't know. Any
9
+ other change is a v2. The schemas are open to new properties, with three closed on purpose: the package digest (an exact
10
+ value), a run record's subject (a harness check can never carry a team's identity), and the public status file, where
11
+ nothing outside the schema may appear, so a private field can't leak in. A new property in a closed part is a v2. The
12
+ status schema also rejects labels that contradict their evidence: a tested label needs records and a package, tested
13
+ with help needs its count, tested can't carry a count above zero, and an unreadable listing carries only Status
14
+ unavailable.
15
+
16
+ ## Three identities, kept apart
17
+
18
+ | What | Name | Defined by |
19
+ |---|---|---|
20
+ | What someone chose | configuration ID | the mapping of every seat to a runtime |
21
+ | What was packaged | package digest | the built archive's files |
22
+ | What actually ran | execution binding | a run record (resolved resources, settings, environment, unknowns) |
23
+
24
+ None stands in for another. A package digest doesn't describe what ran, and a configuration ID doesn't describe what was
25
+ packaged.
26
+
27
+ ### Source identity
28
+
29
+ A bundle on GitHub is named by `repository` (`https://github.com/<owner>/<repo>`, no credentials), `folder` (the
30
+ repo-relative path of the folder holding `rig.yaml`, or `.` for the repository root) and `resolvedCommit` (40 lowercase
31
+ hex).
32
+ - `requestedRef` (the branch, tag or commit someone gave, or `HEAD` for a link without `/tree/…`) and `canonicalUrl`
33
+ (`…/tree/<resolvedCommit>/<folder>`, with each folder segment percent-encoded and no folder part for the root)
34
+ explain it, and aren't part of it.
35
+ - A built bundle records its source in its manifest's provenance, which is outside the package digest.
36
+
37
+ ### Configuration ID
38
+
39
+ Every member's `pod.member=runtime`, sorted by `pod.member` in UTF-16 code-unit order, joined with `,`. There's no
40
+ whitespace, and runtimes are spelled as in `rig.yaml`. For example:
41
+
42
+ ```text
43
+ build.impl=claude-code,build.lead=claude-code,check.qa=codex,check.review=codex
44
+ ```
45
+
46
+ Preset names such as `recommended` or `all-claude` are aliases shown beside the ID, never part of it.
47
+
48
+ ### Package digest
49
+
50
+ `{ algorithm: "sha256", value, coverage: "openrig.package-digest/v1" }`:
51
+ - `value` is SHA-256 over UTF-8 lines `<quoted path>\t<sha256>\n`, one for each entry of the built archive's
52
+ `integrity.files`, sorted by path in UTF-16 code-unit order;
53
+ - `<quoted path>` is the path as a JSON string, exactly as JavaScript's `JSON.stringify(path)` writes it, so a tab or
54
+ newline in a file name can't make two different file lists hash the same. In words: wrapped in `"`; `"` and `\`
55
+ escaped with a backslash; U+0008, U+0009, U+000A, U+000C and U+000D written `\b`, `\t`, `\n`, `\f` and `\r`; any
56
+ other character below U+0020, and any lone surrogate, written `\uXXXX` in lowercase hex; everything else as itself;
57
+ - it's the same when the same folder is rebuilt by the same OpenRig, while the archive's own hash changes with every
58
+ build (`createdAt`).
59
+
60
+ **Coverage, shown wherever the digest is:** the bytes of every packaged file. It doesn't cover:
61
+ - `bundle.yaml`, so no manifest field, provenance or `createdAt`;
62
+ - the names the integrity walk skips (`.DS_Store`, `Thumbs.db`, `.gitkeep`);
63
+ - file modes;
64
+ - anything resolved on the installing machine at launch, for example an `openrig-home:` plugin, catalog skills, or a
65
+ model or effort nothing declares.
66
+
67
+ **A build result** carries `source` (`null` unless the bundle was built from a GitHub link), `configurationId`,
68
+ `packageDigest`, `archiveHash` and `assembler`. `rig bundle inspect` reports the same fields for an archive, and any the
69
+ archive doesn't state are `null`. `assembler` is `{ openrigVersion }`: the format also allows a `commit`, which this
70
+ OpenRig doesn't write. `configurationId()` and `packageDigest()` are exported from `@openrig/daemon/bundle-identity`.
71
+ Shared test vectors are in `schemas/fixtures/identity-vectors.json`.
72
+
73
+ ## The formats
74
+
75
+ | Format | Schema | Lives | Written by |
76
+ |---|---|---|---|
77
+ | Declared configurations | `bundle-configurations.v1` | `configurations.yaml` beside `rig.yaml` | the bundle's author |
78
+ | Before-install view | `bundle-behaviour.v1` (`openrig.bundle-behaviour/v1`) | the registry, one file per configuration and assembler version; never inside the archive | the daemon's inspect: `rig bundle inspect`, under `behaviour` with `--json` |
79
+ | Run record | `run-record.v1` | beside its receipt, private | Fleet, Dev QA, and maintainers for community reports |
80
+ | Public status | `bundle-status.v1` | `openrig-world` status, generated | the status generator only |
81
+ | Registry entry | `registry-entry.v1` | `openrig-world/registry/<slug>.yaml` | maintainers, through review |
82
+
83
+ ### Declared configurations
84
+
85
+ `seats` gives a `pod.member` the runtimes it may use, and the profile each runtime uses. A member it doesn't list keeps
86
+ the runtime `rig.yaml` gives it. `presets` names full mappings, and `recommended` names one of them, which must be
87
+ `rig.yaml` as written. `rig bundle create`, `rig bundle configurations` and `rig bundle check` refuse a file that breaks
88
+ these rules.
89
+
90
+ `--preset` and `--seat` choose a configuration (see the [rig bundle reference](rig-bundle.md)). Any mix of each seat's
91
+ declared runtimes can be built, not only the presets; a runtime a seat doesn't declare is refused, and nothing is built.
92
+ Without either flag, create builds `rig.yaml` as written. The built archive's manifest records
93
+ `configuration: { id, preset }` outside the package digest; `preset` is there only when `--preset` or `--seat` chose a
94
+ mapping that matches a declared preset.
95
+
96
+ ### Before-install view
97
+
98
+ It's derived from the archive's files alone. Nothing is launched, probed or fetched. It's a view, never a gate, and
99
+ carries no tested status.
100
+ - **`identity`:** source, configuration ID, package digest, the archive's assembler, the generator that made the view,
101
+ stated compatibility, stated provenance (not verified), and integrity (self-consistency, not authorship). A source,
102
+ configuration ID, package digest or assembler the archive doesn't state is `null`; unstated compatibility and
103
+ provenance are empty objects. None of it is filled from the inspecting OpenRig.
104
+ - **`team`, `posture`, `toldFiles`, `alsoRuns`, `writes`, `outsideAddresses`, `needs` and `unknownBeforeLaunch`**, in
105
+ that order. Facts cite the archive file they come from (`sourceRefs`), except `team` entries and the bundle-wide
106
+ unknowns. `toldFiles` and `alsoRuns` also say how each resolves: `archive`, `host_at_launch` or `unresolved`.
107
+ - Posture separates what the archive declares from the product's default. Its effect on the host is `unknown`,
108
+ because host settings decide it.
109
+ Optional `posture[].permissionPrompts` is `off` for declared `full_bypass` (including rig- or member-level
110
+ `builtin:yolo`) on any runtime; for Claude/Codex, `on` for a declared flag-surface floor policy or `default` when
111
+ no policy is declared (prompts on unless the installing machine's settings turn them off); for Codex, `on` for
112
+ declared `auto`. Omit it for Claude under auto (naming auto mode in `selection`), config-surface policies
113
+ (`builtin:locked`, `builtin:standard`, `builtin:open` or an archived `surface: config` policy), host-resolved
114
+ Codex profiles, `permission_policy: none`, a policy the archive can't resolve, and every runtime other than Claude
115
+ and Codex (Pi, terminal) except declared full bypass. `selection` names the declared policy.
116
+ An absent field means not stated, never `on`. For `off`, Claude
117
+ bypasses permissions, Codex runs with full access and never asks, and Pi gets full resource trust (`--approve`,
118
+ not a permission mode). These are archive facts; `nativeEffect` remains `unknown`.
119
+ Optional `posture[].firstRunWarnings.claudeBypass: "harness_asks_once"` names the first-run bypass warning for a
120
+ declared full-bypass Claude seat, conditional on whether the harness has remembered acceptance.
121
+ `posture[].nonInterruptive: "available"` says a full-bypass Claude/Codex seat can use
122
+ [non-interruptive launch flags](non-interruptive-mode.md). It does not select the option, read host acceptance
123
+ state or prove a prompt-free launch. Both fields are omitted where inapplicable or unresolved; older v1 views
124
+ remain valid without them. Pi has no additional warning-suppression flag. `nativeEffect` stays `unknown`.
125
+ - An empty list means none are known. Something unknown goes in `unknownBeforeLaunch`.
126
+ - Per-seat facts carry `seat` (`pod.member`) and human output labels them with that identity. It's required on
127
+ `team` and `posture`. Elsewhere it's optional: bundle-wide facts (services, library and project writes, setup and
128
+ version needs) omit it, and older generators may not have stated it.
129
+ - **`not_generated`:** a combination without a generated view, or an archive the generator can't describe: schema 1, no
130
+ readable pod-aware rig spec, a member missing its pod, id or agent reference, a runtime that depends on an AgentSpec
131
+ the archive can't read, or an error while reading. It carries a reason and the local command that shows it, and no
132
+ sections.
133
+
134
+ ### Declared setup preconditions
135
+
136
+ The author's `bundle.yaml`, beside `rig.yaml`, may declare setup that the user must do before installing:
137
+
138
+ ```yaml
139
+ preconditions:
140
+ - name: Run inside an OpenRig source clone with dependencies installed and packages built.
141
+ commands:
142
+ - git clone https://github.com/mvschwarz/openrig.git
143
+ - cd openrig
144
+ - npm ci
145
+ - npm run build
146
+ - name: Sign in to the selected coding runtimes before starting the team.
147
+ ```
148
+
149
+ Local-folder creation and GitHub-link imports carry these declarations into the archive manifest. A generated
150
+ before-install view lists each as `needs[]` with `kind: precondition`, the author's `name`, optional ordered `commands`,
151
+ `status: not_checked`, and a `sourceRefs` entry naming `bundle.yaml` and `preconditions[index]`. Inspect, plan and apply
152
+ previews show the same declaration. A legacy schema-1 archive retains it in the manifest, but its view remains
153
+ `not_generated`. Missing preconditions mean none were declared, not that no setup is needed.
154
+
155
+ Each command is one plain command line, without shell operators (`;`, `&&`, pipes, command substitution, backticks or
156
+ redirection). Run them in order in **one shell**, then run the install command in that same shell: it inherits the
157
+ working directory left by the setup commands. There is no separate `workdir` field. Commands are untrusted author data;
158
+ a site building a copyable block must validate every line and bound the number of entries, omitting all setup lines
159
+ if any fails its plain-command rule. OpenRig displays these declarations; it does not execute them, verify that setup
160
+ was done, or add a prerequisite gate. The archive hash covers the manifest; `packageDigest` excludes `bundle.yaml`
161
+ and therefore does not cover these declarations.
162
+
163
+ At creation, malformed preconditions produce a warning and the whole block is omitted; other author-field validation
164
+ is unchanged. Shell operators in otherwise valid command lines produce a warning, but the declarations are retained
165
+ as data. An already-built archive with malformed preconditions reports them as unknown before launch.
166
+
167
+ ### Run records and status
168
+
169
+ **A run record's subject** is either a team (source, configuration ID, package digest, assembler) or a harness check (a
170
+ runtime). A harness check never upgrades a team label.
171
+
172
+ **A run record's `environment.platform` and `arch`** are Node's `process.platform` (`linux`, `darwin` or `win32`) and
173
+ `process.arch` (`x64` or `arm64`): the values a status platform key can carry, so every valid record can be labelled.
174
+
175
+ **Records are private.** Only `outcome.publicNote` (a short public cause) reaches the status file.
176
+
177
+ **Relations:** `supersedes`, `withdraws` and `resolves`. Reusing earlier evidence for a changed package is a reviewer's
178
+ decision, recorded in the registry entry's `evidenceReuse`.
179
+
180
+ **The status file** is generated from records by rule `openrig.status-rule/v1`:
181
+ - **Labels:** `known_problem`, `tested`, `tested_with_help`, `partly_tested`, `not_tested` and `status_unavailable`.
182
+ They're shown as Known problem, Tested by OpenRig, Tested with help (N), Partly tested, Not tested by OpenRig
183
+ and Status unavailable.
184
+ - **A label belongs to one configuration ID.** No configuration is ever shown another configuration's label.
185
+ - **Empty `platforms`** means Not tested by OpenRig. So does a custom configuration, one the listing doesn't offer.
186
+ - **Status unavailable is only for a listed configuration** whose records can't be read, or that's missing from the
187
+ status file; never Not tested by OpenRig. A listing whose records can't be read is `status_unavailable` as a whole.
188
+ - **Platform keys** are `<os>-<arch>` (`linux`, `darwin` or `win32`; `x64` or `arm64`).
189
+ - **`tested` means no help was needed:** it can't carry an assistance count above zero.
190
+ - **An assist** is one action a person or the test runner took to get past a problem during the run, such as restarting a seat or re-running a command; following the bundle's own documented steps doesn't count.
191
+ - **The file holds no private paths, host names, row IDs, account names or receipt text,** and regenerating it gives
192
+ identical bytes.
193
+ - **`bodyDigest`** is SHA-256, lowercase hex, over the RFC 8785 (JCS) canonical JSON, as UTF-8, of an object holding
194
+ every other top-level field. The site import recomputes it and rejects a hand-edited file. `harnessChecks` has its own
195
+ `state`, so an unreadable harness-check record reads Status unavailable too.
196
+
197
+ ### Registry entries
198
+
199
+ Each entry records:
200
+ - the source at its reviewed commit;
201
+ - each offered configuration with its package digest, assembler and behaviour-view file;
202
+ - optional `evidenceReuse`;
203
+ - the review date, and `listed` or `withdrawn` (with `withdrawnOn`).
204
+
205
+ v1 has no author field: a listing shows the owner of `source.repository`.
206
+
207
+ A listing shows "Reviewed for listing on `<date>` at commit `<short>`. Review is not a security audit."