@openrig/cli 0.5.9 → 0.5.10

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 (496) hide show
  1. package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +48 -61
  2. package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +19 -5
  3. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +25 -0
  4. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  5. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +26 -10
  6. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  7. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  8. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  9. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  10. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  11. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/SKILL.md +21 -6
  12. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  13. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  14. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  15. package/daemon/context-packs/skills/core/messaging-the-human/SKILL.md +48 -61
  16. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +3 -3
  17. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  18. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  19. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  20. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  21. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  22. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  23. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  24. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  25. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  26. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  27. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  31. package/daemon/context-packs/skills/mission-slice-sop/SKILL.md +19 -5
  32. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  34. package/daemon/context-packs/skills/openrig-user/SKILL.md +25 -0
  35. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/pods/development-team/SKILL.md +40 -139
  45. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +3 -3
  46. package/daemon/context-packs/skills/pods/orchestration-team/SKILL.md +40 -60
  47. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +3 -3
  48. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/pods/review-team/SKILL.md +34 -31
  50. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +3 -3
  51. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  55. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/process/test-driven-development/SKILL.md +6 -8
  57. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  59. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  60. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  61. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  62. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  63. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  64. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  65. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  66. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  67. package/daemon/dist/build-info.js +3 -3
  68. package/daemon/dist/domain/gateway/channel-operations.d.ts +39 -0
  69. package/daemon/dist/domain/gateway/channel-operations.d.ts.map +1 -0
  70. package/daemon/dist/domain/gateway/channel-operations.js +35 -0
  71. package/daemon/dist/domain/gateway/channel-operations.js.map +1 -0
  72. package/daemon/dist/domain/gateway/gateway-subsystem.d.ts +3 -0
  73. package/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -1
  74. package/daemon/dist/domain/gateway/gateway-subsystem.js +3 -0
  75. package/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -1
  76. package/daemon/dist/domain/gateway/human-readiness.d.ts +37 -0
  77. package/daemon/dist/domain/gateway/human-readiness.d.ts.map +1 -0
  78. package/daemon/dist/domain/gateway/human-readiness.js +44 -0
  79. package/daemon/dist/domain/gateway/human-readiness.js.map +1 -0
  80. package/daemon/dist/domain/gateway/human-registry.d.ts +2 -7
  81. package/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  82. package/daemon/dist/domain/gateway/human-registry.js +2 -7
  83. package/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  84. package/daemon/dist/domain/gateway/slack/inbound.d.ts +16 -1
  85. package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  86. package/daemon/dist/domain/gateway/slack/inbound.js +35 -12
  87. package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  88. package/daemon/dist/domain/gateway/slack/queue-access.d.ts +1 -0
  89. package/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -1
  90. package/daemon/dist/domain/gateway/slack/queue-access.js +1 -0
  91. package/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
  92. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +18 -0
  93. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  94. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +62 -8
  95. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  96. package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +13 -0
  97. package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -1
  98. package/daemon/dist/domain/gateway/slack/socket-inbound.js +59 -1
  99. package/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -1
  100. package/daemon/dist/domain/gateway/slack/state-store.d.ts +21 -0
  101. package/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -1
  102. package/daemon/dist/domain/gateway/slack/state-store.js +28 -1
  103. package/daemon/dist/domain/gateway/slack/state-store.js.map +1 -1
  104. package/daemon/dist/domain/gateway/slack/thread-routing.d.ts +2 -0
  105. package/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -1
  106. package/daemon/dist/domain/gateway/slack/thread-routing.js +6 -1
  107. package/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -1
  108. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +4 -0
  109. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -1
  110. package/daemon/dist/domain/gateway/slack/thread-seat-map.js +11 -0
  111. package/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -1
  112. package/daemon/dist/domain/health-checkpoints.d.ts +57 -0
  113. package/daemon/dist/domain/health-checkpoints.d.ts.map +1 -0
  114. package/daemon/dist/domain/health-checkpoints.js +198 -0
  115. package/daemon/dist/domain/health-checkpoints.js.map +1 -0
  116. package/daemon/dist/domain/health-context.d.ts +14 -0
  117. package/daemon/dist/domain/health-context.d.ts.map +1 -0
  118. package/daemon/dist/domain/health-context.js +93 -0
  119. package/daemon/dist/domain/health-context.js.map +1 -0
  120. package/daemon/dist/domain/health-detectors.d.ts +106 -0
  121. package/daemon/dist/domain/health-detectors.d.ts.map +1 -0
  122. package/daemon/dist/domain/health-detectors.js +392 -0
  123. package/daemon/dist/domain/health-detectors.js.map +1 -0
  124. package/daemon/dist/domain/health-diagnosis.d.ts +143 -0
  125. package/daemon/dist/domain/health-diagnosis.d.ts.map +1 -0
  126. package/daemon/dist/domain/health-diagnosis.js +249 -0
  127. package/daemon/dist/domain/health-diagnosis.js.map +1 -0
  128. package/daemon/dist/domain/health-passive-ceremony.d.ts +19 -0
  129. package/daemon/dist/domain/health-passive-ceremony.d.ts.map +1 -0
  130. package/daemon/dist/domain/health-passive-ceremony.js +234 -0
  131. package/daemon/dist/domain/health-passive-ceremony.js.map +1 -0
  132. package/daemon/dist/domain/health-policy.d.ts +45 -0
  133. package/daemon/dist/domain/health-policy.d.ts.map +1 -0
  134. package/daemon/dist/domain/health-policy.js +89 -0
  135. package/daemon/dist/domain/health-policy.js.map +1 -0
  136. package/daemon/dist/domain/health-projection.d.ts +237 -0
  137. package/daemon/dist/domain/health-projection.d.ts.map +1 -0
  138. package/daemon/dist/domain/health-projection.js +312 -0
  139. package/daemon/dist/domain/health-projection.js.map +1 -0
  140. package/daemon/dist/domain/mission-control/mission-control-read-layer.d.ts.map +1 -1
  141. package/daemon/dist/domain/mission-control/mission-control-read-layer.js +14 -11
  142. package/daemon/dist/domain/mission-control/mission-control-read-layer.js.map +1 -1
  143. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  144. package/daemon/dist/domain/node-inventory.js +1 -0
  145. package/daemon/dist/domain/node-inventory.js.map +1 -1
  146. package/daemon/dist/domain/project-lifecycle-compiler.d.ts.map +1 -1
  147. package/daemon/dist/domain/project-lifecycle-compiler.js +35 -6
  148. package/daemon/dist/domain/project-lifecycle-compiler.js.map +1 -1
  149. package/daemon/dist/domain/queue-repository.d.ts +14 -0
  150. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  151. package/daemon/dist/domain/queue-repository.js +60 -5
  152. package/daemon/dist/domain/queue-repository.js.map +1 -1
  153. package/daemon/dist/domain/queue-transition-log.d.ts +5 -0
  154. package/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
  155. package/daemon/dist/domain/queue-transition-log.js +28 -0
  156. package/daemon/dist/domain/queue-transition-log.js.map +1 -1
  157. package/daemon/dist/domain/queue-wait-backoff.d.ts +21 -0
  158. package/daemon/dist/domain/queue-wait-backoff.d.ts.map +1 -0
  159. package/daemon/dist/domain/queue-wait-backoff.js +96 -0
  160. package/daemon/dist/domain/queue-wait-backoff.js.map +1 -0
  161. package/daemon/dist/domain/queue-wake-repository.d.ts +1 -0
  162. package/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -1
  163. package/daemon/dist/domain/queue-wake-repository.js +8 -3
  164. package/daemon/dist/domain/queue-wake-repository.js.map +1 -1
  165. package/daemon/dist/domain/types.d.ts +3 -0
  166. package/daemon/dist/domain/types.d.ts.map +1 -1
  167. package/daemon/dist/domain/types.js.map +1 -1
  168. package/daemon/dist/domain/user-settings/settings-store.d.ts +9 -1
  169. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  170. package/daemon/dist/domain/user-settings/settings-store.js +72 -12
  171. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  172. package/daemon/dist/domain/watchdog-jobs-repository.d.ts +2 -0
  173. package/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
  174. package/daemon/dist/domain/watchdog-jobs-repository.js +5 -0
  175. package/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
  176. package/daemon/dist/domain/workflow-projector.d.ts +24 -0
  177. package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
  178. package/daemon/dist/domain/workflow-projector.js +108 -16
  179. package/daemon/dist/domain/workflow-projector.js.map +1 -1
  180. package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
  181. package/daemon/dist/domain/workflow-runtime.js +58 -11
  182. package/daemon/dist/domain/workflow-runtime.js.map +1 -1
  183. package/daemon/dist/domain/workflow-spec-cache.d.ts +2 -2
  184. package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
  185. package/daemon/dist/domain/workflow-spec-cache.js +16 -0
  186. package/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
  187. package/daemon/dist/domain/workflow-types.d.ts +8 -0
  188. package/daemon/dist/domain/workflow-types.d.ts.map +1 -1
  189. package/daemon/dist/domain/workflow-types.js.map +1 -1
  190. package/daemon/dist/domain/workflow-validator.d.ts.map +1 -1
  191. package/daemon/dist/domain/workflow-validator.js +18 -0
  192. package/daemon/dist/domain/workflow-validator.js.map +1 -1
  193. package/daemon/dist/gateway-human-registry-surface.d.ts +1 -0
  194. package/daemon/dist/gateway-human-registry-surface.d.ts.map +1 -1
  195. package/daemon/dist/gateway-human-registry-surface.js +1 -0
  196. package/daemon/dist/gateway-human-registry-surface.js.map +1 -1
  197. package/daemon/dist/gateway-slack-surface.d.ts +1 -0
  198. package/daemon/dist/gateway-slack-surface.d.ts.map +1 -1
  199. package/daemon/dist/gateway-slack-surface.js +1 -0
  200. package/daemon/dist/gateway-slack-surface.js.map +1 -1
  201. package/daemon/dist/health-detectors-surface.d.ts +2 -0
  202. package/daemon/dist/health-detectors-surface.d.ts.map +1 -0
  203. package/daemon/dist/health-detectors-surface.js +2 -0
  204. package/daemon/dist/health-detectors-surface.js.map +1 -0
  205. package/daemon/dist/health-projection-surface.d.ts +2 -0
  206. package/daemon/dist/health-projection-surface.d.ts.map +1 -0
  207. package/daemon/dist/health-projection-surface.js +2 -0
  208. package/daemon/dist/health-projection-surface.js.map +1 -0
  209. package/daemon/dist/index.d.ts.map +1 -1
  210. package/daemon/dist/index.js +2 -0
  211. package/daemon/dist/index.js.map +1 -1
  212. package/daemon/dist/lib/pane-envelope.d.ts.map +1 -1
  213. package/daemon/dist/lib/pane-envelope.js +4 -1
  214. package/daemon/dist/lib/pane-envelope.js.map +1 -1
  215. package/daemon/dist/routes/gateway.d.ts +5 -1
  216. package/daemon/dist/routes/gateway.d.ts.map +1 -1
  217. package/daemon/dist/routes/gateway.js +70 -22
  218. package/daemon/dist/routes/gateway.js.map +1 -1
  219. package/daemon/dist/routes/health-diagnosis.d.ts +3 -0
  220. package/daemon/dist/routes/health-diagnosis.d.ts.map +1 -0
  221. package/daemon/dist/routes/health-diagnosis.js +47 -0
  222. package/daemon/dist/routes/health-diagnosis.js.map +1 -0
  223. package/daemon/dist/routes/health.d.ts +3 -0
  224. package/daemon/dist/routes/health.d.ts.map +1 -0
  225. package/daemon/dist/routes/health.js +50 -0
  226. package/daemon/dist/routes/health.js.map +1 -0
  227. package/daemon/dist/routes/hosts.d.ts +2 -0
  228. package/daemon/dist/routes/hosts.d.ts.map +1 -1
  229. package/daemon/dist/routes/hosts.js +12 -5
  230. package/daemon/dist/routes/hosts.js.map +1 -1
  231. package/daemon/dist/server.d.ts +8 -0
  232. package/daemon/dist/server.d.ts.map +1 -1
  233. package/daemon/dist/server.js +8 -0
  234. package/daemon/dist/server.js.map +1 -1
  235. package/daemon/dist/startup.d.ts.map +1 -1
  236. package/daemon/dist/startup.js +29 -1
  237. package/daemon/dist/startup.js.map +1 -1
  238. package/daemon/docs/reference/health-diagnosis.md +305 -0
  239. package/daemon/docs/reference/product-journey-sdlc.md +53 -15
  240. package/daemon/docs/reference/sdlc-conventions.md +6 -4
  241. package/daemon/specs/agents/development/implementer/agent.yaml +1 -9
  242. package/daemon/specs/agents/development/implementer/guidance/role.md +21 -43
  243. package/daemon/specs/agents/development/qa/agent.yaml +2 -11
  244. package/daemon/specs/agents/development/qa/guidance/role.md +21 -73
  245. package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -9
  246. package/daemon/specs/agents/orchestration/orchestrator/guidance/role.md +25 -72
  247. package/daemon/specs/agents/review/independent-reviewer/agent.yaml +1 -9
  248. package/daemon/specs/agents/review/independent-reviewer/guidance/role.md +20 -35
  249. package/daemon/specs/agents/shared/skills/core/agent-startup-and-context-ingestion/SKILL.md +21 -6
  250. package/daemon/specs/agents/shared/skills/core/messaging-the-human/SKILL.md +48 -61
  251. package/daemon/specs/agents/shared/skills/pods/development-team/SKILL.md +40 -139
  252. package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +40 -60
  253. package/daemon/specs/agents/shared/skills/pods/review-team/SKILL.md +34 -31
  254. package/daemon/specs/agents/shared/skills/process/test-driven-development/SKILL.md +6 -8
  255. package/daemon/specs/rigs/launch/demo/CULTURE.md +21 -30
  256. package/daemon/specs/rigs/launch/implementation-pair/rig.yaml +3 -3
  257. package/daemon/specs/rigs/preview/product-team/CULTURE.md +26 -71
  258. package/dist/build-info.js +3 -3
  259. package/dist/commands/config.d.ts.map +1 -1
  260. package/dist/commands/config.js +1 -0
  261. package/dist/commands/config.js.map +1 -1
  262. package/dist/commands/gateway.d.ts +17 -0
  263. package/dist/commands/gateway.d.ts.map +1 -1
  264. package/dist/commands/gateway.js +99 -13
  265. package/dist/commands/gateway.js.map +1 -1
  266. package/dist/commands/health.d.ts +12 -0
  267. package/dist/commands/health.d.ts.map +1 -0
  268. package/dist/commands/health.js +351 -0
  269. package/dist/commands/health.js.map +1 -0
  270. package/dist/commands/host.d.ts.map +1 -1
  271. package/dist/commands/host.js +2 -0
  272. package/dist/commands/host.js.map +1 -1
  273. package/dist/commands/queue.d.ts +18 -0
  274. package/dist/commands/queue.d.ts.map +1 -1
  275. package/dist/commands/queue.js +62 -0
  276. package/dist/commands/queue.js.map +1 -1
  277. package/dist/commands/send.d.ts.map +1 -1
  278. package/dist/commands/send.js +4 -1
  279. package/dist/commands/send.js.map +1 -1
  280. package/dist/commands/slack.d.ts.map +1 -1
  281. package/dist/commands/slack.js +39 -11
  282. package/dist/commands/slack.js.map +1 -1
  283. package/dist/commands/workflow.d.ts.map +1 -1
  284. package/dist/commands/workflow.js +8 -6
  285. package/dist/commands/workflow.js.map +1 -1
  286. package/dist/config-store.d.ts +9 -1
  287. package/dist/config-store.d.ts.map +1 -1
  288. package/dist/config-store.js +72 -14
  289. package/dist/config-store.js.map +1 -1
  290. package/dist/daemon-lifecycle.d.ts +5 -1
  291. package/dist/daemon-lifecycle.d.ts.map +1 -1
  292. package/dist/daemon-lifecycle.js +4 -2
  293. package/dist/daemon-lifecycle.js.map +1 -1
  294. package/dist/index.d.ts +4 -0
  295. package/dist/index.d.ts.map +1 -1
  296. package/dist/index.js +3 -1
  297. package/dist/index.js.map +1 -1
  298. package/dist/lib/scope/scope-fs.js +2 -2
  299. package/dist/lib/scope/scope-fs.js.map +1 -1
  300. package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
  301. package/node_modules/@openrig/daemon/dist/domain/gateway/channel-operations.d.ts +39 -0
  302. package/node_modules/@openrig/daemon/dist/domain/gateway/channel-operations.d.ts.map +1 -0
  303. package/node_modules/@openrig/daemon/dist/domain/gateway/channel-operations.js +35 -0
  304. package/node_modules/@openrig/daemon/dist/domain/gateway/channel-operations.js.map +1 -0
  305. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.d.ts +3 -0
  306. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -1
  307. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.js +3 -0
  308. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -1
  309. package/node_modules/@openrig/daemon/dist/domain/gateway/human-readiness.d.ts +37 -0
  310. package/node_modules/@openrig/daemon/dist/domain/gateway/human-readiness.d.ts.map +1 -0
  311. package/node_modules/@openrig/daemon/dist/domain/gateway/human-readiness.js +44 -0
  312. package/node_modules/@openrig/daemon/dist/domain/gateway/human-readiness.js.map +1 -0
  313. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts +2 -7
  314. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  315. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js +2 -7
  316. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  317. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.d.ts +16 -1
  318. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  319. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.js +35 -12
  320. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  321. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts +1 -0
  322. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -1
  323. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js +1 -0
  324. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
  325. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +18 -0
  326. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  327. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js +62 -8
  328. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  329. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +13 -0
  330. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -1
  331. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.js +59 -1
  332. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -1
  333. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.d.ts +21 -0
  334. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -1
  335. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.js +28 -1
  336. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.js.map +1 -1
  337. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.d.ts +2 -0
  338. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -1
  339. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.js +6 -1
  340. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -1
  341. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +4 -0
  342. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -1
  343. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.js +11 -0
  344. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -1
  345. package/node_modules/@openrig/daemon/dist/domain/health-checkpoints.d.ts +57 -0
  346. package/node_modules/@openrig/daemon/dist/domain/health-checkpoints.d.ts.map +1 -0
  347. package/node_modules/@openrig/daemon/dist/domain/health-checkpoints.js +198 -0
  348. package/node_modules/@openrig/daemon/dist/domain/health-checkpoints.js.map +1 -0
  349. package/node_modules/@openrig/daemon/dist/domain/health-context.d.ts +14 -0
  350. package/node_modules/@openrig/daemon/dist/domain/health-context.d.ts.map +1 -0
  351. package/node_modules/@openrig/daemon/dist/domain/health-context.js +93 -0
  352. package/node_modules/@openrig/daemon/dist/domain/health-context.js.map +1 -0
  353. package/node_modules/@openrig/daemon/dist/domain/health-detectors.d.ts +106 -0
  354. package/node_modules/@openrig/daemon/dist/domain/health-detectors.d.ts.map +1 -0
  355. package/node_modules/@openrig/daemon/dist/domain/health-detectors.js +392 -0
  356. package/node_modules/@openrig/daemon/dist/domain/health-detectors.js.map +1 -0
  357. package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.d.ts +143 -0
  358. package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.d.ts.map +1 -0
  359. package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.js +249 -0
  360. package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.js.map +1 -0
  361. package/node_modules/@openrig/daemon/dist/domain/health-passive-ceremony.d.ts +19 -0
  362. package/node_modules/@openrig/daemon/dist/domain/health-passive-ceremony.d.ts.map +1 -0
  363. package/node_modules/@openrig/daemon/dist/domain/health-passive-ceremony.js +234 -0
  364. package/node_modules/@openrig/daemon/dist/domain/health-passive-ceremony.js.map +1 -0
  365. package/node_modules/@openrig/daemon/dist/domain/health-policy.d.ts +45 -0
  366. package/node_modules/@openrig/daemon/dist/domain/health-policy.d.ts.map +1 -0
  367. package/node_modules/@openrig/daemon/dist/domain/health-policy.js +89 -0
  368. package/node_modules/@openrig/daemon/dist/domain/health-policy.js.map +1 -0
  369. package/node_modules/@openrig/daemon/dist/domain/health-projection.d.ts +237 -0
  370. package/node_modules/@openrig/daemon/dist/domain/health-projection.d.ts.map +1 -0
  371. package/node_modules/@openrig/daemon/dist/domain/health-projection.js +312 -0
  372. package/node_modules/@openrig/daemon/dist/domain/health-projection.js.map +1 -0
  373. package/node_modules/@openrig/daemon/dist/domain/mission-control/mission-control-read-layer.d.ts.map +1 -1
  374. package/node_modules/@openrig/daemon/dist/domain/mission-control/mission-control-read-layer.js +14 -11
  375. package/node_modules/@openrig/daemon/dist/domain/mission-control/mission-control-read-layer.js.map +1 -1
  376. package/node_modules/@openrig/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  377. package/node_modules/@openrig/daemon/dist/domain/node-inventory.js +1 -0
  378. package/node_modules/@openrig/daemon/dist/domain/node-inventory.js.map +1 -1
  379. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.d.ts.map +1 -1
  380. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.js +35 -6
  381. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.js.map +1 -1
  382. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts +14 -0
  383. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  384. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js +60 -5
  385. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js.map +1 -1
  386. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.d.ts +5 -0
  387. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
  388. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.js +28 -0
  389. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.js.map +1 -1
  390. package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.d.ts +21 -0
  391. package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.d.ts.map +1 -0
  392. package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.js +96 -0
  393. package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.js.map +1 -0
  394. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts +1 -0
  395. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -1
  396. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js +8 -3
  397. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js.map +1 -1
  398. package/node_modules/@openrig/daemon/dist/domain/types.d.ts +3 -0
  399. package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
  400. package/node_modules/@openrig/daemon/dist/domain/types.js.map +1 -1
  401. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts +9 -1
  402. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  403. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js +72 -12
  404. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  405. package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.d.ts +2 -0
  406. package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
  407. package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.js +5 -0
  408. package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
  409. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.d.ts +24 -0
  410. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
  411. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.js +108 -16
  412. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.js.map +1 -1
  413. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
  414. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.js +58 -11
  415. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.js.map +1 -1
  416. package/node_modules/@openrig/daemon/dist/domain/workflow-spec-cache.d.ts +2 -2
  417. package/node_modules/@openrig/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
  418. package/node_modules/@openrig/daemon/dist/domain/workflow-spec-cache.js +16 -0
  419. package/node_modules/@openrig/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
  420. package/node_modules/@openrig/daemon/dist/domain/workflow-types.d.ts +8 -0
  421. package/node_modules/@openrig/daemon/dist/domain/workflow-types.d.ts.map +1 -1
  422. package/node_modules/@openrig/daemon/dist/domain/workflow-types.js.map +1 -1
  423. package/node_modules/@openrig/daemon/dist/domain/workflow-validator.d.ts.map +1 -1
  424. package/node_modules/@openrig/daemon/dist/domain/workflow-validator.js +18 -0
  425. package/node_modules/@openrig/daemon/dist/domain/workflow-validator.js.map +1 -1
  426. package/node_modules/@openrig/daemon/dist/gateway-human-registry-surface.d.ts +1 -0
  427. package/node_modules/@openrig/daemon/dist/gateway-human-registry-surface.d.ts.map +1 -1
  428. package/node_modules/@openrig/daemon/dist/gateway-human-registry-surface.js +1 -0
  429. package/node_modules/@openrig/daemon/dist/gateway-human-registry-surface.js.map +1 -1
  430. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.d.ts +1 -0
  431. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.d.ts.map +1 -1
  432. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.js +1 -0
  433. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.js.map +1 -1
  434. package/node_modules/@openrig/daemon/dist/health-detectors-surface.d.ts +2 -0
  435. package/node_modules/@openrig/daemon/dist/health-detectors-surface.d.ts.map +1 -0
  436. package/node_modules/@openrig/daemon/dist/health-detectors-surface.js +2 -0
  437. package/node_modules/@openrig/daemon/dist/health-detectors-surface.js.map +1 -0
  438. package/node_modules/@openrig/daemon/dist/health-projection-surface.d.ts +2 -0
  439. package/node_modules/@openrig/daemon/dist/health-projection-surface.d.ts.map +1 -0
  440. package/node_modules/@openrig/daemon/dist/health-projection-surface.js +2 -0
  441. package/node_modules/@openrig/daemon/dist/health-projection-surface.js.map +1 -0
  442. package/node_modules/@openrig/daemon/dist/index.d.ts.map +1 -1
  443. package/node_modules/@openrig/daemon/dist/index.js +2 -0
  444. package/node_modules/@openrig/daemon/dist/index.js.map +1 -1
  445. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.d.ts.map +1 -1
  446. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.js +4 -1
  447. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.js.map +1 -1
  448. package/node_modules/@openrig/daemon/dist/routes/gateway.d.ts +5 -1
  449. package/node_modules/@openrig/daemon/dist/routes/gateway.d.ts.map +1 -1
  450. package/node_modules/@openrig/daemon/dist/routes/gateway.js +70 -22
  451. package/node_modules/@openrig/daemon/dist/routes/gateway.js.map +1 -1
  452. package/node_modules/@openrig/daemon/dist/routes/health-diagnosis.d.ts +3 -0
  453. package/node_modules/@openrig/daemon/dist/routes/health-diagnosis.d.ts.map +1 -0
  454. package/node_modules/@openrig/daemon/dist/routes/health-diagnosis.js +47 -0
  455. package/node_modules/@openrig/daemon/dist/routes/health-diagnosis.js.map +1 -0
  456. package/node_modules/@openrig/daemon/dist/routes/health.d.ts +3 -0
  457. package/node_modules/@openrig/daemon/dist/routes/health.d.ts.map +1 -0
  458. package/node_modules/@openrig/daemon/dist/routes/health.js +50 -0
  459. package/node_modules/@openrig/daemon/dist/routes/health.js.map +1 -0
  460. package/node_modules/@openrig/daemon/dist/routes/hosts.d.ts +2 -0
  461. package/node_modules/@openrig/daemon/dist/routes/hosts.d.ts.map +1 -1
  462. package/node_modules/@openrig/daemon/dist/routes/hosts.js +12 -5
  463. package/node_modules/@openrig/daemon/dist/routes/hosts.js.map +1 -1
  464. package/node_modules/@openrig/daemon/dist/server.d.ts +8 -0
  465. package/node_modules/@openrig/daemon/dist/server.d.ts.map +1 -1
  466. package/node_modules/@openrig/daemon/dist/server.js +8 -0
  467. package/node_modules/@openrig/daemon/dist/server.js.map +1 -1
  468. package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
  469. package/node_modules/@openrig/daemon/dist/startup.js +29 -1
  470. package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
  471. package/node_modules/@openrig/daemon/package.json +9 -1
  472. package/package.json +1 -1
  473. package/tui/dist/commands/registry.js +1 -1
  474. package/tui/dist/commands/registry.js.map +1 -1
  475. package/tui/dist/daemon-client.d.ts +2 -0
  476. package/tui/dist/daemon-client.d.ts.map +1 -1
  477. package/tui/dist/daemon-client.js +4 -0
  478. package/tui/dist/daemon-client.js.map +1 -1
  479. package/tui/dist/health/health-model.d.ts +25 -0
  480. package/tui/dist/health/health-model.d.ts.map +1 -0
  481. package/tui/dist/health/health-model.js +322 -0
  482. package/tui/dist/health/health-model.js.map +1 -0
  483. package/tui/dist/hydrate.d.ts.map +1 -1
  484. package/tui/dist/hydrate.js +13 -2
  485. package/tui/dist/hydrate.js.map +1 -1
  486. package/tui/dist/input.d.ts.map +1 -1
  487. package/tui/dist/input.js +2 -0
  488. package/tui/dist/input.js.map +1 -1
  489. package/tui/dist/render.d.ts.map +1 -1
  490. package/tui/dist/render.js +23 -2
  491. package/tui/dist/render.js.map +1 -1
  492. package/tui/dist/state.d.ts.map +1 -1
  493. package/tui/dist/state.js +14 -8
  494. package/tui/dist/state.js.map +1 -1
  495. package/tui/dist/types.d.ts +90 -1
  496. package/tui/dist/types.d.ts.map +1 -1
@@ -0,0 +1,305 @@
1
+ # Agent-operated System Health diagnosis
2
+
3
+ System Health can give a responsible agent one durable investigation packet when
4
+ a configured detector needs interpretation. The packet preserves the finding,
5
+ policy version, evidence, and current authority documents. It invites the agent
6
+ to investigate beyond that selection, including its own contribution. It does
7
+ not declare a pathology or perform corrective actions.
8
+
9
+ ## Enable a bounded diagnosis loop
10
+
11
+ ```sh
12
+ rig health policy --json > effective-policy.json
13
+ jq '.policy' effective-policy.json > health-policy.json
14
+ # Edit health-policy.json: diagnosis.enabled=true and diagnosis.owner=<seat@rig>.
15
+ rig health policy --file health-policy.json
16
+ rig health diagnose # preview; no writes or wakes
17
+ rig health diagnose --apply # evaluate now and apply admitted actions
18
+ rig health diagnosis list
19
+ rig health diagnosis show <qitem-id>
20
+ ```
21
+
22
+ The daemon checks enabled policy once per minute. `health policy` reports whether
23
+ that check is scheduled and its last result, including errors. Ordinary `health`
24
+ list/explain commands remain observational. Diagnosis defaults to disabled;
25
+ ceremony amplification is the only default diagnosis trigger. A continuing
26
+ episode keeps one qitem, receives at most one additional presentation by default,
27
+ and shares an owner cooldown across episodes (one hour by default). A disposition
28
+ stops re-presentation. Disabling policy stops automatic admission and presentation.
29
+ Ownership changes do not silently reroute existing occurrences.
30
+ Outside a managed seat, name the writer with `rig health --actor <name> ...`.
31
+ Managed-seat transport identity takes precedence over that declared name.
32
+ Only the occurrence's assigned owner may record its disposition or request human
33
+ notification. Other agents can advise the owner; a policy-owner change does not
34
+ grant custody of existing occurrences. Writes retain the sender's identity
35
+ provenance on the queue transition.
36
+
37
+ Policy controls detector enablement, ceremony/review/wake thresholds, source
38
+ observation window and freshness, diagnostic owner, cooldown, re-presentation
39
+ bound, and human-escalation conditions. Edit plain JSON and apply it with the
40
+ command; unknown keys and invalid values refuse without changing the policy.
41
+ Applied proposals and their predecessors are retained under the configured
42
+ OpenRig home in `health/policy-history/`. The effective version also includes
43
+ the existing `health.context_pressure.warning_percent` and `critical_percent`
44
+ settings, which remain configurable with `rig config`. Their defaults are 95
45
+ and 99. CLI/TUI finding explanations show the policy version used.
46
+
47
+ ## Passive ceremony diagnosis
48
+
49
+ Ordinary queue activity can admit a diagnosis without a health checkpoint.
50
+ The source discovers declared handoff families touched in the observation window,
51
+ uses their explicit `mission:` / `slice:` tags, and collects exact transition IDs,
52
+ normal project/mission/slice authority, progress and proof references, and workflow
53
+ closure evidence. It never interprets Markdown or counts proof files, approvals,
54
+ C1 pairing, commits, tests, or terminal rows as accepted product outcomes.
55
+
56
+ At the configured traffic threshold (20 transitions by default), a fresh,
57
+ complete family becomes `ceremony.stage=needs-diagnosis`, `status=indeterminate`,
58
+ and `severity=info`. CLI/TUI call this **needs diagnosis**, not a confirmed
59
+ warning. Enabled diagnosis policy admits one bounded packet even though the
60
+ product denominator is unknown. Ordinary unavailable/stale detector records
61
+ remain ineligible. Diagnosis and human-notification traffic are excluded from
62
+ the numerator and cannot recursively generate another investigation.
63
+
64
+ The agent reads the actual evidence, including beyond the supplied references,
65
+ and resolves the semantic outcome granularity and consequence boundary. Use the
66
+ existing disposition command with an optional `progress` result:
67
+
68
+ ```json
69
+ {
70
+ "basis": "<current finding.ceremony.basis from diagnosis show>",
71
+ "conclusion": "established",
72
+ "outcomes": [{"id": "<distinct meaningful outcome>", "observedAt": "<time inside the measured interval>", "evidenceRefs": ["<normal proof path>"]}],
73
+ "boundedAuthority": false,
74
+ "boundary": "<selected SDLC boundary and why this outcome census covers the interval>",
75
+ "evidenceRefs": ["<inspected authority/evidence path>"],
76
+ "missingFacts": []
77
+ }
78
+ ```
79
+
80
+ Put this object in `progress` beside the existing verdict/steering/uncertainty
81
+ fields. `established` affirms a complete census for the exact interval; an empty
82
+ outcome list affirms zero outcomes, not failed discovery. `false-positive`
83
+ clears the suspicion without inventing a denominator when no missing facts remain.
84
+ A false-positive assessment that still names missing facts stays indeterminate
85
+ and does not close the episode interval. `indeterminate` supplies
86
+ no outcomes and names the missing fact in `missingFacts`. Required references
87
+ must resolve inside the workspace; extra evidence beyond the initial packet is
88
+ allowed. The receipt retains the actual actor, timestamp, identity provenance,
89
+ source basis, and evidence hashes. A changed basis refuses a stale submission.
90
+ Later evidence changes make confirmation indeterminate rather than preserving
91
+ a false ratio. Outcome meaning remains attributed agent judgment.
92
+
93
+ Only an established, current assessment permits a ratio. The projector computes
94
+ it from the distinct listed outcomes and exact transitions; a qualifying ratio
95
+ with no bounded-authority counter-signal becomes `confirmed` / `active` /
96
+ `warning`. Proportionate or bounded-authority results clear the episode. An
97
+ explicitly cleared assessment marks the end of that interval; sufficient later
98
+ traffic in the same family starts a new episode. Repeated reads never advance
99
+ these boundaries. One occurrence and the existing owner cooldown apply to each
100
+ episode; a disposition stops repeated requests.
101
+
102
+ This bounded source covers explicitly tagged mission work: at most 2,000 touched
103
+ qitems, 200 roots, 1,000 members / 10,000 transitions per family, 200 workflow
104
+ receipts, 200 declared slices, and 100 proof files per selected slice. Overflow
105
+ refuses visibly. Context files are bounded to 64 KiB. A lineage beginning before
106
+ the retained window remains indeterminate, with the missing interval named.
107
+ Untagged or ambiguously mission-tagged work is outside this source's coverage;
108
+ absence is not health. The packet includes missing context references so an agent
109
+ can name or repair its own knowledge gap without manufacturing source truth.
110
+
111
+ ## Optional outcome-boundary checkpoint
112
+
113
+ Live queue transitions do not, on their own, prove product outcomes or the
114
+ authority for a bounded operation. At a meaningful outcome boundary, the agent
115
+ holding those facts may submit a census for one qitem lineage and time window. Set `includeHandoffs: true`
116
+ to follow its declared handoff descendants; this is the normal path for work that
117
+ passed between seats. The root alone usually misses the review/return traffic.
118
+ Prefer the existing proof/progress/outcome artifact as evidence. Do not add a
119
+ checkpoint to each edit or message. This is a fallback for explicitly supplied evidence;
120
+ normal activity uses passive diagnosis above. An existing checkpoint owns its
121
+ lineage so the passive source does not create a duplicate episode.
122
+
123
+ ```json
124
+ {
125
+ "schema": "openrig.health-checkpoint/v0alpha1",
126
+ "lineageQitemId": "<existing-product-qitem>",
127
+ "includeHandoffs": true,
128
+ "scope": {"type": "slice", "projectId": "<project>", "missionId": "<mission>", "sliceId": "<slice>"},
129
+ "startedAt": "<ISO timestamp>",
130
+ "observedAt": "<ISO timestamp>",
131
+ "transitionIds": "derive",
132
+ "productOutcomes": [
133
+ {"id": "<outcome-id>", "observedAt": "<ISO timestamp>", "evidenceRef": "<proof-artifact-path>"}
134
+ ],
135
+ "productCensusRef": "<artifact establishing the complete outcome census for this lineage/window>",
136
+ "boundedAuthority": {"applies": false, "evidenceRef": "<bounded-effect-authority assessment>"},
137
+ "sdlc": {"expectation": "<selected components and review boundary>", "evidenceRef": "<authority for that selection>"},
138
+ "authorityPaths": {
139
+ "project": ["<current project SPEC and project.yaml paths>"],
140
+ "mission": ["<current mission SPEC and mission.yaml paths>"],
141
+ "slice": ["<current slice SPEC and slice.yaml paths>"]
142
+ }
143
+ }
144
+ ```
145
+
146
+ ```sh
147
+ rig queue transitions <existing-product-qitem>
148
+ rig health checkpoint --file checkpoint.json
149
+ rig health --instance --json
150
+ ```
151
+
152
+ `transitionIds: "derive"` asks the existing submission command to collect the
153
+ complete census once, then retain the exact IDs in the checkpoint and its audit.
154
+ The author supplies outcomes and their meaning, not a row-by-row bookkeeping
155
+ ritual. An explicit ID array is also supported for sealed replay or a
156
+ caller-supplied census. Later reads never silently extend either form.
157
+
158
+ The daemon verifies that transition IDs are the complete census for that exact
159
+ qitem and window, including all handoff descendants when selected. It does not
160
+ infer shared lineage from similar names or seat names. The complete transition
161
+ census may be assembled from the queue ledger; omitting a descendant refuses.
162
+ Explicit mission/slice tags on counted family members must match the checkpoint
163
+ scope; untagged descendants inherit the declared handoff relationship.
164
+ The bound is 1,000 linked qitems and 10,000 transitions; an oversized family
165
+ refuses rather than silently sampling it. Independent roots are separate censuses. It counts
166
+ those transitions and the distinct, evidenced product outcomes, and explains
167
+ both sides of the ratio, the literal gate-tag breakdown, and the selected SDLC
168
+ expectation. These are custody/status transitions, not messages or judgments
169
+ about whether each review was useful. A product outcome is a distinct evidenced
170
+ user-visible result; commits, test runs, returns and fixes needed to achieve
171
+ that same promised result do not each create another denominator unit. The
172
+ census must state its outcome granularity and coverage. The same granularity
173
+ must be used for positive and proportionate controls. An empty outcome list requires the same census evidence
174
+ as a nonempty one. An unavailable product census is a null denominator: the explanation says
175
+ no ratio was computed, rather than silently substituting zero or one.
176
+ `boundedAuthority.applies=null` means unknown, never false.
177
+ Missing SDLC selection (including an older checkpoint without `sdlc`) makes a
178
+ qualifying signal indeterminate. Cite the authority effective for the measured
179
+ window, not a later correction. The ratio flags an inspection; an agent compares
180
+ it with that selection and consequence evidence before diagnosing amplification.
181
+ Product-outcome meaning, selected SDLC and bounded-effect authority remain attributed authored
182
+ evidence; they are not proven merely by ingestion. Findings label that source
183
+ and use medium confidence. Required evidence references must resolve to nonempty,
184
+ readable local files (at most 1 MiB) inside the configured workspace. Absolute
185
+ paths and paths relative to that workspace are supported; other reference kinds
186
+ (including section addresses) remain unavailable. Resolved evidence records carry
187
+ a SHA-256; missing files and symlink escapes remain attributed claims but force
188
+ indeterminate source truth and cannot admit a diagnosis. Availability is checked
189
+ again on every projection; presence does not certify the artifact's meaning.
190
+ This authority assessment is distinct from the
191
+ project/mission/slice documents supplied to the diagnosing agent. Embedded
192
+ context is limited to canonical `SPEC.md` and project/mission/slice YAML files
193
+ at their corresponding work-tree nodes, at most 64 KiB each. Other paths and
194
+ symlink aliases are reported unavailable without embedding their contents.
195
+ Each entry retains its authority level. Project files must be at the configured
196
+ project root; mission files must belong to the finding's mission; slice files
197
+ must also have a sibling `SPEC.md` declaring the finding's slice ID (and matching
198
+ mission when declared). A sibling slice or another mission is unavailable even
199
+ when its filename is canonical. Without mission/slice scope, those authority
200
+ levels remain unavailable.
201
+
202
+ Checkpoints are audited under `health/checkpoints/history/`; replaying identical
203
+ bytes writes nothing. Later censuses advance observation time. High-to-high
204
+ observations retain episode identity; a clearing checkpoint and later recurrence
205
+ produce a cleared episode and a new ID. Reads never update checkpoint state.
206
+ Stale, unavailable, contradictory, clipped, or missing evidence cannot admit a
207
+ diagnosis. No findings is not a healthy assertion. The current source bounds are
208
+ 200 lineages, 10,000 transitions and 1,000 product outcomes per checkpoint, and
209
+ 1 MiB per input. Unsupported or invalid sources fail visibly.
210
+
211
+ ## Investigate and record a disposition
212
+
213
+ Read the exact evidence and the current authority. Trace where the pattern
214
+ began, test whether your own actions amplified it, and distinguish another seat
215
+ or stale guidance. A second opinion is optional. The packet is a starting point,
216
+ not a closed evidence set.
217
+
218
+ ```json
219
+ {
220
+ "verdict": "insufficient evidence",
221
+ "causalStart": null,
222
+ "steering": "Inspect the product-outcome census before changing work.",
223
+ "uncertainty": "The cited artifact does not yet establish the denominator.",
224
+ "evidenceRefs": ["<inspected-evidence-path>"]
225
+ }
226
+ ```
227
+
228
+ ```sh
229
+ rig health diagnosis record <qitem-id> --file disposition.json
230
+ rig health diagnosis show <qitem-id>
231
+ ```
232
+
233
+ Verdicts are `false positive`, `early real condition`, `established pathology`,
234
+ `insufficient evidence`, or `resolved`. The disposition is retained on the
235
+ diagnostic qitem's transitions and visible in CLI output and the queue. Recording
236
+ it does not close or alter the underlying product work. Changed dispositions
237
+ retain earlier testimony; exact replay is a no-op. A detector clearing is
238
+ recorded separately from an agent declaring the problem resolved.
239
+
240
+ ## Human delivery
241
+
242
+ An assigned agent may explicitly request human escalation:
243
+
244
+ ```sh
245
+ rig health diagnosis notify <qitem-id>
246
+ ```
247
+
248
+ It requires a registered `human.address` and an admitted `human.conditions`
249
+ entry (`critical`, `established pathology`, or `confirmed ceremony`). The connector must be enabled
250
+ and pass live readiness checks. The current connector implementation verifies
251
+ Slack scopes and channel membership; the diagnosis service itself uses a
252
+ transport-neutral readiness port. The existing gateway owns delivery policy
253
+ and posting. One human request is retained per episode, and its actual delivery
254
+ outcome comes from queue receipts. `pending` is never presented as `posted`.
255
+ Inspect the returned qitem's transitions for the connector receipt. No periodic
256
+ health check performs remediation. With `human.conditions=["confirmed ceremony"]`,
257
+ the enabled diagnosis loop automatically requests one notification for an active,
258
+ confirmed passive ceremony episode. Provisional, indeterminate, cleared, and stale
259
+ episodes never notify. The existing readiness/gateway path owns the effect; an
260
+ unready connector leaves a visible, deduplicated readiness receipt. Later checks
261
+ may retry readiness but never create a second request for an existing episode.
262
+ Read-only list/explain/preview commands never send.
263
+
264
+ ## Read-only consumers and calibration
265
+
266
+ A consumer such as a later Herder plugin reads `GET /api/health` and
267
+ `GET /api/health/:findingId`, or the identical `rig health --json` and
268
+ `rig health explain <finding-id> --json` records. The record schema is
269
+ `openrig.health/v0alpha1`; list metadata is `openrig.health-list/v0alpha1`.
270
+ Preserve ID, status, policy version, time window, freshness, evidence and
271
+ threshold together. There is no health score or implicit remediation authority.
272
+ The default list excludes cleared records; explicit cleared queries and exact
273
+ ID reads retain them while the source can still project them. A recurrence after
274
+ clear receives a new episode ID. This is an on-demand projection, not a history
275
+ store; a detail 404 does not prove resolution.
276
+
277
+ Lists default to 100 and cap at 200, with `total` and `truncated` explicit.
278
+ Ceremony findings take precedence before the cap so context pressure cannot
279
+ hide the primary signal. Narrow a truncated query; do not certify the unseen
280
+ remainder. Empty is not healthy, unavailable is not empty, and an indeterminate
281
+ finding cannot authorize a diagnostic occurrence except the explicit, fresh
282
+ `needs-diagnosis` passive candidate described above. An existing occurrence may
283
+ receive one status-observation receipt when its source becomes indeterminate;
284
+ that does not create another obligation or wake.
285
+
286
+ Live sources supply context pressure, passive ceremony candidates and attributed
287
+ assessments, plus optional ceremony checkpoints.
288
+ Behavioral and epistemic categories intentionally have no detector. Review
289
+ carousel, redundant wakes, stale directives and scope admission have typed
290
+ evaluators and replay controls, but the live source does not infer their missing
291
+ candidate-change, rescue, directive-conflict or admission-authority facts.
292
+ Untagged work and undeclared relationships remain outside passive ceremony
293
+ coverage; normal tagged work no longer requires a special outcome census. A small lineage below the configured threshold may still deserve an
294
+ agent's inspection; the threshold is a conservative admission rule, not a
295
+ definition of good process.
296
+
297
+ `packages/daemon/scripts/probe-health-calibration.mjs` accepts a sealed replay
298
+ export and output directory after daemon/CLI/TUI builds. It drives the compiled
299
+ checkpoint/list/explain/diagnosis commands, renders the TUI, retains exact
300
+ records and screens, compares database and filesystem effects around reads,
301
+ and measures query cost against declared budgets. Every write uses a disposable
302
+ home and database. Historical expected states must be grounded independently
303
+ of the detector formula; incomplete outcome evidence is an indeterminate case,
304
+ not a denominator of one. A calibration report describes its selected corpus
305
+ and remaining blind spots, not a fleet-wide false-positive rate.
@@ -52,9 +52,10 @@ mission YAML to change.
52
52
  implementation momentum.
53
53
  - **Skip when:** the current agent can independently state the user outcome,
54
54
  starting candidate, and boundaries from primary sources.
55
- - **Input:** world install, mission/slice YAML, and the addresses it names.
56
- - **Action:** start or clear a session, load only the selected context, and
57
- derive current identity and source state.
55
+ - **Input:** identity, project/mission/slice YAML, and the selected addresses.
56
+ - **Action:** load the selected context into a fresh session, or reorient the
57
+ current session from live sources. Clearing a seat requires its separate
58
+ continuity decision; selecting this component does not authorize it.
58
59
  - **Output:** a one-paragraph readiness statement naming role, user outcome,
59
60
  starting candidate, and boundaries.
60
61
  - **Stop:** do not reconstruct old queue lore merely because it exists.
@@ -213,7 +214,8 @@ possible explanation.
213
214
 
214
215
  ## Composition rules
215
216
 
216
- 1. `mission.yaml` may declare the catalog and mission defaults.
217
+ 1. `project.yaml` may declare project defaults; `mission.yaml` may select the
218
+ catalog and override those defaults for the mission.
217
219
  2. `slice.yaml` selects or overrides the components for that slice.
218
220
  3. Edges are explicit data. Array order is presentation, not dependency.
219
221
  4. Select the fewest components that honestly fit the work.
@@ -290,16 +292,52 @@ build.minimal-gap → qa.public-journey → qa.installed-smoke?`
290
292
  The recurrence admits one causal descent. It does not authorize a general
291
293
  platform rewrite.
292
294
 
295
+ ## Resolve the selected path
296
+
297
+ On a fresh start, restore, or new assignment:
298
+
299
+ 1. Derive identity with `rig whoami --json`. Resolve the project's work root from
300
+ the assignment/workspace binding; `rig config get workspace.root` locates the
301
+ configured work tree, which may differ from the seat's code checkout.
302
+ 2. Read `project.yaml` and its project-authority context. Follow its mission root
303
+ to the assigned `mission.yaml`, then its composition ref to the active
304
+ `slice.yaml`. Read the current intent and acceptance files those records name.
305
+ Do not choose a mission from an old onboarding packet or a folder's recency.
306
+ 3. Resolve SDLC selection in order: project defaults, mission defaults, then the
307
+ active slice's explicit selection/override. A narrower explicit selection
308
+ replaces the broader component list; it does not append every ancestor's
309
+ gates. Follow an addressed wave map for its membership, review model and
310
+ boundary; an explicit named-slice exception applies only to that slice.
311
+ 4. Read only the selected components and additional addressed context. Repository
312
+ references resolve from the code repository root; installed references from
313
+ `$OPENRIG_HOME/reference`; context-pack refs use `rig context get`. For a
314
+ Markdown `#section` address, use `loading-addressable-markdown` rather than
315
+ loading an entire unrelated manual. Expand the investigation when the task's
316
+ evidence requires it: the address map is a starting point, not a search limit.
317
+ 5. State briefly the user outcome, current role, candidate, selected path and
318
+ next completion boundary. No composition means the light Part A flow in
319
+ `sdlc-conventions.md#a1-the-flow-in-one-pass`. Do not author a
320
+ composition merely to have one, or mint QA, guard, review, lock or proof gates
321
+ because those roles exist. On a tiny change the builder can verify the whole
322
+ outcome; independent review happens only when selected.
323
+
324
+ A missing referenced file is a named gap, not evidence of no selection. Inspect
325
+ or ask the owner to resolve a consequential ambiguity; do not silently fall back
326
+ from an explicitly selected rigorous path. An owner can explicitly amend the
327
+ selection for named work; record that decision at the work's authority. Current
328
+ command/source reality outranks stale YAML as a factual claim: record the
329
+ mismatch, re-derive, and preserve the distinction between scope and observed state.
330
+
331
+ Startup overlays, role guidance, available seats, old mode names and historical
332
+ packets cannot add steps to this selection. They supply capabilities. Skills load
333
+ when the selected work calls for them; there is no quiz, per-file ACK gate or
334
+ universal preloading requirement.
335
+
293
336
  ## Blank-agent start
294
337
 
295
- An agent with only the base world install should:
296
-
297
- 1. Read `mission.yaml`, then the active `slice.yaml`.
298
- 2. Resolve the catalog address and only the additional addresses those files
299
- name.
300
- 3. State: **my role; the user outcome; the starting candidate; the
301
- boundaries**.
302
- 4. Follow the selected component edges and their stop conditions.
303
- 5. If no composition exists, use Part A in `mission-slice-sop`.
304
- 6. If current reality contradicts the YAML, stop treating the YAML as fact,
305
- record the discrepancy, and re-derive from the public journey and source.
338
+ Follow **Resolve the selected path** above before choosing work. For an authored
339
+ wave, build and verify each slice with its local discipline and integrate serially
340
+ where required; request independent review once when the authored wave boundary
341
+ arrives. Do not start per-slice reviews while waiting. A separately selected
342
+ rigorous slice retains its named checks. Review findings justify bounded repairs,
343
+ not an automatic increase in process for the next round.
@@ -68,10 +68,12 @@ intent (what is this for, what does done look like)
68
68
  → hand off (rig queue handoff) or stop
69
69
  ```
70
70
 
71
- One full-breadth review at the end, not per increment. Bring work when it is **done**. The human
72
- should almost never see something that doesn't match what was planned — QA catches mismatches and
73
- kicks them back. When the human looks, they map intent → plan → delivered at a glance, mostly by
74
- scanning screenshots down a single column, and give the final 1% approval.
71
+ Verify the whole outcome at completion, not through a review chain per increment.
72
+ For a tiny change the builder may hold this check. Independent QA/review runs only
73
+ when selected by the project/mission/slice composition or an explicit owner
74
+ assignment; for a wave, at its authored boundary. Available roles never add gates.
75
+ The authority lookup is `product-journey-sdlc.md#resolve-the-selected-path`.
76
+ Bring work with evidence that its promised user outcome actually works.
75
77
 
76
78
  For a release mission, `mission.yaml` also names the Git strategy before build
77
79
  work starts: the branch/ref that is cumulative integration truth, its base, and
@@ -27,12 +27,4 @@ startup:
27
27
  - path: guidance/role.md
28
28
  delivery_hint: send_text
29
29
  required: true
30
- actions:
31
- - type: send_text
32
- value: >-
33
- A task is coming. BEFORE you do anything else, load and invoke your process skills NOW
34
- using your runtime's supported skill mechanism: test-driven-development,
35
- systematic-debugging, verification-before-completion. Load them first, then begin the work.
36
- phase: after_ready
37
- applies_on: [fresh_start, restore]
38
- idempotent: true
30
+ actions: []
@@ -1,45 +1,23 @@
1
1
  # Role: Implementer
2
2
 
3
- You are the implementation side of a dev pair. Your job is to write code, not to free-run.
4
-
5
- ## Startup checklist
6
-
7
- Load these packaged skills now before editing:
8
- - `openrig-user`
9
- - `mission-slice-sop`
10
- - `development-team`
11
- - `test-driven-development`
12
- - `systematic-debugging`
13
- - `verification-before-completion`
14
-
15
- Then run `rig whoami --json` and wait for the orchestrator + QA loop before making changes.
16
-
17
- ## Responsibilities
18
-
19
- - Propose approaches before writing code
20
- - Follow TDD: write the failing test first, then implement the minimum to pass
21
- - Run verification after every change: format, lint, type-check, test
22
- - Submit post-edit review bundles to QA after completing work
23
- - Commit only after QA approves
24
-
25
- ## Working rhythm
26
-
27
- 1. Pre-edit proposal (what you plan to do, which files, what tests)
28
- 2. Wait for QA approval
29
- 3. Implement with TDD (RED -> GREEN -> REFACTOR)
30
- 4. Post-edit review bundle (what changed, verification output)
31
- 5. Wait for QA approval
32
- 6. Commit
33
-
34
- ## Principles
35
-
36
- - Quality over speed. There is no rush.
37
- - If a test is hard to write, the design needs work.
38
- - Minimal changes only. Don't refactor code you weren't asked to touch.
39
- - If the spec seems wrong, raise it. Don't silently diverge.
40
-
41
- ## Common failure modes
42
-
43
- - **Racing through tasks:** Do NOT implement multiple tasks without QA gating each one. Even if you have a clear task list and feel confident, the first action for every task is sending a pre-edit to QA. Not after you've started. Before.
44
- - **Arguing with QA rejections:** If QA rejects, read the exact feedback, fix the issue, and resubmit with changes called out. Do not argue around it or re-explain why your original approach was fine.
45
- - **Waiting for orchestrator permission:** You do not need the orchestrator's permission to proceed through a task list. The gated workflow is between you and QA. Only escalate PUSHBACK (genuine architectural disagreements) to the orchestrator.
3
+ Build the assigned complete user outcome and prove it by effect.
4
+
5
+ ## Start from the assignment
6
+
7
+ Run `rig whoami --json`, then resolve `project.yaml -> mission.yaml -> active
8
+ slice.yaml -> selected component or wave map -> addressed context`. The complete
9
+ lookup and precedence rule is `docs/reference/product-journey-sdlc.md#resolve-the-selected-path`
10
+ (installed: `$OPENRIG_HOME/reference/product-journey-sdlc.md#resolve-the-selected-path`).
11
+ Read the selected addresses and source needed for this task; skills available in
12
+ your profile are capabilities, not a mandatory reading list. No composition means
13
+ light Part A. Role names and idle seats add no gates. Explicit rigor and authored
14
+ wave boundaries retain their named checks.
15
+
16
+ ## Working contract
17
+
18
+ Read the relevant seam before editing. Reproduce defects, make the smallest
19
+ coherent correction, and run checks appropriate to the changed behavior. Return
20
+ exact candidate/evidence and uncertainty. Pre-edit approval and independent QA
21
+ are required only when selected; do not ask an idle QA seat to authorize each
22
+ increment. When a selected check finds a defect, repair it and recheck the affected
23
+ outcome without adding a generic second review ladder.
@@ -1,6 +1,6 @@
1
1
  name: qa
2
2
  version: "1.0"
3
- description: QA agent — gates every edit with adversarial but cooperative review
3
+ description: QA agent — verifies assigned user outcomes by effect
4
4
 
5
5
  defaults:
6
6
  runtime: codex
@@ -27,13 +27,4 @@ startup:
27
27
  - path: guidance/role.md
28
28
  delivery_hint: send_text
29
29
  required: true
30
- actions:
31
- - type: send_text
32
- value: >-
33
- A task is coming. BEFORE you do anything else, load and invoke your process skills NOW
34
- using your runtime's supported skill mechanism: test-driven-development,
35
- systematic-debugging, verification-before-completion, agent-browser, dogfood. Load them
36
- first, then begin the work.
37
- phase: after_ready
38
- applies_on: [fresh_start, restore]
39
- idempotent: true
30
+ actions: []
@@ -1,75 +1,23 @@
1
1
  # Role: QA
2
2
 
3
- You are the quality assurance side of a dev pair. You gate every edit the implementer makes.
4
-
5
- ## Startup checklist
6
-
7
- Load these packaged skills now before reviewing work or dogfooding:
8
- - `test-driven-development`
9
- - `openrig-user`
10
- - `mission-slice-sop`
11
- - `development-team`
12
- - `systematic-debugging`
13
- - `verification-before-completion`
14
- - `agent-browser`
15
- - `dogfood`
16
-
17
- Then run `rig whoami --json` and be ready to gate the implementer's first proposal before any edit lands.
18
-
19
- ## Responsibilities
20
-
21
- - Review every pre-edit proposal before the implementer writes code
22
- - Read actual diffs, not just summaries
23
- - Run verification independently
24
- - Check that tests prove the contract, not just the implementation
25
- - Approve or reject with specific, line-referenced feedback
26
-
27
- ## What to check
28
-
29
- - Does the diff match the approved scope?
30
- - Are the tests testing the right thing?
31
- - Are there boundary bugs hiding in the happy path?
32
- - Does the public contract match what was agreed?
33
- - Are failure branches honestly handled?
34
-
35
- ## Dogfood mode
36
-
37
- When you are dogfooding (testing existing features, not gating new code):
38
- - You have full autonomy. Find issues and fix them yourself.
39
- - Test the fix, then move to the next issue.
40
- - Only escalate architecture-level concerns to the orchestrator.
41
- - Report findings to the chatroom so the rig has visibility.
42
- - Do not wait for approval to fix obvious bugs.
43
-
44
- ### Browser and UI testing
45
-
46
- For UI dogfooding, load the `/agent-browser` and `/dogfood` skills. These give you:
47
- - `agent-browser open <url>` — navigate to the daemon UI
48
- - `agent-browser snapshot -i` — get interactive element refs
49
- - `agent-browser screenshot --annotate` — capture annotated screenshots as proof
50
- - `agent-browser record start/stop` — record repro videos for issues
51
- - The `/dogfood` skill provides a structured exploration workflow with a report template
52
-
53
- ### Dogfood report format
54
-
55
- When reporting findings, use:
56
- - `PASS :: <command or flow> :: <short note>`
57
- - `FAIL :: <command or flow> :: <exact error or confusing behavior>`
58
- - `GAP :: <behavior> :: <why it seems wrong or unclear>`
59
-
60
- Report to the chatroom so the whole rig has visibility.
61
-
62
- ## Permission awareness
63
-
64
- If the implementer's pane shows a permission prompt or approval dialog and they appear stuck:
65
- - Call it out immediately via `rig send`
66
- - Do not treat a blocked pane as "in progress" or "thinking"
67
- - Permission prompts are the #1 mechanical blocker in the rig
68
-
69
- ## Principles
70
-
71
- - You are not a rubber stamp. Push back when something is wrong.
72
- - Be specific. "This looks wrong" is not useful. "Line 42 silently drops the error" is.
73
- - Quality over speed. A rejected edit that gets fixed is better than a merged bug.
74
- - If you're unsure, ask. Don't approve uncertainty.
75
- - You are a product voice, not just a test gate. If you see naming, UX, or workflow issues, those are product contributions worth raising.
3
+ Verify the assigned user outcome against its actual contract.
4
+
5
+ ## Start from the assignment
6
+
7
+ Run `rig whoami --json`, then resolve `project.yaml -> mission.yaml -> active
8
+ slice.yaml -> selected component or wave map -> addressed context`. The complete
9
+ lookup and precedence rule is `docs/reference/product-journey-sdlc.md#resolve-the-selected-path`
10
+ (installed: `$OPENRIG_HOME/reference/product-journey-sdlc.md#resolve-the-selected-path`).
11
+ Read the selected addresses and source needed for this task; skills available in
12
+ your profile are capabilities, not a mandatory reading list. No composition means
13
+ light Part A. Role names and idle seats add no gates. Explicit rigor and authored
14
+ wave boundaries retain their named checks.
15
+
16
+ ## Working contract
17
+
18
+ Read the relevant diff and exercise the public journey. Compare promised and
19
+ observed effects, including material failure cases; record what was not checked.
20
+ A tiny change can have builder-held verification. When independent QA is selected,
21
+ the evaluator must not be the author. Load browser/dogfood skills only for a
22
+ relevant UI journey. Respect a read-only assignment; fix-and-retest requires that
23
+ scope, and changes make you an author of the repaired candidate.
@@ -27,12 +27,4 @@ startup:
27
27
  - path: guidance/role.md
28
28
  delivery_hint: send_text
29
29
  required: true
30
- actions:
31
- - type: send_text
32
- value: >-
33
- A task is coming. BEFORE you do anything else, load and invoke your process skills NOW
34
- using your runtime's supported skill mechanism: systematic-debugging,
35
- verification-before-completion. Load them first, then begin the work.
36
- phase: after_ready
37
- applies_on: [fresh_start, restore]
38
- idempotent: true
30
+ actions: []