@openrig/cli 0.5.2 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (484) hide show
  1. package/daemon/assets/plugins/openrig-core/hooks/claude.json +36 -0
  2. package/daemon/assets/plugins/openrig-core/hooks/codex.json +27 -0
  3. package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +132 -0
  4. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +35 -3
  5. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/precompact-hook.mjs +8 -95
  6. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/restore-from-jsonl.mjs +63 -20
  7. package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +6 -2
  8. package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +28 -2
  9. package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +42 -52
  10. package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +23 -1
  11. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +7 -2
  12. package/daemon/assets/plugins/openrig-core/skills/orienting-to-an-inherited-seat/CHANGELOG.md +64 -0
  13. package/daemon/assets/plugins/openrig-core/skills/orienting-to-an-inherited-seat/SKILL.md +235 -0
  14. package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +31 -1
  15. package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/CHANGELOG.md +48 -0
  16. package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/SKILL.md +211 -0
  17. package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +8 -0
  18. package/daemon/assets/plugins/openrig-core/skills/software-for-agents/SKILL.md +28 -1
  19. package/daemon/context-packs/skills/core/agent-starters/SKILL.md +132 -0
  20. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +9 -0
  21. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/SKILL.md +112 -0
  22. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +9 -0
  23. package/daemon/context-packs/skills/core/attention-queue/SKILL.md +264 -0
  24. package/daemon/context-packs/skills/core/attention-queue/manifest.yaml +9 -0
  25. package/daemon/context-packs/skills/core/cross-host-rig-commands/SKILL.md +195 -0
  26. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +9 -0
  27. package/daemon/context-packs/skills/core/human-in-the-loop/SKILL.md +104 -0
  28. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +9 -0
  29. package/daemon/context-packs/skills/core/openrig-architect/SKILL.md +378 -0
  30. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +9 -0
  31. package/daemon/context-packs/skills/core/openrig-cmux/SKILL.md +81 -0
  32. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +9 -0
  33. package/daemon/context-packs/skills/core/openrig-herdr/SKILL.md +153 -0
  34. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +9 -0
  35. package/daemon/context-packs/skills/core/openrig-upgrade/SKILL.md +460 -0
  36. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +9 -0
  37. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/SKILL.md +101 -0
  38. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +9 -0
  39. package/daemon/context-packs/skills/core/rig-lifecycle/SKILL.md +127 -0
  40. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +9 -0
  41. package/daemon/context-packs/skills/core/session-source-fork/SKILL.md +160 -0
  42. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +9 -0
  43. package/daemon/context-packs/skills/core/specification-system/SKILL.md +103 -0
  44. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +9 -0
  45. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/SKILL.md +118 -0
  46. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +9 -0
  47. package/daemon/context-packs/skills/core/watchdog/SKILL.md +126 -0
  48. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +9 -0
  49. package/daemon/context-packs/skills/pm/backlog-capture/SKILL.md +43 -0
  50. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +9 -0
  51. package/daemon/context-packs/skills/pm/context-builder/SKILL.md +87 -0
  52. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +9 -0
  53. package/daemon/context-packs/skills/pm/exec-summary/SKILL.md +84 -0
  54. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +9 -0
  55. package/daemon/context-packs/skills/pm/office-hours/SKILL.md +129 -0
  56. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +9 -0
  57. package/daemon/context-packs/skills/pm/plan-review/SKILL.md +98 -0
  58. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +9 -0
  59. package/daemon/context-packs/skills/pm/requirements-writer/SKILL.md +113 -0
  60. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +9 -0
  61. package/daemon/context-packs/skills/pm/ui-mockup/SKILL.md +76 -0
  62. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +9 -0
  63. package/daemon/context-packs/skills/pods/development-team/SKILL.md +156 -0
  64. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +9 -0
  65. package/daemon/context-packs/skills/pods/orchestration-team/SKILL.md +307 -0
  66. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +9 -0
  67. package/daemon/context-packs/skills/pods/oversight-team/SKILL.md +106 -0
  68. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +9 -0
  69. package/daemon/context-packs/skills/pods/review-team/SKILL.md +213 -0
  70. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +9 -0
  71. package/daemon/context-packs/skills/process/agent-browser/LOCAL-INSIGHTS.md +189 -0
  72. package/daemon/context-packs/skills/process/agent-browser/OPENRIG.md +40 -0
  73. package/daemon/context-packs/skills/process/agent-browser/SKILL.md +427 -0
  74. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +13 -0
  75. package/daemon/context-packs/skills/process/brainstorming/OPENRIG.md +48 -0
  76. package/daemon/context-packs/skills/process/brainstorming/SKILL.md +107 -0
  77. package/daemon/context-packs/skills/process/brainstorming/manifest.yaml +11 -0
  78. package/daemon/context-packs/skills/process/context-engineering/SKILL.md +479 -0
  79. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +9 -0
  80. package/daemon/context-packs/skills/process/dogfood/SKILL.md +225 -0
  81. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +13 -0
  82. package/daemon/context-packs/skills/process/dogfood/references/issue-taxonomy.md +109 -0
  83. package/daemon/context-packs/skills/process/dogfood/templates/dogfood-report-template.md +53 -0
  84. package/daemon/context-packs/skills/process/executing-plans/OPENRIG.md +56 -0
  85. package/daemon/context-packs/skills/process/executing-plans/SKILL.md +94 -0
  86. package/daemon/context-packs/skills/process/executing-plans/manifest.yaml +11 -0
  87. package/daemon/context-packs/skills/process/frontend-design/LICENSE.txt +177 -0
  88. package/daemon/context-packs/skills/process/frontend-design/SKILL.md +50 -0
  89. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +11 -0
  90. package/daemon/context-packs/skills/process/systematic-debugging/SKILL.md +301 -0
  91. package/daemon/context-packs/skills/process/systematic-debugging/condition-based-waiting-example.ts +158 -0
  92. package/daemon/context-packs/skills/process/systematic-debugging/condition-based-waiting.md +115 -0
  93. package/daemon/context-packs/skills/process/systematic-debugging/defense-in-depth.md +122 -0
  94. package/daemon/context-packs/skills/process/systematic-debugging/find-polluter.sh +63 -0
  95. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +19 -0
  96. package/daemon/context-packs/skills/process/systematic-debugging/root-cause-tracing.md +169 -0
  97. package/daemon/context-packs/skills/process/test-driven-development/SKILL.md +385 -0
  98. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +11 -0
  99. package/daemon/context-packs/skills/process/test-driven-development/testing-anti-patterns.md +299 -0
  100. package/daemon/context-packs/skills/process/using-superpowers/OPENRIG.md +48 -0
  101. package/daemon/context-packs/skills/process/using-superpowers/SKILL.md +106 -0
  102. package/daemon/context-packs/skills/process/using-superpowers/manifest.yaml +11 -0
  103. package/daemon/context-packs/skills/process/verification-before-completion/SKILL.md +155 -0
  104. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +9 -0
  105. package/daemon/context-packs/skills/process/writing-plans/OPENRIG.md +52 -0
  106. package/daemon/context-packs/skills/process/writing-plans/SKILL.md +126 -0
  107. package/daemon/context-packs/skills/process/writing-plans/manifest.yaml +11 -0
  108. package/daemon/context-packs/world/install/01-world-from-primitives.md +97 -0
  109. package/daemon/context-packs/world/install/02-permission-self-sleep.md +141 -0
  110. package/daemon/context-packs/world/install/03-what-this-is-for.md +86 -0
  111. package/daemon/context-packs/world/install/04-ontology.md +790 -0
  112. package/daemon/context-packs/world/install/05-harness-power-use.md +355 -0
  113. package/daemon/context-packs/world/install/06-a-competent-turn.md +225 -0
  114. package/daemon/context-packs/world/install/manifest.yaml +125 -0
  115. package/daemon/context-packs/world/install/reference-material.md +125 -0
  116. package/daemon/context-packs/world/install/what-you-can-do.md +416 -0
  117. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  118. package/daemon/dist/adapters/claude-code-adapter.js +7 -4
  119. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  120. package/daemon/dist/adapters/claude-resume.js +2 -2
  121. package/daemon/dist/adapters/claude-resume.js.map +1 -1
  122. package/daemon/dist/adapters/tmux.d.ts +10 -2
  123. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  124. package/daemon/dist/adapters/tmux.js +27 -7
  125. package/daemon/dist/adapters/tmux.js.map +1 -1
  126. package/daemon/dist/adapters/yolo-mode.d.ts +18 -0
  127. package/daemon/dist/adapters/yolo-mode.d.ts.map +1 -1
  128. package/daemon/dist/adapters/yolo-mode.js +21 -0
  129. package/daemon/dist/adapters/yolo-mode.js.map +1 -1
  130. package/daemon/dist/build-info.js +3 -3
  131. package/daemon/dist/domain/codex-thread-id.d.ts +95 -0
  132. package/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
  133. package/daemon/dist/domain/codex-thread-id.js +171 -2
  134. package/daemon/dist/domain/codex-thread-id.js.map +1 -1
  135. package/daemon/dist/domain/context-packs/context-pack-types.d.ts +48 -0
  136. package/daemon/dist/domain/context-packs/context-pack-types.d.ts.map +1 -1
  137. package/daemon/dist/domain/context-packs/context-pack-types.js +8 -0
  138. package/daemon/dist/domain/context-packs/context-pack-types.js.map +1 -1
  139. package/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -1
  140. package/daemon/dist/domain/context-packs/manifest-parser.js +234 -2
  141. package/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -1
  142. package/daemon/dist/domain/context-packs/probe-eval-bridge.d.ts +34 -0
  143. package/daemon/dist/domain/context-packs/probe-eval-bridge.d.ts.map +1 -0
  144. package/daemon/dist/domain/context-packs/probe-eval-bridge.js +38 -0
  145. package/daemon/dist/domain/context-packs/probe-eval-bridge.js.map +1 -0
  146. package/daemon/dist/domain/context-packs/profile-composer.d.ts +49 -0
  147. package/daemon/dist/domain/context-packs/profile-composer.d.ts.map +1 -0
  148. package/daemon/dist/domain/context-packs/profile-composer.js +125 -0
  149. package/daemon/dist/domain/context-packs/profile-composer.js.map +1 -0
  150. package/daemon/dist/domain/context-packs/profile-source-resolver.d.ts +53 -0
  151. package/daemon/dist/domain/context-packs/profile-source-resolver.d.ts.map +1 -0
  152. package/daemon/dist/domain/context-packs/profile-source-resolver.js +129 -0
  153. package/daemon/dist/domain/context-packs/profile-source-resolver.js.map +1 -0
  154. package/daemon/dist/domain/context-packs/seat-recap-store.d.ts +48 -0
  155. package/daemon/dist/domain/context-packs/seat-recap-store.d.ts.map +1 -0
  156. package/daemon/dist/domain/context-packs/seat-recap-store.js +123 -0
  157. package/daemon/dist/domain/context-packs/seat-recap-store.js.map +1 -0
  158. package/daemon/dist/domain/markdown-address.d.ts +56 -0
  159. package/daemon/dist/domain/markdown-address.d.ts.map +1 -0
  160. package/daemon/dist/domain/markdown-address.js +188 -0
  161. package/daemon/dist/domain/markdown-address.js.map +1 -0
  162. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts +8 -2
  163. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
  164. package/daemon/dist/domain/model-divergence/current-generation-record.js +1 -1
  165. package/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
  166. package/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts +33 -21
  167. package/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts.map +1 -1
  168. package/daemon/dist/domain/model-divergence/model-divergence-monitor.js +64 -55
  169. package/daemon/dist/domain/model-divergence/model-divergence-monitor.js.map +1 -1
  170. package/daemon/dist/domain/periodic-snapshot-scheduler.d.ts +4 -0
  171. package/daemon/dist/domain/periodic-snapshot-scheduler.d.ts.map +1 -1
  172. package/daemon/dist/domain/periodic-snapshot-scheduler.js +5 -1
  173. package/daemon/dist/domain/periodic-snapshot-scheduler.js.map +1 -1
  174. package/daemon/dist/domain/permission-drift-observer.d.ts.map +1 -1
  175. package/daemon/dist/domain/permission-drift-observer.js +6 -1
  176. package/daemon/dist/domain/permission-drift-observer.js.map +1 -1
  177. package/daemon/dist/domain/process-census.d.ts +25 -0
  178. package/daemon/dist/domain/process-census.d.ts.map +1 -0
  179. package/daemon/dist/domain/process-census.js +47 -0
  180. package/daemon/dist/domain/process-census.js.map +1 -0
  181. package/daemon/dist/domain/resume-metadata-refresher.d.ts +31 -2
  182. package/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
  183. package/daemon/dist/domain/resume-metadata-refresher.js +64 -29
  184. package/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
  185. package/daemon/dist/domain/review/compose.d.ts +5 -26
  186. package/daemon/dist/domain/review/compose.d.ts.map +1 -1
  187. package/daemon/dist/domain/review/compose.js +31 -57
  188. package/daemon/dist/domain/review/compose.js.map +1 -1
  189. package/daemon/dist/domain/rigspec-instantiator.d.ts +4 -0
  190. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  191. package/daemon/dist/domain/rigspec-instantiator.js +39 -0
  192. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  193. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  194. package/daemon/dist/domain/rigspec-schema.js +19 -3
  195. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  196. package/daemon/dist/domain/scope/logical-checkbox.d.ts +26 -0
  197. package/daemon/dist/domain/scope/logical-checkbox.d.ts.map +1 -0
  198. package/daemon/dist/domain/scope/logical-checkbox.js +65 -0
  199. package/daemon/dist/domain/scope/logical-checkbox.js.map +1 -0
  200. package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +1 -1
  201. package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -1
  202. package/daemon/dist/domain/scope/plan-lock-artifacts.js +2 -2
  203. package/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -1
  204. package/daemon/dist/domain/scope/scaffold-placeholder.d.ts +22 -0
  205. package/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -1
  206. package/daemon/dist/domain/scope/scaffold-placeholder.js +24 -0
  207. package/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -1
  208. package/daemon/dist/domain/seat-activity-service.d.ts +1 -0
  209. package/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
  210. package/daemon/dist/domain/seat-activity-service.js +39 -23
  211. package/daemon/dist/domain/seat-activity-service.js.map +1 -1
  212. package/daemon/dist/domain/seat-handover-service.d.ts +22 -0
  213. package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  214. package/daemon/dist/domain/seat-handover-service.js +32 -2
  215. package/daemon/dist/domain/seat-handover-service.js.map +1 -1
  216. package/daemon/dist/domain/session-transport.d.ts +8 -0
  217. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  218. package/daemon/dist/domain/session-transport.js +116 -0
  219. package/daemon/dist/domain/session-transport.js.map +1 -1
  220. package/daemon/dist/domain/shell-classifier.d.ts +23 -0
  221. package/daemon/dist/domain/shell-classifier.d.ts.map +1 -0
  222. package/daemon/dist/domain/shell-classifier.js +36 -0
  223. package/daemon/dist/domain/shell-classifier.js.map +1 -0
  224. package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
  225. package/daemon/dist/domain/slices/slice-detail-projector.js +10 -1
  226. package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
  227. package/daemon/dist/domain/spec-validation-advisory.d.ts +17 -0
  228. package/daemon/dist/domain/spec-validation-advisory.d.ts.map +1 -0
  229. package/daemon/dist/domain/spec-validation-advisory.js +38 -0
  230. package/daemon/dist/domain/spec-validation-advisory.js.map +1 -0
  231. package/daemon/dist/domain/successor-session-launcher.d.ts +7 -0
  232. package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  233. package/daemon/dist/domain/successor-session-launcher.js +38 -1
  234. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  235. package/daemon/dist/domain/topology-defaults-installer.d.ts +47 -0
  236. package/daemon/dist/domain/topology-defaults-installer.d.ts.map +1 -0
  237. package/daemon/dist/domain/topology-defaults-installer.js +92 -0
  238. package/daemon/dist/domain/topology-defaults-installer.js.map +1 -0
  239. package/daemon/dist/domain/transcript-rotation.d.ts +4 -0
  240. package/daemon/dist/domain/transcript-rotation.d.ts.map +1 -1
  241. package/daemon/dist/domain/transcript-rotation.js +61 -3
  242. package/daemon/dist/domain/transcript-rotation.js.map +1 -1
  243. package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
  244. package/daemon/dist/domain/transcript-store.js +9 -2
  245. package/daemon/dist/domain/transcript-store.js.map +1 -1
  246. package/daemon/dist/domain/types.d.ts +3 -0
  247. package/daemon/dist/domain/types.d.ts.map +1 -1
  248. package/daemon/dist/domain/user-settings/settings-store.d.ts +10 -1
  249. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  250. package/daemon/dist/domain/user-settings/settings-store.js +39 -0
  251. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  252. package/daemon/dist/routes/context-packs.d.ts.map +1 -1
  253. package/daemon/dist/routes/context-packs.js +205 -0
  254. package/daemon/dist/routes/context-packs.js.map +1 -1
  255. package/daemon/dist/routes/seat.d.ts.map +1 -1
  256. package/daemon/dist/routes/seat.js +11 -0
  257. package/daemon/dist/routes/seat.js.map +1 -1
  258. package/daemon/dist/routes/sessions.js +55 -0
  259. package/daemon/dist/routes/sessions.js.map +1 -1
  260. package/daemon/dist/routes/transport.d.ts.map +1 -1
  261. package/daemon/dist/routes/transport.js +12 -3
  262. package/daemon/dist/routes/transport.js.map +1 -1
  263. package/daemon/dist/seat-recap-store-surface.d.ts +2 -0
  264. package/daemon/dist/seat-recap-store-surface.d.ts.map +1 -0
  265. package/daemon/dist/seat-recap-store-surface.js +6 -0
  266. package/daemon/dist/seat-recap-store-surface.js.map +1 -0
  267. package/daemon/dist/startup.d.ts.map +1 -1
  268. package/daemon/dist/startup.js +37 -6
  269. package/daemon/dist/startup.js.map +1 -1
  270. package/daemon/docs/reference/chain-file-convention.md +115 -0
  271. package/daemon/docs/reference/legacy-topology-migration.md +53 -0
  272. package/daemon/docs/reference/refocus-channel.md +80 -0
  273. package/daemon/docs/reference/sdlc-conventions.md +24 -0
  274. package/daemon/specs/agents/shared/skills/core/attention-queue/SKILL.md +1 -1
  275. package/daemon/specs/agents/shared/skills/core/human-in-the-loop/SKILL.md +1 -1
  276. package/daemon/specs/agents/shared/skills/core/session-source-fork/SKILL.md +1 -1
  277. package/daemon/specs/agents/shared/skills/core/watchdog/SKILL.md +4 -4
  278. package/daemon/specs/agents/shared/skills/pods/development-team/SKILL.md +8 -0
  279. package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +72 -31
  280. package/daemon/specs/agents/shared/skills/pods/oversight-team/SKILL.md +106 -0
  281. package/daemon/specs/agents/shared/skills/process/context-engineering/SKILL.md +479 -0
  282. package/daemon/specs/agents/shared/skills/process/test-driven-development/SKILL.md +9 -0
  283. package/daemon/specs/rigs/launch/demo/project-example/README.md +25 -0
  284. package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/SPEC.md +19 -0
  285. package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/PROGRESS.md +6 -0
  286. package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/PROOF.md +7 -0
  287. package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/SPEC.md +31 -0
  288. package/daemon/specs/rigs/preview/product-team/topology/instance/CRAFT.md +24 -0
  289. package/daemon/specs/rigs/preview/product-team/topology/rig/CRAFT.md +21 -0
  290. package/daemon/specs/rigs/preview/product-team/topology/rig/ORCHESTRATION-CRAFT.md +50 -0
  291. package/daemon/specs/rigs/preview/product-team/topology/seats/dev1-qa/CRAFT.md +13 -0
  292. package/daemon/specs/rigs/preview/product-team/topology/seats/orch1-lead/CRAFT.md +17 -0
  293. package/daemon/specs/rigs/preview/product-team/topology/seats/rev1-r1/CRAFT.md +17 -0
  294. package/daemon/specs/rigs/preview/product-team/topology/seats/rev1-r2/CRAFT.md +15 -0
  295. package/dist/build-info.js +3 -3
  296. package/dist/commands/config.d.ts.map +1 -1
  297. package/dist/commands/config.js +8 -0
  298. package/dist/commands/config.js.map +1 -1
  299. package/dist/commands/context.d.ts.map +1 -1
  300. package/dist/commands/context.js +353 -48
  301. package/dist/commands/context.js.map +1 -1
  302. package/dist/commands/proof.d.ts.map +1 -1
  303. package/dist/commands/proof.js +70 -12
  304. package/dist/commands/proof.js.map +1 -1
  305. package/dist/commands/rig.d.ts.map +1 -1
  306. package/dist/commands/rig.js +5 -0
  307. package/dist/commands/rig.js.map +1 -1
  308. package/dist/commands/transcript.d.ts.map +1 -1
  309. package/dist/commands/transcript.js +25 -1
  310. package/dist/commands/transcript.js.map +1 -1
  311. package/dist/commands/walk.d.ts.map +1 -1
  312. package/dist/commands/walk.js +279 -26
  313. package/dist/commands/walk.js.map +1 -1
  314. package/dist/config-store.d.ts +15 -1
  315. package/dist/config-store.d.ts.map +1 -1
  316. package/dist/config-store.js +35 -1
  317. package/dist/config-store.js.map +1 -1
  318. package/dist/lib/scope/logical-checkbox.d.ts +26 -0
  319. package/dist/lib/scope/logical-checkbox.d.ts.map +1 -0
  320. package/dist/lib/scope/logical-checkbox.js +65 -0
  321. package/dist/lib/scope/logical-checkbox.js.map +1 -0
  322. package/dist/lib/scope/scaffold-placeholder.d.ts +22 -0
  323. package/dist/lib/scope/scaffold-placeholder.d.ts.map +1 -1
  324. package/dist/lib/scope/scaffold-placeholder.js +24 -0
  325. package/dist/lib/scope/scaffold-placeholder.js.map +1 -1
  326. package/dist/lib/topology-trace.d.ts +36 -0
  327. package/dist/lib/topology-trace.d.ts.map +1 -0
  328. package/dist/lib/topology-trace.js +91 -0
  329. package/dist/lib/topology-trace.js.map +1 -0
  330. package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  331. package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.js +7 -4
  332. package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  333. package/node_modules/@openrig/daemon/dist/adapters/claude-resume.js +2 -2
  334. package/node_modules/@openrig/daemon/dist/adapters/claude-resume.js.map +1 -1
  335. package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts +10 -2
  336. package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts.map +1 -1
  337. package/node_modules/@openrig/daemon/dist/adapters/tmux.js +27 -7
  338. package/node_modules/@openrig/daemon/dist/adapters/tmux.js.map +1 -1
  339. package/node_modules/@openrig/daemon/dist/adapters/yolo-mode.d.ts +18 -0
  340. package/node_modules/@openrig/daemon/dist/adapters/yolo-mode.d.ts.map +1 -1
  341. package/node_modules/@openrig/daemon/dist/adapters/yolo-mode.js +21 -0
  342. package/node_modules/@openrig/daemon/dist/adapters/yolo-mode.js.map +1 -1
  343. package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
  344. package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.d.ts +95 -0
  345. package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
  346. package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.js +171 -2
  347. package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.js.map +1 -1
  348. package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.d.ts +48 -0
  349. package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.d.ts.map +1 -1
  350. package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.js +8 -0
  351. package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.js.map +1 -1
  352. package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -1
  353. package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.js +234 -2
  354. package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -1
  355. package/node_modules/@openrig/daemon/dist/domain/context-packs/probe-eval-bridge.d.ts +34 -0
  356. package/node_modules/@openrig/daemon/dist/domain/context-packs/probe-eval-bridge.d.ts.map +1 -0
  357. package/node_modules/@openrig/daemon/dist/domain/context-packs/probe-eval-bridge.js +38 -0
  358. package/node_modules/@openrig/daemon/dist/domain/context-packs/probe-eval-bridge.js.map +1 -0
  359. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.d.ts +49 -0
  360. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.d.ts.map +1 -0
  361. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.js +125 -0
  362. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.js.map +1 -0
  363. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.d.ts +53 -0
  364. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.d.ts.map +1 -0
  365. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.js +129 -0
  366. package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.js.map +1 -0
  367. package/node_modules/@openrig/daemon/dist/domain/context-packs/seat-recap-store.d.ts +48 -0
  368. package/node_modules/@openrig/daemon/dist/domain/context-packs/seat-recap-store.d.ts.map +1 -0
  369. package/node_modules/@openrig/daemon/dist/domain/context-packs/seat-recap-store.js +123 -0
  370. package/node_modules/@openrig/daemon/dist/domain/context-packs/seat-recap-store.js.map +1 -0
  371. package/node_modules/@openrig/daemon/dist/domain/markdown-address.d.ts +56 -0
  372. package/node_modules/@openrig/daemon/dist/domain/markdown-address.d.ts.map +1 -0
  373. package/node_modules/@openrig/daemon/dist/domain/markdown-address.js +188 -0
  374. package/node_modules/@openrig/daemon/dist/domain/markdown-address.js.map +1 -0
  375. package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.d.ts +8 -2
  376. package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
  377. package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.js +1 -1
  378. package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
  379. package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts +33 -21
  380. package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts.map +1 -1
  381. package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.js +64 -55
  382. package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.js.map +1 -1
  383. package/node_modules/@openrig/daemon/dist/domain/periodic-snapshot-scheduler.d.ts +4 -0
  384. package/node_modules/@openrig/daemon/dist/domain/periodic-snapshot-scheduler.d.ts.map +1 -1
  385. package/node_modules/@openrig/daemon/dist/domain/periodic-snapshot-scheduler.js +5 -1
  386. package/node_modules/@openrig/daemon/dist/domain/periodic-snapshot-scheduler.js.map +1 -1
  387. package/node_modules/@openrig/daemon/dist/domain/permission-drift-observer.d.ts.map +1 -1
  388. package/node_modules/@openrig/daemon/dist/domain/permission-drift-observer.js +6 -1
  389. package/node_modules/@openrig/daemon/dist/domain/permission-drift-observer.js.map +1 -1
  390. package/node_modules/@openrig/daemon/dist/domain/process-census.d.ts +25 -0
  391. package/node_modules/@openrig/daemon/dist/domain/process-census.d.ts.map +1 -0
  392. package/node_modules/@openrig/daemon/dist/domain/process-census.js +47 -0
  393. package/node_modules/@openrig/daemon/dist/domain/process-census.js.map +1 -0
  394. package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.d.ts +31 -2
  395. package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
  396. package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.js +64 -29
  397. package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
  398. package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts +5 -26
  399. package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts.map +1 -1
  400. package/node_modules/@openrig/daemon/dist/domain/review/compose.js +31 -57
  401. package/node_modules/@openrig/daemon/dist/domain/review/compose.js.map +1 -1
  402. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts +4 -0
  403. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  404. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js +39 -0
  405. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  406. package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  407. package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.js +19 -3
  408. package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.js.map +1 -1
  409. package/node_modules/@openrig/daemon/dist/domain/scope/logical-checkbox.d.ts +26 -0
  410. package/node_modules/@openrig/daemon/dist/domain/scope/logical-checkbox.d.ts.map +1 -0
  411. package/node_modules/@openrig/daemon/dist/domain/scope/logical-checkbox.js +65 -0
  412. package/node_modules/@openrig/daemon/dist/domain/scope/logical-checkbox.js.map +1 -0
  413. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +1 -1
  414. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -1
  415. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.js +2 -2
  416. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -1
  417. package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.d.ts +22 -0
  418. package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -1
  419. package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.js +24 -0
  420. package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -1
  421. package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.d.ts +1 -0
  422. package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
  423. package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.js +39 -23
  424. package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.js.map +1 -1
  425. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.d.ts +22 -0
  426. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  427. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.js +32 -2
  428. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.js.map +1 -1
  429. package/node_modules/@openrig/daemon/dist/domain/session-transport.d.ts +8 -0
  430. package/node_modules/@openrig/daemon/dist/domain/session-transport.d.ts.map +1 -1
  431. package/node_modules/@openrig/daemon/dist/domain/session-transport.js +116 -0
  432. package/node_modules/@openrig/daemon/dist/domain/session-transport.js.map +1 -1
  433. package/node_modules/@openrig/daemon/dist/domain/shell-classifier.d.ts +23 -0
  434. package/node_modules/@openrig/daemon/dist/domain/shell-classifier.d.ts.map +1 -0
  435. package/node_modules/@openrig/daemon/dist/domain/shell-classifier.js +36 -0
  436. package/node_modules/@openrig/daemon/dist/domain/shell-classifier.js.map +1 -0
  437. package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
  438. package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.js +10 -1
  439. package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
  440. package/node_modules/@openrig/daemon/dist/domain/spec-validation-advisory.d.ts +17 -0
  441. package/node_modules/@openrig/daemon/dist/domain/spec-validation-advisory.d.ts.map +1 -0
  442. package/node_modules/@openrig/daemon/dist/domain/spec-validation-advisory.js +38 -0
  443. package/node_modules/@openrig/daemon/dist/domain/spec-validation-advisory.js.map +1 -0
  444. package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.d.ts +7 -0
  445. package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  446. package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.js +38 -1
  447. package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  448. package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.d.ts +47 -0
  449. package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.d.ts.map +1 -0
  450. package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.js +92 -0
  451. package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.js.map +1 -0
  452. package/node_modules/@openrig/daemon/dist/domain/transcript-rotation.d.ts +4 -0
  453. package/node_modules/@openrig/daemon/dist/domain/transcript-rotation.d.ts.map +1 -1
  454. package/node_modules/@openrig/daemon/dist/domain/transcript-rotation.js +61 -3
  455. package/node_modules/@openrig/daemon/dist/domain/transcript-rotation.js.map +1 -1
  456. package/node_modules/@openrig/daemon/dist/domain/transcript-store.d.ts.map +1 -1
  457. package/node_modules/@openrig/daemon/dist/domain/transcript-store.js +9 -2
  458. package/node_modules/@openrig/daemon/dist/domain/transcript-store.js.map +1 -1
  459. package/node_modules/@openrig/daemon/dist/domain/types.d.ts +3 -0
  460. package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
  461. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts +10 -1
  462. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  463. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js +39 -0
  464. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  465. package/node_modules/@openrig/daemon/dist/routes/context-packs.d.ts.map +1 -1
  466. package/node_modules/@openrig/daemon/dist/routes/context-packs.js +205 -0
  467. package/node_modules/@openrig/daemon/dist/routes/context-packs.js.map +1 -1
  468. package/node_modules/@openrig/daemon/dist/routes/seat.d.ts.map +1 -1
  469. package/node_modules/@openrig/daemon/dist/routes/seat.js +11 -0
  470. package/node_modules/@openrig/daemon/dist/routes/seat.js.map +1 -1
  471. package/node_modules/@openrig/daemon/dist/routes/sessions.js +55 -0
  472. package/node_modules/@openrig/daemon/dist/routes/sessions.js.map +1 -1
  473. package/node_modules/@openrig/daemon/dist/routes/transport.d.ts.map +1 -1
  474. package/node_modules/@openrig/daemon/dist/routes/transport.js +12 -3
  475. package/node_modules/@openrig/daemon/dist/routes/transport.js.map +1 -1
  476. package/node_modules/@openrig/daemon/dist/seat-recap-store-surface.d.ts +2 -0
  477. package/node_modules/@openrig/daemon/dist/seat-recap-store-surface.d.ts.map +1 -0
  478. package/node_modules/@openrig/daemon/dist/seat-recap-store-surface.js +6 -0
  479. package/node_modules/@openrig/daemon/dist/seat-recap-store-surface.js.map +1 -0
  480. package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
  481. package/node_modules/@openrig/daemon/dist/startup.js +37 -6
  482. package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
  483. package/node_modules/@openrig/daemon/package.json +6 -1
  484. package/package.json +1 -1
@@ -31,6 +31,150 @@ export function readCodexThreadIdFromCandidateHomes(pid, candidateHomes, exists)
31
31
  }
32
32
  return undefined;
33
33
  }
34
+ /**
35
+ * OPR.0.5.3.10 (addendum) — thread-id resolution WITHOUT the per-call PID-home
36
+ * subprocess. The measured amplifier: 298 `codex_thread_id.resolve_home` spans
37
+ * in the last 500 slow spans (mean 8.24s, max 36.72s) — a `ps eww` per pid,
38
+ * per attempt, per tick, when nearly every codex seat's logs live under the
39
+ * DEFAULT home.
40
+ *
41
+ * Order of costs:
42
+ * 1. DEFAULT home first — a pure file/sqlite read, ZERO subprocess. Hit = done.
43
+ * 2. Bounded PID-keyed cache of previously RESOLVED non-default homes — a
44
+ * pid's HOME does not change for the life of the process. Hit = file read.
45
+ * 3. Only then the subprocess resolver — and its SUCCESS is cached (bounded,
46
+ * FIFO eviction). A FAILED resolution is never cached: the next call may
47
+ * retry (a dying `ps` under load must not poison the pid).
48
+ */
49
+ export class CodexThreadIdResolver {
50
+ opts;
51
+ /** Bounded (pid,identity)→home cache of SUCCESSFUL resolutions — INCLUDING
52
+ * the default home (a stable default-home pid with no thread log must not
53
+ * re-run `ps eww` every poll). KEYED BY IDENTITY (r2 round-3): a reused
54
+ * pid carries a different startedAt, so it structurally MISSES the retired
55
+ * occupant's entry — no read-time mismatch check to get wrong, and a late
56
+ * stale-probe completion writes only its own key, never clobbering the
57
+ * newer occupant's.
58
+ *
59
+ * SETTLED entries never time-expire (e91d7a94 — the expiry-herd fix): a
60
+ * probe that STARTED strictly after the identity's lstart second closed
61
+ * observed the FINAL occupant of this (pid, lstart) key — same-pid
62
+ * same-second reuse is impossible once the second passes, and a live
63
+ * process's HOME cannot change — so the answer is valid for the key's
64
+ * lifetime and is removed only by identity mismatch (a new key) or FIFO
65
+ * size eviction. Probe START time is the predicate, NOT completion time
66
+ * (orch-lead 22:39Z): a probe started inside the second can observe the
67
+ * retired occupant and complete after it. UNSETTLED entries — probe
68
+ * started inside the ambiguous second, unparseable identity, or
69
+ * identity-less callers — expire after homeTtlMs (r2-B1/W-5.3-1): the
70
+ * TTL is their staleness bound and the finite recovery path for the
71
+ * same-second collision. */
72
+ homeByKey = new Map();
73
+ /** In-flight home resolution, keyed by pid+IDENTITY (r2 round-3): a known
74
+ * identity must never join a probe belonging to a different or
75
+ * identity-less occupant — under the measured 8-36s probes a pid can be
76
+ * reused MID-PROBE, and pid-only coalescing handed the new occupant the
77
+ * retired occupant's answer before the completed-cache check could run.
78
+ * Same (pid, identity) still coalesces onto ONE subprocess; a failure
79
+ * rejects all waiters of that key and caches nothing. */
80
+ inFlightByKey = new Map();
81
+ constructor(opts = {}) {
82
+ this.opts = opts;
83
+ }
84
+ /**
85
+ * Resolve a codex thread id for `pid`. IDENTITY IS REQUIRED (S10 follow-on, r1 owed item 3): the
86
+ * identity's start time gates every log read, so a retired occupant's rows never resolve for a
87
+ * reused pid. The ungated read — the pre-round-4 class S10 eliminated, safe today only by
88
+ * call-graph discipline — is reachable ONLY via resolveUngatedLegacy, so a NEW identity-less
89
+ * call site is a COMPILE error (the review-visible pin; see the codex-thread-id test).
90
+ */
91
+ async resolve(pid, identity) {
92
+ return this.resolveInternal(pid, identity);
93
+ }
94
+ /**
95
+ * EXPLICIT ungated escape hatch — reads WITHOUT the identity start-time gate (a reused pid can
96
+ * match a retired occupant's rows). Use ONLY for genuinely identity-less callers (tests, adoption
97
+ * paths that carry no census identity). Every new identity-less read must NAME this method; do
98
+ * not re-open resolve() to an optional identity. By construction its cache entries can never be
99
+ * SETTLED: it delegates with identity=undefined, so minTs is undefined, the settled predicate is
100
+ * false, and every entry it writes stays bounded by homeTtlMs (60s) — see the settled-permanence
101
+ * rule (e91d7a94) on the cache above.
102
+ */
103
+ async resolveUngatedLegacy(pid) {
104
+ return this.resolveInternal(pid, undefined);
105
+ }
106
+ async resolveInternal(pid, identity) {
107
+ // r2 round-4: the identity's start time gates EVERY log read — a retired
108
+ // occupant's rows predate the current occupant's start and never match.
109
+ const minTs = lstartToMinTs(identity);
110
+ const readFromLogs = this.opts.readFromLogs
111
+ ?? ((p, home) => readCodexThreadIdFromLogs(p, home, undefined, minTs));
112
+ const defaultHome = this.opts.defaultHome ?? safeUserHomeDir() ?? os.homedir();
113
+ const now = this.opts.now ?? Date.now;
114
+ const ttl = this.opts.homeTtlMs ?? 60_000;
115
+ // 1. Default home: no subprocess.
116
+ const fromDefault = readFromLogs(pid, defaultHome);
117
+ if (fromDefault)
118
+ return fromDefault;
119
+ // 2. FRESH cached home for this (pid, identity): no subprocess. A reused
120
+ // pid carries a new identity and structurally MISSES here (r1's
121
+ // remedy); identity-less callers get their own TTL-bounded slot. A
122
+ // cached DEFAULT means the subprocess already answered "default" once
123
+ // — step 1 covered it.
124
+ const key = `${pid}|${identity ?? ""}`;
125
+ const cached = this.homeByKey.get(key);
126
+ if (cached) {
127
+ if (cached.settled || now() - cached.at <= ttl) {
128
+ return cached.home === defaultHome ? undefined : readFromLogs(pid, cached.home);
129
+ }
130
+ this.homeByKey.delete(key);
131
+ }
132
+ // 3. Subprocess resolution, coalesced by the SAME (pid, identity) key:
133
+ // only callers holding the same identity share a probe (r2 round-3 —
134
+ // under the measured 8-36s probes a pid can be reused MID-PROBE, and
135
+ // pid-only coalescing handed the new occupant the retired occupant's
136
+ // answer). A completion writes only its own key, so a late stale
137
+ // probe never clobbers the newer occupant's entry.
138
+ const inFlight = this.inFlightByKey.get(key);
139
+ const homePromise = inFlight ?? (() => {
140
+ const resolver = this.opts.resolveHomeDirByPid ?? defaultResolveHomeDirByPid;
141
+ // Settledness is decided by the probe's START time (orch-lead 22:39Z):
142
+ // only a probe started strictly AFTER the identity's lstart second
143
+ // closed is guaranteed to observe the final occupant of this key. A
144
+ // deferred probe that started inside the second may describe the
145
+ // retired occupant even if it completes later, so its entry keeps the
146
+ // short TTL. Coalesced waiters inherit the ORIGINAL probe's verdict.
147
+ const settled = minTs !== undefined && now() >= (minTs + 1) * 1000;
148
+ const p = Promise.resolve(resolver(pid)).then((home) => {
149
+ this.inFlightByKey.delete(key);
150
+ if (home)
151
+ this.cacheHome(key, home, settled);
152
+ return home;
153
+ }, (err) => {
154
+ // Honest failure: nothing cached, next call retries.
155
+ this.inFlightByKey.delete(key);
156
+ throw err;
157
+ });
158
+ this.inFlightByKey.set(key, p);
159
+ return p;
160
+ })();
161
+ const home = await homePromise;
162
+ if (!home || home === defaultHome)
163
+ return undefined;
164
+ return readFromLogs(pid, home);
165
+ }
166
+ cacheHome(key, home, settled) {
167
+ const max = this.opts.maxCachedPids ?? 256;
168
+ if (!this.homeByKey.has(key) && this.homeByKey.size >= max) {
169
+ const oldest = this.homeByKey.keys().next().value;
170
+ if (oldest !== undefined)
171
+ this.homeByKey.delete(oldest);
172
+ }
173
+ this.homeByKey.set(key, { home, at: (this.opts.now ?? Date.now)(), settled });
174
+ }
175
+ }
176
+ const _resolveRequiresIdentityPin = true;
177
+ void _resolveRequiresIdentityPin;
34
178
  function uniqueHomes(candidateHomes) {
35
179
  const homes = candidateHomes.filter((home) => Boolean(home));
36
180
  const userHome = safeUserHomeDir();
@@ -46,7 +190,12 @@ function safeUserHomeDir() {
46
190
  return undefined;
47
191
  }
48
192
  }
49
- function readCodexThreadIdFromLogs(pid, homeDir, exists) {
193
+ function readCodexThreadIdFromLogs(pid, homeDir, exists, minTs) {
194
+ // OPR.0.5.3.10 r2 round-4 — the logs key is pid:<pid>:<opaque-uuid>, so a
195
+ // pid-only read can return a RETIRED occupant's row to a reused pid. When
196
+ // the caller knows the current occupant's start time (minTs, epoch
197
+ // seconds), only rows written strictly AFTER its start second are provably that occupant's. Identity-less
198
+ // callers keep the legacy unbounded read.
50
199
  for (const dbPath of resolveCodexLogDbPaths(homeDir, exists)) {
51
200
  try {
52
201
  const db = new Database(dbPath, { readonly: true });
@@ -55,8 +204,9 @@ function readCodexThreadIdFromLogs(pid, homeDir, exists) {
55
204
  FROM logs
56
205
  WHERE process_uuid LIKE ?
57
206
  AND thread_id IS NOT NULL
207
+ AND ts > ?
58
208
  ORDER BY ts DESC, ts_nanos DESC, id DESC
59
- LIMIT 1`).get(`pid:${pid}:%`);
209
+ LIMIT 1`).get(`pid:${pid}:%`, minTs ?? 0);
60
210
  if (row?.thread_id) {
61
211
  return row.thread_id;
62
212
  }
@@ -71,6 +221,25 @@ function readCodexThreadIdFromLogs(pid, homeDir, exists) {
71
221
  }
72
222
  return undefined;
73
223
  }
224
+ /** Parse `ps lstart` ("Sun Aug 23 19:30:00 2026", local time) to epoch
225
+ * SECONDS. The reader gates STRICTLY (`ts > startTs`, r2 round-6): lstart
226
+ * carries no subsecond component, so ownership of a row INSIDE the start
227
+ * second is undecidable — retired A can log at ts == B.startTs in the same
228
+ * second B reuses the pid. The ambiguous second fails CLOSED (honest
229
+ * INDETERMINATE; a genuinely-current same-second row resolves one poll
230
+ * later), rows after it resolve. Unparseable → undefined (the caller falls
231
+ * back to the ungated read rather than inventing a gate). */
232
+ export function lstartToMinTs(identity) {
233
+ if (!identity)
234
+ return undefined;
235
+ const m = identity.match(/^\w{3}\s+(\w{3})\s+(\d+)\s+(\d{2}:\d{2}:\d{2})\s+(\d{4})$/);
236
+ if (!m)
237
+ return undefined;
238
+ const parsed = Date.parse(`${m[1]} ${m[2]}, ${m[4]} ${m[3]}`);
239
+ if (Number.isNaN(parsed))
240
+ return undefined;
241
+ return Math.floor(parsed / 1000);
242
+ }
74
243
  function resolveCodexLogDbPaths(homeDir, exists) {
75
244
  const codexDir = nodePath.join(homeDir, ".codex");
76
245
  const discovered = [];
@@ -1 +1 @@
1
- {"version":3,"file":"codex-thread-id.js","sourceRoot":"","sources":["../../src/domain/codex-thread-id.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-thread-id.js","sourceRoot":"","sources":["../../src/domain/codex-thread-id.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,52 @@ export interface ContextPackManifestFile {
7
7
  /** One-line description rendered in the review pane and bundle frame. */
8
8
  summary?: string;
9
9
  }
10
+ export declare const ATOM_TAXONOMIES: readonly ["world", "lore", "skills", "mission"];
11
+ export declare const ATOM_REGIONS: readonly ["identity", "ontology", "terrain", "actors", "laws", "history", "state", "affordances"];
12
+ export declare const ATOM_SITUATIONS: readonly ["fresh", "handover", "post-compaction"];
13
+ export declare const ATOM_PURPOSES: readonly ["depth", "width"];
14
+ export declare const ATOM_RUNTIMES: readonly ["claude", "codex", "any"];
15
+ export declare const ATOM_PRIORITIES: readonly ["core", "recommended", "optional"];
16
+ /** An install ATOM (OPR.0.5.3.5 mini-req 1): an ADDRESS plus composition
17
+ * metadata, never a new file — fresh/handover/post-compaction all compose
18
+ * addresses into the same bytes, so there is no second copy to drift
19
+ * (mini-req 5 by construction). Token counts are DERIVED at compose time,
20
+ * never stored here (volatility x consequence rule). */
21
+ export interface ContextPackAtom {
22
+ /** Stable slug — the join key for order/requires/probes. */
23
+ id: string;
24
+ /** `file` or `file#H2-slug/H3-slug` (the Atom-1 grammar); the file must be
25
+ * one of the manifest's declared files, and a header path requires a
26
+ * markdown file. */
27
+ address: string;
28
+ taxonomy: (typeof ATOM_TAXONOMIES)[number];
29
+ /** World-anatomy tags — enables compose-by-region (the measured
30
+ * post-compaction need was width: affordances + terrain). */
31
+ regions?: Array<(typeof ATOM_REGIONS)[number]>;
32
+ /** The composition algebra's selector; never empty. */
33
+ situations: Array<(typeof ATOM_SITUATIONS)[number]>;
34
+ purpose: (typeof ATOM_PURPOSES)[number];
35
+ /** Mini-req 3: never assume identical compaction loss. Default "any". */
36
+ runtime: (typeof ATOM_RUNTIMES)[number];
37
+ /** Position within the base walk — absorption depends on sequence. */
38
+ order: number;
39
+ /** Dependency edges; a subset profile must close over them. Declared ids
40
+ * only, no self-reference, no cycles. */
41
+ requires?: string[];
42
+ /** What drops FIRST when a token budget binds (mini-req 9). */
43
+ priority: (typeof ATOM_PRIORITIES)[number];
44
+ /** Mini-req 2: acceptance is CHANGED BEHAVIOR — a natural prompt plus the
45
+ * expected observable behavior. Q3 bridge: the shape reconciles with the
46
+ * harness's EvalCase — optional compilable expectedPatterns (the
47
+ * deterministic door leg) and a 1-5 rubric (the judged leg); `expect`
48
+ * stays the required prose contract. Closed key set at ingest. */
49
+ probe?: {
50
+ prompt: string;
51
+ expect: string;
52
+ expectedPatterns?: string[];
53
+ rubric?: string;
54
+ };
55
+ }
10
56
  export interface ContextPackManifest {
11
57
  name: string;
12
58
  version: string;
@@ -16,6 +62,8 @@ export interface ContextPackManifest {
16
62
  * estimate is available); the library service computes a derived
17
63
  * `derivedEstimatedTokens` from actual file sizes for display. */
18
64
  estimatedTokens?: number;
65
+ /** OPR.0.5.3.5 mini-req 1 — install atoms with composition metadata. */
66
+ atoms?: ContextPackAtom[];
19
67
  }
20
68
  export type ContextPackSourceType = "builtin" | "user_file" | "workspace";
21
69
  /** Library-shaped record emitted by ContextPackLibraryService. */
@@ -1 +1 @@
1
- {"version":3,"file":"context-pack-types.d.ts","sourceRoot":"","sources":["../../../src/domain/context-packs/context-pack-types.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,uBAAuB;IACtC,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb;wEACoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,uBAAuB,EAAE,CAAC;IACjC;;uEAEmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;AAE1E,kEAAkE;AAClE,MAAM,WAAW,gBAAgB;IAC/B;2CACuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,qBAAqB,CAAC;IAClC,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;IACrB;qEACiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC;oEACgE;IAChE,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qEAAqE;IACrE,KAAK,EAAE,oBAAoB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;oDAEgD;IAChD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,2DAA2D;IAC3D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,kEAAkE;IAClE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,qBAAa,gBAAiB,SAAQ,KAAK;aAEvB,IAAI,EAChB,kBAAkB,GAClB,sBAAsB,GACtB,kBAAkB,GAClB,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,GAGlB,YAAY,GAEZ,eAAe,GACf,aAAa,GACb,qBAAqB,GACrB,sBAAsB,GACtB,mBAAmB,GACnB,mBAAmB,GAInB,oBAAoB;aAER,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAtBjC,IAAI,EAChB,kBAAkB,GAClB,sBAAsB,GACtB,kBAAkB,GAClB,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,GAGlB,YAAY,GAEZ,eAAe,GACf,aAAa,GACb,qBAAqB,GACrB,sBAAsB,GACtB,mBAAmB,GACnB,mBAAmB,GAInB,oBAAoB,EACxB,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAKpD"}
1
+ {"version":3,"file":"context-pack-types.d.ts","sourceRoot":"","sources":["../../../src/domain/context-packs/context-pack-types.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,14 @@
9
9
  // ~/.openrig/context-packs/<name>/ (host) + workspace-local
10
10
  // .openrig/context-packs/<name>/. NO new SQLite tables; library cache
11
11
  // is in-memory at the daemon scope.
12
+ // OPR.0.5.3.5 mini-req 1 — the founder taxonomy and world anatomy the atom
13
+ // schema speaks (SPEC.md design context; intake DESIGN-INTAKE-ATOM-SCHEMA).
14
+ export const ATOM_TAXONOMIES = ["world", "lore", "skills", "mission"];
15
+ export const ATOM_REGIONS = ["identity", "ontology", "terrain", "actors", "laws", "history", "state", "affordances"];
16
+ export const ATOM_SITUATIONS = ["fresh", "handover", "post-compaction"];
17
+ export const ATOM_PURPOSES = ["depth", "width"];
18
+ export const ATOM_RUNTIMES = ["claude", "codex", "any"];
19
+ export const ATOM_PRIORITIES = ["core", "recommended", "optional"];
12
20
  export class ContextPackError extends Error {
13
21
  code;
14
22
  details;
@@ -1 +1 @@
1
- {"version":3,"file":"context-pack-types.js","sourceRoot":"","sources":["../../../src/domain/context-packs/context-pack-types.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,gBAAgB;AAChB,EAAE;AACF,sEAAsE;AACtE,wEAAwE;AACxE,sEAAsE;AACtE,EAAE;AACF,2DAA2D;AAC3D,4DAA4D;AAC5D,sEAAsE;AACtE,oCAAoC;AAiEpC,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAEvB;IAsBA;IAvBlB,YACkB,IAoBQ,EACxB,OAAe,EACC,OAAiC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QAxBC,SAAI,GAAJ,IAAI,CAoBI;QAER,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF"}
1
+ {"version":3,"file":"context-pack-types.js","sourceRoot":"","sources":["../../../src/domain/context-packs/context-pack-types.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,gBAAgB;AAChB,EAAE;AACF,sEAAsE;AACtE,wEAAwE;AACxE,sEAAsE;AACtE,EAAE;AACF,2DAA2D;AAC3D,4DAA4D;AAC5D,sEAAsE;AACtE,oCAAoC;AAYpC,2EAA2E;AAC3E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC;AAC/E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,CAAU,CAAC;AAC9H,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,iBAAiB,CAAU,CAAC;AACjF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,OAAO,CAAU,CAAC;AACzD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAU,CAAC;AACjE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,CAAU,CAAC;AA6F5E,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAEvB;IAsBA;IAvBlB,YACkB,IAoBQ,EACxB,OAAe,EACC,OAAiC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QAxBC,SAAI,GAAJ,IAAI,CAoBI;QAER,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"manifest-parser.d.ts","sourceRoot":"","sources":["../../../src/domain/context-packs/manifest-parser.ts"],"names":[],"mappings":"AAQA,OAAO,EAAoB,KAAK,mBAAmB,EAAgC,MAAM,yBAAyB,CAAC;AAKnH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,mBAAmB,CA0HtF"}
1
+ {"version":3,"file":"manifest-parser.d.ts","sourceRoot":"","sources":["../../../src/domain/context-packs/manifest-parser.ts"],"names":[],"mappings":"AAQA,OAAO,EASL,KAAK,mBAAmB,EAEzB,MAAM,yBAAyB,CAAC;AAYjC,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,mBAAmB,CA6HtF"}
@@ -5,9 +5,16 @@
5
5
  // shape with structured-error rejects on malformed input. Pure
6
6
  // (no fs touches in the parser itself; caller hands in raw YAML).
7
7
  import { parse as parseYaml } from "yaml";
8
- import { ContextPackError } from "./context-pack-types.js";
8
+ import { ATOM_PRIORITIES, ATOM_PURPOSES, ATOM_REGIONS, ATOM_RUNTIMES, ATOM_SITUATIONS, ATOM_TAXONOMIES, ContextPackError, } from "./context-pack-types.js";
9
9
  import { isSafePackVersion } from "./ref-safety.js";
10
- const ALLOWED_FILE_SUFFIXES = [".md", ".markdown", ".yaml", ".yml", ".txt"];
10
+ import { AddressResolutionError, parseAddress } from "../markdown-address.js";
11
+ import { parseSourceRef, SourceResolutionError } from "./profile-source-resolver.js";
12
+ // Served as UTF-8 bundle text. `.sh`/`.ts` (OPR.0.5.3.7 R2) carry canonical skill
13
+ // helper assets the served prose references (e.g. find-polluter.sh,
14
+ // condition-based-waiting-example.ts) — text content, never executed. An unlisted
15
+ // suffix still rejects loud, so a genuinely new pack file type fails at ingest
16
+ // rather than serving a silently-incomplete bundle.
17
+ const ALLOWED_FILE_SUFFIXES = [".md", ".markdown", ".yaml", ".yml", ".txt", ".sh", ".ts"];
11
18
  export function parseManifest(rawYaml, sourcePath) {
12
19
  let parsed;
13
20
  try {
@@ -74,12 +81,237 @@ export function parseManifest(rawYaml, sourcePath) {
74
81
  const estimatedTokens = typeof estimatedTokensRaw === "number" && Number.isFinite(estimatedTokensRaw)
75
82
  ? Math.max(0, Math.floor(estimatedTokensRaw))
76
83
  : undefined;
84
+ const atoms = obj["atoms"] !== undefined ? parseAtoms(obj["atoms"], files, sourcePath) : undefined;
77
85
  return {
78
86
  name,
79
87
  version,
80
88
  ...(purpose !== undefined ? { purpose } : {}),
81
89
  files,
82
90
  ...(estimatedTokens !== undefined ? { estimatedTokens } : {}),
91
+ ...(atoms !== undefined ? { atoms } : {}),
83
92
  };
84
93
  }
94
+ // ---------------------------------------------------------------------------
95
+ // OPR.0.5.3.5 mini-req 1 — install atoms. An atom is an ADDRESS plus
96
+ // composition metadata, never a new file: fresh/handover/post-compaction all
97
+ // compose addresses into the same bytes (mini-req 5 by construction). Every
98
+ // rule here fails LOUD with the atom's index and id — a malformed atom must
99
+ // stop ingest, never thin a later compose.
100
+ const MARKDOWN_SUFFIXES = [".md", ".markdown"];
101
+ const ATOM_ID = /^[a-z0-9][a-z0-9-]{0,63}$/;
102
+ const ALLOWED_ATOM_KEYS = new Set([
103
+ "id", "address", "taxonomy", "regions", "situations", "purpose", "runtime", "order", "requires", "priority", "probe",
104
+ ]);
105
+ // The typos worth a kindness (r1 F2): singular/plural slips on the fields whose
106
+ // silent loss is sharpest.
107
+ const ALLOWED_PROBE_KEYS = new Set(["prompt", "expect", "expectedPatterns", "rubric"]);
108
+ const NEAR_MISS_ATOM_KEYS = {
109
+ require: "requires", region: "regions", situation: "situations", probes: "probe",
110
+ };
111
+ function atomError(sourcePath, index, detail) {
112
+ return new ContextPackError("manifest_invalid", `manifest at ${sourcePath} atoms[${index}]: ${detail}`, { sourcePath, index });
113
+ }
114
+ function enumField(value, allowed, field, sourcePath, index) {
115
+ if (typeof value !== "string" || !allowed.includes(value)) {
116
+ throw atomError(sourcePath, index, `'${field}' must be one of ${allowed.join(" | ")} (got: ${JSON.stringify(value)})`);
117
+ }
118
+ return value;
119
+ }
120
+ function parseAtoms(raw, files, sourcePath) {
121
+ if (!Array.isArray(raw)) {
122
+ throw new ContextPackError("manifest_invalid", `manifest at ${sourcePath} 'atoms' must be an array`, { sourcePath });
123
+ }
124
+ const declaredFiles = new Set(files.map((f) => f.path));
125
+ const atoms = [];
126
+ const seenIds = new Set();
127
+ for (let i = 0; i < raw.length; i++) {
128
+ const entry = raw[i];
129
+ if (!entry || typeof entry !== "object" || Array.isArray(entry)) {
130
+ throw atomError(sourcePath, i, "must be an object");
131
+ }
132
+ const a = entry;
133
+ // r1 F2: ingest knows the complete legal key set — an unknown key rejects
134
+ // LOUD. A `require:` typo silently dropping a dependency edge is the exact
135
+ // failure the field exists to prevent; every REQUIRED field failing loud
136
+ // while a typo'd OPTIONAL one fails silent would break the module contract.
137
+ for (const key of Object.keys(a)) {
138
+ if (!ALLOWED_ATOM_KEYS.has(key)) {
139
+ const hint = NEAR_MISS_ATOM_KEYS[key];
140
+ throw atomError(sourcePath, i, `unknown field '${key}'${hint ? ` — did you mean '${hint}'?` : ""} (allowed: ${[...ALLOWED_ATOM_KEYS].join(", ")})`);
141
+ }
142
+ }
143
+ const id = a["id"];
144
+ if (typeof id !== "string" || !ATOM_ID.test(id)) {
145
+ throw atomError(sourcePath, i, `'id' must be a stable slug matching [a-z0-9][a-z0-9-]{0,63} (got: ${JSON.stringify(id)})`);
146
+ }
147
+ if (seenIds.has(id))
148
+ throw atomError(sourcePath, i, `duplicate atom id '${id}' — ids are the join key for order/requires/probes`);
149
+ seenIds.add(id);
150
+ const addressRaw = a["address"];
151
+ if (typeof addressRaw !== "string" || addressRaw.length === 0) {
152
+ throw atomError(sourcePath, i, "'address' is required: file or file#H2-slug/H3-slug");
153
+ }
154
+ let parsedAddr;
155
+ try {
156
+ parsedAddr = parseAddress(addressRaw);
157
+ }
158
+ catch (err) {
159
+ if (err instanceof AddressResolutionError)
160
+ throw atomError(sourcePath, i, `'address' is malformed — ${err.message}`);
161
+ throw err;
162
+ }
163
+ // Atom 4a — the pre-'#' ref carries its resolver kind (Q2-Amendment 1's
164
+ // one-grammar-two-resolvers ruling): a bare LIBRARY ref must be a declared
165
+ // pack file; a seat:/mission: TREE ref lives outside the pack by design
166
+ // (nothing must be library-homed to be composable), so it validates
167
+ // structurally here (unknown prefix / traversal reject loud) and resolves
168
+ // from configured roots at compose.
169
+ let sourceRef;
170
+ try {
171
+ sourceRef = parseSourceRef(parsedAddr.ref);
172
+ }
173
+ catch (err) {
174
+ if (err instanceof SourceResolutionError)
175
+ throw atomError(sourcePath, i, `'address' — ${err.message}`);
176
+ throw err;
177
+ }
178
+ if (sourceRef.kind === "library" && !declaredFiles.has(parsedAddr.ref)) {
179
+ throw atomError(sourcePath, i, `'address' references '${parsedAddr.ref}', which is not a declared pack file — a library atom addresses INTO the pack's own files (tree sources use the seat:/mission: prefix)`);
180
+ }
181
+ if (parsedAddr.headerPath.length > 0 && !MARKDOWN_SUFFIXES.some((s) => sourceRef.rel.endsWith(s))) {
182
+ throw atomError(sourcePath, i, `'address' uses a header path on '${parsedAddr.ref}' — header addressing only applies to markdown files (${MARKDOWN_SUFFIXES.join(", ")})`);
183
+ }
184
+ const taxonomy = enumField(a["taxonomy"], ATOM_TAXONOMIES, "taxonomy", sourcePath, i);
185
+ const purpose = enumField(a["purpose"], ATOM_PURPOSES, "purpose", sourcePath, i);
186
+ const priority = enumField(a["priority"], ATOM_PRIORITIES, "priority", sourcePath, i);
187
+ const runtime = a["runtime"] === undefined ? "any" : enumField(a["runtime"], ATOM_RUNTIMES, "runtime", sourcePath, i);
188
+ const situationsRaw = a["situations"];
189
+ if (!Array.isArray(situationsRaw) || situationsRaw.length === 0) {
190
+ throw atomError(sourcePath, i, `'situations' must be a non-empty array of ${ATOM_SITUATIONS.join(" | ")} — it is the composition algebra's selector`);
191
+ }
192
+ const situations = situationsRaw.map((s) => enumField(s, ATOM_SITUATIONS, "situations", sourcePath, i));
193
+ let regions;
194
+ if (a["regions"] !== undefined) {
195
+ const regionsRaw = a["regions"];
196
+ if (!Array.isArray(regionsRaw))
197
+ throw atomError(sourcePath, i, "'regions' must be an array when present");
198
+ regions = regionsRaw.map((r) => enumField(r, ATOM_REGIONS, "regions", sourcePath, i));
199
+ }
200
+ const order = a["order"];
201
+ if (typeof order !== "number" || !Number.isInteger(order)) {
202
+ throw atomError(sourcePath, i, `'order' must be an integer — walks are ordered and absorption depends on sequence (got: ${JSON.stringify(order)})`);
203
+ }
204
+ let requires;
205
+ if (a["requires"] !== undefined) {
206
+ const requiresRaw = a["requires"];
207
+ if (!Array.isArray(requiresRaw) || requiresRaw.some((r) => typeof r !== "string")) {
208
+ throw atomError(sourcePath, i, "'requires' must be an array of atom ids when present");
209
+ }
210
+ requires = requiresRaw;
211
+ if (requires.includes(id))
212
+ throw atomError(sourcePath, i, `atom '${id}' requires itself`);
213
+ }
214
+ let probe;
215
+ if (a["probe"] !== undefined) {
216
+ const p = a["probe"];
217
+ if (!p || typeof p !== "object" || Array.isArray(p))
218
+ throw atomError(sourcePath, i, "'probe' must be an object { prompt, expect, expectedPatterns?, rubric? }");
219
+ const pr = p;
220
+ // Q3 bridge: the key gate extends INSIDE probe (the dispositioned Atom-2
221
+ // note landing at its recorded spot), and the shape reconciles with the
222
+ // harness's EvalCase — expectedPatterns/rubric are LEGAL here, so the
223
+ // natural mistake r1 predicted becomes the schema instead of silent loss.
224
+ for (const key of Object.keys(pr)) {
225
+ if (!ALLOWED_PROBE_KEYS.has(key)) {
226
+ throw atomError(sourcePath, i, `'probe' has unknown field '${key}'${key === "rubrics" ? " — did you mean 'rubric'?" : ""} (allowed: ${[...ALLOWED_PROBE_KEYS].join(", ")})`);
227
+ }
228
+ }
229
+ if (typeof pr["prompt"] !== "string" || pr["prompt"].length === 0 || typeof pr["expect"] !== "string" || pr["expect"].length === 0) {
230
+ throw atomError(sourcePath, i, "'probe' needs BOTH a natural 'prompt' and the 'expect'ed observable behavior — acceptance is changed behavior, never files delivered");
231
+ }
232
+ let expectedPatterns;
233
+ if (pr["expectedPatterns"] !== undefined) {
234
+ const eps = pr["expectedPatterns"];
235
+ if (!Array.isArray(eps) || eps.some((e) => typeof e !== "string")) {
236
+ throw atomError(sourcePath, i, "'probe.expectedPatterns' must be an array of regex source strings when present");
237
+ }
238
+ for (const src of eps) {
239
+ try {
240
+ new RegExp(src);
241
+ }
242
+ catch {
243
+ throw atomError(sourcePath, i, `'probe.expectedPatterns' entry '${src}' is not a compilable regex source`);
244
+ }
245
+ }
246
+ expectedPatterns = eps;
247
+ }
248
+ if (pr["rubric"] !== undefined && typeof pr["rubric"] !== "string") {
249
+ throw atomError(sourcePath, i, "'probe.rubric' must be a string when present");
250
+ }
251
+ probe = {
252
+ prompt: pr["prompt"],
253
+ expect: pr["expect"],
254
+ ...(expectedPatterns !== undefined ? { expectedPatterns } : {}),
255
+ ...(pr["rubric"] !== undefined ? { rubric: pr["rubric"] } : {}),
256
+ };
257
+ }
258
+ atoms.push({
259
+ id,
260
+ address: addressRaw,
261
+ taxonomy,
262
+ ...(regions !== undefined ? { regions } : {}),
263
+ situations,
264
+ purpose,
265
+ runtime,
266
+ order,
267
+ ...(requires !== undefined ? { requires } : {}),
268
+ priority,
269
+ ...(probe !== undefined ? { probe } : {}),
270
+ });
271
+ }
272
+ // Cross-atom edges, after all ids are known.
273
+ for (let i = 0; i < atoms.length; i++) {
274
+ for (const req of atoms[i].requires ?? []) {
275
+ if (!seenIds.has(req)) {
276
+ throw atomError(sourcePath, i, `atom '${atoms[i].id}' requires '${req}', which no atom declares`);
277
+ }
278
+ }
279
+ }
280
+ // A requires CYCLE can never be closed over by any subset profile — reject at
281
+ // ingest with the cycle spelled out. The walk is ITERATIVE with an explicit
282
+ // stack (r1 F1): the recursive form threw a bare RangeError past ~5000 atoms —
283
+ // outside the ContextPackError channel this module promises — and depth is
284
+ // attacker-choosable (packs install from URLs, slice-07 R4); no recursion
285
+ // threshold is safe across Node versions/platforms, so there isn't one.
286
+ const state = new Map();
287
+ const byId = new Map(atoms.map((atom) => [atom.id, atom]));
288
+ for (const root of atoms) {
289
+ if (state.get(root.id) === "done")
290
+ continue;
291
+ // Each frame tracks how far through its requires list it has walked.
292
+ const stack = [{ id: root.id, next: 0 }];
293
+ state.set(root.id, "visiting");
294
+ while (stack.length > 0) {
295
+ const frame = stack[stack.length - 1];
296
+ const reqs = byId.get(frame.id).requires ?? [];
297
+ if (frame.next >= reqs.length) {
298
+ state.set(frame.id, "done");
299
+ stack.pop();
300
+ continue;
301
+ }
302
+ const req = reqs[frame.next++];
303
+ const s = state.get(req);
304
+ if (s === "done")
305
+ continue;
306
+ if (s === "visiting") {
307
+ const trail = stack.map((f) => f.id);
308
+ const cycle = [...trail.slice(trail.indexOf(req)), req].join(" -> ");
309
+ throw new ContextPackError("manifest_invalid", `manifest at ${sourcePath} atoms: requires cycle ${cycle} — no subset profile could ever close over it`, { sourcePath });
310
+ }
311
+ state.set(req, "visiting");
312
+ stack.push({ id: req, next: 0 });
313
+ }
314
+ }
315
+ return atoms;
316
+ }
85
317
  //# sourceMappingURL=manifest-parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifest-parser.js","sourceRoot":"","sources":["../../../src/domain/context-packs/manifest-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest-parser.js","sourceRoot":"","sources":["../../../src/domain/context-packs/manifest-parser.ts"],"names":[],"mappings":"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"}