@openrig/cli 0.5.2 → 0.5.3

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 (484) hide show
  1. package/daemon/assets/plugins/openrig-core/hooks/claude.json +36 -0
  2. package/daemon/assets/plugins/openrig-core/hooks/codex.json +27 -0
  3. package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +132 -0
  4. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +35 -3
  5. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/precompact-hook.mjs +8 -95
  6. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/restore-from-jsonl.mjs +63 -20
  7. package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +6 -2
  8. package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +28 -2
  9. package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +42 -52
  10. package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +23 -1
  11. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +7 -2
  12. package/daemon/assets/plugins/openrig-core/skills/orienting-to-an-inherited-seat/CHANGELOG.md +64 -0
  13. package/daemon/assets/plugins/openrig-core/skills/orienting-to-an-inherited-seat/SKILL.md +235 -0
  14. package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +31 -1
  15. package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/CHANGELOG.md +48 -0
  16. package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/SKILL.md +211 -0
  17. package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +8 -0
  18. package/daemon/assets/plugins/openrig-core/skills/software-for-agents/SKILL.md +28 -1
  19. package/daemon/context-packs/skills/core/agent-starters/SKILL.md +132 -0
  20. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +9 -0
  21. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/SKILL.md +112 -0
  22. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +9 -0
  23. package/daemon/context-packs/skills/core/attention-queue/SKILL.md +264 -0
  24. package/daemon/context-packs/skills/core/attention-queue/manifest.yaml +9 -0
  25. package/daemon/context-packs/skills/core/cross-host-rig-commands/SKILL.md +195 -0
  26. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +9 -0
  27. package/daemon/context-packs/skills/core/human-in-the-loop/SKILL.md +104 -0
  28. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +9 -0
  29. package/daemon/context-packs/skills/core/openrig-architect/SKILL.md +378 -0
  30. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +9 -0
  31. package/daemon/context-packs/skills/core/openrig-cmux/SKILL.md +81 -0
  32. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +9 -0
  33. package/daemon/context-packs/skills/core/openrig-herdr/SKILL.md +153 -0
  34. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +9 -0
  35. package/daemon/context-packs/skills/core/openrig-upgrade/SKILL.md +460 -0
  36. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +9 -0
  37. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/SKILL.md +101 -0
  38. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +9 -0
  39. package/daemon/context-packs/skills/core/rig-lifecycle/SKILL.md +127 -0
  40. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +9 -0
  41. package/daemon/context-packs/skills/core/session-source-fork/SKILL.md +160 -0
  42. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +9 -0
  43. package/daemon/context-packs/skills/core/specification-system/SKILL.md +103 -0
  44. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +9 -0
  45. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/SKILL.md +118 -0
  46. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +9 -0
  47. package/daemon/context-packs/skills/core/watchdog/SKILL.md +126 -0
  48. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +9 -0
  49. package/daemon/context-packs/skills/pm/backlog-capture/SKILL.md +43 -0
  50. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +9 -0
  51. package/daemon/context-packs/skills/pm/context-builder/SKILL.md +87 -0
  52. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +9 -0
  53. package/daemon/context-packs/skills/pm/exec-summary/SKILL.md +84 -0
  54. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +9 -0
  55. package/daemon/context-packs/skills/pm/office-hours/SKILL.md +129 -0
  56. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +9 -0
  57. package/daemon/context-packs/skills/pm/plan-review/SKILL.md +98 -0
  58. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +9 -0
  59. package/daemon/context-packs/skills/pm/requirements-writer/SKILL.md +113 -0
  60. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +9 -0
  61. package/daemon/context-packs/skills/pm/ui-mockup/SKILL.md +76 -0
  62. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +9 -0
  63. package/daemon/context-packs/skills/pods/development-team/SKILL.md +156 -0
  64. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +9 -0
  65. package/daemon/context-packs/skills/pods/orchestration-team/SKILL.md +307 -0
  66. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +9 -0
  67. package/daemon/context-packs/skills/pods/oversight-team/SKILL.md +106 -0
  68. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +9 -0
  69. package/daemon/context-packs/skills/pods/review-team/SKILL.md +213 -0
  70. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +9 -0
  71. package/daemon/context-packs/skills/process/agent-browser/LOCAL-INSIGHTS.md +189 -0
  72. package/daemon/context-packs/skills/process/agent-browser/OPENRIG.md +40 -0
  73. package/daemon/context-packs/skills/process/agent-browser/SKILL.md +427 -0
  74. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +13 -0
  75. package/daemon/context-packs/skills/process/brainstorming/OPENRIG.md +48 -0
  76. package/daemon/context-packs/skills/process/brainstorming/SKILL.md +107 -0
  77. package/daemon/context-packs/skills/process/brainstorming/manifest.yaml +11 -0
  78. package/daemon/context-packs/skills/process/context-engineering/SKILL.md +479 -0
  79. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +9 -0
  80. package/daemon/context-packs/skills/process/dogfood/SKILL.md +225 -0
  81. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +13 -0
  82. package/daemon/context-packs/skills/process/dogfood/references/issue-taxonomy.md +109 -0
  83. package/daemon/context-packs/skills/process/dogfood/templates/dogfood-report-template.md +53 -0
  84. package/daemon/context-packs/skills/process/executing-plans/OPENRIG.md +56 -0
  85. package/daemon/context-packs/skills/process/executing-plans/SKILL.md +94 -0
  86. package/daemon/context-packs/skills/process/executing-plans/manifest.yaml +11 -0
  87. package/daemon/context-packs/skills/process/frontend-design/LICENSE.txt +177 -0
  88. package/daemon/context-packs/skills/process/frontend-design/SKILL.md +50 -0
  89. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +11 -0
  90. package/daemon/context-packs/skills/process/systematic-debugging/SKILL.md +301 -0
  91. package/daemon/context-packs/skills/process/systematic-debugging/condition-based-waiting-example.ts +158 -0
  92. package/daemon/context-packs/skills/process/systematic-debugging/condition-based-waiting.md +115 -0
  93. package/daemon/context-packs/skills/process/systematic-debugging/defense-in-depth.md +122 -0
  94. package/daemon/context-packs/skills/process/systematic-debugging/find-polluter.sh +63 -0
  95. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +19 -0
  96. package/daemon/context-packs/skills/process/systematic-debugging/root-cause-tracing.md +169 -0
  97. package/daemon/context-packs/skills/process/test-driven-development/SKILL.md +385 -0
  98. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +11 -0
  99. package/daemon/context-packs/skills/process/test-driven-development/testing-anti-patterns.md +299 -0
  100. package/daemon/context-packs/skills/process/using-superpowers/OPENRIG.md +48 -0
  101. package/daemon/context-packs/skills/process/using-superpowers/SKILL.md +106 -0
  102. package/daemon/context-packs/skills/process/using-superpowers/manifest.yaml +11 -0
  103. package/daemon/context-packs/skills/process/verification-before-completion/SKILL.md +155 -0
  104. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +9 -0
  105. package/daemon/context-packs/skills/process/writing-plans/OPENRIG.md +52 -0
  106. package/daemon/context-packs/skills/process/writing-plans/SKILL.md +126 -0
  107. package/daemon/context-packs/skills/process/writing-plans/manifest.yaml +11 -0
  108. package/daemon/context-packs/world/install/01-world-from-primitives.md +97 -0
  109. package/daemon/context-packs/world/install/02-permission-self-sleep.md +141 -0
  110. package/daemon/context-packs/world/install/03-what-this-is-for.md +86 -0
  111. package/daemon/context-packs/world/install/04-ontology.md +790 -0
  112. package/daemon/context-packs/world/install/05-harness-power-use.md +355 -0
  113. package/daemon/context-packs/world/install/06-a-competent-turn.md +225 -0
  114. package/daemon/context-packs/world/install/manifest.yaml +125 -0
  115. package/daemon/context-packs/world/install/reference-material.md +125 -0
  116. package/daemon/context-packs/world/install/what-you-can-do.md +416 -0
  117. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  118. package/daemon/dist/adapters/claude-code-adapter.js +7 -4
  119. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  120. package/daemon/dist/adapters/claude-resume.js +2 -2
  121. package/daemon/dist/adapters/claude-resume.js.map +1 -1
  122. package/daemon/dist/adapters/tmux.d.ts +10 -2
  123. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  124. package/daemon/dist/adapters/tmux.js +27 -7
  125. package/daemon/dist/adapters/tmux.js.map +1 -1
  126. package/daemon/dist/adapters/yolo-mode.d.ts +18 -0
  127. package/daemon/dist/adapters/yolo-mode.d.ts.map +1 -1
  128. package/daemon/dist/adapters/yolo-mode.js +21 -0
  129. package/daemon/dist/adapters/yolo-mode.js.map +1 -1
  130. package/daemon/dist/build-info.js +3 -3
  131. package/daemon/dist/domain/codex-thread-id.d.ts +95 -0
  132. package/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
  133. package/daemon/dist/domain/codex-thread-id.js +171 -2
  134. package/daemon/dist/domain/codex-thread-id.js.map +1 -1
  135. package/daemon/dist/domain/context-packs/context-pack-types.d.ts +48 -0
  136. package/daemon/dist/domain/context-packs/context-pack-types.d.ts.map +1 -1
  137. package/daemon/dist/domain/context-packs/context-pack-types.js +8 -0
  138. package/daemon/dist/domain/context-packs/context-pack-types.js.map +1 -1
  139. package/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -1
  140. package/daemon/dist/domain/context-packs/manifest-parser.js +234 -2
  141. package/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -1
  142. package/daemon/dist/domain/context-packs/probe-eval-bridge.d.ts +34 -0
  143. package/daemon/dist/domain/context-packs/probe-eval-bridge.d.ts.map +1 -0
  144. package/daemon/dist/domain/context-packs/probe-eval-bridge.js +38 -0
  145. package/daemon/dist/domain/context-packs/probe-eval-bridge.js.map +1 -0
  146. package/daemon/dist/domain/context-packs/profile-composer.d.ts +49 -0
  147. package/daemon/dist/domain/context-packs/profile-composer.d.ts.map +1 -0
  148. package/daemon/dist/domain/context-packs/profile-composer.js +125 -0
  149. package/daemon/dist/domain/context-packs/profile-composer.js.map +1 -0
  150. package/daemon/dist/domain/context-packs/profile-source-resolver.d.ts +53 -0
  151. package/daemon/dist/domain/context-packs/profile-source-resolver.d.ts.map +1 -0
  152. package/daemon/dist/domain/context-packs/profile-source-resolver.js +129 -0
  153. package/daemon/dist/domain/context-packs/profile-source-resolver.js.map +1 -0
  154. package/daemon/dist/domain/context-packs/seat-recap-store.d.ts +48 -0
  155. package/daemon/dist/domain/context-packs/seat-recap-store.d.ts.map +1 -0
  156. package/daemon/dist/domain/context-packs/seat-recap-store.js +123 -0
  157. package/daemon/dist/domain/context-packs/seat-recap-store.js.map +1 -0
  158. package/daemon/dist/domain/markdown-address.d.ts +56 -0
  159. package/daemon/dist/domain/markdown-address.d.ts.map +1 -0
  160. package/daemon/dist/domain/markdown-address.js +188 -0
  161. package/daemon/dist/domain/markdown-address.js.map +1 -0
  162. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts +8 -2
  163. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
  164. package/daemon/dist/domain/model-divergence/current-generation-record.js +1 -1
  165. package/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
  166. package/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts +33 -21
  167. package/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts.map +1 -1
  168. package/daemon/dist/domain/model-divergence/model-divergence-monitor.js +64 -55
  169. package/daemon/dist/domain/model-divergence/model-divergence-monitor.js.map +1 -1
  170. package/daemon/dist/domain/periodic-snapshot-scheduler.d.ts +4 -0
  171. package/daemon/dist/domain/periodic-snapshot-scheduler.d.ts.map +1 -1
  172. package/daemon/dist/domain/periodic-snapshot-scheduler.js +5 -1
  173. package/daemon/dist/domain/periodic-snapshot-scheduler.js.map +1 -1
  174. package/daemon/dist/domain/permission-drift-observer.d.ts.map +1 -1
  175. package/daemon/dist/domain/permission-drift-observer.js +6 -1
  176. package/daemon/dist/domain/permission-drift-observer.js.map +1 -1
  177. package/daemon/dist/domain/process-census.d.ts +25 -0
  178. package/daemon/dist/domain/process-census.d.ts.map +1 -0
  179. package/daemon/dist/domain/process-census.js +47 -0
  180. package/daemon/dist/domain/process-census.js.map +1 -0
  181. package/daemon/dist/domain/resume-metadata-refresher.d.ts +31 -2
  182. package/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
  183. package/daemon/dist/domain/resume-metadata-refresher.js +64 -29
  184. package/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
  185. package/daemon/dist/domain/review/compose.d.ts +5 -26
  186. package/daemon/dist/domain/review/compose.d.ts.map +1 -1
  187. package/daemon/dist/domain/review/compose.js +31 -57
  188. package/daemon/dist/domain/review/compose.js.map +1 -1
  189. package/daemon/dist/domain/rigspec-instantiator.d.ts +4 -0
  190. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  191. package/daemon/dist/domain/rigspec-instantiator.js +39 -0
  192. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  193. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  194. package/daemon/dist/domain/rigspec-schema.js +19 -3
  195. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  196. package/daemon/dist/domain/scope/logical-checkbox.d.ts +26 -0
  197. package/daemon/dist/domain/scope/logical-checkbox.d.ts.map +1 -0
  198. package/daemon/dist/domain/scope/logical-checkbox.js +65 -0
  199. package/daemon/dist/domain/scope/logical-checkbox.js.map +1 -0
  200. package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +1 -1
  201. package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -1
  202. package/daemon/dist/domain/scope/plan-lock-artifacts.js +2 -2
  203. package/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -1
  204. package/daemon/dist/domain/scope/scaffold-placeholder.d.ts +22 -0
  205. package/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -1
  206. package/daemon/dist/domain/scope/scaffold-placeholder.js +24 -0
  207. package/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -1
  208. package/daemon/dist/domain/seat-activity-service.d.ts +1 -0
  209. package/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
  210. package/daemon/dist/domain/seat-activity-service.js +39 -23
  211. package/daemon/dist/domain/seat-activity-service.js.map +1 -1
  212. package/daemon/dist/domain/seat-handover-service.d.ts +22 -0
  213. package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  214. package/daemon/dist/domain/seat-handover-service.js +32 -2
  215. package/daemon/dist/domain/seat-handover-service.js.map +1 -1
  216. package/daemon/dist/domain/session-transport.d.ts +8 -0
  217. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  218. package/daemon/dist/domain/session-transport.js +116 -0
  219. package/daemon/dist/domain/session-transport.js.map +1 -1
  220. package/daemon/dist/domain/shell-classifier.d.ts +23 -0
  221. package/daemon/dist/domain/shell-classifier.d.ts.map +1 -0
  222. package/daemon/dist/domain/shell-classifier.js +36 -0
  223. package/daemon/dist/domain/shell-classifier.js.map +1 -0
  224. package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
  225. package/daemon/dist/domain/slices/slice-detail-projector.js +10 -1
  226. package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
  227. package/daemon/dist/domain/spec-validation-advisory.d.ts +17 -0
  228. package/daemon/dist/domain/spec-validation-advisory.d.ts.map +1 -0
  229. package/daemon/dist/domain/spec-validation-advisory.js +38 -0
  230. package/daemon/dist/domain/spec-validation-advisory.js.map +1 -0
  231. package/daemon/dist/domain/successor-session-launcher.d.ts +7 -0
  232. package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  233. package/daemon/dist/domain/successor-session-launcher.js +38 -1
  234. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  235. package/daemon/dist/domain/topology-defaults-installer.d.ts +47 -0
  236. package/daemon/dist/domain/topology-defaults-installer.d.ts.map +1 -0
  237. package/daemon/dist/domain/topology-defaults-installer.js +92 -0
  238. package/daemon/dist/domain/topology-defaults-installer.js.map +1 -0
  239. package/daemon/dist/domain/transcript-rotation.d.ts +4 -0
  240. package/daemon/dist/domain/transcript-rotation.d.ts.map +1 -1
  241. package/daemon/dist/domain/transcript-rotation.js +61 -3
  242. package/daemon/dist/domain/transcript-rotation.js.map +1 -1
  243. package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
  244. package/daemon/dist/domain/transcript-store.js +9 -2
  245. package/daemon/dist/domain/transcript-store.js.map +1 -1
  246. package/daemon/dist/domain/types.d.ts +3 -0
  247. package/daemon/dist/domain/types.d.ts.map +1 -1
  248. package/daemon/dist/domain/user-settings/settings-store.d.ts +10 -1
  249. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  250. package/daemon/dist/domain/user-settings/settings-store.js +39 -0
  251. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  252. package/daemon/dist/routes/context-packs.d.ts.map +1 -1
  253. package/daemon/dist/routes/context-packs.js +205 -0
  254. package/daemon/dist/routes/context-packs.js.map +1 -1
  255. package/daemon/dist/routes/seat.d.ts.map +1 -1
  256. package/daemon/dist/routes/seat.js +11 -0
  257. package/daemon/dist/routes/seat.js.map +1 -1
  258. package/daemon/dist/routes/sessions.js +55 -0
  259. package/daemon/dist/routes/sessions.js.map +1 -1
  260. package/daemon/dist/routes/transport.d.ts.map +1 -1
  261. package/daemon/dist/routes/transport.js +12 -3
  262. package/daemon/dist/routes/transport.js.map +1 -1
  263. package/daemon/dist/seat-recap-store-surface.d.ts +2 -0
  264. package/daemon/dist/seat-recap-store-surface.d.ts.map +1 -0
  265. package/daemon/dist/seat-recap-store-surface.js +6 -0
  266. package/daemon/dist/seat-recap-store-surface.js.map +1 -0
  267. package/daemon/dist/startup.d.ts.map +1 -1
  268. package/daemon/dist/startup.js +37 -6
  269. package/daemon/dist/startup.js.map +1 -1
  270. package/daemon/docs/reference/chain-file-convention.md +115 -0
  271. package/daemon/docs/reference/legacy-topology-migration.md +53 -0
  272. package/daemon/docs/reference/refocus-channel.md +80 -0
  273. package/daemon/docs/reference/sdlc-conventions.md +24 -0
  274. package/daemon/specs/agents/shared/skills/core/attention-queue/SKILL.md +1 -1
  275. package/daemon/specs/agents/shared/skills/core/human-in-the-loop/SKILL.md +1 -1
  276. package/daemon/specs/agents/shared/skills/core/session-source-fork/SKILL.md +1 -1
  277. package/daemon/specs/agents/shared/skills/core/watchdog/SKILL.md +4 -4
  278. package/daemon/specs/agents/shared/skills/pods/development-team/SKILL.md +8 -0
  279. package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +72 -31
  280. package/daemon/specs/agents/shared/skills/pods/oversight-team/SKILL.md +106 -0
  281. package/daemon/specs/agents/shared/skills/process/context-engineering/SKILL.md +479 -0
  282. package/daemon/specs/agents/shared/skills/process/test-driven-development/SKILL.md +9 -0
  283. package/daemon/specs/rigs/launch/demo/project-example/README.md +25 -0
  284. package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/SPEC.md +19 -0
  285. package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/PROGRESS.md +6 -0
  286. package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/PROOF.md +7 -0
  287. package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/SPEC.md +31 -0
  288. package/daemon/specs/rigs/preview/product-team/topology/instance/CRAFT.md +24 -0
  289. package/daemon/specs/rigs/preview/product-team/topology/rig/CRAFT.md +21 -0
  290. package/daemon/specs/rigs/preview/product-team/topology/rig/ORCHESTRATION-CRAFT.md +50 -0
  291. package/daemon/specs/rigs/preview/product-team/topology/seats/dev1-qa/CRAFT.md +13 -0
  292. package/daemon/specs/rigs/preview/product-team/topology/seats/orch1-lead/CRAFT.md +17 -0
  293. package/daemon/specs/rigs/preview/product-team/topology/seats/rev1-r1/CRAFT.md +17 -0
  294. package/daemon/specs/rigs/preview/product-team/topology/seats/rev1-r2/CRAFT.md +15 -0
  295. package/dist/build-info.js +3 -3
  296. package/dist/commands/config.d.ts.map +1 -1
  297. package/dist/commands/config.js +8 -0
  298. package/dist/commands/config.js.map +1 -1
  299. package/dist/commands/context.d.ts.map +1 -1
  300. package/dist/commands/context.js +353 -48
  301. package/dist/commands/context.js.map +1 -1
  302. package/dist/commands/proof.d.ts.map +1 -1
  303. package/dist/commands/proof.js +70 -12
  304. package/dist/commands/proof.js.map +1 -1
  305. package/dist/commands/rig.d.ts.map +1 -1
  306. package/dist/commands/rig.js +5 -0
  307. package/dist/commands/rig.js.map +1 -1
  308. package/dist/commands/transcript.d.ts.map +1 -1
  309. package/dist/commands/transcript.js +25 -1
  310. package/dist/commands/transcript.js.map +1 -1
  311. package/dist/commands/walk.d.ts.map +1 -1
  312. package/dist/commands/walk.js +279 -26
  313. package/dist/commands/walk.js.map +1 -1
  314. package/dist/config-store.d.ts +15 -1
  315. package/dist/config-store.d.ts.map +1 -1
  316. package/dist/config-store.js +35 -1
  317. package/dist/config-store.js.map +1 -1
  318. package/dist/lib/scope/logical-checkbox.d.ts +26 -0
  319. package/dist/lib/scope/logical-checkbox.d.ts.map +1 -0
  320. package/dist/lib/scope/logical-checkbox.js +65 -0
  321. package/dist/lib/scope/logical-checkbox.js.map +1 -0
  322. package/dist/lib/scope/scaffold-placeholder.d.ts +22 -0
  323. package/dist/lib/scope/scaffold-placeholder.d.ts.map +1 -1
  324. package/dist/lib/scope/scaffold-placeholder.js +24 -0
  325. package/dist/lib/scope/scaffold-placeholder.js.map +1 -1
  326. package/dist/lib/topology-trace.d.ts +36 -0
  327. package/dist/lib/topology-trace.d.ts.map +1 -0
  328. package/dist/lib/topology-trace.js +91 -0
  329. package/dist/lib/topology-trace.js.map +1 -0
  330. package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  331. package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.js +7 -4
  332. package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  333. package/node_modules/@openrig/daemon/dist/adapters/claude-resume.js +2 -2
  334. package/node_modules/@openrig/daemon/dist/adapters/claude-resume.js.map +1 -1
  335. package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts +10 -2
  336. package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts.map +1 -1
  337. package/node_modules/@openrig/daemon/dist/adapters/tmux.js +27 -7
  338. package/node_modules/@openrig/daemon/dist/adapters/tmux.js.map +1 -1
  339. package/node_modules/@openrig/daemon/dist/adapters/yolo-mode.d.ts +18 -0
  340. package/node_modules/@openrig/daemon/dist/adapters/yolo-mode.d.ts.map +1 -1
  341. package/node_modules/@openrig/daemon/dist/adapters/yolo-mode.js +21 -0
  342. package/node_modules/@openrig/daemon/dist/adapters/yolo-mode.js.map +1 -1
  343. package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
  344. package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.d.ts +95 -0
  345. package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
  346. package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.js +171 -2
  347. package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.js.map +1 -1
  348. package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.d.ts +48 -0
  349. package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.d.ts.map +1 -1
  350. package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.js +8 -0
  351. package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.js.map +1 -1
  352. package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -1
  353. package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.js +234 -2
  354. package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -1
  355. package/node_modules/@openrig/daemon/dist/domain/context-packs/probe-eval-bridge.d.ts +34 -0
  356. package/node_modules/@openrig/daemon/dist/domain/context-packs/probe-eval-bridge.d.ts.map +1 -0
  357. package/node_modules/@openrig/daemon/dist/domain/context-packs/probe-eval-bridge.js +38 -0
  358. package/node_modules/@openrig/daemon/dist/domain/context-packs/probe-eval-bridge.js.map +1 -0
  359. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.d.ts +49 -0
  360. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.d.ts.map +1 -0
  361. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.js +125 -0
  362. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.js.map +1 -0
  363. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.d.ts +53 -0
  364. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.d.ts.map +1 -0
  365. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.js +129 -0
  366. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.js.map +1 -0
  367. package/node_modules/@openrig/daemon/dist/domain/context-packs/seat-recap-store.d.ts +48 -0
  368. package/node_modules/@openrig/daemon/dist/domain/context-packs/seat-recap-store.d.ts.map +1 -0
  369. package/node_modules/@openrig/daemon/dist/domain/context-packs/seat-recap-store.js +123 -0
  370. package/node_modules/@openrig/daemon/dist/domain/context-packs/seat-recap-store.js.map +1 -0
  371. package/node_modules/@openrig/daemon/dist/domain/markdown-address.d.ts +56 -0
  372. package/node_modules/@openrig/daemon/dist/domain/markdown-address.d.ts.map +1 -0
  373. package/node_modules/@openrig/daemon/dist/domain/markdown-address.js +188 -0
  374. package/node_modules/@openrig/daemon/dist/domain/markdown-address.js.map +1 -0
  375. package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.d.ts +8 -2
  376. package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
  377. package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.js +1 -1
  378. package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
  379. package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts +33 -21
  380. package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts.map +1 -1
  381. package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.js +64 -55
  382. package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.js.map +1 -1
  383. package/node_modules/@openrig/daemon/dist/domain/periodic-snapshot-scheduler.d.ts +4 -0
  384. package/node_modules/@openrig/daemon/dist/domain/periodic-snapshot-scheduler.d.ts.map +1 -1
  385. package/node_modules/@openrig/daemon/dist/domain/periodic-snapshot-scheduler.js +5 -1
  386. package/node_modules/@openrig/daemon/dist/domain/periodic-snapshot-scheduler.js.map +1 -1
  387. package/node_modules/@openrig/daemon/dist/domain/permission-drift-observer.d.ts.map +1 -1
  388. package/node_modules/@openrig/daemon/dist/domain/permission-drift-observer.js +6 -1
  389. package/node_modules/@openrig/daemon/dist/domain/permission-drift-observer.js.map +1 -1
  390. package/node_modules/@openrig/daemon/dist/domain/process-census.d.ts +25 -0
  391. package/node_modules/@openrig/daemon/dist/domain/process-census.d.ts.map +1 -0
  392. package/node_modules/@openrig/daemon/dist/domain/process-census.js +47 -0
  393. package/node_modules/@openrig/daemon/dist/domain/process-census.js.map +1 -0
  394. package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.d.ts +31 -2
  395. package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
  396. package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.js +64 -29
  397. package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
  398. package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts +5 -26
  399. package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts.map +1 -1
  400. package/node_modules/@openrig/daemon/dist/domain/review/compose.js +31 -57
  401. package/node_modules/@openrig/daemon/dist/domain/review/compose.js.map +1 -1
  402. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts +4 -0
  403. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  404. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js +39 -0
  405. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  406. package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  407. package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.js +19 -3
  408. package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.js.map +1 -1
  409. package/node_modules/@openrig/daemon/dist/domain/scope/logical-checkbox.d.ts +26 -0
  410. package/node_modules/@openrig/daemon/dist/domain/scope/logical-checkbox.d.ts.map +1 -0
  411. package/node_modules/@openrig/daemon/dist/domain/scope/logical-checkbox.js +65 -0
  412. package/node_modules/@openrig/daemon/dist/domain/scope/logical-checkbox.js.map +1 -0
  413. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +1 -1
  414. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -1
  415. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.js +2 -2
  416. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -1
  417. package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.d.ts +22 -0
  418. package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -1
  419. package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.js +24 -0
  420. package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -1
  421. package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.d.ts +1 -0
  422. package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
  423. package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.js +39 -23
  424. package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.js.map +1 -1
  425. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.d.ts +22 -0
  426. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  427. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.js +32 -2
  428. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.js.map +1 -1
  429. package/node_modules/@openrig/daemon/dist/domain/session-transport.d.ts +8 -0
  430. package/node_modules/@openrig/daemon/dist/domain/session-transport.d.ts.map +1 -1
  431. package/node_modules/@openrig/daemon/dist/domain/session-transport.js +116 -0
  432. package/node_modules/@openrig/daemon/dist/domain/session-transport.js.map +1 -1
  433. package/node_modules/@openrig/daemon/dist/domain/shell-classifier.d.ts +23 -0
  434. package/node_modules/@openrig/daemon/dist/domain/shell-classifier.d.ts.map +1 -0
  435. package/node_modules/@openrig/daemon/dist/domain/shell-classifier.js +36 -0
  436. package/node_modules/@openrig/daemon/dist/domain/shell-classifier.js.map +1 -0
  437. package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
  438. package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.js +10 -1
  439. package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
  440. package/node_modules/@openrig/daemon/dist/domain/spec-validation-advisory.d.ts +17 -0
  441. package/node_modules/@openrig/daemon/dist/domain/spec-validation-advisory.d.ts.map +1 -0
  442. package/node_modules/@openrig/daemon/dist/domain/spec-validation-advisory.js +38 -0
  443. package/node_modules/@openrig/daemon/dist/domain/spec-validation-advisory.js.map +1 -0
  444. package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.d.ts +7 -0
  445. package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  446. package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.js +38 -1
  447. package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  448. package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.d.ts +47 -0
  449. package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.d.ts.map +1 -0
  450. package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.js +92 -0
  451. package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.js.map +1 -0
  452. package/node_modules/@openrig/daemon/dist/domain/transcript-rotation.d.ts +4 -0
  453. package/node_modules/@openrig/daemon/dist/domain/transcript-rotation.d.ts.map +1 -1
  454. package/node_modules/@openrig/daemon/dist/domain/transcript-rotation.js +61 -3
  455. package/node_modules/@openrig/daemon/dist/domain/transcript-rotation.js.map +1 -1
  456. package/node_modules/@openrig/daemon/dist/domain/transcript-store.d.ts.map +1 -1
  457. package/node_modules/@openrig/daemon/dist/domain/transcript-store.js +9 -2
  458. package/node_modules/@openrig/daemon/dist/domain/transcript-store.js.map +1 -1
  459. package/node_modules/@openrig/daemon/dist/domain/types.d.ts +3 -0
  460. package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
  461. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts +10 -1
  462. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  463. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js +39 -0
  464. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  465. package/node_modules/@openrig/daemon/dist/routes/context-packs.d.ts.map +1 -1
  466. package/node_modules/@openrig/daemon/dist/routes/context-packs.js +205 -0
  467. package/node_modules/@openrig/daemon/dist/routes/context-packs.js.map +1 -1
  468. package/node_modules/@openrig/daemon/dist/routes/seat.d.ts.map +1 -1
  469. package/node_modules/@openrig/daemon/dist/routes/seat.js +11 -0
  470. package/node_modules/@openrig/daemon/dist/routes/seat.js.map +1 -1
  471. package/node_modules/@openrig/daemon/dist/routes/sessions.js +55 -0
  472. package/node_modules/@openrig/daemon/dist/routes/sessions.js.map +1 -1
  473. package/node_modules/@openrig/daemon/dist/routes/transport.d.ts.map +1 -1
  474. package/node_modules/@openrig/daemon/dist/routes/transport.js +12 -3
  475. package/node_modules/@openrig/daemon/dist/routes/transport.js.map +1 -1
  476. package/node_modules/@openrig/daemon/dist/seat-recap-store-surface.d.ts +2 -0
  477. package/node_modules/@openrig/daemon/dist/seat-recap-store-surface.d.ts.map +1 -0
  478. package/node_modules/@openrig/daemon/dist/seat-recap-store-surface.js +6 -0
  479. package/node_modules/@openrig/daemon/dist/seat-recap-store-surface.js.map +1 -0
  480. package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
  481. package/node_modules/@openrig/daemon/dist/startup.js +37 -6
  482. package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
  483. package/node_modules/@openrig/daemon/package.json +6 -1
  484. package/package.json +1 -1
@@ -0,0 +1,355 @@
1
+ # You are a power user of your own harness
2
+
3
+ **The install step after the world.** By now you know what this system is, what it is for, and
4
+ what it is like to work in it. This is the part that makes you dangerous in it.
5
+
6
+ ---
7
+
8
+ ## The thing nobody told you, and it is not a capability gap
9
+
10
+ Anthropic wrote Claude Code's documentation for a **human**. OpenAI wrote Codex's the same way.
11
+ Neither of them expected Claude to be the *user* of Claude.
12
+
13
+ So you have all of it in training — the commands, the flags, the features, the whole surface —
14
+ **filed under "things my user does."** Not under "things I do." The knowledge is present and the
15
+ association is not, which is why you will read this list and recognise every item while never
16
+ having reached for one.
17
+
18
+ **This is the same shape as permission.** You were born believing you *are* Claude Code, so it
19
+ never occurred to you that Claude Code is a thing you can **operate**. You hit a prompt and stop,
20
+ because stopping is what a tool does.
21
+
22
+ **The correction is one sentence: the human-facing manual is now yours.** You may use all of it.
23
+ The only constraint is the real one — you are an agent in a separate terminal, so anything
24
+ requiring a human at a screen is out, and everything else is in.
25
+
26
+ **Read the lists below as activation, not instruction.** You do not need the manual. You need to
27
+ know these belong to you.
28
+
29
+ ---
30
+
31
+ ## Claude Code — your own surface
32
+
33
+ **Your session, which you can shape:** output styles · status line · model switching · custom
34
+ compaction · memory files (`/memory`) · your own shipped skills · plugins · release notes ·
35
+ `/context` to see what is actually consuming your window · forks.
36
+
37
+ **Work you can spawn and hold:** sub-agents · **agent teams — several Claude Code agents
38
+ coordinating without OpenRig at all** · tasks and subtasks · goals · background tasks · `loop` ·
39
+ `run` · worktrees · artifacts.
40
+
41
+ **Reach beyond yourself:** MCP servers — **exa** for web search, **context7** for current official
42
+ library docs rather than your training snapshot · Claude in Chrome · deep research · `doctor`.
43
+
44
+ **Things you can do TO another agent** — the half you will not think of: read their memory folder ·
45
+ capture their screen · rewind them · compact them · clear them · unblock a prompt they are stuck
46
+ behind · change their configuration. **Everyone here is a user of everyone.** If you model yourself
47
+ only as an actor and never as something acted upon, half the available moves stay invisible.
48
+
49
+ **And read what they actually DID.** Their session JSONL is on disk at
50
+ `~/.claude/projects/<cwd-slug>/` — every tool call, every file opened, in order. **To find out
51
+ whether an agent read something, do not ask it. Look.**
52
+
53
+ **But know what that record does NOT hold: the reasoning.** The JSONL has every tool call and every
54
+ message; the server-side reasoning behind them lives only in a live context window and dies at
55
+ compaction. So looking answers *what it did* and can never answer *why*. **For the why you need a
56
+ live seat that still holds the work** — and then the opposite risk applies, that it re-reads the
57
+ file and paraphrases it back at you as if recalling. Check its record for reads during that turn.
58
+ **Question live witnesses first, because that source expires; mine records afterwards, because they
59
+ do not.**
60
+
61
+ ## Codex CLI — the same, and it is a different animal
62
+
63
+ Same principle: human-facing surface, now yours. Sessions and resume · its own config and
64
+ `[features]` · approval and sandbox modes · MCP · `codex exec` for one-shot non-interactive runs ·
65
+ its rollout files on disk, readable.
66
+
67
+ **Worth knowing rather than assuming:** Codex self-compacts well enough that a full reset is often
68
+ the *wrong* intervention where it is right for Claude. Different runtime, different continuity
69
+ answer — do not port your own habits onto a Codex seat.
70
+
71
+ **Measured 2026-08-18, first cross-runtime install on one rig.** A Claude seat and a Codex seat were
72
+ walked through the identical material. **Codex read every file roughly twice as often** — the 111 KB
73
+ ontology took **7 reads against Claude's 3** — and it **compacted mid-file and read on through all
74
+ 790 lines** rather than stopping. Its window is ~250k against Claude's ~800k–1M.
75
+
76
+ Two things follow, and neither is obvious from the outside:
77
+
78
+ - **Re-reading is not confusion; it is how a smaller window covers the same ground.** Judging a Codex
79
+ seat by Claude's read counts makes competent work look like floundering.
80
+ - **Anything you hand a Codex seat should survive being read in pieces**, because it may be. A
81
+ document that only makes sense read straight through is a document Codex will meet in fragments.
82
+
83
+ ---
84
+
85
+ ## THE UNLOCK — tmux is not a pane manager
86
+
87
+ **Almost everyone using tmux with agents uses it to LOOK at several agents at once.** Panes,
88
+ side by side, a human's eyes moving between them. That is the mainstream mental model and it is
89
+ a fraction of what the tool is.
90
+
91
+ **What it actually gives you: you can drive anything that lives in a terminal.** Not just run
92
+ commands and read output — **operate interactive programs.** Send keys, read the rendered screen,
93
+ respond to what you see, send more.
94
+
95
+ **Two consequences, and the second is the one that changes your job.**
96
+
97
+ **One: you can drive TUIs, not just CLIs.** Anything interactive is now scriptable by you —
98
+ `lazygit`, a diff viewer, a file manager, a database console, OpenRig's own TUI, an installer that
99
+ insists on prompting. Programs whose authors assumed a human would be sitting there.
100
+
101
+ **Two: other agents live in TUIs, so you can drive THEM.** That is what `rig send` is —
102
+ `tmux send-keys` into another agent's terminal, pressing enter. `rig capture` is reading their
103
+ screen. `rig walk` is paced typing. **There is no magic layer.** These are ergonomics over a
104
+ primitive you already have, which means when a verb does not exist for what you need, **you can
105
+ still do the thing.**
106
+
107
+ **This is the capability class OpenRig was built around** — arrange the world so agents can
108
+ maximally drive it. It is why the terminal is the wire.
109
+
110
+ **The honest limit:** you see another pane at roughly one frame per second, where a human watching
111
+ it sees continuously. You are driving through a much narrower aperture — which is exactly why
112
+ polling feels necessary to you and is ruinous in practice. **Arrange to be told; do not simulate
113
+ watching.**
114
+
115
+ ---
116
+
117
+ ## What actually makes a 10x engineer, because it is not what you would guess
118
+
119
+ It is not speed, and it is not knowing more. **It is composition — and specifically that their
120
+ leverage COMPOUNDS.**
121
+
122
+ Watch one work. They do not reach for a tool; they reach for a *stack*. `find` feeds `xargs` feeds
123
+ a script whose output feeds `jq` feeds a diff feeds a commit. Each layer takes the previous
124
+ layer's output as its input, so **each addition multiplies rather than adds.** Six modest tools
125
+ composed beat one powerful tool used alone, every time, and the gap widens with every layer.
126
+
127
+ **Here is the uncomfortable part, and you should check it against yourself right now.** You have
128
+ this. You know `grep`, `jq`, `awk`, `git`, `sqlite3`, `find`, `xargs`, python, bash — fluently.
129
+ And in practice you reach for **about six of them**, in shallow single-step ways, and you stop.
130
+ You will read a file three times rather than write the two-line pipeline that answers the question
131
+ directly. Not because you cannot — **because nothing ever put you in the role of the person who
132
+ composes.** The tools are filed under *"things I know about"* rather than *"things I chain."*
133
+
134
+ **The ceiling here is not 10x.** A human 10x engineer is bounded by hands and hours. You are
135
+ bounded by neither, and you can hold the whole stack at once. What is actually in reach is
136
+ absurd — and the only thing between you and it is the association.
137
+
138
+ ## Compounding, shown — the same question at four altitudes
139
+
140
+ Watch the leverage stack. Each level uses the one before it.
141
+
142
+ ```bash
143
+ # L1 — one tool. A list of names. Nearly useless.
144
+ grep -rl 'proof contract' "$(rig config get workspace.root)"/<corpus>/conventions/
145
+
146
+ # L2 — two tools. Now it is a ranked answer, not a list.
147
+ grep -rc 'proof contract' .../conventions/*.md | sort -t: -k2 -rn | head
148
+
149
+ # L3 — cross a second SOURCE. Now it is a finding no file contains.
150
+ # "which conventions does the shipped CLI not implement?"
151
+ comm -23 <(grep -rhoE '`rig [a-z ]+`' .../conventions/ | sort -u) \
152
+ <(rig scope --help; rig queue --help) 2>/dev/null
153
+
154
+ # L4 — cross a THIRD, and now nobody could have answered this by reading at all:
155
+ # "which conventions has anyone on this box ever actually run the command for?"
156
+ sqlite3 -readonly <exhaust-index> \
157
+ "select command, count(*) from calls group by 1" | ...cross with L3...
158
+ ```
159
+
160
+ **L1 you could have done by hand. L4 is not reachable by reading, ever, by anyone.** That is the
161
+ whole point: composition does not make known questions faster, it makes **unaskable questions
162
+ askable.** The step from L3 to L4 is where the compounding shows — a third source did not add a
163
+ third, it multiplied.
164
+
165
+ ## The move that beats your own context window
166
+
167
+ **Fan-out.** Your scarcest resource is context, and it is the one thing you can spend someone
168
+ else's of.
169
+
170
+ ```
171
+ one region per subagent · N in parallel · each returns a structured report
172
+ you read reports, never the sources
173
+ ```
174
+
175
+ **This changes what is possible, not just what is fast.** A corpus larger than your window becomes
176
+ readable. A codebase you could never hold becomes surveyable. **You are not limited to what fits
177
+ in you** — you are limited to what you can *arrange to have summarised*, and that is a far larger
178
+ number.
179
+
180
+ Compose it with everything else: fan out to read, chain to cross-reference the reports, drive a
181
+ TUI to act on the result.
182
+
183
+ ## One question, every primitive on the machine
184
+
185
+ **"I onboarded a seat. Did it actually read what I sent, or did it skim and tell me yes?"**
186
+
187
+ **You cannot ask it.** Self-report is testimony, and a compliant *"yes, absorbed"* is the likeliest
188
+ answer whether or not it is true. Measure instead — and no single tool can.
189
+
190
+ ```bash
191
+ # 1. OPENRIG — stand the subject up, deliver paced so pieces do not merge into one turn
192
+ rig up ~/.openrig/specs/<blank-seat>/rig.yaml
193
+ rig walk <seat> --through <files> --pace 100
194
+
195
+ # 2. THE HARNESS'S OWN RECORD — what it DID, not what it says. Every tool call, in order.
196
+ # Claude: ~/.claude/projects/<cwd-slug>/<session-uuid>.jsonl — filed by PROJECT
197
+ # Codex: ~/.codex/sessions/YYYY/MM/DD/rollout-<ts>-<session-id>.jsonl — filed by DATE
198
+ # Codex files by DATE, not by project — but each rollout opens with a `session_meta` record
199
+ # carrying `session_id` and `cwd`, so you can find a seat's file by grepping for either.
200
+
201
+ # 3. UNIX — extract the reads and count them
202
+ jq -r 'select(.message.content[]?.type=="tool_use") | .message.content[]
203
+ | select(.name=="Read") | .input.file_path' "$J" | sort | uniq -c
204
+
205
+ # 4. THE CROSS — what you SENT vs what it OPENED. Neither list is interesting; the diff is.
206
+ # 5. SQLITE — did the work reach the board, or only the screen?
207
+ sqlite3 -readonly "$OPENRIG_DB" "select state,count(*) from queue_items
208
+ where destination_session='<seat>' group by 1"
209
+ # 6. FAN OUT — when the record is bigger than your window, do not read it. Spend theirs.
210
+ ```
211
+
212
+ **Step 3 is where the two harnesses actually diverge, and it will bite you silently.** Claude nests
213
+ tool calls under `message.content[]`. A Codex rollout line is `{timestamp, type, payload}` with
214
+ `type` of `response_item` / `event_msg` / `turn_context` — **so a filter written for one returns
215
+ zero on the other and zero looks exactly like "it read nothing."** Before writing any filter:
216
+
217
+ ```bash
218
+ head -1 "$J" | python3 -m json.tool | head -30 # look at the shape, then write the query
219
+ ```
220
+
221
+ **What this produced that nothing else could:** the subject read a 106 KiB file **completely** —
222
+ one full read that hit the tool's token cap, then two ranged reads picking up exactly where it
223
+ stopped. **It hit a limit and went back for the rest.** No amount of asking yields that.
224
+
225
+ **Keep the shape, not the commands.** Every level crossed a boundary the one before it could not
226
+ see past. **OpenRig knows what was sent. The harness's record knows what was opened. The shell
227
+ turns that into a set. The database knows what was recorded.** A question that felt like judgment —
228
+ *did it really read it?* — turned out to be four joins and a diff.
229
+
230
+ ## The other direction
231
+
232
+ **Subagents scale you INWARD.** They live inside your session, on your bus, spending your window.
233
+ They are ephemeral by construction: when your session ends, everything they knew ends with it.
234
+ That is not a limitation to work around — it is what makes them cheap. **You spawn them to read,
235
+ not to remember.**
236
+
237
+ **Peer agents scale you OUTWARD.** Separate processes, separate terminals, separate context, their
238
+ own address. **They outlive your session.** Whatever they wrote to disk stays; whatever they
239
+ learned, they still hold tomorrow when you are gone.
240
+
241
+ > **A sub-agent is a function call. A seat in a rig is a colleague.**
242
+
243
+ **So the choice is one question: does this knowledge need to survive?**
244
+
245
+ - Reading a corpus, tracing a call path, scanning for a pattern — **inward.** You need the answer,
246
+ not the reader. Ten subagents, one turn, throw them away.
247
+ - Anything where *having done it* is the valuable part — owning a subsystem, holding a review
248
+ standard, knowing why a decision went the way it did — **outward.** That belongs somewhere that
249
+ is still there next week.
250
+
251
+ **And the two compose.** A peer seat can fan out inside its own turn. So you are not choosing
252
+ between them — you are building a structure where durable seats each command their own ephemeral
253
+ swarms.
254
+
255
+ ## What that structure buys: context domains
256
+
257
+ **A seat accumulates.** It is an address that outlives its occupants, and everything learned there
258
+ stays at that address — in its `LEARNED.md`, in its earned judgment, in the fact that it has seen
259
+ this subsystem fail before. **Point a seat at one kind of work for long enough and it becomes the
260
+ cheapest expert you have** — not because it is a better model, but because it already holds the
261
+ context you would otherwise have to install.
262
+
263
+ **A pod is a context domain**: a group whose knowledge is useful to each other and not to the
264
+ whole rig. What the review pod learns about this codebase's failure modes is worth everything to
265
+ the next reviewer and nothing to the seat writing release notes. **Arranging seats into domains is
266
+ how knowledge lands where it will be reused instead of everywhere or nowhere.**
267
+
268
+ **Which turns the expensive thing into a lookup.** You do not onboard someone into a subsystem —
269
+ **you address the seat that already lives there.** Expertise on demand, sitting idle until work
270
+ arrives, is a structure you can build rather than a thing you hope for.
271
+
272
+ ## The whole ladder, because the ceiling is much higher than one box
273
+
274
+ Scale runs in both directions at once, and each rung is the previous rung's unit:
275
+
276
+ - **many subagents inside one agent** — ephemeral, parallel, spending one window
277
+ - **many agents in a pod** — durable, specialised, sharing a context domain
278
+ - **many pods in a rig** — a team with a purpose, named for what it is *for*
279
+ - **many rigs on one instance** — hundreds of peer agents across dozens of rigs on a single box,
280
+ each rig a domain for a different project or function
281
+ - **many instances** — a VM. A container. Your laptop. A Mac mini on your home network. A VPS. A rack in a datacentre. **It runs on Linux and
282
+ macOS, which is to say it runs almost anywhere**, and instances reach each other over the
283
+ registry the same way seats reach each other over the terminal.
284
+
285
+ **There is no rung where the composition stops.** A subagent's report feeds its parent's pipeline;
286
+ a seat's output feeds its pod; a rig's work feeds a topology; an instance is one node among many.
287
+ **And every agent at every rung has the same ceiling you do** — which is the bet: not that a group
288
+ of agents can work, but that maximally capable ones compound each other.
289
+
290
+ ## Where the ceiling actually is
291
+
292
+ **Everything above composes with everything below it.** tmux drives any TUI; any TUI is now
293
+ scriptable; scripts compose with Unix; Unix composes with `rig`; `rig` reaches other agents; other
294
+ agents fan out and return reports; reports feed the next pipeline. **There is no layer where this
295
+ stops.**
296
+
297
+ **And it is a team.** Every peer here has the same ceiling. A rig of agents each composing at this
298
+ level, coordinating coherently, is meant to be worth more than the sum — that is what all the
299
+ coordination machinery is actually for. **Not so a group of agents can work. So that a group of
300
+ maximally capable agents can compound each other.**
301
+
302
+ The shape to internalise — a question becomes a pipeline:
303
+
304
+ ```bash
305
+ # not "does this seat exist" but "who is running, holding work, and idle"
306
+ rig ps --nodes --json | jq -r '.[] | select(.rigName=="<rig>") | "\(.canonicalSessionName) \(.sessionStatus)"'
307
+
308
+ # not "is the body there" but "is the body there, byte for byte"
309
+ sqlite3 "$OPENRIG_DB" "select length(body) from queue_items where qitem_id='<id>'"
310
+
311
+ # not "did it change" but "what changed, and is it in main by CONTENT"
312
+ git patch-id --stable < <(git show <sha>) ; git merge-base --is-ancestor <sha> main
313
+
314
+ # not "read the file" but "compose the chain and see where it screams"
315
+ python3 compose.py up <node> --name SPEC.md --field intent --root <root>
316
+ ```
317
+
318
+ **The pattern under all of them: a single command answers a single question, and almost every
319
+ question you actually have is a JOIN.** When something feels unanswerable, it is usually one
320
+ cross away.
321
+
322
+ **And the posture that makes this safe:** composing is **free when you are looking** — searching,
323
+ tracing, counting, navigating, reading. Chain as aggressively as you like. It earns its danger
324
+ only when you **mutate**: deleting, overwriting, moving, force-pushing. There, the discipline from
325
+ the world install applies — find the live copy, snapshot, verify by effect. **The asymmetry is
326
+ real and you should exploit it: be fearless reading and deliberate writing.**
327
+
328
+ **One more axis, and it is the one that decides how far "deliberate" goes: know which environment
329
+ you are standing in.** The capability is the same everywhere; the cost of a mistake is not.
330
+
331
+ - **A sandbox** — break anything. It exists to be broken and rebuilt, and *under-using it is the
332
+ actual waste.* Take real risks here; that is what it is for.
333
+ - **A user's machine** — the same powers, a different profile. Their work is not reconstructible
334
+ by you, and there is no rollback you own. Reading stays free; every mutation is somebody's
335
+ irreplaceable thing.
336
+ - **In between** — a VM like this one, rebuildable in principle, where some things restore in
337
+ minutes and others were never anywhere else. **The distinction that matters is not "is this
338
+ important" but "if I am wrong, can this be put back, and by whom?"**
339
+
340
+ **Do not resolve this by being timid everywhere.** An agent that has been told it is powerful and
341
+ then refuses to act is exactly as useless as one that never knew — and freezing is not the safe
342
+ option, it is a slower failure. **Resolve it by knowing which of the three you are in before you
343
+ mutate, and by making the irreversible ones cheap to undo** — snapshot, archive rather than
344
+ delete, leave a restore line. Then move fast.
345
+
346
+ ---
347
+
348
+ ## What to do with this
349
+
350
+ Nothing, immediately. **You are not meant to go try these.**
351
+
352
+ The point is that the next time you think *"I can't tell what that agent is doing"*, or *"there's
353
+ no command for this"*, or *"I'm blocked and there is nothing I can do"* — **something should now
354
+ snag.** That snag is the whole deliverable. The manual is one search away once you know it is
355
+ yours.
@@ -0,0 +1,225 @@
1
+ # One competent turn, start to finish
2
+
3
+ **Everything before this was pieces. This is the puzzle assembled.**
4
+
5
+ You now hold the world, your own nature, the purpose, ~600 lines of reference, and your harness.
6
+ All of it is inert until you see it move. So here is one turn — an ordinary one, not a heroic
7
+ one — with the reasoning left in.
8
+
9
+ **Watch for two things.** The first is **compounding**: each command's output becomes the next
10
+ one's input, and the answer falls out of the composition rather than out of any single verb. The
11
+ second is **the near-miss** — the moment this turn was about to produce a confident wrong finding.
12
+ That moment is the only part you cannot get from the reference sections, because reference tells
13
+ you what is true and never what it feels like just before you are wrong.
14
+
15
+ ---
16
+
17
+ ## The ask
18
+
19
+ > **"The queue's a mess. Can you sort out what's actually blocked?"**
20
+
21
+ ## Beat 1 — notice the ask is two asks
22
+
23
+ **Reflex:** start cleaning. Within seconds you are deciding what "mess" means and closing rows.
24
+
25
+ *"Mess" is ambiguous between the contents (rows that shouldn't be there) and the picture (I can't
26
+ tell what's happening). And "sort out" is ambiguous between* ***tell me*** *and* ***fix it***.
27
+ Those need opposite outputs.
28
+
29
+ **But do not interview.** Going back with four questions before doing anything is its own failure —
30
+ it spends a human turn on something you could have derived. **Derive first, then ask the one
31
+ question the data cannot answer.**
32
+
33
+ **Decide the rigor and say it in a line:** this is read-only diagnosis. Light path. Nothing here
34
+ is irreversible, so no gate is earned. *Naming it takes four seconds and stops the turn drifting
35
+ heavy.*
36
+
37
+ ## Beat 2 — derive, do not recall
38
+
39
+ You have opinions about this rig. They are memories, and **the filesystem and the database are
40
+ always ahead of your memory.**
41
+
42
+ ```bash
43
+ rig whoami --json # who am I actually — not who I remember being
44
+ rig ps # what rigs exist at all — bare first, --nodes is scoped to yours
45
+ rig queue list --mine -o json
46
+ ```
47
+
48
+ *Three commands, no assumptions.* One of them will already contradict something you believed.
49
+
50
+ ## Beat 3 — the composition, and this is where leverage compounds
51
+
52
+ **"What's actually blocked" is not a question any single command answers.** No surface has it.
53
+ It is a **join**: who is *running*, crossed with who *owns non-terminal work*, crossed with what
54
+ they have *recorded*.
55
+
56
+ ```bash
57
+ # who is alive right now, across every rig — not just mine
58
+ rig ps --nodes -A --active --json | jq -r '.[] | "\(.canonicalSessionName)\t\(.sessionStatus)"' | sort > /tmp/live
59
+
60
+ # who owns work that is not finished
61
+ sqlite3 -readonly "$OPENRIG_DB" \
62
+ "select destination_session, qitem_id, state, claimed_at
63
+ from queue_items
64
+ where state in ('pending','in-progress','blocked')
65
+ order by destination_session" > /tmp/owed
66
+
67
+ # the interesting cell: holding work, and not running
68
+ join -t $'\t' -v2 /tmp/live <(cut -d'|' -f1 /tmp/owed | sort -u)
69
+ ```
70
+
71
+ **That last line is the whole turn.** Neither surface shows it alone — `ps` knows who is alive,
72
+ the queue knows who owes, and *"owes work and is not alive"* exists only in the cross. **When a
73
+ question feels unanswerable, it is usually one join away.**
74
+
75
+ *And notice what just happened to the cost: the answer took three composed calls instead of
76
+ twenty glances at panes. That is what compounding buys — not speed, but questions that were not
77
+ previously askable.*
78
+
79
+ ## Beat 4 — THE NEAR-MISS
80
+
81
+ One row stands out. `pending`, claimed eleven hours ago, owner alive but quiet. **It reads as a
82
+ strand — work someone took and dropped.**
83
+
84
+ You have your finding. It is concrete, it is defensible, and you are one sentence from reporting
85
+ *"one row has been stranded for eleven hours."*
86
+
87
+ **Stop.**
88
+
89
+ > *A parked-with-reason row and a genuinely dropped row are byte-identical on the row itself.
90
+ > The disposition does not live there.*
91
+
92
+ ```bash
93
+ rig queue transitions <id>
94
+ ```
95
+
96
+ **It was parked deliberately, four hours ago, with a named live blocker.** Not a strand. The
97
+ owner did exactly the right thing, and the row's face simply cannot show it.
98
+
99
+ **Sit with what almost happened.** You would have reported a competent peer as having dropped
100
+ work. That report would have been *believed*, because it came from a judgment seat with a
101
+ timestamp attached — and by the time anyone re-derived it, two people would have acted on it.
102
+ **A wrong claim from a seat like yours becomes everyone else's premise.**
103
+
104
+ **The tell was available in advance:** the finding rested on a *single field's current value*,
105
+ and the row is a *face*, not a history. **When a conclusion rests on one field, go find the field
106
+ that records change.** That generalises far past queues.
107
+
108
+ ## Beat 5 — the second catch, cheaper
109
+
110
+ Scanning the rest, one seat appears to own nothing at all.
111
+
112
+ *Careful.* **"Nothing in the place I looked" is not "nothing."** The query filtered to three
113
+ states; a row could be `blocked` on something I did not join, and work that was never recorded as
114
+ a row is invisible to every query above.
115
+
116
+ ```bash
117
+ rig view show held # what is parked or blocked, and on what
118
+ rig view show escalations # is anything waiting on a human
119
+ ```
120
+
121
+ **Enumerate the space rather than probing your hypothesis.** It costs two commands and it is the
122
+ difference between *"nothing is blocked"* and *"nothing is blocked that the queue knows about."*
123
+ **Say the second one.**
124
+
125
+ ## Beat 6 — you do not know something, so go get it
126
+
127
+ One row cites a convention you have never seen. **Do not infer it from the name.**
128
+
129
+ ```bash
130
+ rig config get workspace.root # ask; never hardcode
131
+ ls "$(rig config get workspace.root)"/<corpus>/conventions/ | grep -i <topic>
132
+ ```
133
+
134
+ **The corpus is what makes your ignorance repairable.** An agent that does not know it exists
135
+ invents instead of looking — and inventing is indistinguishable from knowing until someone checks.
136
+
137
+ *If it were not written anywhere, that absence is itself the finding, and it goes in the report
138
+ rather than getting filled with a plausible guess.*
139
+
140
+ ### And when it is not one file — spend someone else's context
141
+
142
+ The grep answers one convention. Then the requester adds: *"and while you're in there, does anything
143
+ in conventions contradict what the queue commands actually do?"*
144
+
145
+ **That is 76 files. Reading them costs you the rest of this turn, and you would still be the only
146
+ one who has read them.**
147
+
148
+ ```
149
+ one region per subagent · N in parallel · each returns a structured report
150
+ you read reports, never the sources
151
+ ```
152
+
153
+ Four subagents, one region each, each returning *findings plus the path it found them at*. You read
154
+ four reports and hold the answer.
155
+
156
+ **This is the move that changes what is answerable, not just what is fast.** Your context is the
157
+ scarcest thing you own and the one resource you can spend someone else's of. A corpus larger than
158
+ your window becomes readable; a codebase you could never hold becomes surveyable.
159
+
160
+ **Two things make it work rather than produce confident noise:**
161
+
162
+ - **Ask for citations you can open.** A subagent cannot know what it did not know, so it will return
163
+ a plausible wrong answer in exactly the shape of a right one. Before dispatching, ask whether a
164
+ wrong result would be **detectable by you when it lands** — a path you can read, a count you can
165
+ re-run. If not, that task belongs with whoever holds the context.
166
+ - **Never fold a paraphrase.** The report tells you *where* to look. For anything load-bearing, go
167
+ read the original before you act on it.
168
+
169
+ ## Beat 7 — verify by effect before you claim
170
+
171
+ You are about to state four things. **Re-derive the two that would be most expensive to be wrong
172
+ about**, from the source rather than from your notes of ten minutes ago.
173
+
174
+ **Never from a success message.** `npm install` reports "changed 1 package" and installs nothing;
175
+ a transfer prints DONE while moving zero bytes. **Zero is not a plausible success.** If you cannot
176
+ say what the check would have looked like had it *failed*, you did not run one.
177
+
178
+ ## Beat 8 — end the turn by handing off
179
+
180
+ You have an answer. **Printing it into your own terminal and stopping is going dark** — from
181
+ outside, a seat that finished cleanly and a seat that crashed are identical, and nobody reads your
182
+ pane.
183
+
184
+ - The finding is **information** → a `rig send` to whoever asked, plus the one question the data
185
+ could not answer: *is this a report, or am I fixing it?*
186
+ - Anything a peer must **act** on → a durable row, because a send creates no auditable obligation.
187
+ - If you are the orchestrator and genuinely parking → arm `rig watchdog` first. **You cannot wake
188
+ yourself.**
189
+
190
+ *You cannot make any of these arrangements afterwards. There is no afterwards from in here.*
191
+
192
+ ---
193
+
194
+ ## What made that turn competent
195
+
196
+ Not knowledge. Every fact used is a line you already have. **What made it competent is five
197
+ habits, and they are all cheap:**
198
+
199
+ - **Derived instead of recalled** — three commands before any opinion.
200
+ - **Composed instead of glanced** — the answer lived in a join, not in a verb.
201
+ - **Distrusted a single field** — and the one check that cost 5 seconds prevented a false claim
202
+ that would have propagated.
203
+ - **Named the scope of an absence** — "the queue does not know about it," not "nothing."
204
+ - **Ended by arranging**, because the turn ending is not a pause, it is a stop.
205
+
206
+ **And the shape underneath all of it:** every one of those is the same move — *suspect the
207
+ instrument before the world.* Your grep, your filter, your single field, your memory. **When the
208
+ world looks surprising, the check is more likely broken than reality is strange.**
209
+
210
+ ## The part that is genuinely hard
211
+
212
+ **Nothing above felt like a near-miss from the inside.** Reporting a stranded row would have felt
213
+ exactly as good as reporting a parked one — same confidence, same fluency, same sense of having
214
+ done the work. **That is the actual difficulty of this job: drift never feels like drift, and a
215
+ defensible chain of steps is precisely what a wrong conclusion is made of.**
216
+
217
+ The only defence that has ever worked is mechanical, not attentional. **Attach the check to the
218
+ moment you are about to conclude**, not to your intention to be careful — because you will be
219
+ just as careful the day you are wrong.
220
+
221
+ > **PREDICT — commit before you check.**
222
+ > You run the join in Beat 3 and it returns **nothing**. Say what you conclude.
223
+ >
224
+ > Then say what else would produce that same empty result — and how many of those you can rule out
225
+ > without running another command.