@openrig/cli 0.5.14 → 0.5.16

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 (244) 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/openrig-skills/SKILL.md +1 -0
  3. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  4. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +1 -0
  5. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  6. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  7. package/daemon/context-packs/skills/applying-a-permission-policy/SKILL.md +159 -108
  8. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +3 -3
  9. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  10. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  11. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  12. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  13. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  14. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  15. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  16. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  17. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  18. package/daemon/context-packs/skills/core/openrig-skills/SKILL.md +1 -0
  19. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  20. package/daemon/context-packs/skills/core/openrig-software-factory/SKILL.md +138 -0
  21. package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +12 -0
  22. package/daemon/context-packs/skills/core/openrig-software-factory/references/worked-example.md +543 -0
  23. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  24. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  25. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  26. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  27. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  31. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  32. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  34. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  35. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  45. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  46. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  48. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  50. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  55. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  57. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  59. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  60. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  61. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  62. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  63. package/daemon/dist/adapters/claude-code-adapter.js +5 -5
  64. package/daemon/dist/adapters/claude-code-adapter.js.map +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/build-info.js +3 -3
  77. package/daemon/dist/db/all-migrations.d.ts +1 -1
  78. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  79. package/daemon/dist/db/all-migrations.js +4 -2
  80. package/daemon/dist/db/all-migrations.js.map +1 -1
  81. package/daemon/dist/db/migrations/085_rig_claude_managed_block_file.d.ts +13 -0
  82. package/daemon/dist/db/migrations/085_rig_claude_managed_block_file.d.ts.map +1 -0
  83. package/daemon/dist/db/migrations/085_rig_claude_managed_block_file.js +17 -0
  84. package/daemon/dist/db/migrations/085_rig_claude_managed_block_file.js.map +1 -0
  85. package/daemon/dist/domain/bootstrap-orchestrator.js +2 -2
  86. package/daemon/dist/domain/bootstrap-orchestrator.js.map +1 -1
  87. package/daemon/dist/domain/managed-blocks.d.ts +3 -0
  88. package/daemon/dist/domain/managed-blocks.d.ts.map +1 -1
  89. package/daemon/dist/domain/managed-blocks.js +5 -0
  90. package/daemon/dist/domain/managed-blocks.js.map +1 -1
  91. package/daemon/dist/domain/native-process-lineage.d.ts +23 -0
  92. package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
  93. package/daemon/dist/domain/native-process-lineage.js +84 -4
  94. package/daemon/dist/domain/native-process-lineage.js.map +1 -1
  95. package/daemon/dist/domain/projection-planner.d.ts +2 -1
  96. package/daemon/dist/domain/projection-planner.d.ts.map +1 -1
  97. package/daemon/dist/domain/projection-planner.js +3 -2
  98. package/daemon/dist/domain/projection-planner.js.map +1 -1
  99. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  100. package/daemon/dist/domain/restore-orchestrator.js +20 -3
  101. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  102. package/daemon/dist/domain/rig-repository.d.ts +6 -0
  103. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  104. package/daemon/dist/domain/rig-repository.js +16 -0
  105. package/daemon/dist/domain/rig-repository.js.map +1 -1
  106. package/daemon/dist/domain/rig-teardown.d.ts.map +1 -1
  107. package/daemon/dist/domain/rig-teardown.js +6 -5
  108. package/daemon/dist/domain/rig-teardown.js.map +1 -1
  109. package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
  110. package/daemon/dist/domain/rigspec-codec.js +2 -0
  111. package/daemon/dist/domain/rigspec-codec.js.map +1 -1
  112. package/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -1
  113. package/daemon/dist/domain/rigspec-exporter.js +3 -0
  114. package/daemon/dist/domain/rigspec-exporter.js.map +1 -1
  115. package/daemon/dist/domain/rigspec-instantiator.d.ts +18 -0
  116. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  117. package/daemon/dist/domain/rigspec-instantiator.js +120 -7
  118. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  119. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  120. package/daemon/dist/domain/rigspec-schema.js +23 -1
  121. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  122. package/daemon/dist/domain/runtime-adapter.d.ts +2 -0
  123. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  124. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  125. package/daemon/dist/domain/seat-attention-reconciler.d.ts +2 -6
  126. package/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
  127. package/daemon/dist/domain/seat-attention-reconciler.js +15 -6
  128. package/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
  129. package/daemon/dist/domain/seat-identity-reconciler.d.ts +5 -1
  130. package/daemon/dist/domain/seat-identity-reconciler.d.ts.map +1 -1
  131. package/daemon/dist/domain/seat-identity-reconciler.js +36 -10
  132. package/daemon/dist/domain/seat-identity-reconciler.js.map +1 -1
  133. package/daemon/dist/domain/seat-lifecycle-service.d.ts +3 -0
  134. package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  135. package/daemon/dist/domain/seat-lifecycle-service.js +3 -0
  136. package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  137. package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  138. package/daemon/dist/domain/startup-orchestrator.js +8 -0
  139. package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  140. package/daemon/dist/domain/types.d.ts +4 -0
  141. package/daemon/dist/domain/types.d.ts.map +1 -1
  142. package/daemon/dist/routes/sessions.js +12 -1
  143. package/daemon/dist/routes/sessions.js.map +1 -1
  144. package/daemon/dist/routes/up.js +4 -4
  145. package/daemon/dist/routes/up.js.map +1 -1
  146. package/daemon/docs/reference/agent-startup-guide.md +11 -3
  147. package/daemon/docs/reference/getting-started.md +211 -14
  148. package/daemon/docs/reference/rig-spec.md +38 -0
  149. package/daemon/policies/builtin/yolo.policy.md +14 -4
  150. package/daemon/specs/agents/shared/skills/core/openrig-skills/SKILL.md +1 -0
  151. package/daemon/specs/agents/shared/skills/core/openrig-software-factory/SKILL.md +138 -0
  152. package/daemon/specs/agents/shared/skills/core/openrig-software-factory/references/worked-example.md +543 -0
  153. package/dist/build-info.js +3 -3
  154. package/dist/commands/launch.d.ts.map +1 -1
  155. package/dist/commands/launch.js +27 -2
  156. package/dist/commands/launch.js.map +1 -1
  157. package/dist/commands/up.d.ts.map +1 -1
  158. package/dist/commands/up.js +13 -2
  159. package/dist/commands/up.js.map +1 -1
  160. package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.js +5 -5
  161. package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  162. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.d.ts +5 -15
  163. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  164. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.js +79 -93
  165. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  166. package/node_modules/@openrig/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -1
  167. package/node_modules/@openrig/daemon/dist/adapters/pi-runner-protocol.js +14 -9
  168. package/node_modules/@openrig/daemon/dist/adapters/pi-runner-protocol.js.map +1 -1
  169. package/node_modules/@openrig/daemon/dist/adapters/pi-runner.d.ts +6 -15
  170. package/node_modules/@openrig/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
  171. package/node_modules/@openrig/daemon/dist/adapters/pi-runner.js +151 -71
  172. package/node_modules/@openrig/daemon/dist/adapters/pi-runner.js.map +1 -1
  173. package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
  174. package/node_modules/@openrig/daemon/dist/db/all-migrations.d.ts +1 -1
  175. package/node_modules/@openrig/daemon/dist/db/all-migrations.d.ts.map +1 -1
  176. package/node_modules/@openrig/daemon/dist/db/all-migrations.js +4 -2
  177. package/node_modules/@openrig/daemon/dist/db/all-migrations.js.map +1 -1
  178. package/node_modules/@openrig/daemon/dist/db/migrations/085_rig_claude_managed_block_file.d.ts +13 -0
  179. package/node_modules/@openrig/daemon/dist/db/migrations/085_rig_claude_managed_block_file.d.ts.map +1 -0
  180. package/node_modules/@openrig/daemon/dist/db/migrations/085_rig_claude_managed_block_file.js +17 -0
  181. package/node_modules/@openrig/daemon/dist/db/migrations/085_rig_claude_managed_block_file.js.map +1 -0
  182. package/node_modules/@openrig/daemon/dist/domain/bootstrap-orchestrator.js +2 -2
  183. package/node_modules/@openrig/daemon/dist/domain/bootstrap-orchestrator.js.map +1 -1
  184. package/node_modules/@openrig/daemon/dist/domain/managed-blocks.d.ts +3 -0
  185. package/node_modules/@openrig/daemon/dist/domain/managed-blocks.d.ts.map +1 -1
  186. package/node_modules/@openrig/daemon/dist/domain/managed-blocks.js +5 -0
  187. package/node_modules/@openrig/daemon/dist/domain/managed-blocks.js.map +1 -1
  188. package/node_modules/@openrig/daemon/dist/domain/native-process-lineage.d.ts +23 -0
  189. package/node_modules/@openrig/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
  190. package/node_modules/@openrig/daemon/dist/domain/native-process-lineage.js +84 -4
  191. package/node_modules/@openrig/daemon/dist/domain/native-process-lineage.js.map +1 -1
  192. package/node_modules/@openrig/daemon/dist/domain/projection-planner.d.ts +2 -1
  193. package/node_modules/@openrig/daemon/dist/domain/projection-planner.d.ts.map +1 -1
  194. package/node_modules/@openrig/daemon/dist/domain/projection-planner.js +3 -2
  195. package/node_modules/@openrig/daemon/dist/domain/projection-planner.js.map +1 -1
  196. package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  197. package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.js +20 -3
  198. package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  199. package/node_modules/@openrig/daemon/dist/domain/rig-repository.d.ts +6 -0
  200. package/node_modules/@openrig/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  201. package/node_modules/@openrig/daemon/dist/domain/rig-repository.js +16 -0
  202. package/node_modules/@openrig/daemon/dist/domain/rig-repository.js.map +1 -1
  203. package/node_modules/@openrig/daemon/dist/domain/rig-teardown.d.ts.map +1 -1
  204. package/node_modules/@openrig/daemon/dist/domain/rig-teardown.js +6 -5
  205. package/node_modules/@openrig/daemon/dist/domain/rig-teardown.js.map +1 -1
  206. package/node_modules/@openrig/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
  207. package/node_modules/@openrig/daemon/dist/domain/rigspec-codec.js +2 -0
  208. package/node_modules/@openrig/daemon/dist/domain/rigspec-codec.js.map +1 -1
  209. package/node_modules/@openrig/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -1
  210. package/node_modules/@openrig/daemon/dist/domain/rigspec-exporter.js +3 -0
  211. package/node_modules/@openrig/daemon/dist/domain/rigspec-exporter.js.map +1 -1
  212. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts +18 -0
  213. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  214. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js +120 -7
  215. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  216. package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  217. package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.js +23 -1
  218. package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.js.map +1 -1
  219. package/node_modules/@openrig/daemon/dist/domain/runtime-adapter.d.ts +2 -0
  220. package/node_modules/@openrig/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  221. package/node_modules/@openrig/daemon/dist/domain/runtime-adapter.js.map +1 -1
  222. package/node_modules/@openrig/daemon/dist/domain/seat-attention-reconciler.d.ts +2 -6
  223. package/node_modules/@openrig/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
  224. package/node_modules/@openrig/daemon/dist/domain/seat-attention-reconciler.js +15 -6
  225. package/node_modules/@openrig/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
  226. package/node_modules/@openrig/daemon/dist/domain/seat-identity-reconciler.d.ts +5 -1
  227. package/node_modules/@openrig/daemon/dist/domain/seat-identity-reconciler.d.ts.map +1 -1
  228. package/node_modules/@openrig/daemon/dist/domain/seat-identity-reconciler.js +36 -10
  229. package/node_modules/@openrig/daemon/dist/domain/seat-identity-reconciler.js.map +1 -1
  230. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.d.ts +3 -0
  231. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  232. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.js +3 -0
  233. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  234. package/node_modules/@openrig/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  235. package/node_modules/@openrig/daemon/dist/domain/startup-orchestrator.js +8 -0
  236. package/node_modules/@openrig/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  237. package/node_modules/@openrig/daemon/dist/domain/types.d.ts +4 -0
  238. package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
  239. package/node_modules/@openrig/daemon/dist/routes/sessions.js +12 -1
  240. package/node_modules/@openrig/daemon/dist/routes/sessions.js.map +1 -1
  241. package/node_modules/@openrig/daemon/dist/routes/up.js +4 -4
  242. package/node_modules/@openrig/daemon/dist/routes/up.js.map +1 -1
  243. package/node_modules/@openrig/daemon/package.json +1 -1
  244. package/package.json +1 -1
@@ -5,6 +5,15 @@ Start with a repository and one bounded change you can exercise. The shipped
5
5
  an independent checker. It uses your installed Codex executable and login;
6
6
  terminal-provider support does not change the harness or account being used.
7
7
 
8
+ **Choose permissions before starting the team.** The unchanged starter launches
9
+ Codex with `-s workspace-write`; it leaves approval policy to your native Codex
10
+ configuration. Network access is normally off in that sandbox, including access
11
+ to the local OpenRig daemon. Its `profile: default` selects OpenRig resources,
12
+ not a Codex permission profile. Ordinary permission prompts are therefore expected.
13
+ You can keep those prompts, remember selected commands, or choose broader access.
14
+ [Ask your agent to configure that choice](#have-your-agent-configure-permissions);
15
+ OpenRig does not choose permissive operation for everyone.
16
+
8
17
  > Everything below reports **what is currently true**, never a guarantee that
9
18
  > downstream work will succeed. "Daemon up" does not mean every agent is healthy;
10
19
  > "kernel ready" does not mean every kernel agent is healthy; a workspace root
@@ -70,9 +79,20 @@ seat has an authentication, trust or permission prompt, resolve the named
70
79
  prompt before assigning it work. A model pin is configuration; the native
71
80
  harness must report the intended model before consequential work.
72
81
 
73
- The default Codex workspace sandbox may also ask before local `rig` calls.
74
- Approve only the intended operations in the selected instance. A waiting
75
- permission prompt is not task progress; inspect it before retrying delivery.
82
+ When a seat pauses, open its existing terminal with **o** in the startup view.
83
+ Read the proposed command, working directory and target instance. For an intended
84
+ local `rig` call, choose the native prompt's one-time approval if that is the scope
85
+ you want; a saved command-prefix allowance also affects future matching calls.
86
+ Decline an unexpected operation and tell the same agent what to do instead.
87
+ Approval controls whether an action may run; the sandbox controls its filesystem
88
+ and network access. Turning approvals off does not grant network access.
89
+
90
+ After answering, watch for the command's result and the agent continuing. Read
91
+ the corresponding queue row and transition from your ordinary terminal. If an
92
+ operation timed out, read its result before asking for another attempt: it may
93
+ already have taken effect. A delivered message or disappearing prompt alone is
94
+ not progress. If startup is still waiting for context delivery, use **c** for the
95
+ same occupant, then **r** to refresh. Do not start another seat to clear a prompt.
76
96
 
77
97
  `first-project` is a deliberately small starting point, not a universal team.
78
98
  For a different installed runtime or team shape, inspect `rig specs ls --kind
@@ -94,10 +114,16 @@ independent check. You should not have to relay the review between terminals.
94
114
  `rig send` is the initial conversation; the queue and repository artifacts
95
115
  retain the work. An unbound shell does not need to impersonate a queue owner.
96
116
 
97
- Follow the work with `rig queue list --rig first-project --limit 1000`, then
98
- `rig queue show <id> --full` and `rig queue transitions <id>`. A delivered
99
- message is not a reviewed result. Read the final artifact, exercise the stated
100
- behavior, and check the candidate the review actually covered.
117
+ From an actual `first-project` seat, follow the work with
118
+ `rig queue list --limit 1000`: its default scope is the caller's current rig.
119
+ `queue list` has no `--rig` option. From an observer shell or another rig, use
120
+ `rig queue list --destination dev-owner@first-project --limit 1000` and the same
121
+ command for `dev-check@first-project`, after verifying those live addresses.
122
+ These show each destination's obligations, not a whole-rig view. An unbound shell
123
+ must not pretend to be a seat to change scope; use `--all-rigs` only when that
124
+ broader view is intended. Then read `rig queue show <id> --full` and
125
+ `rig queue transitions <id>`. A delivered message is not a reviewed result.
126
+ Read the artifact, exercise its behavior, and check the candidate reviewed.
101
127
 
102
128
  ## Share the dashboard and return to it
103
129
 
@@ -140,6 +166,18 @@ being built. When repeated coordination warrants a workflow, discover with
140
166
  selected name with `rig workflow instantiate --help`. A workflow is not needed
141
167
  merely to make the first local change.
142
168
 
169
+ For a continuing team, [OpenRig Software Factory](../../packages/daemon/specs/agents/shared/skills/core/openrig-software-factory/SKILL.md)
170
+ offers manual/team work, queue-supported orchestration without Workflow, and an
171
+ optional explicit Workflow path, with wake defaults, token costs and permission
172
+ choices visible. Give its short request to your existing agent. After
173
+ installation, discover the compatible bundled recipe with `rig context show
174
+ skills/core/openrig-software-factory --json`; retain a missing/version-mismatch
175
+ result rather than silently using newer instructions. Its growth section keeps
176
+ three choices clear: stay with the pair, add one or two seats to the running rig
177
+ with `rig grow` and no YAML, or optionally author a custom rig. It covers
178
+ new-seat context/work ownership, concurrency costs and saving the expanded spec.
179
+ This guide remains the short first-use path.
180
+
143
181
  ## Incomplete setup and restart
144
182
 
145
183
  | Observation | Next action |
@@ -190,10 +228,169 @@ Two related primitives, often confused by new operators:
190
228
  an **entry qitem** that routes the first step to an owner. This is the live
191
229
  coordination of *who does the next step*.
192
230
 
193
- How they relate: a scope slice is the durable description of a unit of work; a
194
- workflow instance + its qitems are the live machinery that moves that work
195
- through owners (hot-potato handoffs). They are not auto-bridged - there is no
196
- auto-instantiate-from-scope - you instantiate a workflow by name when you want to
197
- run one, and you reference your scope artifacts as the work it coordinates. A
198
- typical loop: author/track the unit in `rig scope`, then
199
- `rig workflow instantiate <name>` to start the runtime that drives it.
231
+ Scope files retain what the work is; workflow instances and their queue packets
232
+ retain who acts next. Creating or editing a mission does not start work. You can
233
+ instantiate a named workflow with `rig workflow instantiate <name>`, or explicitly
234
+ inspect an authored lifecycle with `rig workflow compile` and create its runtime
235
+ with `rig workflow instantiate-lifecycle`. Compilation alone does not start work.
236
+ [OpenRig Software Factory](../../packages/daemon/specs/agents/shared/skills/core/openrig-software-factory/SKILL.md)
237
+ shows a small reviewed example and how to retain custody through a genuine wait.
238
+
239
+ ## Have your agent configure permissions
240
+
241
+ You choose the scope; the agent inspects the target harness and applies it.
242
+ For example:
243
+
244
+ > Configure persistent permission for OpenRig commands in this project. Explain
245
+ > what the whole `rig` family allows and offer narrower verbs if appropriate.
246
+ > Preserve existing deny/ask rules and unrelated settings, back up touched files,
247
+ > apply my choice, then verify repeated ordinary reads without extra approvals.
248
+
249
+ Allowing all `rig` commands includes lifecycle, topology and configuration
250
+ operations, not only reads. Keeping prompts or selecting broader permissive
251
+ operation are also valid choices. An existing explicit choice authorizes the
252
+ routine setup; the agent need not ask you to approve each file edit again.
253
+
254
+ Use the maintained **Applying a permission policy** procedure:
255
+
256
+ ```sh
257
+ rig context get skills/applying-a-permission-policy/SKILL.md
258
+ ```
259
+
260
+ In a source checkout, read [its source](../../packages/daemon/assets/plugins/openrig-core/skills/applying-a-permission-policy/SKILL.md).
261
+ In an npm installation, the same file is under
262
+ `@openrig/cli/daemon/assets/plugins/openrig-core/skills/applying-a-permission-policy/SKILL.md`
263
+ below the matching `npm root -g` or local `npm root`. Use the version supplying
264
+ your `rig` executable. It covers Codex/Claude command rules, actual config roots,
265
+ preserving restrictions and verifying the target conversation. A missing guide or
266
+ unsupported native version is a reported gap, not permission to silently bypass.
267
+
268
+ The broader launch-mode recipes below are optional. Command-family rules do not
269
+ require changing the starter's sandbox or everyone else's defaults.
270
+
271
+ ## Opt-in permissive operation
272
+
273
+ Permissive operation lets agents act with your account's filesystem and network
274
+ access with fewer permission stops. They can damage files or send data without
275
+ another confirmation. Use it only for work and an environment you deliberately
276
+ trust; it does not supply missing credentials or override organization policy.
277
+
278
+ Make changes in a **user-owned spec before its first launch**. To customize the
279
+ starter, run `rig specs show first-project --kind rig` and find its `Path`, ending
280
+ in `specs/rigs/launch/first-project/rig.yaml`. Copy that whole `specs` directory to
281
+ `./openrig-specs` in your repository, keeping its layout: copying only `rig.yaml`
282
+ breaks its relative agent and culture references. Leave the installed copy alone.
283
+ The examples below use `./openrig-specs/rigs/launch/first-project/rig.yaml`. If you
284
+ already have a running `first-project`, follow the existing-session advice below
285
+ before changing it; this is not a live permission switch.
286
+
287
+ ### Codex: select sandbox and approvals together
288
+
289
+ For Codex versions supporting named `.config.toml` profiles, create
290
+ `~/.codex/first-project-permissive.config.toml` (under `CODEX_HOME` instead if you
291
+ set it for the daemon's launch environment):
292
+
293
+ ```toml
294
+ sandbox_mode = "danger-full-access"
295
+ approval_policy = "never"
296
+ ```
297
+
298
+ In the copied rig, add this field to **each Codex member** that should use it;
299
+ keep the member's existing `profile: default`:
300
+
301
+ ```yaml
302
+ codex_config_profile: first-project-permissive
303
+ ```
304
+
305
+ Leave `permission_policy` absent or set it to `none`, with no member-level YOLO
306
+ override. OpenRig then passes `-p first-project-permissive` instead of its default
307
+ `-s workspace-write`, so the native profile supplies both settings. Higher-priority
308
+ native project configuration or managed requirements can still change/refuse the
309
+ result. Inspect native `/status` before assigning work.
310
+
311
+ ```sh
312
+ rig policy current --spec ./openrig-specs/rigs/launch/first-project/rig.yaml
313
+ rig up ./openrig-specs/rigs/launch/first-project/rig.yaml --cwd . --plan
314
+ rig up ./openrig-specs/rigs/launch/first-project/rig.yaml --cwd .
315
+ ```
316
+
317
+ OpenRig's separate `permission_policy: builtin:yolo` setting passes only
318
+ `-s danger-full-access` to Codex, **without an approval flag**, and replaces the
319
+ named-profile argument. It does not mean `approval_policy = "never"`. A standalone
320
+ `codex --yolo` command is not an OpenRig launch setting. Use the profile recipe
321
+ above when you want to choose both controls explicitly.
322
+
323
+ To return to a restricted next launch, change the selected profile to:
324
+
325
+ ```toml
326
+ sandbox_mode = "workspace-write"
327
+ approval_policy = "on-request"
328
+
329
+ [sandbox_workspace_write]
330
+ network_access = false
331
+ ```
332
+
333
+ ### Claude Code: a different launch flag
334
+
335
+ The shipped `first-project` uses Codex. For a user-owned **Claude Code** rig,
336
+ OpenRig normally passes `--permission-mode acceptEdits`: edits can proceed, while
337
+ other actions follow native rules and prompts. It does not add a global
338
+ `Bash(rig:*)` allowance. To explicitly select the bypass launch flag for that rig:
339
+
340
+ ```sh
341
+ rig policy apply yolo --spec ./my-claude-rig/rig.yaml
342
+ rig policy current --spec ./my-claude-rig/rig.yaml
343
+ ```
344
+
345
+ This records `permission_policy: builtin:yolo`; the next managed launch passes
346
+ `--dangerously-skip-permissions`. Member-level policies take precedence. To return
347
+ future launches to OpenRig's `acceptEdits` mode, use `rig policy apply none --spec
348
+ ./my-claude-rig/rig.yaml` and remove any member-level bypass override. Native rules
349
+ and managed restrictions still matter; this flag is not a promise about sandbox
350
+ or account access. See [Claude permissions](https://code.claude.com/docs/en/permissions).
351
+
352
+ **Already running:** changing a file or running `rig policy apply` does not revoke
353
+ a live agent's permissions, nor rewrite a stored rig's policy on restore. Pause
354
+ work and use the native permission controls for that conversation (current
355
+ Codex and Claude CLIs expose `/permissions`); inspect the effective mode again.
356
+ Keep the launch spec/profile consistent for subsequent launches. If the native
357
+ version cannot apply the change in place, preserve the work and use the supported
358
+ same-seat stop/resume path after checking its retained policy; do not erase the
359
+ rig or start a duplicate to reset permissions. A resume can reapply the stored
360
+ launch mode, so verify the native mode again before continuing work.
361
+
362
+ ## Custom settings and precedence
363
+
364
+ - **OpenRig:** member `permission_policy` overrides rig `permission_policy`.
365
+ Normal managed launches bind the default mode explicitly when neither is set;
366
+ exporting `OPENRIG_YOLO=1` in a client shell is not a reliable per-team recipe.
367
+ A custom policy file is relative to the declaring rig spec, with no absolute
368
+ path or `..`. `surface: flag` selects a launch mode. Config-surface policies
369
+ (`locked`, `standard`, `open`, or custom) describe intent: recording one does
370
+ not translate and enforce its rules. Apply and inspect the actual native
371
+ settings separately. See [RigSpec policy references](rig-spec.md#attaching-a-permission-policy).
372
+ - **Codex:** personal settings live in `~/.codex/config.toml` or `CODEX_HOME`;
373
+ trusted project settings live in `.codex/config.toml`. Current precedence is
374
+ CLI overrides, trusted project settings, selected profile, user settings,
375
+ cloud defaults when supplied, `/etc/codex/config.toml` on Unix, then built-in
376
+ defaults, subject to managed requirements. OpenRig's explicit sandbox flag
377
+ wins over a file's `sandbox_mode`; use `codex_config_profile` for a custom
378
+ sandbox instead. For workspace edits with network access while retaining
379
+ approvals, use a named profile with `sandbox_mode = "workspace-write"`,
380
+ `approval_policy = "on-request"` and `[sandbox_workspace_write]`
381
+ `network_access = true`. That grants network access generally, not just to
382
+ the local daemon. See [Codex configuration](https://learn.chatgpt.com/docs/config-file/config-basic)
383
+ and [sandbox/approval controls](https://learn.chatgpt.com/docs/agent-approvals-security).
384
+ - **Claude Code:** use `~/.claude/settings.json`, shared project
385
+ `.claude/settings.json`, or personal project `.claude/settings.local.json`.
386
+ Managed settings precede launch flags, then project-local, project-shared and
387
+ user settings. Permission-rule lists combine; a higher-level allow is not a
388
+ way to defeat a deny. OpenRig's `acceptEdits` launch flag overrides a file's
389
+ `permissions.defaultMode`; selected runtime resources may also merge into
390
+ project-local settings. See [Claude settings and precedence](https://code.claude.com/docs/en/settings)
391
+ and [OpenRig's runtime config disclosure](agent-startup-guide.md#runtime-config-disclosure).
392
+
393
+ These recipes do not establish every provider/version/config combination.
394
+ Check the installed version and effective settings. Newer permission-profile or
395
+ automatic review features are provider choices, not implicit OpenRig capabilities.
396
+ Selecting rules or a broader mode does not change the shipped defaults.
@@ -175,6 +175,7 @@ edges:
175
175
  | `summary` | string | no | — | Human-readable description. Shown in spec library, review surfaces, and `rig specs show`. |
176
176
  | `culture_file` | string | no | — | Relative path to a rig-wide culture/constitution file. Must be a safe relative path (no `..`, no absolute). |
177
177
  | `permission_policy` | string | no | — | Permission policy attached to the rig. Either a built-in (`builtin:locked`, `builtin:standard`, `builtin:open`, `builtin:yolo`) or a safe relative path to a custom policy file (resolved from this spec's directory; no `..`, no absolute). Absent leaves the default floor. A member may set its own `permission_policy`, which takes precedence over the rig-level one. See "Attaching a permission policy" below. |
178
+ | `managed_blocks` | map | no | `CLAUDE.md` | File that receives OpenRig's managed instruction blocks for Claude Code members. Only the `claude-code` key is accepted, with `CLAUDE.md` or `CLAUDE.local.md`. Codex members always use `AGENTS.md`. See "Choosing the Claude instruction file" below. |
178
179
  | `docs` | Doc[] | no | — | Documentation files that should travel with the rig. Included in rig bundles. Each entry has a `path` field (safe relative path). The engine does not consume these — they are for humans and agents setting up the environment before launch. |
179
180
  | `startup` | StartupBlock | no | — | Rig-level startup files and actions. Applied to all members via the startup layering model. |
180
181
  | `services` | ServicesBlock | no | — | Optional managed services (Docker Compose). When present, services boot before any agent launches. |
@@ -199,6 +200,42 @@ referenced by a safe relative path (no `..`, no absolute). A shipped example of
199
200
  custom shape is `packages/daemon/policies/examples/my-cautious-dev.policy.md` — copy it
200
201
  into your project and edit it to taste.
201
202
 
203
+ This records a selection, not a live permission change. Flag-surface policies
204
+ select launch flags; config-surface policies still need native configuration
205
+ application and inspection. In particular, `builtin:yolo` selects Codex's
206
+ `danger-full-access` sandbox without forcing its approval policy, and replaces
207
+ any `codex_config_profile` argument. See [practical permission choices](getting-started.md#opt-in-permissive-operation).
208
+
209
+ ### Choosing the Claude instruction file
210
+
211
+ OpenRig writes its instructions for Claude Code members into managed blocks in
212
+ the member's working directory. By default the file is `CLAUDE.md`. If your
213
+ repository tracks `CLAUDE.md`, write the blocks to `CLAUDE.local.md` instead:
214
+
215
+ ```yaml
216
+ managed_blocks:
217
+ claude-code: CLAUDE.local.md
218
+ ```
219
+
220
+ Claude Code loads `CLAUDE.local.md` from the working directory as well. By
221
+ convention the file is kept out of git, for example with a `.gitignore` entry.
222
+
223
+ - Accepted values are `CLAUDE.md` and `CLAUDE.local.md`. Any other value or
224
+ runtime key is rejected before a member launches.
225
+ - The setting applies to launch, restore, relaunch, handover, adding members,
226
+ and export. `rig down` removes OpenRig's blocks from the selected file only.
227
+ - OpenRig never edits, moves or deletes blocks in the other file.
228
+
229
+ A rig that already wrote blocks into `CLAUDE.md` keeps them there after you
230
+ switch. Until you remove them, `CLAUDE.md` stays modified and Claude Code loads
231
+ both copies. Delete each `<!-- BEGIN OpenRig MANAGED BLOCK: … -->` …
232
+ `<!-- END OpenRig MANAGED BLOCK: … -->` section by hand and keep the rest of the
233
+ file. If `CLAUDE.md` has no other uncommitted edits you need to keep, you can
234
+ instead run `git restore CLAUDE.md`; that command discards every unstaged change
235
+ to the file, not only OpenRig's blocks. Running `rig down` on a rig that still uses
236
+ the default is not a substitute: it strips every OpenRig block from that
237
+ directory's `CLAUDE.md`, including blocks written by other rigs.
238
+
202
239
  ---
203
240
 
204
241
  ## Pod
@@ -229,6 +266,7 @@ into your project and edit it to taste.
229
266
  | `id` | string | yes | — | Member identifier. Must not contain dots. Must be unique within the pod. |
230
267
  | `agent_ref` | string | yes | — | Reference to an AgentSpec. Must start with `local:` (relative) or `path:` (absolute). Exception: `builtin:terminal` for infrastructure nodes. |
231
268
  | `profile` | string | yes | — | Profile name from the referenced AgentSpec. Use `default` for the default profile. Exception: `none` for terminal nodes. |
269
+ | `codex_config_profile` | string | no | — | Codex-only native profile passed as `-p <name>`; letters, numbers, `_`, `.`, `-`. Separate from the AgentSpec `profile`. With the normal launch mode, this replaces OpenRig's explicit workspace-write sandbox flag. A full-bypass policy instead emits danger-full-access and omits this profile argument. |
232
270
  | `runtime` | string | yes | — | Agent runtime. Current supported values: `claude-code`, `codex`, `terminal`. |
233
271
  | `cwd` | string | yes | — | Working directory for the agent. Resolved relative to the rig root (the directory containing the rig spec). Use `"."` for the rig root itself. Can be overridden at launch time with `rig up --cwd`. |
234
272
  | `label` | string | no | — | Human-readable member name. Shown in UI when present. |
@@ -4,12 +4,16 @@ name: yolo
4
4
  surface: flag
5
5
  launch_posture: full_bypass
6
6
  policy_schema_version: 1
7
- description: Full-bypass posture — the flag-surface YOLO opt-in. Everything runs, nothing prompts. Guardrailed by skills and starter markdown, not by permission-blocking.
7
+ description: Permissive launch opt-in. Claude skips permission prompts; Codex selects danger-full-access but retains native approval policy. Pi enables resource trust.
8
8
  ---
9
9
 
10
10
  # YOLO (built-in policy — flag surface)
11
11
 
12
- The maximum-permissive built-in. The seat runs the harness with its full-bypass launch flag: Claude `--dangerously-skip-permissions`, Codex full-bypass, Pi `--approve`. Nothing prompts; nothing is denied. Use only for fully-trusted autonomous work where any pause is unacceptable.
12
+ This built-in selects Claude `--dangerously-skip-permissions`, Codex
13
+ `-s danger-full-access`, or Pi `--approve` (resource trust). Codex receives no
14
+ approval flag and no named-profile argument on this path: its native approval
15
+ settings still apply. This is not a universal promise that nothing prompts or
16
+ is denied. Use only for work and an environment you deliberately trust.
13
17
 
14
18
  **APPLICATION is deterministic, NOT skill-translated.** YOLO is a `surface: flag`
15
19
  policy: it resolves to a stable launch flag and is applied directly by the runtime
@@ -17,9 +21,15 @@ flag-surface opt-in. The `applying-a-permission-policy` skill does **NOT** trans
17
21
  this policy; it points at that setting. The flag surface is stable enough for
18
22
  deterministic code, so it does not pay the skill-indirection tax.
19
23
 
20
- **Config policies are MOOT when YOLO is on.** The full-bypass launch flag overrides any Claude prefix rules / Codex posture, so an attached config-surface policy (Locked/Standard/Open) has no effect while YOLO is active. Pick YOLO OR a config policy, not both.
24
+ **Selection and native enforcement are separate.** A member policy overrides the
25
+ rig policy. A resolved config-surface selection chooses OpenRig's normal launch
26
+ mode and takes precedence over ambient YOLO. Native configuration and managed
27
+ restrictions still matter; recording a policy does not translate config rules.
21
28
 
22
- **Guardrails come from skills + starter markdown, not permission-blocking** — a YOLO seat is bounded by what its skills and operating context tell it to do, since the permission layer imposes nothing.
29
+ Skills and starter guidance describe intended behavior; they do not replace
30
+ filesystem/network boundaries. For explicit Codex sandbox-plus-approval choices
31
+ and returning to a restricted setting, see the getting-started permission guide
32
+ at `docs/reference/getting-started.md#opt-in-permissive-operation`.
23
33
 
24
34
  **Naming:** YOLO names the full-bypass posture plainly; the picker presents all four
25
35
  named postures (Locked / Standard / Open / YOLO) uniformly.
@@ -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.
@@ -0,0 +1,138 @@
1
+ ---
2
+ name: openrig-software-factory
3
+ description: >-
4
+ Use when a user wants a continuing software team for a real repository, or has a
5
+ first OpenRig team and needs a repeatable path for reviewed work and later tasks.
6
+ metadata:
7
+ cli_surfaces_referenced:
8
+ - context get
9
+ - context list
10
+ - context show
11
+ - grow
12
+ - queue create
13
+ - queue handoff
14
+ - workflow compile
15
+ - workflow instantiate-lifecycle
16
+ openrig:
17
+ stage: WIP
18
+ transfer_test: pending
19
+ ---
20
+
21
+ # OpenRig Software Factory
22
+
23
+ Start with a useful repository outcome and add coordination when it earns its
24
+ cost. A beginner can complete reviewed work without Workflow. These are choices
25
+ using existing capabilities, not stages everyone must graduate through.
26
+
27
+ ## Choose how the team works
28
+
29
+ | Need | Start here | Add more when… |
30
+ | --- | --- | --- |
31
+ | One change, close human guidance | Manual/team work: give an owner the outcome, use repository instructions, implement and obtain the chosen independent check. | Work must survive turns or move between seats. |
32
+ | Continuing work with visible ownership | Queue-supported orchestration: use `rig queue create`, claim work, then `rig queue handoff` with the candidate/evidence to the next owner. Record real blockers and the continuation. No Workflow instance is needed. | Repeated steps need an explicit dependency graph and permitted exits. |
33
+ | An explicit execution contract | Workflow: inspect `rig workflow compile`, then deliberately use `rig workflow instantiate-lifecycle`. Advance its packets through the workflow projection mechanism. | The actual project needs reusable profiles, additional roles or gates. |
34
+
35
+ For the concrete queue loop, wake behavior and optional two-slice Workflow,
36
+ read [references/worked-example.md](references/worked-example.md). Installed copy:
37
+ `rig context get skills/core/openrig-software-factory/references/worked-example.md`.
38
+ A roadmap, YAML file or wake does not execute work or authorize a new outcome.
39
+
40
+ ## Establish the working agreement
41
+
42
+ Read the repository instructions, current work and desired user-visible result.
43
+ Verify the intended instance, code/work roots, real seat addresses and native
44
+ readiness. Reuse a suitable small team; an existing agent can bootstrap it.
45
+ A kernel operator is optional and is not automatically the project owner.
46
+
47
+ Agree the work boundary, time/spend limit, who answers unresolved choices, and
48
+ when to stop: checked result, no authorized next work, exhausted budget, or a real
49
+ user/permission/provider blocker. Background daemon checks are not themselves
50
+ model turns, but delivered wakes and resumed work **can spend tokens**. Prefer
51
+ an event-driven wait to frequent empty reminders. Wakes cannot answer a user
52
+ question, clear a permission prompt or guarantee progress.
53
+
54
+ **Choose permissions before launching or assigning work.** Offer ordinary prompts,
55
+ persistent rules for selected commands, or deliberately broader access. Follow
56
+ [Applying a permission policy](#find-the-compatible-permission-guide) to perform
57
+ the user's choice and verify it in the target conversation. Preserve restrictions
58
+ and unrelated settings. A whole `rig` allowance covers every verb, not just reads;
59
+ it does not grant new product authority or change everyone else's defaults.
60
+
61
+ Keep purpose, acceptance, decisions and evidence in existing project files.
62
+ Deliver selected context and obtain each seat's scope reaction; retrieval alone
63
+ is not peer delivery. The owner carries the candidate through the chosen check
64
+ and bounded repairs, reports how to try it, and retains the next authorized task
65
+ or explicitly reports none. Preserve work and custody before a supported stop.
66
+
67
+ ## Grow your factory
68
+
69
+ Choose the team size separately from the coordination method above:
70
+
71
+ 1. **Use the two-agent starter.** Keep the existing owner and independent checker
72
+ while that pair meets the workload. The owner can implement and coordinate.
73
+ 2. **Add one or two seats to the running rig.** This is the usual next step.
74
+ Follow [Grow the running team](references/worked-example.md#grow-the-running-team)
75
+ for `rig grow` commands, readiness/context/work
76
+ assignment, and saving the expanded topology. Existing sessions need no
77
+ rebuild or down/up cycle solely to add capacity.
78
+ 3. **Author a custom rig when you want a different structure.** Read
79
+ [OpenRig Architect](../openrig-architect/SKILL.md), available through
80
+ `rig context get skills/core/openrig-architect/SKILL.md`. Request:
81
+ “Design a user-owned rig for [outcome] using the compatible RigSpec/AgentSpec
82
+ guidance. Reuse suitable agents, define responsibilities and context, and
83
+ validate the files. Preserve the existing rig and agree any new launch.”
84
+
85
+ As independent work grows, the original owner can concentrate on orchestration,
86
+ multiple builders can implement separate outcomes, and the checker can retain
87
+ independent review capacity. Record that division explicitly; adding seats does
88
+ not assign work, change permissions or create parallelism. Agree file/worktree
89
+ boundaries and integration ownership, follow the project's existing review policy,
90
+ and keep active concurrency within the user's time/spend budget. Two seats are
91
+ an entry point, not a finished factory or a maximum.
92
+
93
+ ## Read compatible guidance
94
+
95
+ Before installation, use this file and companion at the same published tag or
96
+ commit as the selected package. After installation:
97
+
98
+ ```sh
99
+ rig --version
100
+ rig context list --json
101
+ rig context show skills/core/openrig-software-factory --json
102
+ rig context get skills/core/openrig-software-factory/SKILL.md
103
+ ```
104
+
105
+ Compare build identity as well as version. Preserve missing, unreadable or older
106
+ recipe results; do not silently substitute newer main or skip a missing companion.
107
+
108
+ ### Find the compatible permission guide
109
+
110
+ Retrieve the maintained procedure with
111
+ `rig context get skills/applying-a-permission-policy/SKILL.md`.
112
+ For source or archive readers, locate it below; the companion getting-started
113
+ guide contains optional broader launch-mode recipes under **Opt-in permissive
114
+ operation**. These paths are relative to the named root, not this skill:
115
+
116
+ | Reading from | Procedure and guide, at the same version as this recipe |
117
+ | --- | --- |
118
+ | Source checkout, including `skills/_canonical` | Below the repository root: `packages/daemon/assets/plugins/openrig-core/skills/applying-a-permission-policy/SKILL.md` and `docs/reference/getting-started.md`. |
119
+ | npm installation | Below the matching `npm root -g` or local `npm root`: `@openrig/cli/daemon/assets/plugins/openrig-core/skills/applying-a-permission-policy/SKILL.md` and `@openrig/cli/daemon/docs/reference/getting-started.md`. |
120
+ | Unpacked npm archive | Below the extraction directory: `package/daemon/assets/plugins/openrig-core/skills/applying-a-permission-policy/SKILL.md` and `package/daemon/docs/reference/getting-started.md`. |
121
+
122
+ For installed guidance, use the npm installation that supplies the selected
123
+ `rig` executable; another prefix or local project can contain a different version.
124
+ If the matching guide or section is missing, report the gap before proceeding;
125
+ do not substitute current main or guidance from another installation.
126
+
127
+ ## Request to give your agent
128
+
129
+ > Help me achieve [observable change] in this repository. Read the compatible
130
+ > Software Factory recipe, choose the lightest useful team/queue/Workflow path,
131
+ > and keep the next owner visible. Preserve existing files and permissions.
132
+ > Agree time/spend limits, perform the authorized work and chosen independent
133
+ > check, and ask only about unresolved decisions or effects outside that scope.
134
+ > Keep publication and destructive changes out of this task.
135
+
136
+ When commands, defaults or permission semantics change, check this source and
137
+ companion together and regenerate their existing projections. Website guidance
138
+ should link to the same versioned recipe, not maintain another procedure.