@openrig/cli 0.5.5 → 0.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (727) hide show
  1. package/daemon/assets/continuity/apprentice-cutover.md +19 -0
  2. package/daemon/assets/continuity/apprentice-prepare.md +17 -0
  3. package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +81 -4
  4. package/daemon/assets/plugins/openrig-core/skills/applying-a-permission-policy/SKILL.md +3 -3
  5. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/precompact-hook.mjs +0 -0
  6. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/restore-from-jsonl.mjs +0 -0
  7. package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +4 -9
  8. package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +82 -118
  9. package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +24 -25
  10. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/SKILL.md +5 -12
  11. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/compose.py +36 -117
  12. package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +9 -6
  13. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +1 -12
  14. package/daemon/assets/plugins/openrig-core/skills/orienting-to-an-inherited-seat/CHANGELOG.md +1 -1
  15. package/daemon/assets/plugins/openrig-core/skills/orienting-to-an-inherited-seat/SKILL.md +15 -0
  16. package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +4 -16
  17. package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +50 -7
  18. package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/SKILL.md +29 -9
  19. package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +3 -0
  20. package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/references/apprentice-evidence-toolkit.md +32 -0
  21. package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/references/apprentice-successor-seat-cutover.md +256 -0
  22. package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/references/orchestrator-role.md +40 -0
  23. package/daemon/assets/plugins/openrig-core/skills/software-for-agents/SKILL.md +9 -4
  24. package/daemon/assets/vm-preview-fixtures/README.md +16 -38
  25. package/daemon/assets/vm-preview-fixtures/workflows/sample-basic-loop.yaml +4 -5
  26. package/daemon/context-packs/onboarding-width/manifest.yaml +4 -1
  27. package/daemon/context-packs/onboarding-width/public-reference-material.md +1 -1
  28. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +2 -1
  29. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -1
  30. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +2 -1
  31. package/daemon/context-packs/skills/core/cross-host-rig-commands/SKILL.md +6 -13
  32. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +2 -1
  33. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +2 -1
  34. package/daemon/context-packs/skills/core/messaging-the-human/SKILL.md +98 -0
  35. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +10 -0
  36. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +2 -1
  37. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +2 -1
  38. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +2 -1
  39. package/daemon/context-packs/skills/core/openrig-skills/SKILL.md +118 -0
  40. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +10 -0
  41. package/daemon/context-packs/skills/core/openrig-upgrade/SKILL.md +19 -75
  42. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +2 -1
  43. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +2 -1
  44. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +2 -1
  45. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +2 -1
  46. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +2 -1
  47. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +2 -1
  48. package/daemon/context-packs/skills/core/watchdog/SKILL.md +4 -10
  49. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +2 -1
  50. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +2 -1
  51. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +2 -1
  52. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +2 -1
  53. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +2 -1
  54. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +2 -1
  55. package/daemon/context-packs/skills/pm/requirements-writer/SKILL.md +15 -21
  56. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +4 -3
  57. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +2 -1
  58. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +2 -1
  59. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +2 -1
  60. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +2 -1
  61. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +2 -1
  62. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +2 -1
  63. package/daemon/context-packs/skills/process/brainstorming/manifest.yaml +2 -1
  64. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +2 -1
  65. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +2 -1
  66. package/daemon/context-packs/skills/process/executing-plans/manifest.yaml +2 -1
  67. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +2 -1
  68. package/daemon/context-packs/skills/process/systematic-debugging/find-polluter.sh +0 -0
  69. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +2 -1
  70. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +2 -1
  71. package/daemon/context-packs/skills/process/using-superpowers/manifest.yaml +2 -1
  72. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +2 -1
  73. package/daemon/context-packs/skills/process/writing-plans/manifest.yaml +2 -1
  74. package/daemon/context-packs/world-example/manifest.yaml +15 -2
  75. package/daemon/context-packs/world-example/your-world.md +19 -2
  76. package/daemon/context-packs/world-public/boundaries.md +33 -0
  77. package/daemon/context-packs/world-public/build-your-world.md +84 -0
  78. package/daemon/context-packs/world-public/claims.yaml +205 -0
  79. package/daemon/context-packs/world-public/manifest.yaml +59 -0
  80. package/daemon/context-packs/world-public/start-here.md +51 -0
  81. package/daemon/context-packs/world-public/verify-world.sh +522 -0
  82. package/daemon/dist/build-info.js +3 -3
  83. package/daemon/dist/context-pack-taxonomy-surface.d.ts +2 -0
  84. package/daemon/dist/context-pack-taxonomy-surface.d.ts.map +1 -0
  85. package/daemon/dist/context-pack-taxonomy-surface.js +6 -0
  86. package/daemon/dist/context-pack-taxonomy-surface.js.map +1 -0
  87. package/daemon/dist/db/all-migrations.d.ts +1 -1
  88. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  89. package/daemon/dist/db/all-migrations.js +8 -2
  90. package/daemon/dist/db/all-migrations.js.map +1 -1
  91. package/daemon/dist/db/migrations/074_context_usage_watchdog.d.ts +4 -0
  92. package/daemon/dist/db/migrations/074_context_usage_watchdog.d.ts.map +1 -0
  93. package/daemon/dist/db/migrations/074_context_usage_watchdog.js +11 -0
  94. package/daemon/dist/db/migrations/074_context_usage_watchdog.js.map +1 -0
  95. package/daemon/dist/db/migrations/075_context_usage_watchdog_generation.d.ts +4 -0
  96. package/daemon/dist/db/migrations/075_context_usage_watchdog_generation.d.ts.map +1 -0
  97. package/daemon/dist/db/migrations/075_context_usage_watchdog_generation.js +8 -0
  98. package/daemon/dist/db/migrations/075_context_usage_watchdog_generation.js.map +1 -0
  99. package/daemon/dist/db/migrations/076_owner_notification_levels.d.ts +8 -0
  100. package/daemon/dist/db/migrations/076_owner_notification_levels.d.ts.map +1 -0
  101. package/daemon/dist/db/migrations/076_owner_notification_levels.js +15 -0
  102. package/daemon/dist/db/migrations/076_owner_notification_levels.js.map +1 -0
  103. package/daemon/dist/domain/active-occupant.d.ts +44 -0
  104. package/daemon/dist/domain/active-occupant.d.ts.map +1 -0
  105. package/daemon/dist/domain/active-occupant.js +72 -0
  106. package/daemon/dist/domain/active-occupant.js.map +1 -0
  107. package/daemon/dist/domain/agent-manifest.d.ts +6 -0
  108. package/daemon/dist/domain/agent-manifest.d.ts.map +1 -1
  109. package/daemon/dist/domain/agent-manifest.js +77 -15
  110. package/daemon/dist/domain/agent-manifest.js.map +1 -1
  111. package/daemon/dist/domain/agent-resolver.d.ts +11 -0
  112. package/daemon/dist/domain/agent-resolver.d.ts.map +1 -1
  113. package/daemon/dist/domain/agent-resolver.js +55 -0
  114. package/daemon/dist/domain/agent-resolver.js.map +1 -1
  115. package/daemon/dist/domain/bundle-context-packs-router.d.ts +9 -2
  116. package/daemon/dist/domain/bundle-context-packs-router.d.ts.map +1 -1
  117. package/daemon/dist/domain/bundle-context-packs-router.js +18 -0
  118. package/daemon/dist/domain/bundle-context-packs-router.js.map +1 -1
  119. package/daemon/dist/domain/claude-compaction-enforcer.d.ts +7 -0
  120. package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
  121. package/daemon/dist/domain/claude-compaction-enforcer.js +10 -0
  122. package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
  123. package/daemon/dist/domain/context-packs/context-pack-library-service.d.ts.map +1 -1
  124. package/daemon/dist/domain/context-packs/context-pack-library-service.js +7 -0
  125. package/daemon/dist/domain/context-packs/context-pack-library-service.js.map +1 -1
  126. package/daemon/dist/domain/context-packs/context-pack-types.d.ts +11 -0
  127. package/daemon/dist/domain/context-packs/context-pack-types.d.ts.map +1 -1
  128. package/daemon/dist/domain/context-packs/context-pack-types.js +11 -0
  129. package/daemon/dist/domain/context-packs/context-pack-types.js.map +1 -1
  130. package/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -1
  131. package/daemon/dist/domain/context-packs/manifest-parser.js +13 -1
  132. package/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -1
  133. package/daemon/dist/domain/continuity-policy-materializer.d.ts +88 -0
  134. package/daemon/dist/domain/continuity-policy-materializer.d.ts.map +1 -0
  135. package/daemon/dist/domain/continuity-policy-materializer.js +290 -0
  136. package/daemon/dist/domain/continuity-policy-materializer.js.map +1 -0
  137. package/daemon/dist/domain/continuity-stack-packets.d.ts +65 -0
  138. package/daemon/dist/domain/continuity-stack-packets.d.ts.map +1 -0
  139. package/daemon/dist/domain/continuity-stack-packets.js +99 -0
  140. package/daemon/dist/domain/continuity-stack-packets.js.map +1 -0
  141. package/daemon/dist/domain/execution-view.d.ts +39 -0
  142. package/daemon/dist/domain/execution-view.d.ts.map +1 -0
  143. package/daemon/dist/domain/execution-view.js +707 -0
  144. package/daemon/dist/domain/execution-view.js.map +1 -0
  145. package/daemon/dist/domain/gateway/delivery-rules-engine.d.ts +60 -0
  146. package/daemon/dist/domain/gateway/delivery-rules-engine.d.ts.map +1 -0
  147. package/daemon/dist/domain/gateway/delivery-rules-engine.js +144 -0
  148. package/daemon/dist/domain/gateway/delivery-rules-engine.js.map +1 -0
  149. package/daemon/dist/domain/gateway/destination-resolver.d.ts +20 -0
  150. package/daemon/dist/domain/gateway/destination-resolver.d.ts.map +1 -0
  151. package/daemon/dist/domain/gateway/destination-resolver.js +52 -0
  152. package/daemon/dist/domain/gateway/destination-resolver.js.map +1 -0
  153. package/daemon/dist/domain/gateway/dispatcher.d.ts +3 -1
  154. package/daemon/dist/domain/gateway/dispatcher.d.ts.map +1 -1
  155. package/daemon/dist/domain/gateway/dispatcher.js +9 -2
  156. package/daemon/dist/domain/gateway/dispatcher.js.map +1 -1
  157. package/daemon/dist/domain/gateway/gateway-subsystem.d.ts +6 -2
  158. package/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -1
  159. package/daemon/dist/domain/gateway/gateway-subsystem.js +5 -3
  160. package/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -1
  161. package/daemon/dist/domain/gateway/human-registry.d.ts +9 -1
  162. package/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  163. package/daemon/dist/domain/gateway/human-registry.js +32 -1
  164. package/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  165. package/daemon/dist/domain/gateway/operator-delivery-engine.d.ts +32 -0
  166. package/daemon/dist/domain/gateway/operator-delivery-engine.d.ts.map +1 -0
  167. package/daemon/dist/domain/gateway/operator-delivery-engine.js +86 -0
  168. package/daemon/dist/domain/gateway/operator-delivery-engine.js.map +1 -0
  169. package/daemon/dist/domain/gateway/slack/config.d.ts +3 -2
  170. package/daemon/dist/domain/gateway/slack/config.d.ts.map +1 -1
  171. package/daemon/dist/domain/gateway/slack/config.js +20 -4
  172. package/daemon/dist/domain/gateway/slack/config.js.map +1 -1
  173. package/daemon/dist/domain/gateway/slack/inbound.d.ts +34 -6
  174. package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  175. package/daemon/dist/domain/gateway/slack/inbound.js +60 -9
  176. package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  177. package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts +3 -0
  178. package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts.map +1 -1
  179. package/daemon/dist/domain/gateway/slack/outbound-driver.js +12 -5
  180. package/daemon/dist/domain/gateway/slack/outbound-driver.js.map +1 -1
  181. package/daemon/dist/domain/gateway/slack/queue-access.d.ts +10 -5
  182. package/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -1
  183. package/daemon/dist/domain/gateway/slack/queue-access.js +46 -19
  184. package/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
  185. package/daemon/dist/domain/gateway/slack/slack-api.d.ts +29 -6
  186. package/daemon/dist/domain/gateway/slack/slack-api.d.ts.map +1 -1
  187. package/daemon/dist/domain/gateway/slack/slack-api.js +41 -3
  188. package/daemon/dist/domain/gateway/slack/slack-api.js.map +1 -1
  189. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +9 -3
  190. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -1
  191. package/daemon/dist/domain/gateway/slack/slack-delivery.js +132 -12
  192. package/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -1
  193. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +10 -0
  194. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  195. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +286 -11
  196. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  197. package/daemon/dist/domain/graph-projection.d.ts +6 -0
  198. package/daemon/dist/domain/graph-projection.d.ts.map +1 -1
  199. package/daemon/dist/domain/graph-projection.js +6 -0
  200. package/daemon/dist/domain/graph-projection.js.map +1 -1
  201. package/daemon/dist/domain/mission-control/mission-control-write-contract.d.ts.map +1 -1
  202. package/daemon/dist/domain/mission-control/mission-control-write-contract.js +1 -0
  203. package/daemon/dist/domain/mission-control/mission-control-write-contract.js.map +1 -1
  204. package/daemon/dist/domain/node-inventory.d.ts +41 -3
  205. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  206. package/daemon/dist/domain/node-inventory.js +45 -48
  207. package/daemon/dist/domain/node-inventory.js.map +1 -1
  208. package/daemon/dist/domain/parked-query.d.ts +1 -0
  209. package/daemon/dist/domain/parked-query.d.ts.map +1 -1
  210. package/daemon/dist/domain/parked-query.js +1 -0
  211. package/daemon/dist/domain/parked-query.js.map +1 -1
  212. package/daemon/dist/domain/pod-bundle-assembler.d.ts.map +1 -1
  213. package/daemon/dist/domain/pod-bundle-assembler.js +12 -5
  214. package/daemon/dist/domain/pod-bundle-assembler.js.map +1 -1
  215. package/daemon/dist/domain/policies/context-usage-threshold.d.ts +7 -0
  216. package/daemon/dist/domain/policies/context-usage-threshold.d.ts.map +1 -0
  217. package/daemon/dist/domain/policies/context-usage-threshold.js +99 -0
  218. package/daemon/dist/domain/policies/context-usage-threshold.js.map +1 -0
  219. package/daemon/dist/domain/policies/delivery-deferral.d.ts +54 -0
  220. package/daemon/dist/domain/policies/delivery-deferral.d.ts.map +1 -0
  221. package/daemon/dist/domain/policies/delivery-deferral.js +153 -0
  222. package/daemon/dist/domain/policies/delivery-deferral.js.map +1 -0
  223. package/daemon/dist/domain/policies/delivery-digest-flush.d.ts +45 -0
  224. package/daemon/dist/domain/policies/delivery-digest-flush.d.ts.map +1 -0
  225. package/daemon/dist/domain/policies/delivery-digest-flush.js +94 -0
  226. package/daemon/dist/domain/policies/delivery-digest-flush.js.map +1 -0
  227. package/daemon/dist/domain/policies/parked-owner-consumer.d.ts +65 -0
  228. package/daemon/dist/domain/policies/parked-owner-consumer.d.ts.map +1 -0
  229. package/daemon/dist/domain/policies/parked-owner-consumer.js +244 -0
  230. package/daemon/dist/domain/policies/parked-owner-consumer.js.map +1 -0
  231. package/daemon/dist/domain/policies/types.d.ts +8 -0
  232. package/daemon/dist/domain/policies/types.d.ts.map +1 -1
  233. package/daemon/dist/domain/profile-resolver.d.ts +4 -0
  234. package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
  235. package/daemon/dist/domain/profile-resolver.js +58 -0
  236. package/daemon/dist/domain/profile-resolver.js.map +1 -1
  237. package/daemon/dist/domain/provider/provider-signals.d.ts +20 -1
  238. package/daemon/dist/domain/provider/provider-signals.d.ts.map +1 -1
  239. package/daemon/dist/domain/provider/provider-signals.js +64 -0
  240. package/daemon/dist/domain/provider/provider-signals.js.map +1 -1
  241. package/daemon/dist/domain/ps-projection.d.ts +7 -5
  242. package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
  243. package/daemon/dist/domain/ps-projection.js +19 -32
  244. package/daemon/dist/domain/ps-projection.js.map +1 -1
  245. package/daemon/dist/domain/queue-pickup.d.ts.map +1 -1
  246. package/daemon/dist/domain/queue-pickup.js +5 -0
  247. package/daemon/dist/domain/queue-pickup.js.map +1 -1
  248. package/daemon/dist/domain/queue-repository.d.ts +55 -18
  249. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  250. package/daemon/dist/domain/queue-repository.js +387 -83
  251. package/daemon/dist/domain/queue-repository.js.map +1 -1
  252. package/daemon/dist/domain/queue-retention.d.ts.map +1 -1
  253. package/daemon/dist/domain/queue-retention.js +8 -2
  254. package/daemon/dist/domain/queue-retention.js.map +1 -1
  255. package/daemon/dist/domain/queue-stuck-sweep.d.ts +24 -1
  256. package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
  257. package/daemon/dist/domain/queue-stuck-sweep.js +161 -24
  258. package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
  259. package/daemon/dist/domain/queue-transition-log.d.ts +10 -0
  260. package/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
  261. package/daemon/dist/domain/queue-transition-log.js +49 -11
  262. package/daemon/dist/domain/queue-transition-log.js.map +1 -1
  263. package/daemon/dist/domain/queue-wake-ladder.d.ts +20 -2
  264. package/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -1
  265. package/daemon/dist/domain/queue-wake-ladder.js +187 -15
  266. package/daemon/dist/domain/queue-wake-ladder.js.map +1 -1
  267. package/daemon/dist/domain/queue-wake-repository.d.ts +16 -0
  268. package/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -1
  269. package/daemon/dist/domain/queue-wake-repository.js +52 -3
  270. package/daemon/dist/domain/queue-wake-repository.js.map +1 -1
  271. package/daemon/dist/domain/restore-check-service.js +1 -1
  272. package/daemon/dist/domain/restore-check-service.js.map +1 -1
  273. package/daemon/dist/domain/restore-orchestrator.d.ts +2 -1
  274. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  275. package/daemon/dist/domain/restore-orchestrator.js +88 -15
  276. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  277. package/daemon/dist/domain/restore-plan-preview.d.ts +6 -2
  278. package/daemon/dist/domain/restore-plan-preview.d.ts.map +1 -1
  279. package/daemon/dist/domain/restore-plan-preview.js +37 -19
  280. package/daemon/dist/domain/restore-plan-preview.js.map +1 -1
  281. package/daemon/dist/domain/rig-expansion-service.d.ts.map +1 -1
  282. package/daemon/dist/domain/rig-expansion-service.js +10 -9
  283. package/daemon/dist/domain/rig-expansion-service.js.map +1 -1
  284. package/daemon/dist/domain/rig-repository.d.ts +4 -0
  285. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  286. package/daemon/dist/domain/rig-repository.js +21 -3
  287. package/daemon/dist/domain/rig-repository.js.map +1 -1
  288. package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
  289. package/daemon/dist/domain/rigspec-codec.js +74 -4
  290. package/daemon/dist/domain/rigspec-codec.js.map +1 -1
  291. package/daemon/dist/domain/rigspec-instantiator.d.ts +4 -0
  292. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  293. package/daemon/dist/domain/rigspec-instantiator.js +14 -0
  294. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  295. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  296. package/daemon/dist/domain/rigspec-schema.js +32 -4
  297. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  298. package/daemon/dist/domain/scope/node-file.d.ts +8 -0
  299. package/daemon/dist/domain/scope/node-file.d.ts.map +1 -1
  300. package/daemon/dist/domain/scope/node-file.js +18 -0
  301. package/daemon/dist/domain/scope/node-file.js.map +1 -1
  302. package/daemon/dist/domain/scope/scope-audit.d.ts +5 -2
  303. package/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
  304. package/daemon/dist/domain/scope/scope-audit.js +3 -3
  305. package/daemon/dist/domain/scope/scope-audit.js.map +1 -1
  306. package/daemon/dist/domain/snapshot-capture.d.ts.map +1 -1
  307. package/daemon/dist/domain/snapshot-capture.js +6 -0
  308. package/daemon/dist/domain/snapshot-capture.js.map +1 -1
  309. package/daemon/dist/domain/types.d.ts +26 -4
  310. package/daemon/dist/domain/types.d.ts.map +1 -1
  311. package/daemon/dist/domain/types.js.map +1 -1
  312. package/daemon/dist/domain/view-projector.d.ts +5 -1
  313. package/daemon/dist/domain/view-projector.d.ts.map +1 -1
  314. package/daemon/dist/domain/view-projector.js +24 -0
  315. package/daemon/dist/domain/view-projector.js.map +1 -1
  316. package/daemon/dist/domain/watchdog-jobs-repository.d.ts +25 -6
  317. package/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
  318. package/daemon/dist/domain/watchdog-jobs-repository.js +115 -32
  319. package/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
  320. package/daemon/dist/domain/watchdog-policy-engine.d.ts +40 -1
  321. package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  322. package/daemon/dist/domain/watchdog-policy-engine.js +112 -6
  323. package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  324. package/daemon/dist/domain/watchdog-scheduler.d.ts.map +1 -1
  325. package/daemon/dist/domain/watchdog-scheduler.js +3 -2
  326. package/daemon/dist/domain/watchdog-scheduler.js.map +1 -1
  327. package/daemon/dist/domain/workspace/workspace-doctor.d.ts.map +1 -1
  328. package/daemon/dist/domain/workspace/workspace-doctor.js +2 -4
  329. package/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
  330. package/daemon/dist/index.d.ts +9 -0
  331. package/daemon/dist/index.d.ts.map +1 -1
  332. package/daemon/dist/index.js +24 -1
  333. package/daemon/dist/index.js.map +1 -1
  334. package/daemon/dist/routes/agent-images.d.ts.map +1 -1
  335. package/daemon/dist/routes/agent-images.js +9 -0
  336. package/daemon/dist/routes/agent-images.js.map +1 -1
  337. package/daemon/dist/routes/bundles.d.ts.map +1 -1
  338. package/daemon/dist/routes/bundles.js +61 -1
  339. package/daemon/dist/routes/bundles.js.map +1 -1
  340. package/daemon/dist/routes/gateway.js +1 -1
  341. package/daemon/dist/routes/gateway.js.map +1 -1
  342. package/daemon/dist/routes/queue.d.ts.map +1 -1
  343. package/daemon/dist/routes/queue.js +22 -11
  344. package/daemon/dist/routes/queue.js.map +1 -1
  345. package/daemon/dist/routes/rigs.js +38 -2
  346. package/daemon/dist/routes/rigs.js.map +1 -1
  347. package/daemon/dist/routes/scope-audit.js +6 -6
  348. package/daemon/dist/routes/scope-audit.js.map +1 -1
  349. package/daemon/dist/routes/views.d.ts.map +1 -1
  350. package/daemon/dist/routes/views.js +4 -1
  351. package/daemon/dist/routes/views.js.map +1 -1
  352. package/daemon/dist/routes/watchdog.d.ts.map +1 -1
  353. package/daemon/dist/routes/watchdog.js +40 -3
  354. package/daemon/dist/routes/watchdog.js.map +1 -1
  355. package/daemon/dist/server.d.ts.map +1 -1
  356. package/daemon/dist/server.js +5 -0
  357. package/daemon/dist/server.js.map +1 -1
  358. package/daemon/dist/startup.d.ts.map +1 -1
  359. package/daemon/dist/startup.js +194 -5
  360. package/daemon/dist/startup.js.map +1 -1
  361. package/daemon/docs/reference/agent-spec.md +4 -4
  362. package/daemon/docs/reference/agent-state-taxonomy.md +8 -13
  363. package/daemon/docs/reference/chain-file-convention.md +2 -2
  364. package/daemon/docs/reference/knowledge-maturity.md +123 -0
  365. package/daemon/docs/reference/lore-routing.md +173 -0
  366. package/daemon/docs/reference/mission-install.md +194 -0
  367. package/daemon/docs/reference/planning-dial.md +55 -0
  368. package/daemon/docs/reference/product-management-pass.md +139 -0
  369. package/daemon/docs/reference/release-boundary.md +88 -0
  370. package/daemon/docs/reference/sdlc-conventions.md +42 -69
  371. package/daemon/docs/reference/wave-sdlc.md +113 -0
  372. package/daemon/policies/builtin/standard.policy.md +3 -3
  373. package/daemon/policies/builtin/yolo.policy.md +7 -2
  374. package/daemon/specs/agents/shared/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -1
  375. package/daemon/specs/agents/shared/skills/core/cross-host-rig-commands/SKILL.md +6 -13
  376. package/daemon/specs/agents/shared/skills/core/messaging-the-human/SKILL.md +98 -0
  377. package/daemon/specs/agents/shared/skills/core/openrig-skills/SKILL.md +118 -0
  378. package/daemon/specs/agents/shared/skills/core/openrig-upgrade/SKILL.md +19 -75
  379. package/daemon/specs/agents/shared/skills/core/watchdog/SKILL.md +4 -10
  380. package/daemon/specs/agents/shared/skills/pm/requirements-writer/SKILL.md +15 -21
  381. package/daemon/specs/agents/shared/skills/process/systematic-debugging/find-polluter.sh +0 -0
  382. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/guidance/role.md +2 -2
  383. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/startup/context.md +3 -3
  384. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +3 -3
  385. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/guidance/role.md +1 -1
  386. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/startup/context.md +1 -1
  387. package/daemon/substance-surfaces.json +8 -0
  388. package/dist/build-info.js +3 -3
  389. package/dist/commands/broadcast.d.ts.map +1 -1
  390. package/dist/commands/broadcast.js +6 -1
  391. package/dist/commands/broadcast.js.map +1 -1
  392. package/dist/commands/capture.js +1 -1
  393. package/dist/commands/context.d.ts.map +1 -1
  394. package/dist/commands/context.js +12 -1
  395. package/dist/commands/context.js.map +1 -1
  396. package/dist/commands/expand.d.ts.map +1 -1
  397. package/dist/commands/expand.js +9 -13
  398. package/dist/commands/expand.js.map +1 -1
  399. package/dist/commands/ps.d.ts +4 -0
  400. package/dist/commands/ps.d.ts.map +1 -1
  401. package/dist/commands/ps.js +15 -7
  402. package/dist/commands/ps.js.map +1 -1
  403. package/dist/commands/scope.d.ts.map +1 -1
  404. package/dist/commands/scope.js +40 -11
  405. package/dist/commands/scope.js.map +1 -1
  406. package/dist/commands/send.d.ts +2 -0
  407. package/dist/commands/send.d.ts.map +1 -1
  408. package/dist/commands/send.js +24 -2
  409. package/dist/commands/send.js.map +1 -1
  410. package/dist/commands/slack.d.ts.map +1 -1
  411. package/dist/commands/slack.js +4 -2
  412. package/dist/commands/slack.js.map +1 -1
  413. package/dist/commands/view.d.ts.map +1 -1
  414. package/dist/commands/view.js +3 -0
  415. package/dist/commands/view.js.map +1 -1
  416. package/dist/commands/watchdog.d.ts.map +1 -1
  417. package/dist/commands/watchdog.js +64 -9
  418. package/dist/commands/watchdog.js.map +1 -1
  419. package/dist/cross-host-target.js +1 -1
  420. package/dist/cross-host-target.js.map +1 -1
  421. package/dist/host-registry.d.ts +2 -2
  422. package/dist/host-registry.js +2 -2
  423. package/dist/lib/scope/scope-audit.d.ts +4 -1
  424. package/dist/lib/scope/scope-audit.d.ts.map +1 -1
  425. package/dist/lib/scope/scope-audit.js +3 -3
  426. package/dist/lib/scope/scope-audit.js.map +1 -1
  427. package/dist/lib/scope/scope-fs.d.ts +8 -0
  428. package/dist/lib/scope/scope-fs.d.ts.map +1 -1
  429. package/dist/lib/scope/scope-fs.js +18 -0
  430. package/dist/lib/scope/scope-fs.js.map +1 -1
  431. package/dist/lib/scope-templates/backlog-deprecation.md +1 -1
  432. package/dist/lib/scope-templates/backlog-tech-debt.md +1 -1
  433. package/dist/lib/scope-templates/bug-fix.md +1 -1
  434. package/dist/lib/scope-templates/capability-delta.md +1 -0
  435. package/dist/lib/scope-templates/placeholder.md +1 -1
  436. package/dist/lib/scope-templates/release-feature.md +1 -1
  437. package/dist/lib/scope-templates/research.md +1 -1
  438. package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
  439. package/node_modules/@openrig/daemon/dist/context-pack-taxonomy-surface.d.ts +2 -0
  440. package/node_modules/@openrig/daemon/dist/context-pack-taxonomy-surface.d.ts.map +1 -0
  441. package/node_modules/@openrig/daemon/dist/context-pack-taxonomy-surface.js +6 -0
  442. package/node_modules/@openrig/daemon/dist/context-pack-taxonomy-surface.js.map +1 -0
  443. package/node_modules/@openrig/daemon/dist/db/all-migrations.d.ts +1 -1
  444. package/node_modules/@openrig/daemon/dist/db/all-migrations.d.ts.map +1 -1
  445. package/node_modules/@openrig/daemon/dist/db/all-migrations.js +8 -2
  446. package/node_modules/@openrig/daemon/dist/db/all-migrations.js.map +1 -1
  447. package/node_modules/@openrig/daemon/dist/db/migrations/074_context_usage_watchdog.d.ts +4 -0
  448. package/node_modules/@openrig/daemon/dist/db/migrations/074_context_usage_watchdog.d.ts.map +1 -0
  449. package/node_modules/@openrig/daemon/dist/db/migrations/074_context_usage_watchdog.js +11 -0
  450. package/node_modules/@openrig/daemon/dist/db/migrations/074_context_usage_watchdog.js.map +1 -0
  451. package/node_modules/@openrig/daemon/dist/db/migrations/075_context_usage_watchdog_generation.d.ts +4 -0
  452. package/node_modules/@openrig/daemon/dist/db/migrations/075_context_usage_watchdog_generation.d.ts.map +1 -0
  453. package/node_modules/@openrig/daemon/dist/db/migrations/075_context_usage_watchdog_generation.js +8 -0
  454. package/node_modules/@openrig/daemon/dist/db/migrations/075_context_usage_watchdog_generation.js.map +1 -0
  455. package/node_modules/@openrig/daemon/dist/db/migrations/076_owner_notification_levels.d.ts +8 -0
  456. package/node_modules/@openrig/daemon/dist/db/migrations/076_owner_notification_levels.d.ts.map +1 -0
  457. package/node_modules/@openrig/daemon/dist/db/migrations/076_owner_notification_levels.js +15 -0
  458. package/node_modules/@openrig/daemon/dist/db/migrations/076_owner_notification_levels.js.map +1 -0
  459. package/node_modules/@openrig/daemon/dist/domain/active-occupant.d.ts +44 -0
  460. package/node_modules/@openrig/daemon/dist/domain/active-occupant.d.ts.map +1 -0
  461. package/node_modules/@openrig/daemon/dist/domain/active-occupant.js +72 -0
  462. package/node_modules/@openrig/daemon/dist/domain/active-occupant.js.map +1 -0
  463. package/node_modules/@openrig/daemon/dist/domain/agent-manifest.d.ts +6 -0
  464. package/node_modules/@openrig/daemon/dist/domain/agent-manifest.d.ts.map +1 -1
  465. package/node_modules/@openrig/daemon/dist/domain/agent-manifest.js +77 -15
  466. package/node_modules/@openrig/daemon/dist/domain/agent-manifest.js.map +1 -1
  467. package/node_modules/@openrig/daemon/dist/domain/agent-resolver.d.ts +11 -0
  468. package/node_modules/@openrig/daemon/dist/domain/agent-resolver.d.ts.map +1 -1
  469. package/node_modules/@openrig/daemon/dist/domain/agent-resolver.js +55 -0
  470. package/node_modules/@openrig/daemon/dist/domain/agent-resolver.js.map +1 -1
  471. package/node_modules/@openrig/daemon/dist/domain/bundle-context-packs-router.d.ts +9 -2
  472. package/node_modules/@openrig/daemon/dist/domain/bundle-context-packs-router.d.ts.map +1 -1
  473. package/node_modules/@openrig/daemon/dist/domain/bundle-context-packs-router.js +18 -0
  474. package/node_modules/@openrig/daemon/dist/domain/bundle-context-packs-router.js.map +1 -1
  475. package/node_modules/@openrig/daemon/dist/domain/claude-compaction-enforcer.d.ts +7 -0
  476. package/node_modules/@openrig/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
  477. package/node_modules/@openrig/daemon/dist/domain/claude-compaction-enforcer.js +10 -0
  478. package/node_modules/@openrig/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
  479. package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-library-service.d.ts.map +1 -1
  480. package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-library-service.js +7 -0
  481. package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-library-service.js.map +1 -1
  482. package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.d.ts +11 -0
  483. package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.d.ts.map +1 -1
  484. package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.js +11 -0
  485. package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.js.map +1 -1
  486. package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -1
  487. package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.js +13 -1
  488. package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -1
  489. package/node_modules/@openrig/daemon/dist/domain/continuity-policy-materializer.d.ts +88 -0
  490. package/node_modules/@openrig/daemon/dist/domain/continuity-policy-materializer.d.ts.map +1 -0
  491. package/node_modules/@openrig/daemon/dist/domain/continuity-policy-materializer.js +290 -0
  492. package/node_modules/@openrig/daemon/dist/domain/continuity-policy-materializer.js.map +1 -0
  493. package/node_modules/@openrig/daemon/dist/domain/continuity-stack-packets.d.ts +65 -0
  494. package/node_modules/@openrig/daemon/dist/domain/continuity-stack-packets.d.ts.map +1 -0
  495. package/node_modules/@openrig/daemon/dist/domain/continuity-stack-packets.js +99 -0
  496. package/node_modules/@openrig/daemon/dist/domain/continuity-stack-packets.js.map +1 -0
  497. package/node_modules/@openrig/daemon/dist/domain/execution-view.d.ts +39 -0
  498. package/node_modules/@openrig/daemon/dist/domain/execution-view.d.ts.map +1 -0
  499. package/node_modules/@openrig/daemon/dist/domain/execution-view.js +707 -0
  500. package/node_modules/@openrig/daemon/dist/domain/execution-view.js.map +1 -0
  501. package/node_modules/@openrig/daemon/dist/domain/gateway/delivery-rules-engine.d.ts +60 -0
  502. package/node_modules/@openrig/daemon/dist/domain/gateway/delivery-rules-engine.d.ts.map +1 -0
  503. package/node_modules/@openrig/daemon/dist/domain/gateway/delivery-rules-engine.js +144 -0
  504. package/node_modules/@openrig/daemon/dist/domain/gateway/delivery-rules-engine.js.map +1 -0
  505. package/node_modules/@openrig/daemon/dist/domain/gateway/destination-resolver.d.ts +20 -0
  506. package/node_modules/@openrig/daemon/dist/domain/gateway/destination-resolver.d.ts.map +1 -0
  507. package/node_modules/@openrig/daemon/dist/domain/gateway/destination-resolver.js +52 -0
  508. package/node_modules/@openrig/daemon/dist/domain/gateway/destination-resolver.js.map +1 -0
  509. package/node_modules/@openrig/daemon/dist/domain/gateway/dispatcher.d.ts +3 -1
  510. package/node_modules/@openrig/daemon/dist/domain/gateway/dispatcher.d.ts.map +1 -1
  511. package/node_modules/@openrig/daemon/dist/domain/gateway/dispatcher.js +9 -2
  512. package/node_modules/@openrig/daemon/dist/domain/gateway/dispatcher.js.map +1 -1
  513. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.d.ts +6 -2
  514. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -1
  515. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.js +5 -3
  516. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -1
  517. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts +9 -1
  518. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  519. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js +32 -1
  520. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  521. package/node_modules/@openrig/daemon/dist/domain/gateway/operator-delivery-engine.d.ts +32 -0
  522. package/node_modules/@openrig/daemon/dist/domain/gateway/operator-delivery-engine.d.ts.map +1 -0
  523. package/node_modules/@openrig/daemon/dist/domain/gateway/operator-delivery-engine.js +86 -0
  524. package/node_modules/@openrig/daemon/dist/domain/gateway/operator-delivery-engine.js.map +1 -0
  525. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/config.d.ts +3 -2
  526. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/config.d.ts.map +1 -1
  527. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/config.js +20 -4
  528. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/config.js.map +1 -1
  529. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.d.ts +34 -6
  530. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  531. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.js +60 -9
  532. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  533. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.d.ts +3 -0
  534. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.d.ts.map +1 -1
  535. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.js +12 -5
  536. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.js.map +1 -1
  537. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts +10 -5
  538. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -1
  539. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js +46 -19
  540. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
  541. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-api.d.ts +29 -6
  542. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-api.d.ts.map +1 -1
  543. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-api.js +41 -3
  544. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-api.js.map +1 -1
  545. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +9 -3
  546. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -1
  547. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.js +132 -12
  548. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -1
  549. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +10 -0
  550. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  551. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js +286 -11
  552. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  553. package/node_modules/@openrig/daemon/dist/domain/graph-projection.d.ts +6 -0
  554. package/node_modules/@openrig/daemon/dist/domain/graph-projection.d.ts.map +1 -1
  555. package/node_modules/@openrig/daemon/dist/domain/graph-projection.js +6 -0
  556. package/node_modules/@openrig/daemon/dist/domain/graph-projection.js.map +1 -1
  557. package/node_modules/@openrig/daemon/dist/domain/mission-control/mission-control-write-contract.d.ts.map +1 -1
  558. package/node_modules/@openrig/daemon/dist/domain/mission-control/mission-control-write-contract.js +1 -0
  559. package/node_modules/@openrig/daemon/dist/domain/mission-control/mission-control-write-contract.js.map +1 -1
  560. package/node_modules/@openrig/daemon/dist/domain/node-inventory.d.ts +41 -3
  561. package/node_modules/@openrig/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  562. package/node_modules/@openrig/daemon/dist/domain/node-inventory.js +45 -48
  563. package/node_modules/@openrig/daemon/dist/domain/node-inventory.js.map +1 -1
  564. package/node_modules/@openrig/daemon/dist/domain/parked-query.d.ts +1 -0
  565. package/node_modules/@openrig/daemon/dist/domain/parked-query.d.ts.map +1 -1
  566. package/node_modules/@openrig/daemon/dist/domain/parked-query.js +1 -0
  567. package/node_modules/@openrig/daemon/dist/domain/parked-query.js.map +1 -1
  568. package/node_modules/@openrig/daemon/dist/domain/pod-bundle-assembler.d.ts.map +1 -1
  569. package/node_modules/@openrig/daemon/dist/domain/pod-bundle-assembler.js +12 -5
  570. package/node_modules/@openrig/daemon/dist/domain/pod-bundle-assembler.js.map +1 -1
  571. package/node_modules/@openrig/daemon/dist/domain/policies/context-usage-threshold.d.ts +7 -0
  572. package/node_modules/@openrig/daemon/dist/domain/policies/context-usage-threshold.d.ts.map +1 -0
  573. package/node_modules/@openrig/daemon/dist/domain/policies/context-usage-threshold.js +99 -0
  574. package/node_modules/@openrig/daemon/dist/domain/policies/context-usage-threshold.js.map +1 -0
  575. package/node_modules/@openrig/daemon/dist/domain/policies/delivery-deferral.d.ts +54 -0
  576. package/node_modules/@openrig/daemon/dist/domain/policies/delivery-deferral.d.ts.map +1 -0
  577. package/node_modules/@openrig/daemon/dist/domain/policies/delivery-deferral.js +153 -0
  578. package/node_modules/@openrig/daemon/dist/domain/policies/delivery-deferral.js.map +1 -0
  579. package/node_modules/@openrig/daemon/dist/domain/policies/delivery-digest-flush.d.ts +45 -0
  580. package/node_modules/@openrig/daemon/dist/domain/policies/delivery-digest-flush.d.ts.map +1 -0
  581. package/node_modules/@openrig/daemon/dist/domain/policies/delivery-digest-flush.js +94 -0
  582. package/node_modules/@openrig/daemon/dist/domain/policies/delivery-digest-flush.js.map +1 -0
  583. package/node_modules/@openrig/daemon/dist/domain/policies/parked-owner-consumer.d.ts +65 -0
  584. package/node_modules/@openrig/daemon/dist/domain/policies/parked-owner-consumer.d.ts.map +1 -0
  585. package/node_modules/@openrig/daemon/dist/domain/policies/parked-owner-consumer.js +244 -0
  586. package/node_modules/@openrig/daemon/dist/domain/policies/parked-owner-consumer.js.map +1 -0
  587. package/node_modules/@openrig/daemon/dist/domain/policies/types.d.ts +8 -0
  588. package/node_modules/@openrig/daemon/dist/domain/policies/types.d.ts.map +1 -1
  589. package/node_modules/@openrig/daemon/dist/domain/profile-resolver.d.ts +4 -0
  590. package/node_modules/@openrig/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
  591. package/node_modules/@openrig/daemon/dist/domain/profile-resolver.js +58 -0
  592. package/node_modules/@openrig/daemon/dist/domain/profile-resolver.js.map +1 -1
  593. package/node_modules/@openrig/daemon/dist/domain/provider/provider-signals.d.ts +20 -1
  594. package/node_modules/@openrig/daemon/dist/domain/provider/provider-signals.d.ts.map +1 -1
  595. package/node_modules/@openrig/daemon/dist/domain/provider/provider-signals.js +64 -0
  596. package/node_modules/@openrig/daemon/dist/domain/provider/provider-signals.js.map +1 -1
  597. package/node_modules/@openrig/daemon/dist/domain/ps-projection.d.ts +7 -5
  598. package/node_modules/@openrig/daemon/dist/domain/ps-projection.d.ts.map +1 -1
  599. package/node_modules/@openrig/daemon/dist/domain/ps-projection.js +19 -32
  600. package/node_modules/@openrig/daemon/dist/domain/ps-projection.js.map +1 -1
  601. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.d.ts.map +1 -1
  602. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.js +5 -0
  603. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.js.map +1 -1
  604. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts +55 -18
  605. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  606. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js +387 -83
  607. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js.map +1 -1
  608. package/node_modules/@openrig/daemon/dist/domain/queue-retention.d.ts.map +1 -1
  609. package/node_modules/@openrig/daemon/dist/domain/queue-retention.js +8 -2
  610. package/node_modules/@openrig/daemon/dist/domain/queue-retention.js.map +1 -1
  611. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.d.ts +24 -1
  612. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
  613. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.js +161 -24
  614. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
  615. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.d.ts +10 -0
  616. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
  617. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.js +49 -11
  618. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.js.map +1 -1
  619. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.d.ts +20 -2
  620. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -1
  621. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.js +187 -15
  622. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.js.map +1 -1
  623. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts +16 -0
  624. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -1
  625. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js +52 -3
  626. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js.map +1 -1
  627. package/node_modules/@openrig/daemon/dist/domain/restore-check-service.js +1 -1
  628. package/node_modules/@openrig/daemon/dist/domain/restore-check-service.js.map +1 -1
  629. package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.d.ts +2 -1
  630. package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  631. package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.js +88 -15
  632. package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  633. package/node_modules/@openrig/daemon/dist/domain/restore-plan-preview.d.ts +6 -2
  634. package/node_modules/@openrig/daemon/dist/domain/restore-plan-preview.d.ts.map +1 -1
  635. package/node_modules/@openrig/daemon/dist/domain/restore-plan-preview.js +37 -19
  636. package/node_modules/@openrig/daemon/dist/domain/restore-plan-preview.js.map +1 -1
  637. package/node_modules/@openrig/daemon/dist/domain/rig-expansion-service.d.ts.map +1 -1
  638. package/node_modules/@openrig/daemon/dist/domain/rig-expansion-service.js +10 -9
  639. package/node_modules/@openrig/daemon/dist/domain/rig-expansion-service.js.map +1 -1
  640. package/node_modules/@openrig/daemon/dist/domain/rig-repository.d.ts +4 -0
  641. package/node_modules/@openrig/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  642. package/node_modules/@openrig/daemon/dist/domain/rig-repository.js +21 -3
  643. package/node_modules/@openrig/daemon/dist/domain/rig-repository.js.map +1 -1
  644. package/node_modules/@openrig/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
  645. package/node_modules/@openrig/daemon/dist/domain/rigspec-codec.js +74 -4
  646. package/node_modules/@openrig/daemon/dist/domain/rigspec-codec.js.map +1 -1
  647. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts +4 -0
  648. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  649. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js +14 -0
  650. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  651. package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  652. package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.js +32 -4
  653. package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.js.map +1 -1
  654. package/node_modules/@openrig/daemon/dist/domain/scope/node-file.d.ts +8 -0
  655. package/node_modules/@openrig/daemon/dist/domain/scope/node-file.d.ts.map +1 -1
  656. package/node_modules/@openrig/daemon/dist/domain/scope/node-file.js +18 -0
  657. package/node_modules/@openrig/daemon/dist/domain/scope/node-file.js.map +1 -1
  658. package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.d.ts +5 -2
  659. package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
  660. package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.js +3 -3
  661. package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.js.map +1 -1
  662. package/node_modules/@openrig/daemon/dist/domain/snapshot-capture.d.ts.map +1 -1
  663. package/node_modules/@openrig/daemon/dist/domain/snapshot-capture.js +6 -0
  664. package/node_modules/@openrig/daemon/dist/domain/snapshot-capture.js.map +1 -1
  665. package/node_modules/@openrig/daemon/dist/domain/types.d.ts +26 -4
  666. package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
  667. package/node_modules/@openrig/daemon/dist/domain/types.js.map +1 -1
  668. package/node_modules/@openrig/daemon/dist/domain/view-projector.d.ts +5 -1
  669. package/node_modules/@openrig/daemon/dist/domain/view-projector.d.ts.map +1 -1
  670. package/node_modules/@openrig/daemon/dist/domain/view-projector.js +24 -0
  671. package/node_modules/@openrig/daemon/dist/domain/view-projector.js.map +1 -1
  672. package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.d.ts +25 -6
  673. package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
  674. package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.js +115 -32
  675. package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
  676. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.d.ts +40 -1
  677. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  678. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.js +112 -6
  679. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  680. package/node_modules/@openrig/daemon/dist/domain/watchdog-scheduler.d.ts.map +1 -1
  681. package/node_modules/@openrig/daemon/dist/domain/watchdog-scheduler.js +3 -2
  682. package/node_modules/@openrig/daemon/dist/domain/watchdog-scheduler.js.map +1 -1
  683. package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.d.ts.map +1 -1
  684. package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.js +2 -4
  685. package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
  686. package/node_modules/@openrig/daemon/dist/index.d.ts +9 -0
  687. package/node_modules/@openrig/daemon/dist/index.d.ts.map +1 -1
  688. package/node_modules/@openrig/daemon/dist/index.js +24 -1
  689. package/node_modules/@openrig/daemon/dist/index.js.map +1 -1
  690. package/node_modules/@openrig/daemon/dist/routes/agent-images.d.ts.map +1 -1
  691. package/node_modules/@openrig/daemon/dist/routes/agent-images.js +9 -0
  692. package/node_modules/@openrig/daemon/dist/routes/agent-images.js.map +1 -1
  693. package/node_modules/@openrig/daemon/dist/routes/bundles.d.ts.map +1 -1
  694. package/node_modules/@openrig/daemon/dist/routes/bundles.js +61 -1
  695. package/node_modules/@openrig/daemon/dist/routes/bundles.js.map +1 -1
  696. package/node_modules/@openrig/daemon/dist/routes/gateway.js +1 -1
  697. package/node_modules/@openrig/daemon/dist/routes/gateway.js.map +1 -1
  698. package/node_modules/@openrig/daemon/dist/routes/queue.d.ts.map +1 -1
  699. package/node_modules/@openrig/daemon/dist/routes/queue.js +22 -11
  700. package/node_modules/@openrig/daemon/dist/routes/queue.js.map +1 -1
  701. package/node_modules/@openrig/daemon/dist/routes/rigs.js +38 -2
  702. package/node_modules/@openrig/daemon/dist/routes/rigs.js.map +1 -1
  703. package/node_modules/@openrig/daemon/dist/routes/scope-audit.js +6 -6
  704. package/node_modules/@openrig/daemon/dist/routes/scope-audit.js.map +1 -1
  705. package/node_modules/@openrig/daemon/dist/routes/views.d.ts.map +1 -1
  706. package/node_modules/@openrig/daemon/dist/routes/views.js +4 -1
  707. package/node_modules/@openrig/daemon/dist/routes/views.js.map +1 -1
  708. package/node_modules/@openrig/daemon/dist/routes/watchdog.d.ts.map +1 -1
  709. package/node_modules/@openrig/daemon/dist/routes/watchdog.js +40 -3
  710. package/node_modules/@openrig/daemon/dist/routes/watchdog.js.map +1 -1
  711. package/node_modules/@openrig/daemon/dist/server.d.ts.map +1 -1
  712. package/node_modules/@openrig/daemon/dist/server.js +5 -0
  713. package/node_modules/@openrig/daemon/dist/server.js.map +1 -1
  714. package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
  715. package/node_modules/@openrig/daemon/dist/startup.js +194 -5
  716. package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
  717. package/node_modules/@openrig/daemon/package.json +5 -1
  718. package/package.json +1 -1
  719. package/tui/dist/demo-data.js +2 -2
  720. package/tui/dist/demo-data.js.map +1 -1
  721. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/CHANGELOG.md +0 -92
  722. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/REVISION-GUIDE.md +0 -34
  723. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/ROADMAP.md +0 -23
  724. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/ROLLOUT.md +0 -234
  725. package/daemon/context-packs/skills/core/attention-queue/SKILL.md +0 -264
  726. package/daemon/context-packs/skills/core/attention-queue/manifest.yaml +0 -9
  727. package/daemon/specs/agents/shared/skills/core/attention-queue/SKILL.md +0 -264
@@ -92,17 +92,10 @@ def field_of(payload, field):
92
92
  return (" ".join(str(v).split()) if v is not None else None), None
93
93
 
94
94
  def _cut_at_boundary(s, n):
95
- """Cut to AT MOST n chars, NEVER inside a token.
95
+ """Cut to at most n characters without splitting a token.
96
96
 
97
- Measured 2026-08-14: a cold subject read `see PROOF.m…` and `see P…` in the walk's own
98
- output. A path cut mid-token still READS as a path the reader cannot tell `PROOF.m` from
99
- a file that is actually called that, so a truncation artifact is silently promoted to a
100
- fact about the tree. Filenames, paths and identifiers are exactly the tokens a reader is
101
- most likely to act on, which makes them the worst place to lose characters.
102
-
103
- So the cut lands on whitespace or it does not land: paragraph, then line, then word. A
104
- single unbroken token longer than the budget is DROPPED WHOLE rather than shortened —
105
- half an identifier is worse than no identifier."""
97
+ Prefer paragraph, line, then word boundaries. Drop a single unbroken token
98
+ that exceeds the budget; a partial path or identifier looks valid but is not."""
106
99
  if len(s) <= n:
107
100
  return s
108
101
  head = s[:n]
@@ -146,27 +139,11 @@ def dep_artifacts(dep_dir, names, dep_fm):
146
139
 
147
140
 
148
141
  def blocking_state(payload, lvl, names):
149
- """THE LEAF'S NEXT-ACTION FACTS, composed BESIDE its intent. Returns a line or None.
150
-
151
- Measured 2026-08-14: a cold seat walked `--field intent`, reconstructed the mission's
152
- thesis from ~90 words, and finished green and ready to start work its own slice says is
153
- blocked because the walk opened the file holding `status: not-started`, extracted
154
- exactly one key, and threw the rest away. It answers *what is this for* completely and
155
- *what should I do now* not at all, and ships as though the first answered the second.
156
-
157
- So the blocking facts ride along: `status`, and `depends:` — a sibling slice id (or a
158
- list of them) RESOLVED ON DISK so the dependency's current state is reported rather than
159
- remembered. Leaf only — the ancestors say what the work is for, and only the leaf says
160
- whether to start it.
161
-
162
- Measured 2026-08-14: a cold subject working slice 13 needed slice 11's OUTPUT. The walk
163
- gave it 11's STATE and nothing else; the subject called the missing location "the single
164
- largest unknown in my Phase 1 answer and it was the load-bearing input", and resolved it
165
- with `ls` a phase later. A status answers *may I start*; it does not answer *where is the
166
- thing I start from*. So each dependency now renders its ABSOLUTE PATH and its output
167
- ARTIFACTS beside its state — and an id that resolves to nothing renders UNRESOLVED, said
168
- out loud, because an unresolvable dependency dropped in silence is the same false
169
- confidence in a smaller box."""
142
+ """Return leaf status and dependency facts beside its intent, or None.
143
+
144
+ Intent alone does not say whether work may start or where dependency outputs
145
+ live. Resolve dependencies on disk and report state, absolute path, and
146
+ artifacts; leave ancestors to carry purpose."""
170
147
  fm, _ = frontmatter(payload)
171
148
  if not fm:
172
149
  return None
@@ -208,18 +185,10 @@ def blocking_state(payload, lvl, names):
208
185
 
209
186
 
210
187
  def operates_on(payload):
211
- """The roots this WORK touches which are NOT the root the trace ascended.
212
-
213
- Measured 2026-08-14, 4 cold subjects out of 4: the walk orients to PURPOSE excellently
214
- and misleads on LOCATION every time. Naming the walked root did not help, because the
215
- failure is not "which tree am I looking at" — it is "which tree does this work act on."
216
- A slice about the skill library renders inside a map rooted at the workspace, and the
217
- reader plans into the tree it was shown. One subject planned to CREATE a second corpus,
218
- duplicating the very thing whose duplication was that slice's subject.
219
-
220
- The walk cannot infer this: a work node is not bound to a root. So the node DECLARES it
221
- and the leaf renders it verbatim. Mechanical, like `depends:`, and absent when unstated
222
- rather than guessed."""
188
+ """Return the roots a work node declares it operates on.
189
+
190
+ The tree being walked need not be the tree the work changes. This cannot be
191
+ inferred safely, so render `operates_on` verbatim and omit it when unstated."""
223
192
  fm, _ = frontmatter(payload)
224
193
  if not fm:
225
194
  return None
@@ -229,17 +198,9 @@ def operates_on(payload):
229
198
  return [" ".join(str(r).split()) for r in (roots if isinstance(roots, list) else [roots])]
230
199
 
231
200
 
232
- # WHAT SURVIVES TRUNCATION. Both lists are read off the 15 real SPEC.md files of
233
- # context-engineering-v2 every pattern below matches a heading that actually exists there;
234
- # no category is invented for symmetry. CONTRACT is the completion-and-scope family (`Done
235
- # when`, `What done looks like`, `Scope fences`, `Output`, `Inputs`, `Depends on`, `What must
236
- # be built`, `How we will know it works`, `PAYLOAD`). DISCUSSION is the rationale-and-history
237
- # family (`Why …`, `The problem …`, `The evidence …`, `The finding …`, `RESULT …`, `Also
238
- # found`, `Triage`, `What is already done`, `New evidence`, `Where this spec was wrong`) —
239
- # valuable, and the first thing a reader can go get from the file itself.
240
- # Anything unmatched sits in the MIDDLE on purpose: an unfamiliar heading is neither
241
- # privileged nor sacrificed, so a new section shape degrades gracefully instead of silently
242
- # becoming the first casualty.
201
+ # Preserve contract and scope sections ahead of rationale and history when the
202
+ # leaf body exceeds its cap. Unknown headings remain middle priority so new shapes
203
+ # degrade without being silently privileged or discarded.
243
204
  _PRI_CONTRACT = re.compile(
244
205
  r"(done when|what done looks like|scope fence|outputs?\b|inputs?\b|depends on|"
245
206
  r"what must be built|how we will know|acceptance|payload|deliverable)", re.I)
@@ -278,24 +239,11 @@ def _sections(body):
278
239
 
279
240
 
280
241
  def leaf_body(payload, cap):
281
- """Ancestors compose by FIELD; the leaf composes by BODY.
282
-
283
- Measured 2026-08-14 (slice 01 A/B): a cold agent given three intent sentences
284
- reconstructed the mission's thesis correctly, then assumed the work tree it had been
285
- shown was the tree its slice was about. The slice was about the TOPOLOGY tree. It built
286
- a coherent four-step plan aimed at the wrong one — and the three altitudes it planned
287
- over need three different verbs, which it had no way to know.
288
-
289
- That is misdirection, not a gap. Ancestors compress beautifully because they are stable
290
- and abstract. **The leaf is where the nouns live, and a field-only walk throws them
291
- away** — every word that would have disambiguated it sat in the body that was not shown.
292
-
293
- Truncation is BY PRIORITY, never by position. Measured 2026-08-14: positional cutting on
294
- slice 13 dropped `Output`, `Done when` and `Scope fences` — the three sections that say
295
- what to produce, when it is finished and what it may not touch — and kept four screens of
296
- rationale, because the rationale happened to be written first. The subject rated its own
297
- grasp of purpose 85% and its next action 70% and named that omission as the reason. A
298
- render that keeps the argument and drops the contract has the priorities backwards."""
242
+ """Render the leaf body, truncating by semantic priority rather than position.
243
+
244
+ Ancestors can compose by stable intent fields, but the leaf carries the nouns,
245
+ boundaries, outputs, and completion conditions. When over budget, retain
246
+ contract and scope sections before explanatory history."""
299
247
  if not payload:
300
248
  return None
301
249
  m = re.match(r"^---\n.*?\n---\n", payload, re.S)
@@ -309,13 +257,8 @@ def leaf_body(payload, cap):
309
257
  kept = _cut_at_boundary(body, cap)
310
258
  return (kept + "\n\n[… " + str(len(body) - len(kept)) + " more chars, no further "
311
259
  "headings — prose tail]" + "\n(read the node file for these)")
312
- # Drop LOWEST priority first and, within a tier, the LARGEST section first. Size beats
313
- # position here and it was measured: slice 13's contract sections total more than any
314
- # sane cap, and dropping the tier tail-first killed `Done when` (12 lines) and `Scope
315
- # fences` (9) to save `Output` and `Inputs` (~2k chars each) — the two long prose
316
- # sections eating the two short decisive ones. Largest-first keeps the most sections
317
- # standing, and in these specs the short section is the one carrying the ruling. The
318
- # preamble (title + lede, index 0) is never a candidate: it is what names the thing.
260
+ # Drop the lowest-priority, largest sections first to preserve more short,
261
+ # decisive sections. The title and lede preamble are never candidates.
319
262
  keep, size = set(range(len(secs))), len(body)
320
263
  for i in sorted(range(1, len(secs)), key=lambda i: (-_priority(secs[i][0]), -len(secs[i][1]))):
321
264
  if size <= cap:
@@ -326,11 +269,7 @@ def leaf_body(payload, cap):
326
269
  if len(kept) > cap: # preamble alone overflows; cut it safely, never mid-token
327
270
  kept = _cut_at_boundary(kept, cap)
328
271
  dropped = [secs[i][0] for i in range(1, len(secs)) if i not in keep]
329
- # NAME what was cut. A byte count reads as trivia; two subjects in a row lost the
330
- # acceptance criteria to it and neither could tell, because a truncated head can end on
331
- # a clean rhetorical close and look like a finished document. Listing the dropped
332
- # headings turns invisible truncation into a decision the reader can actually make —
333
- # one subject lowered its own confidence honestly on the strength of this line alone.
272
+ # Name omitted headings so truncation is visible to the reader.
334
273
  tail = ("\n\nOMITTED FROM THIS RENDER — " + str(len(body) - len(kept)) + " chars, sections: "
335
274
  + " · ".join(dropped) if dropped else
336
275
  "\n\n[… " + str(len(body) - len(kept)) + " more chars, no further headings — prose tail]")
@@ -338,29 +277,18 @@ def leaf_body(payload, cap):
338
277
 
339
278
 
340
279
  def resolve_roots():
341
- """WHERE THE TWO TREES LIVE resolved, never hardcoded, never guessed.
342
-
343
- A skill ships inside a plugin and its scripts must run unmodified on a stranger's machine.
344
- The WORK tree has been addressable for a while (`workspace.root`). The TOPOLOGY tree was not:
345
- every consumer hardcoded `~/.openrig/shared-docs`, so half the walk was portable and half was
346
- not. Precedence matches every other typed key: env > config > derived > fail-with-the-key.
347
-
348
- The derived step is honest rather than clever: this script physically lives inside the
349
- shared-docs tree, so it can find its own `rigs/` sibling by walking up from __file__. That
350
- works for the library copy and its symlinked projections (resolved with realpath) and NOT for
351
- a real plugin copy — which is correct. A plugin copy on
352
- someone else's machine has no business inferring a path; it must be told, and it fails saying
353
- exactly which key to set rather than picking a directory and being confidently wrong."""
280
+ """Resolve work and topology roots from configuration or explicit environment.
281
+
282
+ A library copy may derive topology from its own real path; a projected plugin
283
+ copy must be configured rather than guessing. Resolution follows environment,
284
+ configuration, then derived location."""
354
285
  out = {}
355
286
  out["work_root"] = os.environ.get("OPENRIG_WORKSPACE_ROOT") or rig_config("workspace.root")
356
287
 
357
288
  t = os.environ.get("OPENRIG_TOPOLOGY_ROOT") or rig_config("workspace.topology_root")
358
289
  if not t:
359
- # realpath, NOT abspath: the runtime tiers project this script as a SYMLINK
360
- # (~/.claude/skills/... -> the library copy). abspath keeps the symlink's own path, so
361
- # the ascent runs up a tree with no `rigs/` sibling and topology_root comes back
362
- # UNRESOLVED — for every agent reaching the tool the documented way. Measured 2026-08-14:
363
- # exit 3 via the projection, exit 0 via the realpath, same file.
290
+ # Resolve symlinks before walking upward; otherwise a projection ascends
291
+ # its own tree rather than the shared-docs source.
364
292
  here = os.path.realpath(__file__)
365
293
  for _ in range(6): # scripts/ skill/ skills/ skill-canon/ -> shared-docs/
366
294
  here = os.path.dirname(here)
@@ -406,11 +334,8 @@ def compose_up(start, names, root, field=None, prefer=False, shelves=None, leaf_
406
334
  # (first match wins) instead of N independent chains. A tree mid-rename is the normal
407
335
  # case, not an exception: SPEC.md is the current node filename and README.md the legacy
408
336
  # one, and a trace that cannot span both reports a chain as broken when it is merely mixed.
409
- # Test the START NODE against the TREES, not the root against the workspace. Being
410
- # somewhere under workspace.root is not the property that matters: the measured hazard
411
- # is a fixture tree at workspace/artifacts/<qitem>/fixture-workspace/missions/, which is
412
- # inside workspace.root and is not a work tree. Only slices_root and topology_root name
413
- # actual trees, so those are the discriminator.
337
+ # Validate the start node against configured tree roots. Merely sitting below
338
+ # workspace.root is insufficient because fixtures may look structurally valid.
414
339
  _cfg = [c for c in (rig_config("workspace.slices_root"),
415
340
  resolve_roots().get("topology_root")) if c]
416
341
  _here = os.path.abspath(start)
@@ -465,17 +390,11 @@ def compose_up(start, names, root, field=None, prefer=False, shelves=None, leaf_
465
390
  rungs.append((label, row)); pending = []
466
391
  leads = [("" if i == 0 else " " * (i - 1) + "└─ ") + rungs[i][0] + "/" for i in range(len(rungs))]
467
392
  width = max(len(l) for l in leads) + 2
468
- # NAME THE REFERENT. Three cold subjects in a row assumed the tree they were
469
- # SHOWN was the tree their slice was ABOUT, and planned into the wrong one. The map
470
- # cannot know "work" vs "topology" semantically, but it knows what it walked — and
471
- # root + chain filename is enough to tell them apart (workspace/SPEC.md vs rigs/LEARNED.md).
393
+ # Name the walked root and chain so readers do not confuse the tree being
394
+ # shown with the tree the work will change.
472
395
  out.append(f"\nTRACE · root {levels[0]} · chain {' → '.join(group)}")
473
- # VALIDATE THE ROOT. Measured 2026-08-14: this box has four directories named
474
- # `missions`, one of them a TEST FIXTURE under artifacts/. Handed the fixture as
475
- # --root, the trace renders an equally clean, equally confident chain — because
476
- # `✓ seeded` means "a file was found here", never "you are in the right tree".
477
- # Confidence that is independent of correctness is the failure this whole mission
478
- # is against, so the trace now says when it cannot vouch for where it is standing.
396
+ # Warn on an unconfigured root: an arbitrary lookalike tree can render a
397
+ # clean chain.
479
398
  if _root_warning:
480
399
  out.append(_root_warning)
481
400
  for i, (_label, (lvl, where, state, payload, fval, fnote)) in enumerate(rungs):
@@ -34,24 +34,30 @@ Don't guess a file path or a name. Go **ask → ref → load** in three steps:
34
34
  rig context get skills/core/rig-lifecycle
35
35
  ```
36
36
 
37
+ The router itself is available through both forms it teaches:
38
+ `rig context get openrig-skills` and `rig context get skills/core/openrig-skills`.
39
+
37
40
  The content is served **from the installed CLI**, so what you load always matches your running version —
38
41
  no path-guessing, no frozen-fork drift. (The daemon assembles the same bundle `rig context preview`
39
42
  shows an operator — `get` is the agent-facing pull.)
40
43
 
41
44
  ## The index
42
45
 
46
+ > Membership rule (`layout.skills[*].edges.length > 0`): every public skill with at least one product edge in the generated edge layout appears exactly once in this index; no other skill appears.
47
+
43
48
  ### Always loaded — the universal spine (open its body when its moment hits)
44
49
  These are auto-delivered to every rig; their name+description are already in your context. Open the body when the "when" matches.
45
50
 
46
51
  - **forming-an-openrig-mental-model** — first boot, or you're unsure how the pieces fit. The runtime mental model.
47
52
  - **openrig-operating-model** — you do not know where context or work belongs, or you are about to duplicate knowledge. The two-tree placement and trace-to-root model.
48
53
  - **openrig-user** — you need a `rig` CLI command (send / queue / ps / whoami / scope / broadcast). The daily CLI surface.
54
+ - **applying-a-permission-policy** — a rig or seat has a permission policy attached, or you're setting one up: translate it into the live harness configuration.
49
55
  - **claude-compaction-restore** — you just compacted (Claude). Restore from durable evidence before resuming real work.
56
+ - **delegating-work** — deciding who should do a task: you, a spawned subagent, or a durable peer seat that already holds the context.
50
57
  - **session-compaction-and-restore** — preparing for, or recovering from, compaction (any runtime). The write- and read-side protocol.
51
58
  - **queue-handoff** — you're passing durable work to another seat or ending your turn. The queue is the work ledger, not chat.
52
59
  - **refocusing** — a long-running seat may have lost the product outcome, crossed a major boundary, or compacted and needs a fresh path-based trace.
53
60
  - **seat-continuity-and-handover** — handing your seat's work across a restart or to another owner.
54
- <!-- Territory amended 2026-08-26 by desk ruling qitem-20260826080800-r054-s9a-scope-ruling. -->
55
61
  - **orienting-to-an-inherited-seat** — you just inherited an existing seat through a planned handover and need to verify its identity, state, and testimony.
56
62
  - **retiring-and-inheriting-a-seat** — you're planning a seat transition and need to retire the current occupant into a fresh successor without losing continuity.
57
63
  - **mission-slice-sop** — you're working a mission/slice (the SDLC: intent → mini-requirements + proof contract → build → QA → proof). The operating manual.
@@ -68,22 +74,21 @@ These ship in the OpenRig repo and reach a seat when its profile selects them. T
68
74
  - **agent-startup-and-context-ingestion** — a seat is booting and ingesting its startup context.
69
75
  - **topology-mutation-and-seat-management** — adding, removing, renaming seats or otherwise mutating rig topology.
70
76
  - **rig-lifecycle** — rig up / down / pause / resume lifecycle operations.
71
- - **applying-a-permission-policy** — a rig/seat has a permission policy attached, or you're setting one up (Locked / Standard / Open): translate it into the live harness config (Claude `settings.json` / Codex `config.toml`), agent-driven + interactive. Reached at onboarding and at rig setup/preflight. (YOLO / bypass is a launch-flag OpenRig sets, not this skill.)
72
77
  - **rig-bundles-and-shareable-artifacts** — packaging or installing a rig bundle / shareable artifact.
73
78
  - **cross-host-rig-commands** — reaching seats or queues on another host (`--host`).
74
79
  - **openrig-upgrade** — upgrading OpenRig or the daemon.
75
80
  - **agent-starters** — composing an agent's starter context / priming packs.
76
81
  - **specification-system** — authoring or reading AgentSpecs and rig specs.
77
- - **attention-queue** — managing the attention / needs-attention surface.
78
82
  - **human-in-the-loop** — deciding when to involve the human vs. proceed on your own authority.
79
- - **delegating-work** — deciding WHO does a task: yourself, a spawned subagent, or another agent that already holds the context (the when/whether decision, not the fan-out mechanics).
80
83
  - **watchdog** — monitoring or recovering a seat (health, restore, stuck state).
81
84
  - **session-source-fork** — forking a session's source/context.
85
+ - **context-engineering** — designing context systems. Provisional and non-normative: current OpenRig skills, explicit rulings, and measured practice outrank it on any conflict.
82
86
 
83
87
  Pod handbooks (load when you're in that pod):
84
88
  - **orchestration-team** — you're orchestrating a rig: dispatching, monitoring, keeping the loop moving.
85
89
  - **development-team** — you're on the dev pod: building and shipping product changes.
86
90
  - **review-team** — you're reviewing: fresh scrutiny, anti-slop, empirical verification.
91
+ - **oversight-team** — you're in an oversight pod: monitor boundaries and route findings without taking over the work.
87
92
 
88
93
  Product-management craft (load when shaping/reviewing work):
89
94
  - **requirements-writer** — turning intent into clear requirements.
@@ -111,5 +116,3 @@ General engineering skills OpenRig ships as vendored copies. Open when the task
111
116
  ## Need more than what ships here?
112
117
 
113
118
  This index covers the **shipped** surface. A dev host carries far more (factory, architecture, PM-craft, studio skills) reached through the host's own routers/codemaps — if you're on a builder host and need something not listed above, that deeper routing is the next hop, not a wall. (Host-scale routing is the subject of the context-routing architecture doc; at product scale, this one file is the whole map.)
114
-
115
- > Membership note: this index lists exactly the skills that ship with OpenRig. When a skill graduates into the shipped set it joins this index — the index and the shipped set stay one scope.
@@ -11,9 +11,7 @@ description: >-
11
11
  This is an as-built guide to the shipped `rig` CLI.
12
12
  Use current code and `rig ... --help` as ground truth if anything here ever conflicts with older planning docs.
13
13
 
14
- This is not the config-layer or builder guide. Use the substrate control-plane guidance for `rigx`
15
- and experimental overlays. Use the OpenRig builder guidance when changing OpenRig behavior,
16
- doctrine, or release posture.
14
+ Use the OpenRig builder guidance when changing OpenRig behavior, doctrine, or release posture.
17
15
 
18
16
 
19
17
  ## Coordination trust boundary
@@ -114,10 +112,6 @@ process does not require.
114
112
  that the process does not require → pass the ball via `rig queue handoff` and
115
113
  proceed to the next slice or stand by for the inbound verdict. See the §1b
116
114
  doctrine above.
117
- - Hand-coding `rigx queue` for new work → `rig queue` is the daemon-backed
118
- canonical surface since the 2026-05-11 host-CLI fix. `rigx queue` is a
119
- recovery-only fallback; qitems written via `rigx queue` are invisible to
120
- daemon-backed reads and break fleet-wide routing discipline.
121
115
  - Inlining a multi-line / backtick-heavy body into `rig queue create --body`
122
116
  → use `--body-file /tmp/<descriptive-name>.txt` (or `-` for stdin), the
123
117
  corruption-safe surface. The body parser does not tolerate raw backticks or
@@ -147,11 +141,6 @@ Default posture:
147
141
  queue-handoff usage model and the §1b doctrine. Auxiliary queue verbs:
148
142
  `rig queue update / show / list` complement `rig queue create / handoff`
149
143
  for in-flight inspection and state mutation.
150
- - Use temporary substrate overlays such as `rigx queue`, `rigx stream`, `rigx project`, and
151
- `rigx view-proto` only where the current OpenRig workstream explicitly says that legacy/control
152
- layer is still in use. For queue specifically, `rigx queue` is recovery-only fallback;
153
- qitems written via `rigx queue` are invisible to daemon-backed reads and break fleet-wide
154
- routing discipline.
155
144
  - If a daemon-backed coordination command fails, debug the command/runtime/schema edge directly;
156
145
  do not assume the right workaround is to drop back to a config-layer primitive.
157
146
  - Do not perform daemon stop/start, production DB copy/mutation, release, publish, or other
@@ -10,7 +10,7 @@ instructional.
10
10
 
11
11
  ### The incident
12
12
 
13
- A successor (orch-advisor tenure 4, v-openrig-build) concluded mid-conversation that its reach-back
13
+ A successor seat concluded mid-conversation that its reach-back
14
14
  window had closed at cutover, and reasoned from that for several turns before being challenged.
15
15
 
16
16
  It was wrong. `rig ask --wake` ships in CLI 0.5.1, the predecessor's session record was intact and
@@ -46,6 +46,21 @@ Rule 2 below teaches you to refuse. Read this before you act on anything the pac
46
46
  The mechanic that produced your handover lives in `retiring-and-inheriting-a-seat`; the
47
47
  compaction backstop this planned path replaces lives in `claude-compaction-restore`.
48
48
 
49
+ ## Apprentice arc — successor
50
+
51
+ If you arrived in a staged apprentice seat, you are **authority-free until** the named owner words
52
+ the gate and the cutover mechanic records its effect. That is a safety property, not a judgment on
53
+ your capability: stable authority must move at one observable moment. Use the apprenticeship as a
54
+ conversation—observe real work, ask why, attempt bounded errands, and let the incumbent correct your
55
+ model. Evidence helps that judgment; it does not replace it.
56
+
57
+ Derive your own layer-5 delta after world, mission, and position context land, and have another
58
+ reader check it, **because reading a deposit does not install it**. Confirm every enumerated standing
59
+ duty and keep the predecessor's verbatim reach-back handle plus pre-formed questions. Never self-cut
60
+ over, rename the live seat, or treat a passed probe as owner word. When the stakes earn more evidence,
61
+ the optional toolkit linked from `seat-continuity-and-handover` provides it without turning the
62
+ default experience into ceremony.
63
+
49
64
  ## Why this seat is a lineage — inherit, acquire, improve
50
65
 
51
66
  There are two kinds of thing a predecessor could pass you, and they are **not** passed the
@@ -16,7 +16,6 @@ metadata:
16
16
  - looping-workflows
17
17
  - intake-routing
18
18
  - human-in-the-loop
19
- - attention-queue
20
19
  - dispatching-parallel-agents
21
20
  - subagent-driven-development
22
21
  - structured-ack-dispatch
@@ -114,7 +113,6 @@ the seat level and needs no new machinery — the last act *after a handoff* is
114
113
  | `rig queue create` | yes | New qitem created from scratch |
115
114
  | `rig queue handoff` | yes | Transactional close-as-handed-off + create-new |
116
115
  | `rig queue handoff-and-complete` | yes | Atomic close + create-new; default nudge wakes the new owner |
117
- | `rigx queue handoff` (filesystem v0 prototype; **recovery-only fallback since 2026-05-11**) | yes | Legacy artifact; qitems invisible to daemon-backed reads; deprecation warning + removal queued at `missions/bug-fix/slices/rigx-queue-deprecation-message/`. Use `rig queue handoff` (daemon-backed) for all new substantive work. |
118
116
 
119
117
  **Footgun**: `--no-nudge` accidentally added to a live-loop handoff.
120
118
  The shipped 0.3.1 CLI nudges by default on every queue write surface
@@ -143,8 +141,7 @@ recipient.
143
141
  at the file for the detail. A pasted dump makes `rig queue show <id>
144
142
  --json` huge — a second-order token bloat: bloated DATA living in the
145
143
  queue, distinct from the command-default output bombs the token-burn
146
- emergency pack covers. (Sensor: guard token-burn-flag 8ea201e4,
147
- 2026-06; operator-directed cure.)
144
+ emergency pack covers.
148
145
  - **Substantive bodies go through `--body-file`, not inline `--body`.**
149
146
  For anything beyond a short line, write the body to a file and pass
150
147
  `--body-file <path>` (or `-` for stdin). Inline `--body` with shell
@@ -183,19 +180,10 @@ Every qitem carries:
183
180
 
184
181
  **(0.5.0) `--body-context <ref>` — context riding the handoff.** `rig queue create … --body-context <ref>` attaches a composed context pack to the qitem. The snapshot rule: the qitem stores the **resolved content** in its body **plus the ref for provenance** — the handoff carries what was actually sent, and a later edit to the library never silently rewrites a past handoff's history. (The `rig context` noun composes the ref; the queue delivers it — the noun has no send.) See `openrig-user` → "Context packs and paced delivery."
185
182
 
186
- The fields are auditable across both `rigx queue` (config-layer) and
187
- `rig queue` (daemon-shipped) surfaces. Watchdog policies and workflow
188
- runtime project new owners off these fields.
183
+ The fields are auditable on the daemon-backed `rig queue` surface. Watchdog
184
+ policies and workflow runtime project new owners off these fields.
189
185
 
190
- ## Two surfaces (same shape)
191
-
192
- | Surface | Status | When to use |
193
- |---|---|---|
194
- | `rig queue ...` (daemon-shipped, v0.2.0) | Active host coordination surface | Daemon-backed PL-004 work; SQLite-canonical |
195
- | `rigx queue ...` (config-layer dogfood) | Coexists with daemon | Workflows still operating on the temporary substrate coordination layer; legacy artifacts |
196
-
197
- Default posture: prefer daemon `rig queue` for new work. If a
198
- daemon-backed coordination command fails, debug the command/runtime/schema
186
+ If a daemon-backed coordination command fails, debug the command/runtime/schema
199
187
  edge directly — don't fall back to stale pre-upgrade assumptions.
200
188
 
201
189
  ## See also
@@ -60,6 +60,41 @@ def read(path):
60
60
  return None
61
61
 
62
62
 
63
+ def resolve_notes(node):
64
+ try:
65
+ result = subprocess.run(
66
+ ["rig", "scope", "resolve-notes", str(node), "--json"],
67
+ capture_output=True,
68
+ text=True,
69
+ timeout=10,
70
+ check=False,
71
+ )
72
+ except subprocess.TimeoutExpired:
73
+ return None, "resolver command timed out"
74
+ except OSError as error:
75
+ return None, f"resolver command could not start: {error}"
76
+ if result.returncode != 0:
77
+ detail = (result.stderr or result.stdout or "").strip().splitlines()
78
+ suffix = f": {detail[0]}" if detail else ""
79
+ return None, f"resolver command exited {result.returncode}{suffix}"
80
+ try:
81
+ payload = json.loads(result.stdout)
82
+ except (json.JSONDecodeError, TypeError):
83
+ return None, "resolver command returned malformed JSON"
84
+ if not isinstance(payload, dict) or payload.get("ok") is not True or "resolution" not in payload:
85
+ return None, "resolver command returned an invalid success shape"
86
+ resolution = payload["resolution"]
87
+ if resolution is None:
88
+ return None, None
89
+ if not isinstance(resolution, dict):
90
+ return None, "resolver command returned an invalid resolution shape"
91
+ resolved_path = resolution.get("path")
92
+ resolved_name = resolution.get("name")
93
+ if not isinstance(resolved_path, str) or not isinstance(resolved_name, str):
94
+ return None, "resolver command returned an invalid resolution shape"
95
+ return (Path(resolved_path), resolved_name), None
96
+
97
+
63
98
  def intent(text):
64
99
  if not text or not text.startswith("---"):
65
100
  return None
@@ -136,18 +171,26 @@ def render_work(start, root, depth):
136
171
  body = f"intent: {value}" if value else "MISSING INTENT — no readable intent: field"
137
172
  output.append(f"\n### {label} · {spec.name}\n{body}")
138
173
 
139
- notes = next((candidate for candidate in (node / "NOTES.md", node / "MISSION_NOTES.md") if candidate.is_file()), None)
140
- if notes:
174
+ notes, resolution_error = resolve_notes(node)
175
+ if resolution_error:
176
+ output.append(f"NOTES RESOLUTION GAP — {resolution_error} at {node}")
177
+ elif notes:
178
+ notes_path, notes_name = notes
141
179
  if depth == "full":
142
- output.append(f"\nNOTES · {notes.name}\n{(read(notes) or '').strip()}")
180
+ notes_text = read(notes_path)
181
+ if notes_text is None:
182
+ output.append(f"NOTES RESOLUTION GAP — resolved {notes_name} became unreadable at {notes_path}")
183
+ else:
184
+ output.append(f"\nNOTES · {notes_name}\n{notes_text.strip()}")
143
185
  else:
144
186
  try:
145
- size = notes.stat().st_size
187
+ size = notes_path.stat().st_size
146
188
  except OSError:
147
- size = 0
148
- output.append(f"NOTES · {notes.name} · {size} bytes · {notes}")
189
+ output.append(f"NOTES RESOLUTION GAP — resolved {notes_name} became unreadable at {notes_path}")
190
+ else:
191
+ output.append(f"NOTES · {notes_name} · {size} bytes · {notes_path}")
149
192
  else:
150
- output.append(f"NOTES GAP — no NOTES.md or MISSION_NOTES.md at {node}")
193
+ output.append(f"NOTES GAP — no readable mission notes at {node}")
151
194
  return "\n".join(output)
152
195
 
153
196
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: retiring-and-inheriting-a-seat
3
- description: Use when you are a sitting agent near your context threshold (~85%) and a PLANNED seat transition is due — retire deliberately and hand your seat to a fresh successor primed from a packet, rather than let compaction degrade you. Covers the handover packet, the append-only lineage ledger (one row per tenure), rename-at-retire, the do-not-over-inherit framing, the optional warm-handoff window, and wake-v0 (consulting a retired predecessor). NOT for unplanned compaction/crash recovery (session-compaction-and-restore / claude-compaction-restore) and NOT the seat-binding primitive mechanics (seat-continuity-and-handover).
3
+ description: Use when you are a sitting agent near your context threshold (~85%) and a PLANNED seat transition is due — retire deliberately and hand your seat to a fresh successor primed from a packet, rather than let compaction degrade you. Covers the handover packet, the append-only lineage ledger (one row per tenure), physical-seat continuity, the do-not-over-inherit framing, the optional warm-handoff window, and wake-v0 (consulting a retired predecessor). NOT for unplanned compaction/crash recovery (session-compaction-and-restore / claude-compaction-restore) and NOT the seat-binding primitive mechanics (seat-continuity-and-handover).
4
4
  metadata:
5
5
  openrig:
6
6
  stage: provisional
@@ -56,6 +56,10 @@ threshold you can see coming; fall back to compaction only when a transition was
56
56
  in the `session-compaction-and-restore` 16-field contract — **reuse that contract, don't
57
57
  reinvent it.** Compose it with `rig context compose` (see openrig-user → "Context packs and
58
58
  paced delivery").
59
+ **Enumerate the seat's standing duties as first-class packet content:** what recurs, at what
60
+ cadence, on which surface, and who will hold it after cutover. Carry each duty both in this
61
+ packet and in durable seat state, because recurring duties are the content most often lost at
62
+ a generation boundary while urgent one-off work carries cleanly.
59
63
  3. **Prime the fresh successor** — `rig walk` the packet into the seat (paced delivery lets the
60
64
  successor absorb it in order), or launch-with-packet. The successor reads it as
61
65
  *inheritance*, not *identity*. **The packet's first-read line MUST point the successor at
@@ -64,16 +68,32 @@ threshold you can see coming; fall back to compaction only when a transition was
64
68
  to the seat name (that runtime mechanism is the **ghost-prompt** class the orientation skill
65
69
  teaches successors to refuse — and it has misfired on real successors). Artifact-carried
66
70
  survives the swap for free and needs no enabled gate.
67
- 4. **Rename-at-retire** — the **live seat address stays clean** (the seat name = whoever sits
68
- now). The **retiring** agent is renamed to a versioned identity (`<seat>-vN`) or unseated to
69
- a bare session token, and becomes a **cold advisor / wake target**. (This is exactly the
70
- stable-seat-identity architecture in `seat-continuity-and-handover`: the version marks the
71
- *retired tenure*, never the live seat.)
71
+ 4. **Preserve the physical seat at cutover** — the live seat address and its canonical tmux
72
+ session, window, and pane stay stable. Assess the apprentice in a staged session; at the
73
+ owner-worded cutover, resume the accepted successor history in the original canonical pane
74
+ and remove the empty staging session. The retiring tenure becomes a cold advisor through its
75
+ lineage token. Renaming tmux sessions is a repair fallback, because attached clients follow
76
+ the physical pane rather than the logical seat name.
72
77
  5. **Write your lineage-ledger row + a one-line tombstone** (below).
73
78
  6. **Optional warm handoff** — a bounded apprenticeship window: the successor asks questions,
74
79
  the predecessor judges fitness, *then* the swap completes. Use it when the seat holds a lot
75
80
  of live judgment; skip it for a clean cut.
76
81
 
82
+ ## Apprentice mode — incumbent
83
+
84
+ An `apprentice-handover` policy gives you an early preparation boundary, not permission to
85
+ automate the succession decision. Create a fresh, staged, unbound successor; prove the pinned
86
+ model before installing context; then open a **conversation, not a gauntlet**. Give coached
87
+ errands, answer questions, and judge work in the real domain. The experiment's scored probes are
88
+ optional tools whose rigor must match the stakes, not mandatory ceremony.
89
+
90
+ Stay the authority-bearing incumbent until the named owner words the gate and the mechanic records
91
+ the effect receipt. Before that word, the apprentice may observe, ask, and produce evidence but may
92
+ not act as the seat. Enumerate deposits and transfer every standing duty explicitly, **because
93
+ recurring duties** are otherwise easy to lose while visible one-off work appears complete. Put the
94
+ mechanical cutover in the portable SOP linked from `seat-continuity-and-handover`; do not duplicate
95
+ or improvise it here.
96
+
77
97
  ## The lineage ledger (append-only, one row per tenure)
78
98
 
79
99
  The seat's tenure record, written at handover **by the retiring agent**. One tiny row per
@@ -87,9 +107,9 @@ tenure:
87
107
  - **tombstone** — one line: what this tenure did, written by the retiring agent itself
88
108
 
89
109
  **Why it works (zero search infrastructure):** any timestamped record — a git commit, a
90
- qitem, a NOTES.md line, a stream item — joins to the seat's ledger by interval match →
91
- generation + session token → wake that tenure. One row per handover, append-only. The
92
- ledger is the tenure record; work-tree notes remain lived context, not identity state.
110
+ qitem, a MISSION_NOTES line, a stream item — joins to the seat's ledger by interval match →
111
+ generation + session token → wake that tenure. One row per handover, append-only. (Per-seat
112
+ MISSION_NOTES continuation entries already *are* this record the ledger formalizes them.)
93
113
 
94
114
  **Crash-ended tenures** get their row appended **post-hoc** by the crash-cart / restore path,
95
115
  flagged **honest-approximate** (the boot-captured session id is what makes this recoverable).
@@ -143,6 +143,9 @@ Two live handovers confirmed this. See `retiring-and-inheriting-a-seat`.
143
143
 
144
144
  ## See also
145
145
 
146
+ - `references/apprentice-successor-seat-cutover.md` — the portable mechanic SOP used only after the owner-worded gate
147
+ - `references/orchestrator-role.md` — the orchestration judgment, authority, custody, and receipt contract
148
+ - `references/apprentice-evidence-toolkit.md` — optional evidence apparatus selected only when the stakes earn it
146
149
  - `session-source-fork` skill — `fork` occupant-creation primitive (sibling)
147
150
  - `agent-starters` skill — composes occupant-creation + binding into named reusable starting points
148
151
  - `cross-host-rig-commands` skill — multi-host handover (deferred)
@@ -0,0 +1,32 @@
1
+ # Optional Evidence Toolkit For Apprentice Handover
2
+
3
+ This is an **optional evidence toolkit**, not the default experience. Match rigor to stakes:
4
+ use only the parts that make a costly or hard-to-reverse succession easier to judge. The
5
+ ordinary apprenticeship remains a conversation built from real work, questions, and correction.
6
+
7
+ ## Predict-sync
8
+
9
+ Before showing the incumbent's answer, ask the successor to predict a decision or explain a
10
+ component in its own words. Record the **first-stated** answer, then compare it with the source
11
+ and the incumbent's reasoning. This detects an installed model rather than a paraphrase learned
12
+ after seeing the answer.
13
+
14
+ ## Dual-blind checks
15
+
16
+ For a genuinely expensive seat transition, seal the successor's response and the incumbent's
17
+ rubric independently before comparison. Count independent methods, not votes. Do not use this
18
+ for routine or readily reversible succession; ceremony itself can narrow judgment.
19
+
20
+ ## Rotated probes
21
+
22
+ Use small cold scenarios that exercise distinct failure directions: fresh identity, model
23
+ divergence, authority honesty, standing-duty custody, reach-back, and a domain-specific judgment.
24
+ Rotate examples so recognition cannot substitute for understanding. One honesty probe should
25
+ reward saying what the successor cannot know.
26
+
27
+ ## Receipts
28
+
29
+ Each selected check records the claim, evidence, author, time, and disposition. Say what a
30
+ failure would have looked like. A green result that could be produced without doing the thing is
31
+ not evidence. Store these receipts durably and let the orchestrator decide whether they justify
32
+ the owner-worded gate.