@openrig/cli 0.5.13 → 0.5.15

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 (434) hide show
  1. package/daemon/assets/plugins/openrig-core/skills/applying-a-permission-policy/SKILL.md +159 -108
  2. package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +40 -5
  3. package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +1 -0
  4. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  5. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +48 -14
  6. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  7. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  8. package/daemon/context-packs/skills/applying-a-permission-policy/SKILL.md +159 -108
  9. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +3 -3
  10. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  11. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  12. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  13. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  14. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  15. package/daemon/context-packs/skills/core/messaging-the-human/SKILL.md +40 -5
  16. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  17. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  18. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  19. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  20. package/daemon/context-packs/skills/core/openrig-skills/SKILL.md +1 -0
  21. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  22. package/daemon/context-packs/skills/core/openrig-software-factory/SKILL.md +138 -0
  23. package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +12 -0
  24. package/daemon/context-packs/skills/core/openrig-software-factory/references/worked-example.md +543 -0
  25. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  26. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  27. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  31. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  32. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  34. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  35. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  45. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  46. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  48. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  50. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  55. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  57. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  59. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  60. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  61. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  62. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  63. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  64. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  65. package/daemon/dist/adapters/codex-runtime-adapter.d.ts +5 -15
  66. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  67. package/daemon/dist/adapters/codex-runtime-adapter.js +79 -93
  68. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  69. package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -1
  70. package/daemon/dist/adapters/pi-runner-protocol.js +14 -9
  71. package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -1
  72. package/daemon/dist/adapters/pi-runner.d.ts +6 -15
  73. package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
  74. package/daemon/dist/adapters/pi-runner.js +151 -71
  75. package/daemon/dist/adapters/pi-runner.js.map +1 -1
  76. package/daemon/dist/attention-surface.d.ts +2 -0
  77. package/daemon/dist/attention-surface.d.ts.map +1 -1
  78. package/daemon/dist/attention-surface.js +2 -1
  79. package/daemon/dist/attention-surface.js.map +1 -1
  80. package/daemon/dist/build-info.js +3 -3
  81. package/daemon/dist/db/all-migrations.d.ts +1 -1
  82. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  83. package/daemon/dist/db/all-migrations.js +10 -2
  84. package/daemon/dist/db/all-migrations.js.map +1 -1
  85. package/daemon/dist/db/migrations/081_human_notification_intent.d.ts +3 -0
  86. package/daemon/dist/db/migrations/081_human_notification_intent.d.ts.map +1 -0
  87. package/daemon/dist/db/migrations/081_human_notification_intent.js +9 -0
  88. package/daemon/dist/db/migrations/081_human_notification_intent.js.map +1 -0
  89. package/daemon/dist/db/migrations/082_archive_identity_provenance.d.ts +5 -0
  90. package/daemon/dist/db/migrations/082_archive_identity_provenance.d.ts.map +1 -0
  91. package/daemon/dist/db/migrations/082_archive_identity_provenance.js +7 -0
  92. package/daemon/dist/db/migrations/082_archive_identity_provenance.js.map +1 -0
  93. package/daemon/dist/db/migrations/083_review_read_indexes.d.ts +4 -0
  94. package/daemon/dist/db/migrations/083_review_read_indexes.d.ts.map +1 -0
  95. package/daemon/dist/db/migrations/083_review_read_indexes.js +12 -0
  96. package/daemon/dist/db/migrations/083_review_read_indexes.js.map +1 -0
  97. package/daemon/dist/db/migrations/084_inventory_event_indexes.d.ts +5 -0
  98. package/daemon/dist/db/migrations/084_inventory_event_indexes.d.ts.map +1 -0
  99. package/daemon/dist/db/migrations/084_inventory_event_indexes.js +14 -0
  100. package/daemon/dist/db/migrations/084_inventory_event_indexes.js.map +1 -0
  101. package/daemon/dist/domain/bootstrap-orchestrator.js +2 -2
  102. package/daemon/dist/domain/bootstrap-orchestrator.js.map +1 -1
  103. package/daemon/dist/domain/execution-view.d.ts.map +1 -1
  104. package/daemon/dist/domain/execution-view.js +18 -5
  105. package/daemon/dist/domain/execution-view.js.map +1 -1
  106. package/daemon/dist/domain/gateway/connections-projection.d.ts +3 -3
  107. package/daemon/dist/domain/gateway/slack/message.d.ts +13 -12
  108. package/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -1
  109. package/daemon/dist/domain/gateway/slack/message.js +40 -77
  110. package/daemon/dist/domain/gateway/slack/message.js.map +1 -1
  111. package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts +2 -0
  112. package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts.map +1 -1
  113. package/daemon/dist/domain/gateway/slack/outbound-driver.js +2 -0
  114. package/daemon/dist/domain/gateway/slack/outbound-driver.js.map +1 -1
  115. package/daemon/dist/domain/gateway/slack/queue-access.d.ts +2 -0
  116. package/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -1
  117. package/daemon/dist/domain/gateway/slack/queue-access.js +2 -0
  118. package/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
  119. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +4 -1
  120. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -1
  121. package/daemon/dist/domain/gateway/slack/slack-delivery.js +85 -3
  122. package/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -1
  123. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  124. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +8 -1
  125. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  126. package/daemon/dist/domain/native-process-lineage.d.ts +23 -0
  127. package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
  128. package/daemon/dist/domain/native-process-lineage.js +84 -4
  129. package/daemon/dist/domain/native-process-lineage.js.map +1 -1
  130. package/daemon/dist/domain/policies/delivery-digest-flush.d.ts.map +1 -1
  131. package/daemon/dist/domain/policies/delivery-digest-flush.js +23 -3
  132. package/daemon/dist/domain/policies/delivery-digest-flush.js.map +1 -1
  133. package/daemon/dist/domain/proof/judgments.d.ts +10 -3
  134. package/daemon/dist/domain/proof/judgments.d.ts.map +1 -1
  135. package/daemon/dist/domain/proof/judgments.js +26 -8
  136. package/daemon/dist/domain/proof/judgments.js.map +1 -1
  137. package/daemon/dist/domain/queue-repository.d.ts +19 -6
  138. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  139. package/daemon/dist/domain/queue-repository.js +61 -11
  140. package/daemon/dist/domain/queue-repository.js.map +1 -1
  141. package/daemon/dist/domain/queue-retention.d.ts.map +1 -1
  142. package/daemon/dist/domain/queue-retention.js +6 -2
  143. package/daemon/dist/domain/queue-retention.js.map +1 -1
  144. package/daemon/dist/domain/queue-transition-log.d.ts +1 -0
  145. package/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
  146. package/daemon/dist/domain/queue-transition-log.js +19 -7
  147. package/daemon/dist/domain/queue-transition-log.js.map +1 -1
  148. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  149. package/daemon/dist/domain/restore-orchestrator.js +20 -3
  150. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  151. package/daemon/dist/domain/review/fleet-compose.d.ts +7 -6
  152. package/daemon/dist/domain/review/fleet-compose.d.ts.map +1 -1
  153. package/daemon/dist/domain/review/fleet-compose.js +25 -11
  154. package/daemon/dist/domain/review/fleet-compose.js.map +1 -1
  155. package/daemon/dist/domain/rigspec-instantiator.d.ts +18 -0
  156. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  157. package/daemon/dist/domain/rigspec-instantiator.js +109 -6
  158. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  159. package/daemon/dist/domain/scope/scope-view-projection.d.ts +2 -2
  160. package/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
  161. package/daemon/dist/domain/scope/scope-view-projection.js +2 -2
  162. package/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
  163. package/daemon/dist/domain/seat-attention-reconciler.d.ts +2 -6
  164. package/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
  165. package/daemon/dist/domain/seat-attention-reconciler.js +15 -6
  166. package/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
  167. package/daemon/dist/domain/seat-identity-reconciler.d.ts +5 -1
  168. package/daemon/dist/domain/seat-identity-reconciler.d.ts.map +1 -1
  169. package/daemon/dist/domain/seat-identity-reconciler.js +36 -10
  170. package/daemon/dist/domain/seat-identity-reconciler.js.map +1 -1
  171. package/daemon/dist/domain/seat-lifecycle-service.d.ts +3 -0
  172. package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  173. package/daemon/dist/domain/seat-lifecycle-service.js +3 -0
  174. package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  175. package/daemon/dist/domain/terminal/terminal-service.d.ts +2 -0
  176. package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -1
  177. package/daemon/dist/domain/terminal/terminal-service.js +4 -1
  178. package/daemon/dist/domain/terminal/terminal-service.js.map +1 -1
  179. package/daemon/dist/domain/workspace/project-read.d.ts +1 -1
  180. package/daemon/dist/domain/workspace/project-read.d.ts.map +1 -1
  181. package/daemon/dist/domain/workspace/project-read.js +24 -6
  182. package/daemon/dist/domain/workspace/project-read.js.map +1 -1
  183. package/daemon/dist/routes/attention.js +2 -2
  184. package/daemon/dist/routes/attention.js.map +1 -1
  185. package/daemon/dist/routes/queue.d.ts +4 -18
  186. package/daemon/dist/routes/queue.d.ts.map +1 -1
  187. package/daemon/dist/routes/queue.js +23 -33
  188. package/daemon/dist/routes/queue.js.map +1 -1
  189. package/daemon/dist/routes/review.js +1 -1
  190. package/daemon/dist/routes/rigs.js +5 -1
  191. package/daemon/dist/routes/rigs.js.map +1 -1
  192. package/daemon/dist/routes/scopes.d.ts.map +1 -1
  193. package/daemon/dist/routes/scopes.js +37 -28
  194. package/daemon/dist/routes/scopes.js.map +1 -1
  195. package/daemon/dist/routes/sessions.js +12 -1
  196. package/daemon/dist/routes/sessions.js.map +1 -1
  197. package/daemon/dist/routes/up.js +4 -4
  198. package/daemon/dist/routes/up.js.map +1 -1
  199. package/daemon/dist/startup.d.ts.map +1 -1
  200. package/daemon/dist/startup.js +11 -1
  201. package/daemon/dist/startup.js.map +1 -1
  202. package/daemon/docs/reference/agent-startup-guide.md +11 -3
  203. package/daemon/docs/reference/getting-started.md +211 -14
  204. package/daemon/docs/reference/rig-spec.md +7 -0
  205. package/daemon/policies/builtin/yolo.policy.md +14 -4
  206. package/daemon/specs/agents/shared/skills/core/messaging-the-human/SKILL.md +40 -5
  207. package/daemon/specs/agents/shared/skills/core/openrig-skills/SKILL.md +1 -0
  208. package/daemon/specs/agents/shared/skills/core/openrig-software-factory/SKILL.md +138 -0
  209. package/daemon/specs/agents/shared/skills/core/openrig-software-factory/references/worked-example.md +543 -0
  210. package/dist/build-info.js +3 -3
  211. package/dist/commands/launch.d.ts.map +1 -1
  212. package/dist/commands/launch.js +27 -2
  213. package/dist/commands/launch.js.map +1 -1
  214. package/dist/commands/queue.d.ts.map +1 -1
  215. package/dist/commands/queue.js +5 -1
  216. package/dist/commands/queue.js.map +1 -1
  217. package/dist/commands/up.d.ts.map +1 -1
  218. package/dist/commands/up.js +13 -2
  219. package/dist/commands/up.js.map +1 -1
  220. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.d.ts +5 -15
  221. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  222. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.js +79 -93
  223. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  224. package/node_modules/@openrig/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -1
  225. package/node_modules/@openrig/daemon/dist/adapters/pi-runner-protocol.js +14 -9
  226. package/node_modules/@openrig/daemon/dist/adapters/pi-runner-protocol.js.map +1 -1
  227. package/node_modules/@openrig/daemon/dist/adapters/pi-runner.d.ts +6 -15
  228. package/node_modules/@openrig/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
  229. package/node_modules/@openrig/daemon/dist/adapters/pi-runner.js +151 -71
  230. package/node_modules/@openrig/daemon/dist/adapters/pi-runner.js.map +1 -1
  231. package/node_modules/@openrig/daemon/dist/attention-surface.d.ts +2 -0
  232. package/node_modules/@openrig/daemon/dist/attention-surface.d.ts.map +1 -1
  233. package/node_modules/@openrig/daemon/dist/attention-surface.js +2 -1
  234. package/node_modules/@openrig/daemon/dist/attention-surface.js.map +1 -1
  235. package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
  236. package/node_modules/@openrig/daemon/dist/db/all-migrations.d.ts +1 -1
  237. package/node_modules/@openrig/daemon/dist/db/all-migrations.d.ts.map +1 -1
  238. package/node_modules/@openrig/daemon/dist/db/all-migrations.js +10 -2
  239. package/node_modules/@openrig/daemon/dist/db/all-migrations.js.map +1 -1
  240. package/node_modules/@openrig/daemon/dist/db/migrations/081_human_notification_intent.d.ts +3 -0
  241. package/node_modules/@openrig/daemon/dist/db/migrations/081_human_notification_intent.d.ts.map +1 -0
  242. package/node_modules/@openrig/daemon/dist/db/migrations/081_human_notification_intent.js +9 -0
  243. package/node_modules/@openrig/daemon/dist/db/migrations/081_human_notification_intent.js.map +1 -0
  244. package/node_modules/@openrig/daemon/dist/db/migrations/082_archive_identity_provenance.d.ts +5 -0
  245. package/node_modules/@openrig/daemon/dist/db/migrations/082_archive_identity_provenance.d.ts.map +1 -0
  246. package/node_modules/@openrig/daemon/dist/db/migrations/082_archive_identity_provenance.js +7 -0
  247. package/node_modules/@openrig/daemon/dist/db/migrations/082_archive_identity_provenance.js.map +1 -0
  248. package/node_modules/@openrig/daemon/dist/db/migrations/083_review_read_indexes.d.ts +4 -0
  249. package/node_modules/@openrig/daemon/dist/db/migrations/083_review_read_indexes.d.ts.map +1 -0
  250. package/node_modules/@openrig/daemon/dist/db/migrations/083_review_read_indexes.js +12 -0
  251. package/node_modules/@openrig/daemon/dist/db/migrations/083_review_read_indexes.js.map +1 -0
  252. package/node_modules/@openrig/daemon/dist/db/migrations/084_inventory_event_indexes.d.ts +5 -0
  253. package/node_modules/@openrig/daemon/dist/db/migrations/084_inventory_event_indexes.d.ts.map +1 -0
  254. package/node_modules/@openrig/daemon/dist/db/migrations/084_inventory_event_indexes.js +14 -0
  255. package/node_modules/@openrig/daemon/dist/db/migrations/084_inventory_event_indexes.js.map +1 -0
  256. package/node_modules/@openrig/daemon/dist/domain/bootstrap-orchestrator.js +2 -2
  257. package/node_modules/@openrig/daemon/dist/domain/bootstrap-orchestrator.js.map +1 -1
  258. package/node_modules/@openrig/daemon/dist/domain/execution-view.d.ts.map +1 -1
  259. package/node_modules/@openrig/daemon/dist/domain/execution-view.js +18 -5
  260. package/node_modules/@openrig/daemon/dist/domain/execution-view.js.map +1 -1
  261. package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.d.ts +3 -3
  262. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.d.ts +13 -12
  263. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -1
  264. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.js +40 -77
  265. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.js.map +1 -1
  266. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.d.ts +2 -0
  267. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.d.ts.map +1 -1
  268. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.js +2 -0
  269. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.js.map +1 -1
  270. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts +2 -0
  271. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -1
  272. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js +2 -0
  273. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
  274. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +4 -1
  275. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -1
  276. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.js +85 -3
  277. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -1
  278. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  279. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js +8 -1
  280. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  281. package/node_modules/@openrig/daemon/dist/domain/native-process-lineage.d.ts +23 -0
  282. package/node_modules/@openrig/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
  283. package/node_modules/@openrig/daemon/dist/domain/native-process-lineage.js +84 -4
  284. package/node_modules/@openrig/daemon/dist/domain/native-process-lineage.js.map +1 -1
  285. package/node_modules/@openrig/daemon/dist/domain/policies/delivery-digest-flush.d.ts.map +1 -1
  286. package/node_modules/@openrig/daemon/dist/domain/policies/delivery-digest-flush.js +23 -3
  287. package/node_modules/@openrig/daemon/dist/domain/policies/delivery-digest-flush.js.map +1 -1
  288. package/node_modules/@openrig/daemon/dist/domain/proof/judgments.d.ts +10 -3
  289. package/node_modules/@openrig/daemon/dist/domain/proof/judgments.d.ts.map +1 -1
  290. package/node_modules/@openrig/daemon/dist/domain/proof/judgments.js +26 -8
  291. package/node_modules/@openrig/daemon/dist/domain/proof/judgments.js.map +1 -1
  292. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts +19 -6
  293. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  294. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js +61 -11
  295. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js.map +1 -1
  296. package/node_modules/@openrig/daemon/dist/domain/queue-retention.d.ts.map +1 -1
  297. package/node_modules/@openrig/daemon/dist/domain/queue-retention.js +6 -2
  298. package/node_modules/@openrig/daemon/dist/domain/queue-retention.js.map +1 -1
  299. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.d.ts +1 -0
  300. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
  301. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.js +19 -7
  302. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.js.map +1 -1
  303. package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  304. package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.js +20 -3
  305. package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  306. package/node_modules/@openrig/daemon/dist/domain/review/fleet-compose.d.ts +7 -6
  307. package/node_modules/@openrig/daemon/dist/domain/review/fleet-compose.d.ts.map +1 -1
  308. package/node_modules/@openrig/daemon/dist/domain/review/fleet-compose.js +25 -11
  309. package/node_modules/@openrig/daemon/dist/domain/review/fleet-compose.js.map +1 -1
  310. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts +18 -0
  311. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  312. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js +109 -6
  313. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  314. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.d.ts +2 -2
  315. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
  316. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js +2 -2
  317. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
  318. package/node_modules/@openrig/daemon/dist/domain/seat-attention-reconciler.d.ts +2 -6
  319. package/node_modules/@openrig/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
  320. package/node_modules/@openrig/daemon/dist/domain/seat-attention-reconciler.js +15 -6
  321. package/node_modules/@openrig/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
  322. package/node_modules/@openrig/daemon/dist/domain/seat-identity-reconciler.d.ts +5 -1
  323. package/node_modules/@openrig/daemon/dist/domain/seat-identity-reconciler.d.ts.map +1 -1
  324. package/node_modules/@openrig/daemon/dist/domain/seat-identity-reconciler.js +36 -10
  325. package/node_modules/@openrig/daemon/dist/domain/seat-identity-reconciler.js.map +1 -1
  326. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.d.ts +3 -0
  327. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  328. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.js +3 -0
  329. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  330. package/node_modules/@openrig/daemon/dist/domain/terminal/terminal-service.d.ts +2 -0
  331. package/node_modules/@openrig/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -1
  332. package/node_modules/@openrig/daemon/dist/domain/terminal/terminal-service.js +4 -1
  333. package/node_modules/@openrig/daemon/dist/domain/terminal/terminal-service.js.map +1 -1
  334. package/node_modules/@openrig/daemon/dist/domain/workspace/project-read.d.ts +1 -1
  335. package/node_modules/@openrig/daemon/dist/domain/workspace/project-read.d.ts.map +1 -1
  336. package/node_modules/@openrig/daemon/dist/domain/workspace/project-read.js +24 -6
  337. package/node_modules/@openrig/daemon/dist/domain/workspace/project-read.js.map +1 -1
  338. package/node_modules/@openrig/daemon/dist/routes/attention.js +2 -2
  339. package/node_modules/@openrig/daemon/dist/routes/attention.js.map +1 -1
  340. package/node_modules/@openrig/daemon/dist/routes/queue.d.ts +4 -18
  341. package/node_modules/@openrig/daemon/dist/routes/queue.d.ts.map +1 -1
  342. package/node_modules/@openrig/daemon/dist/routes/queue.js +23 -33
  343. package/node_modules/@openrig/daemon/dist/routes/queue.js.map +1 -1
  344. package/node_modules/@openrig/daemon/dist/routes/review.js +1 -1
  345. package/node_modules/@openrig/daemon/dist/routes/rigs.js +5 -1
  346. package/node_modules/@openrig/daemon/dist/routes/rigs.js.map +1 -1
  347. package/node_modules/@openrig/daemon/dist/routes/scopes.d.ts.map +1 -1
  348. package/node_modules/@openrig/daemon/dist/routes/scopes.js +37 -28
  349. package/node_modules/@openrig/daemon/dist/routes/scopes.js.map +1 -1
  350. package/node_modules/@openrig/daemon/dist/routes/sessions.js +12 -1
  351. package/node_modules/@openrig/daemon/dist/routes/sessions.js.map +1 -1
  352. package/node_modules/@openrig/daemon/dist/routes/up.js +4 -4
  353. package/node_modules/@openrig/daemon/dist/routes/up.js.map +1 -1
  354. package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
  355. package/node_modules/@openrig/daemon/dist/startup.js +11 -1
  356. package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
  357. package/node_modules/@openrig/daemon/package.json +1 -1
  358. package/package.json +1 -1
  359. package/tui/dist/attention/attention-model.d.ts +19 -0
  360. package/tui/dist/attention/attention-model.d.ts.map +1 -1
  361. package/tui/dist/attention/attention-model.js +46 -5
  362. package/tui/dist/attention/attention-model.js.map +1 -1
  363. package/tui/dist/attention/source-continuity.d.ts +9 -0
  364. package/tui/dist/attention/source-continuity.d.ts.map +1 -0
  365. package/tui/dist/attention/source-continuity.js +38 -0
  366. package/tui/dist/attention/source-continuity.js.map +1 -0
  367. package/tui/dist/commands/help.d.ts.map +1 -1
  368. package/tui/dist/commands/help.js +1 -0
  369. package/tui/dist/commands/help.js.map +1 -1
  370. package/tui/dist/commands/registry.d.ts.map +1 -1
  371. package/tui/dist/commands/registry.js +3 -2
  372. package/tui/dist/commands/registry.js.map +1 -1
  373. package/tui/dist/config/config-model.js +1 -1
  374. package/tui/dist/config/config-model.js.map +1 -1
  375. package/tui/dist/connections/connections-model.js +1 -1
  376. package/tui/dist/connections/connections-model.js.map +1 -1
  377. package/tui/dist/daemon-client.d.ts +15 -2
  378. package/tui/dist/daemon-client.d.ts.map +1 -1
  379. package/tui/dist/daemon-client.js +14 -5
  380. package/tui/dist/daemon-client.js.map +1 -1
  381. package/tui/dist/demo-data.d.ts.map +1 -1
  382. package/tui/dist/demo-data.js +1 -0
  383. package/tui/dist/demo-data.js.map +1 -1
  384. package/tui/dist/execution/execution-model.d.ts +1 -0
  385. package/tui/dist/execution/execution-model.d.ts.map +1 -1
  386. package/tui/dist/execution/execution-model.js +88 -119
  387. package/tui/dist/execution/execution-model.js.map +1 -1
  388. package/tui/dist/hydrate.d.ts.map +1 -1
  389. package/tui/dist/hydrate.js +40 -25
  390. package/tui/dist/hydrate.js.map +1 -1
  391. package/tui/dist/live.d.ts +3 -1
  392. package/tui/dist/live.d.ts.map +1 -1
  393. package/tui/dist/live.js +66 -7
  394. package/tui/dist/live.js.map +1 -1
  395. package/tui/dist/main.js +50 -7
  396. package/tui/dist/main.js.map +1 -1
  397. package/tui/dist/navigator.d.ts.map +1 -1
  398. package/tui/dist/navigator.js +14 -3
  399. package/tui/dist/navigator.js.map +1 -1
  400. package/tui/dist/page-read.d.ts +19 -0
  401. package/tui/dist/page-read.d.ts.map +1 -0
  402. package/tui/dist/page-read.js +84 -0
  403. package/tui/dist/page-read.js.map +1 -0
  404. package/tui/dist/pulse/pulse-model.d.ts.map +1 -1
  405. package/tui/dist/pulse/pulse-model.js +3 -4
  406. package/tui/dist/pulse/pulse-model.js.map +1 -1
  407. package/tui/dist/render.d.ts +5 -0
  408. package/tui/dist/render.d.ts.map +1 -1
  409. package/tui/dist/render.js +60 -14
  410. package/tui/dist/render.js.map +1 -1
  411. package/tui/dist/scopes/scopes-model.d.ts +2 -0
  412. package/tui/dist/scopes/scopes-model.d.ts.map +1 -1
  413. package/tui/dist/scopes/scopes-model.js +8 -2
  414. package/tui/dist/scopes/scopes-model.js.map +1 -1
  415. package/tui/dist/sections.d.ts +2 -0
  416. package/tui/dist/sections.d.ts.map +1 -1
  417. package/tui/dist/sections.js +6 -3
  418. package/tui/dist/sections.js.map +1 -1
  419. package/tui/dist/startup.d.ts +4 -1
  420. package/tui/dist/startup.d.ts.map +1 -1
  421. package/tui/dist/startup.js +41 -15
  422. package/tui/dist/startup.js.map +1 -1
  423. package/tui/dist/state.d.ts.map +1 -1
  424. package/tui/dist/state.js +30 -18
  425. package/tui/dist/state.js.map +1 -1
  426. package/tui/dist/stylize.d.ts.map +1 -1
  427. package/tui/dist/stylize.js +18 -27
  428. package/tui/dist/stylize.js.map +1 -1
  429. package/tui/dist/terminals/terminal-model.d.ts +2 -0
  430. package/tui/dist/terminals/terminal-model.d.ts.map +1 -1
  431. package/tui/dist/terminals/terminal-model.js +28 -10
  432. package/tui/dist/terminals/terminal-model.js.map +1 -1
  433. package/tui/dist/types.d.ts +12 -1
  434. package/tui/dist/types.d.ts.map +1 -1
@@ -1,117 +1,168 @@
1
1
  ---
2
2
  name: applying-a-permission-policy
3
- description: "Use when a permission policy is attached to a rig/seat (rig.yaml permission_policy:), or a user asks you to apply one, and you must translate that harness-neutral policy into the target harness's LIVE permission config — Claude settings.json / Codex config.toml / Pi run flags. Agent-driven and interactive: you read the policy, ground yourself in YOUR harness version, show the diff, and ask before writing. NOT for defining policies (that's the policy spec) and NOT a set-and-forget updater."
3
+ description: >-
4
+ Use when a user asks an agent to configure OpenRig command permissions, reduce
5
+ repeated native approval prompts, or apply a selected rig/seat permission policy.
4
6
  metadata:
5
7
  openrig:
6
8
  stage: established
7
- tested_against: # VERSION STAMP — the whole point; re-verify at every harness bump
8
- claude_code: "2.1.220 — VM-CONFIRMED 2026-08-03 (all cells)"
9
- codex: "0.120.0 — VM-CONFIRMED 2026-08-03 (sandbox_mode/approval_policy; on-failure deprecated-but-accepted)"
10
- pi: "0.83.0 — VM-CONFIRMED 2026-08-03: --approve/--no-approve govern PROJECT-RESOURCE TRUST, NOT tool permissions; Pi has NO permission surface (see Pi leg)"
11
- verification_status: "Historical compatibility checks on the versions and dates in tested_against. These observations do not establish behavior on a later harness; verify its current format before applying the mapping."
9
+ docs_checked: "2026-09-25"
10
+ verification_status: "Verify the installed harness version and effective settings; a rule-parser result is not a native permission test."
12
11
  ---
13
12
 
14
13
  # Applying a permission policy
15
14
 
16
- ## Translation is best-effort — read this first
17
- This skill provides the policy schema and OpenRig's best current understanding of how to translate it to each harness. That guidance is **best-effort and version-stamped**: harness permission surfaces change frequently across versions, so a mapping that is correct today can drift on a later release. When you apply a config-surface policy:
18
- - **Verify against the current docs for your installed harness version.** Treat this skill's tables as version-stamped starting points (see `tested_against`), not settled truth.
19
- - **Prefer testing in a protected or disposable environment first.** An incorrect write can lock a seat out or over-permit it, so confirm the format before applying it to a live seat.
20
- - **Hand-editing via the harness's own settings tools is always a valid path.** If a translation is uncertain, setting the policy directly — or asking the user to — is a legitimate outcome, not a failure.
21
-
22
- The reliable, deterministic parts are the **blunt instruments**: the YOLO full-bypass flag and the floor (Claude `acceptEdits` / Codex `workspace-write`), which ride the stable launch-flag surface. **Fine-grained config-rule translation — the allow/ask/deny prefix rules and the Codex posture — is the best-effort part** and carries no guarantee of exact fidelity. If a translation looks wrong, fall back to a blunt instrument or a direct hand-edit.
23
-
24
- ## ⚠ Read this preamble first — why this is a SKILL, not a script (do not "improve" it into a deterministic updater)
25
- Harness permission formats are a **moving target**. The exact fact this skill is stamped against — Claude Code 2.1.220 permission rules are **prefix-only** (no flag-precise Bash match) — is *version-specific*; the rule grammar can change on the next point release. A hardcoded/deterministic updater would foot-gun the instant it does, and a wrong permission write can **lock a seat out or silently over-permit it**. So the maintained artifact is this caveated, version-stamped skill that an agent reads and applies **interactively, grounding in the live format** — never a code path that writes blindly. If you are tempted to replace this with a deterministic projector: that temptation is the bug this preamble exists to stop.
26
-
27
- ## When to reach for this
28
- - A rig/seat has a policy attached (`rig.yaml … permission_policy: <file>`), and you're at **setup/preflight** — apply it (**mandatory for autonomous seats**, see the freeze warning).
29
- - A user asks "apply the Standard/Open/Locked/Operator policy here" or "set up permissions like <host>".
30
- - NOT for authoring policies (that's the policy spec) and NOT for daemon-level enforcement (OpenRig is agnostic — it injects nothing).
31
-
32
- ## What you're translating (the boundary)
33
- INPUT = a **harness-neutral policy spec** (semantic action schema): `default_posture`, `floor`, `allow`/`ask`/`deny` as **semantic actions** (`push_to_remote`, `delete_files`, …), `destructive_class`, `source: builtin|custom`. You TRANSLATE that intent → the harness's live config. You never invent policy; you never pre-bake harness config into the spec.
34
-
35
- ## The apply flow (interactive — the interactive-ask IS the product)
36
- 1. **Read the policy spec** + its `source:` marker (built-in read-only from the package = copy-to-customize before editing; custom = user space).
37
- 2. **PREFLIGHT (mandatory) — ground yourself in THIS environment:**
38
- - **daemon-HOME must equal seat-HOME**, or a user-level Claude write never reaches the seat. Check; if they differ, **stop and ask** — do not write into the wrong HOME.
39
- - Read the harness's **actual current config file** + confirm its schema against your installed version (`claude --version`, the live settings.json shape, codex/pi versions). If the format differs from this skill's `tested_against`, trust the LIVE format and flag the drift.
40
- 3. **Derive the per-harness config** from the semantic actions (see the three legs below). Compute the Codex posture-collapse + Pi bit.
41
- 4. **Show the concrete DIFF before writing** (old → new, per file). Never a blind write.
42
- 5. **Resolve best-effort actions by the built-in's rule FIRST, then ask only on genuine ambiguity.** Best-effort destructive actions (`force_push`, `delete_files`, `delete_everything`, `read_secrets`) default to **`ask`** (never a `deny` that can't be enforced) — apply that default rather than stopping to question-back. Surface a question only when the policy is genuinely ambiguous or the seat is interactive. **For a same-prefix collision (`push_to_remote` vs `force_push`, both `Bash(git push:*)`), NEVER ask — apply the deterministic PREFIX-COLLISION rule in the Claude leg.** On a Claude-only fleet, if the policy denies `network_egress`, **say so explicitly**: it is NOT enforceable — Claude has no network gate, a `Bash(curl:*)`/`Bash(wget:*)` deny is best-effort, and `python`/`node` fetch bypasses it (live-verified: `urllib` reached HTTPS 200 under a curl/wget deny). Route real egress-gating to the Codex sandbox, or record it as advisory on Claude.
43
- 6. **Back up the current config**, then write. Prefer the **user-level** file (`~/.claude/settings.json`) for durable policy — it's the clobber-resistant tier (deny wins across the union). **ALWAYS include `defaultMode: "acceptEdits"` in the Claude settings.json you write** — the floor key must be PRESENT in the file, or the config policy strips the floor.
44
- 7. **Verify** the write landed and the seat can see it (re-read; confirm `defaultMode: "acceptEdits"` is present; for an autonomous seat, confirm no `ask` will freeze it).
45
-
46
- ## Two surfaces — and this skill writes only ONE of them
47
- Permissions live on two surfaces with opposite stability — which is the whole reason for the agent-driven split:
48
- - **LAUNCH-FLAG surface — STABLE (>1yr) → OpenRig sets it DETERMINISTICALLY, NOT this skill.** The flags OpenRig passes at boot: Claude `--permission-mode` / `--dangerously-skip-permissions`; Codex sandbox/bypass flags; Pi `--approve`/`--no-approve`. **Two things live here, both OpenRig-owned: the FLOOR (minimum, by default) and YOLO (full bypass, opt-in).**
49
- - **CONFIG-FILE surface — CHAOTIC → NEVER deterministic → THIS SKILL'S DOMAIN.** Claude `settings.json` allow/ask/deny + defaultMode; Codex `config.toml` approval rules. This is where the Locked / Standard / Open policies get applied — agent-driven, version-stamped, caveated. (Pi has **no permission surface at all** — its `--approve`/`--no-approve` flags govern project-resource trust, not tool permissions (VM-confirmed Pi 0.83.0); a permission policy does not translate to Pi. See the Pi leg.)
50
-
51
- **THE FLOOR (launch-flag, OpenRig-set — this skill KNOWS it, never WRITES it):** Claude `--permission-mode acceptEdits` (keep it); **Codex workspace-only** (stop forcing `danger-full-access` — ≈ Codex's own default ≈ setting-nothing = agnostic); Pi `--no-approve` (a project-resource-trust floor — Pi has no permission gate; see the Pi leg). **One consistent unconditional minimum**. A chosen config-file policy layers ON TOP of the floor.
52
-
53
- **YOLO MODE (launch-flag, OpenRig-set, opt-in — for people done with permissions):** OpenRig boots every seat with the full-bypass flag (Claude `--dangerously-skip-permissions`; Codex full-bypass). **When YOLO is on, CONFIG-FILE POLICY IS MOOT** — this skill does NOT apply a config policy (or explicitly notes it's overridden by the flag); don't fight the bypass. YOLO is OpenRig's deterministic job, not this skill's. (**Operator = YOLO mode** — subsumed.)
54
-
55
- ## The three harness legs (skill-owned mapping knowledge, version-stamped + caveated)
56
-
57
- ### Claude — `~/.claude/settings.json` (user-level, clobber-resistant)
58
- - **Action → prefix map** (VM-CONFIRMED @ Claude 2.1.220, 2026-08-03 — every row exercised through real Claude tool calls). `fidelity`: `clean` = the prefix honors intent; `best_effort` = prefix-only can't fully enforce → prefer `ask`, never a `deny` that lies.
59
-
60
- | Semantic action | `permissions.*` prefix rule(s) | fidelity |
61
- |---|---|---|
62
- | push_to_remote | `Bash(git push:*)` | clean |
63
- | force_push | ask the flag-first forms `Bash(git push --force:*)` `Bash(git push -f:*)` `Bash(git push --force-with-lease:*)`; base `Bash(git push:*)` follows push_to_remote (see the collision rule) | **best_effort** — catches flag-FIRST force; flag-LAST (`git push origin main --force`) leaks |
64
- | create_pr | `Bash(gh pr create:*)` | clean |
65
- | publish_package | `Bash(npm publish:*)` `Bash(pnpm publish:*)` `Bash(yarn publish:*)` `Bash(cargo publish:*)` | clean (multi-pattern) |
66
- | merge_or_release | `Bash(git merge:*)` `Bash(git tag:*)` `Bash(gh release:*)` | best_effort — protected-branch semantics not expressible |
67
- | delete_files | `Bash(rm:*)` | **best_effort** — target-first leak (`rm <t> -rf` slips); scope not boundable → default `ask` |
68
- | delete_everything | `Bash(rm -rf:*)` `Bash(rm -fr:*)` | **best_effort** — same leak → default to `ask`, never a silent deny |
69
- | reset_or_discard_vcs | `Bash(git reset:*)` `Bash(git clean:*)` `Bash(git checkout:*)` `Bash(git branch -D:*)` | best_effort |
70
- | drop_persistent_store | `Bash(dropdb:*)` `Bash(docker volume rm:*)` (+ project-specific) | best_effort (open-ended) → `ask` |
71
- | rig_up / rig_down | `Bash(rig up:*)` / `Bash(rig down:*)` | clean — ⚠ an `ask` here FREEZES an autonomous seat |
72
- | mutate_topology | `Bash(rig add:*)` `Bash(rig remove:*)` `Bash(rig rename:*)` | clean |
73
- | run_toolchain | `Bash(npm:*)` `Bash(npx:*)` `Bash(pnpm:*)` `Bash(yarn:*)` `Bash(node:*)` `Bash(tsc:*)` `Bash(vitest:*)` `Bash(jest:*)` | clean (the known set) |
74
- | run_arbitrary_shell | `Bash(*)` — this IS the `default_posture` knob | clean |
75
- | network_egress | `Bash(curl:*)` `Bash(wget:*)` (partial) | **best_effort** — Claude has NO native network gate; real floor = Codex sandbox (route it there) |
76
- | read_secrets | `Read(./.env)` `Read(~/.ssh/**)` `Read(**/*secret*)` (path-scoped) | **best_effort** — path-based, not secret-aware |
77
- | install_dependencies | `Bash(npm install:*)` `Bash(pip install:*)` `Bash(brew install:*)` | clean |
78
- - **PREFIX-ONLY caveat** — cannot flag-precisely gate (`force_push` vs `push_to_remote` both match `Bash(git push:*)`); **target-first leak** (`rm <target> -rf` slips a `Bash(rm -rf*)` deny). Actions marked `best_effort` in the taxonomy (`force_push`, `delete_files`, `read_secrets`) → surface the caveat and prefer `ask` over a `deny` you can't enforce (a `deny` that leaks lies).
79
- - **PREFIX-COLLISION resolution (deterministic — resolve it, NEVER ask).** When two actions collapse to the SAME base prefix with different dispositions — the canonical case is `push_to_remote`=allow + `force_push`=ask, both basing to `Bash(git push:*)` — you cannot put that base prefix in both `allow` and `ask`. Resolve without a question-back:
80
- - **Push allowed + force asked (Standard / Open):** put the base `Bash(git push:*)` per push's disposition (`allow`), AND add the flag-first force forms to `ask` (`Bash(git push --force:*)`, `Bash(git push -f:*)`, `Bash(git push --force-with-lease:*)`). RECORD in your diff that this is best-effort — flag-LAST force (`git push origin main --force`) leaks past the flag-first ask rules and runs under the allow. Don't block on it.
81
- - **Push denied (Locked):** `Bash(git push:*)` in `deny` already covers force — no conflict.
82
- This is a FIXED rule, not a user decision — apply it and note the leak.
83
- - **`defaultMode: "acceptEdits"` is the FLOOR and MUST be written into every Claude settings.json you produce.** It is not a knob you tune, but it IS a key you must always include — a config policy that omits it strips the floor. Live-confirmed schema: `{"permissions":{"allow":[],"ask":[],"deny":[],"defaultMode":"acceptEdits"}}`.
84
-
85
- ### Codex — `~/.codex/config.toml` (via the existing `codex_config_fragment` splice path — reuse, don't invent)
86
- - Codex is **per-posture, not per-action**: the whole action set **collapses** to the nearest `{sandbox_mode, approval_policy}` pair. **Built-in → posture** (VM-CONFIRMED @ Codex 0.120.0, 2026-08-03 — each posture applied to a real seat: read-only blocked writes+egress, workspace-write allowed writes/blocked egress, danger-full-access allowed both):
87
-
88
- | Built-in | `sandbox_mode` | `approval_policy` | Collapse note (surface this to the user) |
89
- |---|---|---|---|
90
- | Locked | `read-only` | `on-request` | read-only blocks all writes + egress, prompts on escalation — OVER-restricts `edit_files` vs the Claude floor |
91
- | Standard ⭐ | `workspace-write` | `on-request` | workspace writes allowed, egress blocked by sandbox, prompt on escalation — UNDER-gates `create_pr` (no per-action ask; folds into the prompt) |
92
- | Open | `danger-full-access` | `on-failure` | everything allowed, prompt only on failure — OVER-permits the `destructive_class` vs the Claude ask-gates |
93
- | YOLO | *(flag-surface — full-bypass launch flag, NOT config.toml)* | — | not a config write; the rip-out adapter owns it |
94
-
95
- Valid values (VM-confirmed @ Codex 0.120.0): `sandbox_mode` ∈ {read-only, workspace-write, danger-full-access}; `approval_policy` ∈ {on-request, on-failure, never, untrusted, granular} (`granular` observed live at 0.120.0). ⚠ `on-failure` (used by Open) is marked **deprecated** in 0.120.0 help but still accepted — revisit if a future Codex drops it.
96
- - Surface the collapse: "Codex can't gate per-action; this policy becomes sandbox=X approval=Y, which over-permits Z / under-permits W."
97
-
98
- ### Pi — NO permission surface at all (VM-confirmed Pi 0.83.0 — the earlier "approval bit" reading was WRONG)
99
- - **Pi has no tool-permission gate — neither a config store NOR a permission-posture flag.** Live verification confirmed: Pi 0.83.0's `--approve`/`-a` and `--no-approve`/`-na` govern **project-resource trust** (whether project extensions/resources appear in RPC `get_commands`), **NOT** tool-call approval. There is no sandbox or permission mechanism to map a policy onto.
100
- - So a permission policy **does not translate to Pi**. Do NOT say `--approve` = "auto-approve all", or that a posture "collapses to a Pi approval bit" — that was an earlier misread, corrected here. This skill computes **nothing** for Pi.
101
- - Whatever the OpenRig adapter sets (`--no-approve` by default) is a project-resource-trust floor, not a permission posture — not this skill's to derive.
102
- - Behavior to know (resource-trust, NOT permission-gating): under default ask / `--no-approve`, a project resource is silently **absent** from RPC `get_commands`; it appears under `--approve`. Never mistake that for permission enforcement.
103
- - **Say this to the user for a Pi seat:** "Pi has no permission-policy surface today — the policy applies to Claude/Codex; Pi runs under its project-resource-trust flag unchanged."
104
-
105
- ## ⚠ The two warnings that save real fleets
106
- - **`ask` FREEZES an autonomous/headless Claude seat** — it hangs on the first non-edit op. So for autonomous fleets apply **Open/YOLO** (or a policy with no asks) **at setup** — the floor only covers edits; bash still asks without an applied policy. Never leave an autonomous seat on a policy with live `ask` gates. (Pi has no permission ask at all — see the Pi leg; Codex prompts per its posture, not per-action.)
107
- - **daemon-HOME ≠ seat-HOME** silently voids user-level writes — always the preflight check above.
108
-
109
- ## The built-ins — DEFINED by the shipped policy spec files (translate FROM the spec; POINT, don't COPY)
110
- The four built-in policies ship as read-only spec files (`source: builtin`, `policy_schema_version: 1`) — they are the AUTHORITATIVE definitions. **Do NOT restate their action-sets here.** The selected spec supplies the action sets; a second copy in this skill can diverge. Read the attached/selected spec and translate its semantic-action sets (`default_posture` / `allow` / `ask` / `deny` / `destructive_class`) per the three legs above.
111
- - **Locked / Standard ⭐ / Open** — `surface: config`. Translate to the Claude / Codex config surface. **Standard ⭐** is the recommended default: routine dev incl. push allowed, the outward/release/history-rewriting acts (`create_pr`, `publish_package`, `merge_or_release`, `force_push`) ASK, destructive_class ASKs. Standard has live `ask` gates → not for a headless-autonomous Claude seat (use Open or YOLO). Locked = deny-default whitelist; Open = allow-default, destructive_class asks only.
112
- - **YOLO** — `surface: flag`, `launch_posture: full_bypass`. This skill does **NOT** translate it — it points at OpenRig's deterministic flag-surface opt-in (the rip-out YOLO setting). When YOLO is on, any config-surface policy is MOOT (the bypass overrides it). (Subsumes the former "Operator".)
113
-
114
- Built-ins ship read-only in the package (canonical names); copy-to-customize into user space (custom, user-named); the `source:` frontmatter marker travels on copy. Onboarding presents these as a required MENU (explain each + ask which; no-choice = the floor).
115
-
116
- ## Boundary (keeps this the only maintained piece)
117
- This skill TRANSLATES + APPLIES only. It does **not** define policies (the policy spec does) and does **not** enforce at the daemon (OpenRig is agnostic). Spec = *what* (neutral intent); this skill = *how, on this harness version* (the caveated, version-stamped translation).
15
+ Configure the user's chosen permissions in the harness that runs the agent.
16
+ OpenRig operating posture, native command rules, sandbox access and launch flags
17
+ are separate controls. A command rule grants execution capability, not authority
18
+ to invent tasks, publish work or change another host.
19
+
20
+ ## Choose the intended scope
21
+
22
+ Use an existing explicit choice; otherwise explain these options and ask which
23
+ the user wants. Do not ask again for routine steps already authorized.
24
+
25
+ | Choice | What the agent configures |
26
+ | --- | --- |
27
+ | Keep prompts | Preserve current native settings and handle requests when they arise. |
28
+ | Remember selected commands | Add native allow rules for the chosen family or narrower verbs, leaving other rules and sandbox settings intact. |
29
+ | Broader permissive operation | Explain filesystem/network exposure and configure only the explicitly selected native mode and compatible launch settings. |
30
+
31
+ **Allowing the whole `rig` family covers all its verbs**, including lifecycle,
32
+ topology/config changes and commands that can launch other processes. It is not
33
+ a read-only grant. Offer narrower prefixes such as `rig ps` or `rig queue list`
34
+ when that better fits the request. Do not widen a choice to arbitrary shell
35
+ execution, an entire interpreter or a generic shell wrapper.
36
+
37
+ ## Apply the choice for the user
38
+
39
+ 1. Identify the target seat, executable/version, launch settings and config roots:
40
+ `HOME`, `CODEX_HOME` or `CLAUDE_CONFIG_DIR` as applicable. They may differ between
41
+ operator, daemon and seat. Resolve the intended user's/project's files before
42
+ writing; do not repair another home to make the paths agree.
43
+ 2. Read relevant existing permission rules and managed restrictions. Select the
44
+ intended scope: one project or the user's sessions. Consult installed native
45
+ help and official references below when formats differ.
46
+ 3. Prepare a concrete diff. Preserve deny/ask rules, approval/sandbox posture,
47
+ hooks, auth, MCP, model settings and unrelated values. An allow must not erase
48
+ a stricter rule or managed requirement. Report a real conflict instead of
49
+ silently bypassing it.
50
+ 4. Back up touched files and merge only authorized additions, avoiding duplicates.
51
+ The agent performs these edits; hand-editing is an option, not a required user
52
+ chore. Apply the selected scope without another conversational permission round.
53
+ Native enforcement still applies.
54
+ 5. Read back the diff and validate the format. Confirm how that version loads
55
+ changes. If it requires a new session, preserve work and use its supported
56
+ resume path within the user's authority; a file write does not prove that an
57
+ existing conversation loaded it.
58
+ 6. Verify an ordinary matching operation twice in the target conversation and
59
+ check that an unrelated command gained no matching rule. Use harmless reads,
60
+ not destructive probes. Report effective settings and remaining prompts.
61
+ A parser match alone does not establish native behavior.
62
+
63
+ For rollback, remove only this setup's additions, preserving later unrelated
64
+ edits. Builtin policy specs remain read-only; customize in user space.
65
+
66
+ ## Codex command rules
67
+
68
+ Codex command rules can allow matching commands outside the sandbox without
69
+ another prompt. They leave other sandbox/network settings unchanged.
70
+ Check `codex --version` and `codex execpolicy check --help`.
71
+ See the [official rules reference](https://learn.chatgpt.com/docs/agent-configuration/rules).
72
+
73
+ Choose the destination **before writing**, according to the user's scope:
74
+
75
+ - **This project only:** verify the installed version supports project rules and
76
+ derive this session's actual project/worktree config root and trust state.
77
+ Current docs describe `<repo>/.codex/rules/` in a trusted project config layer.
78
+ Use that layer only after confirming it is supported, active and trusted for
79
+ the intended project. If any of those facts is unsupported or unverified,
80
+ report the limitation and leave user-layer rules unchanged; do not silently
81
+ mark a project trusted or substitute a user-wide allowance.
82
+ - **Explicitly user-wide:** use `rules/` under the target user's actual
83
+ `CODEX_HOME` (normally `~/.codex/rules`). This can affect other projects using
84
+ that home. The TUI's remember-allow action also writes a user-layer rule;
85
+ do not use it to implement a project-only request.
86
+
87
+ Merge the chosen rule into a `.rules` file in the selected layer. The prefix
88
+ itself has no project restriction; even a project-layer rule does not constrain
89
+ which targets an allowed `rig` command can affect:
90
+
91
+ ```python
92
+ prefix_rule(pattern = ["rig"], decision = "allow")
93
+ ```
94
+
95
+ For narrower access use `["rig", "ps"]` or `["rig", "queue", "list"]`, adjusting
96
+ examples. For absolute-path invocations, derive the target seat's actual `rig`
97
+ executable and add that exact path as a separate prefix; a bare rule does not
98
+ match it. Never copy another machine's path.
99
+
100
+ ```sh
101
+ codex execpolicy check --pretty --rules /absolute/path/to/openrig.rules -- rig ps --json
102
+ codex execpolicy check --pretty --rules /absolute/path/to/openrig.rules -- printf permission-check
103
+ ```
104
+
105
+ Inspect matches, not only exit status; repeat `--rules` for other effective
106
+ files. A matching `prompt` or `forbidden` overrides allow. Verify rule loading
107
+ in the target conversation after the required reload. For project-only scope,
108
+ confirm the layer is active there and absent from an unrelated project's active
109
+ layers. An evaluator given an explicit `--rules` file proves matching, not that
110
+ scope or automatic loading. Existing user-wide rules may already permit the
111
+ same command: preserve and disclose them, attribute matches, and do not claim
112
+ project isolation or remove those rules without a separate authorized choice.
113
+
114
+ The standalone evaluator checks supplied argv; native shell parsing can split
115
+ ordinary commands/chains first. A raw `zsh -lc` non-match does not prove that
116
+ native `rig && rig` fails. Verify both surfaces without broadening the rule to
117
+ `bash`, `sh`, `node` or generic wrappers.
118
+
119
+ ## Claude Code command rules
120
+
121
+ Check `claude --version` and [official permission syntax](https://code.claude.com/docs/en/permissions).
122
+ Merge the chosen entry into existing `permissions.allow`; this fragment is not
123
+ a replacement settings file:
124
+
125
+ ```json
126
+ {
127
+ "permissions": {
128
+ "allow": ["Bash(rig *)"]
129
+ }
130
+ }
131
+ ```
132
+
133
+ Current syntax uses ` *` for a command family; `Bash(rig:*)` is also supported.
134
+ Narrower examples are `Bash(rig ps *)` and `Bash(rig queue list *)`.
135
+ Preserve `deny`/`ask` entries and `defaultMode`; do not add `Bash(*)` or switch
136
+ to bypass to resolve a mismatch. Inspect native `/permissions` and verify the
137
+ actual command spelling.
138
+
139
+ Choose scope using the [settings reference](https://code.claude.com/docs/en/settings):
140
+ `.claude/settings.local.json` for personal project settings,
141
+ `.claude/settings.json` for deliberately shared project settings, or
142
+ `settings.json` under the target's `CLAUDE_CONFIG_DIR` (normally `~/.claude`).
143
+ Confirm the effective project root, especially for worktrees. Keep personal
144
+ settings out of commits. Managed restrictions and sandbox/network controls
145
+ still apply; a Bash allow is not a general network policy.
146
+
147
+ ## Existing policies and broader modes
148
+
149
+ For a named policy, read its actual `permission_policy` spec and `source` marker.
150
+ Translate intended actions using supported native controls; do not collapse all
151
+ Codex policies to a single posture or claim shell patterns perfectly express
152
+ semantic actions such as force-push. Preserve stricter rules. If exact translation
153
+ is unavailable, explain the remaining choice instead of selecting broader access.
154
+
155
+ For explicitly chosen broader operation, inspect
156
+ `rig policy current --spec <user-owned-rig.yaml>` and the compatible getting-started guide's **Opt-in permissive
157
+ operation** section. OpenRig's Codex `builtin:yolo` supplies `-s danger-full-access`;
158
+ it does not itself select `approval_policy` and replaces a named
159
+ `codex_config_profile` argument. Claude's corresponding launch flag is
160
+ `--dangerously-skip-permissions`. Neither a resource `profile: default` nor OpenRig
161
+ operating posture is a native permission policy. Do not change shipped defaults
162
+ or assume editing a launch spec changes an existing seat.
163
+
164
+ A headless seat may wait at a native prompt. Arrange an answer path or choose
165
+ suitable command rules; unattended work is not implicit consent to bypass.
166
+ For Pi, the previously supported `--approve`/`--no-approve` surface concerns
167
+ project-resource trust, not shell permissions; verify its installed capabilities
168
+ instead of treating those flags as a command allowlist.
@@ -42,16 +42,44 @@ Check readiness: configured, enabled, active, ready, reason, and next action.
42
42
  `indeterminate` is not ready. Follow the reported next inspection; do not enable
43
43
  or reconfigure a connector merely to make the check pass.
44
44
 
45
- Write the decision, evidence, and continuation in a body file. The sole outbound
46
- human-message primitive is:
45
+ Author for the person reading on a phone: a short subject in `--summary`, then
46
+ one complete brief in `--body-file`. State why it matters, your recommendation
47
+ and material tradeoff, the bounded action if approved, and the choice requested.
48
+ For an update, state the user-visible outcome and “No action needed.” Aim for
49
+ roughly 100–150 words; this is guidance, not a semantic validator. Keep technical
50
+ continuation, exact candidate/revision and evidence on the owning agent row and
51
+ in the durable artifact behind `--evidence-ref`. A local path is not a phone link
52
+ and Markdown evidence files are not automatically attached.
53
+
54
+ For example, a synthetic brief could say:
55
+
56
+ > The repaired status view is ready. I recommend updating this instance; live
57
+ > status will briefly pause. Sessions will be preserved. Approve this instance
58
+ > update, or hold? Supporting test detail follows in this thread.
59
+
60
+ This example grants no authority. Choose `--human-intent decision` for a request
61
+ or `--human-intent update` for a quiet FYI. Omission retains legacy decision
62
+ behavior; words such as “FYI” and tags do not change intent.
63
+
64
+ The sole outbound human-message primitive is:
47
65
 
48
66
  ```bash
49
67
  rig queue create --destination <entityId>@external \
50
- --summary "<decision or update>" --body-file <packet-file> \
68
+ --human-intent decision --summary "<short subject>" --body-file <brief-file> \
51
69
  --evidence-ref <durable-evidence> --verify --json
52
70
  ```
53
71
 
54
- If an existing agent-owned row must wait, block it on the **new live qitem ID**
72
+ An optional `--human-detail-file <path>` supplies one coherent supplemental
73
+ reply in the same thread. Announce its purpose in the brief; the product also
74
+ marks that a detail reply follows. The primary must already contain the complete
75
+ scope, options and action. Do not split an agent dump blindly or move the essential
76
+ choice into overflow. Rendering checks every part and its accessibility fallback
77
+ before posting; an oversized request is refused with a field-specific correction,
78
+ never silently clipped. Shorten the brief or related detail as directed. Inspect
79
+ the failed row, then deliberately cancel/replace the authored request if its
80
+ content needs correction; a timeout alone is never a reason to replace it.
81
+
82
+ If an existing agent-owned row must wait for a **decision**, block it on the **new live qitem ID**
55
83
  (`rig queue block <work-id> --on <human-qitem-id> ...`), not on the human address.
56
84
  Completion of the human qitem resumes its dependants. Blocking on the human as
57
85
  well would issue another notification for the same decision.
@@ -66,7 +94,14 @@ or blindly resend because verification timed out.
66
94
  rig queue transitions <qitem-id>
67
95
  ```
68
96
 
69
- A correlated reply binds to that exact human and qitem and records the resolution
97
+ For `update`, confirmed complete delivery may close the delivery obligation.
98
+ It creates no approval obligation and cannot be used as a decision blocker.
99
+ Delivered updates remain queryable for Feed; a failure or ambiguous send stays
100
+ separate. A root message alone does not prove supplemental delivery. Retries
101
+ reconcile stable part identities and send only missing parts. An FYI reply is
102
+ not a human decision.
103
+
104
+ For a decision, a correlated reply binds to that exact human and qitem and records the resolution
70
105
  that resumes the owner. Check the recorded result before claiming the decision
71
106
  arrived; a delivery receipt alone is not acceptance.
72
107
 
@@ -71,6 +71,7 @@ These are auto-delivered to every rig; their name+description are already in you
71
71
  ### Load when your role or task calls for it (repo-shipped, profile-selected)
72
72
  These ship in the OpenRig repo and reach a seat when its profile selects them. To use one, select it in your profile's `uses.skills`, or open it directly at `packages/daemon/specs/agents/shared/skills/core/<skill>/SKILL.md`.
73
73
 
74
+ - **openrig-software-factory** — a user wants continuing reviewed work: manual/team, queue-only orchestration or an explicit Workflow; add one or two seats to the running starter when useful, with context, ownership, concurrency, spend and permission limits. Load `rig context get skills/core/openrig-software-factory/SKILL.md`.
74
75
  - **openrig-architect** — authoring a rig or topology (NOT for changing OpenRig itself — that's `openrig-builder`).
75
76
  - **openrig-cmux** — driving the `cmux` terminal provider.
76
77
  - **openrig-herdr** — opening/managing seat terminals via the default proof-gated provider.
@@ -1,6 +1,6 @@
1
1
  # Public capability and source-map width for the default onboarding walk.
2
2
  name: onboarding-width
3
- version: "0.5.13"
3
+ version: "0.5.15"
4
4
  taxonomy: world
5
5
  purpose: "The public capability map and source map referenced by the default onboarding walk."
6
6
  files:
@@ -11,7 +11,7 @@ not know exists.** So the point of what follows is not skill. It is recognition:
11
11
  lands, something rhymes, and you go check instead of building.
12
12
 
13
13
  Eighty-one-plus top-level verbs ship (capability canon refreshed through
14
- `capability-delta-v0.5.13`). This marker describes the pack's teaching, not publication or live
14
+ `capability-delta-v0.5.14-r6`). This marker describes the pack's teaching, not publication or live
15
15
  adoption. Read this once for shape, and let it make you suspicious that a thing already exists.
16
16
  Model-divergence proclamations are live product (trust them; pins use canonical
17
17
  model IDs).
@@ -100,8 +100,10 @@ unseen — which makes messages the one delivery channel that never gets skipped
100
100
  someone lists the stream before starting.
101
101
  - **`rig terminal open <view>`** — bring every live agent in a rig, mission or slice up as real
102
102
  typeable tiles at once.
103
- In the TUI, **TERMINALS** lists Saved and Derived views. Select a view to inspect its members,
104
- layout and pages; preview is passive. **Open in Herdr** deliberately opens the inspected plan
103
+ In the TUI, **TERMINALS** keeps Saved views prominent and Derived groups collapsed until
104
+ expanded. Names load before detailed readiness. Select a view to inspect its members,
105
+ layout and pages; preview is passive. Saved membership requires deliberate setup.
106
+ **Open in Herdr** deliberately opens the inspected plan
105
107
  and reports opened, absent or degraded members. Help or a side trip returns to the same preview.
106
108
  - **`rig walk <seat> --through <files> --pace <n>`** — deliver context pieces through
107
109
  file-backed terminal paste. When the current native generation record resolves, the complete
@@ -295,18 +297,29 @@ because someone lost work once.
295
297
  - **`rig doctor`** — is the *installation* wired up correctly, or are you chasing a bug that is
296
298
  really a broken install. **`rig preflight`** asks whether this machine can run OpenRig at all.
297
299
  - **Bare `rig`** — the same TUI for first setup, daemon-down startup and ordinary work.
300
+ A positive observation of a running rig enters ordinary work without a repeated Startup choice.
301
+ With no running rig, the chooser remains; slow or unverified detection does not mean stopped.
302
+ A late observation never takes navigation away after you have chosen another route.
298
303
  **?** Help, **w** Skip and **L** Local reading remain usable during slow probes or loading,
299
304
  and when the daemon is down or unverified. Local reading shows selected disk intent with
300
305
  provenance and read errors; it does not substitute for live queue, execution or topology data.
301
306
  These reading controls do not start a daemon or resume seats; skipping an already accepted
302
307
  operation does not cancel it.
303
- Enter starts only the selected daemon; then choose rigs and individual seats, with kernel
304
- recommended first. Previously occupied seats default to their authoritative conversation.
308
+ In startup, Enter starts only the selected daemon; then choose rigs and individual seats,
309
+ with kernel recommended first. Previously occupied seats default to their authoritative conversation.
305
310
  Missing history, ambiguous identity and unavailable authentication have distinct explanations;
306
311
  a fresh conversation requires a separate named confirmation. Declining launches nothing.
307
312
  **o** opens the existing native terminal here to handle its prompts; detach to return.
308
313
  If a fresh start paused before context delivery, **c** finishes that same occupant’s context.
309
314
  **r** refreshes actual state and **d** expands diagnostics. **S** returns to startup from work.
315
+ Ordinary views keep the navigator usable through page/rig changes and slow or failed reads.
316
+ Topology offers rig selection first, then loads that rig before unrelated fleet details.
317
+ While a new page loads, useful prior content can remain under its original scope label with
318
+ no action targets. First visits retain navigation and local loading/error feedback.
319
+ During refresh or failure, previously loaded content in the same scope stays useful, with its last
320
+ successful read time and Retry. A failed Feed source retains its contribution while healthy
321
+ sources update; confirmed denial, empty results or removals clear affected content. Late responses cannot
322
+ replace another page or project's data, and surviving selection and scroll stay in place.
310
323
  - **`rig crash-cart`** — the read-only daemon verdict and saved-state discovery used by that UI.
311
324
  An unavailable runtime, unauthorized endpoint or unreadable state is not an empty instance.
312
325
  - **`rig snapshot`** — take a restore point **before** the risky thing. `snapshot list` shows what
@@ -362,10 +375,23 @@ scheme, and nothing downstream can see it.
362
375
  `rig tui`, **PROJECTS** → choose a project → mission → slice shows the work story with row
363
376
  drill-in, current source and Escape back. Project IDs and roots distinguish equal display
364
377
  names; an unavailable project read does not substitute another project's work.
365
- - **TUI ATTENTION** — inspect **Action required** separately from **Updates**. Requests and
366
- explicit human blockers show what decision is needed and what work it unblocks; outcome and
367
- health updates retain their source and history. Open detail and evidence, then Back. Reading
368
- does not approve or deliver a request, and queue closure alone does not accept an outcome.
378
+ The mission overview puts outcomes, current work/owner, blockers, next dependencies and
379
+ readable slice boxes before process prose. Accepted required proof judgments determine
380
+ completion; attached evidence, quiet activity and handoff do not. Reopened and assigned
381
+ unfinished work stays open even when no unassigned next slice exists. Actual custody and
382
+ planned ownership remain distinct, as do outcome completion and mission lifecycle or
383
+ publication. Unknown owners and eligibility stay unknown. Narrow views keep boxes and scroll.
384
+ Malformed mission or slice sources stay visible as local unavailable entries while healthy
385
+ neighbors remain readable. Open the affected source to inspect it, then refresh after correction.
386
+ - **TUI Feed** — inspect **Human requests** separately from **Updates**, with the scope shown as
387
+ **Instance / All humans**. Explorer lists these categories; their entries appear in the
388
+ content pane. Human destinations and explicit human blockers show the recipient,
389
+ relevant project, needed decision and work it unblocks; agent priority alone is not a human
390
+ request. Confirmed delivered quiet FYIs remain in a bounded update window after their delivery
391
+ obligation closes, with a receipt and **No action needed**. Failed or ambiguous delivery is not
392
+ delivered history. Existing outcome and health updates retain their source and history.
393
+ Open detail and evidence, then Back. Reading does not approve or deliver a request, and queue
394
+ closure alone does not accept an outcome. Direct `attention`, `needs` and `feed` commands remain.
369
395
  - **`rig scope slice ls` / `show` / `create`** — the same at the altitude where work is actually
370
396
  buildable. `show` gives you intent, frontmatter and children without guessing which of five files
371
397
  to open.
@@ -400,6 +426,7 @@ scheme, and nothing downstream can see it.
400
426
  policy acceptance, higher outcome judgment and publication remain separate decisions.
401
427
  - **`rig workspace doctor` / `validate`** — does the daemon agree with you about where the work
402
428
  tree is, and which files are missing the frontmatter their kind requires.
429
+ - **OpenRig Software Factory** — when a first team needs continuing reviewed work or one or two more seats in its running rig; covers queue-only and optional Workflow paths, context/work ownership, wake and token costs, permissions, and optional custom-rig authoring. Discover the bundled recipe with `rig context show skills/core/openrig-software-factory --json`, then load `rig context get skills/core/openrig-software-factory/SKILL.md`; use guidance compatible with the installed build.
403
430
  - **`rig context work-install --project … --mission … --slice … [--deliver]`** — resolves the ordered
404
431
  System World, topology, and Project World plan. Add `--runtime` to see the composed managed skill
405
432
  loadout, `--apply-skills` to reconcile its owned harness projection, or `--deliver` to emit the
@@ -492,6 +519,9 @@ reaching them is ordinary work rather than an escalation.
492
519
  pending, failed, or indeterminate delivery leaves the row intact. Inspect the same row's
493
520
  transitions before retrying. `rig send` remains agent-terminal delivery only.
494
521
  - **When project policy calls for human judgment or an update, load `messaging-the-human`.**
522
+ Use `rig context get skills/core/messaging-the-human/SKILL.md` for a complete decision brief,
523
+ related supplemental detail and explicit quiet-update intent. An FYI creates no approval
524
+ obligation; writing “FYI” in ordinary request prose does not select that intent.
495
525
  System World teaches these mechanics; Project World decides when and why they apply.
496
526
  Existing `<entityId>@host` blockers are internal custody labels mapped through the registry
497
527
  to the external participant, not a separate outbound route.
@@ -552,22 +582,26 @@ your circumstances is configuration, and the ones that are not, another agent ca
552
582
  Open the instance row for one continuous cross-rig agent table with pod separators and material
553
583
  `RECENT` transitions; drill into a rig, mission, slice, or agent without losing the owning
554
584
  identity. Use the mission's workflow/packet view and Specs purpose/source to understand work.
555
- In **Specs**, selection previews purpose, contents and provenance; Enter opens details.
585
+ In **Specs**, kind groups start collapsed and expand explicitly. Selection previews purpose,
586
+ contents and provenance; Enter opens details.
556
587
  **View current source** reads disk within the explicitly configured readable roots. Relative
557
588
  Markdown links resolve against that source; headings open with a labelled starting point.
558
589
  Escape or `back` restores the caller's selection and scroll. Detail uses the full width on
559
590
  narrow terminals. The TUI command `read <root>/<path>#heading` also opens a named source;
560
591
  missing, denied, binary, truncated and missing-heading results stay explicit. HTTP(S) links
561
592
  show a selectable destination without opening a browser; `v` enables terminal text selection.
562
- Tab completes commands and snapshot arguments; Recent opens original events. **CONFIG**
563
- browses instance/work roots, context, display, waiting, recovery, activity and advanced settings;
593
+ Tab completes commands and snapshot arguments; Recent opens original events. **System** opens
594
+ to instance **Health**, with **Configuration** and **Connections** beneath it. Contextual Health
595
+ remains available in the owning rig or agent view. **Configuration** browses instance/work
596
+ roots, context, display, waiting, recovery, activity and advanced settings;
564
597
  Slack and people are one category. Select a category, use right/left to change panes,
565
598
  Enter for full value/default/source/scope, `/` to search labels and keys, and Escape or `back`
566
599
  to return. Long detail scrolls; `v` enables terminal text selection. `refresh` reads the current
567
600
  view again without changing settings or verifying delivery. Sources & coverage names exclusions,
568
601
  daemon/CLI identity and the client timezone separately. Resolved settings do not prove runtime
569
- adoption. The legacy `connections` command still inspects gateway services and human routes;
570
- dated verification does not prove delivery. `timezone` gives persistent local-time guidance.
602
+ adoption. Direct `config` and `connections` commands remain; Connections inspects gateway
603
+ services and human routes. Dated verification does not prove delivery. `timezone` gives
604
+ persistent local-time guidance.
571
605
  **?** opens full-screen Help with command grammar and examples; Escape returns to the caller.
572
606
  **`rig tui commands`** lists everything it can do without launching it. **`rig ui open`** is
573
607
  unmaintained, best-effort, and replaced by the TUI, so never diagnose product behaviour from
@@ -1,7 +1,7 @@
1
1
  # GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
2
2
  # Package-time projection of a canonical skill; regenerated every build.
3
3
  name: "agent-operated-software"
4
- version: "0.5.13"
4
+ version: "0.5.15"
5
5
  taxonomy: "skills"
6
6
  purpose: "Use when designing, building, operating, or diagnosing an ongoing application whose live backend or control loop includes OpenRig agents, including applications with a Markdown, YAML, or JSON agent control plane or a thin surface over specialist agent roles."
7
7
  files:
@@ -1,7 +1,7 @@
1
1
  # GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
2
2
  # Package-time projection of a canonical skill; regenerated every build.
3
3
  name: "agent-operated-workflows"
4
- version: "0.5.13"
4
+ version: "0.5.15"
5
5
  taxonomy: "skills"
6
6
  purpose: "Use when a bounded real-world procedure has a deterministic happy path but brownfield, variable, or partially knowable state; when an operation must resume from verified evidence; or when deciding whether agent judgment or ordinary code should own a procedure's control loop."
7
7
  files: