oh-my-codex 0.16.0 → 0.16.1

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 (263) hide show
  1. package/Cargo.lock +5 -5
  2. package/Cargo.toml +1 -1
  3. package/crates/omx-explore/src/main.rs +434 -28
  4. package/dist/agents/__tests__/native-config.test.js +50 -0
  5. package/dist/agents/__tests__/native-config.test.js.map +1 -1
  6. package/dist/agents/native-config.d.ts.map +1 -1
  7. package/dist/agents/native-config.js +3 -2
  8. package/dist/agents/native-config.js.map +1 -1
  9. package/dist/cli/__tests__/codex-plugin-layout.test.js +1 -0
  10. package/dist/cli/__tests__/codex-plugin-layout.test.js.map +1 -1
  11. package/dist/cli/__tests__/explore.test.js +118 -1
  12. package/dist/cli/__tests__/explore.test.js.map +1 -1
  13. package/dist/cli/__tests__/imagegen-continuation.test.d.ts +2 -0
  14. package/dist/cli/__tests__/imagegen-continuation.test.d.ts.map +1 -0
  15. package/dist/cli/__tests__/imagegen-continuation.test.js +135 -0
  16. package/dist/cli/__tests__/imagegen-continuation.test.js.map +1 -0
  17. package/dist/cli/__tests__/index.test.js +182 -18
  18. package/dist/cli/__tests__/index.test.js.map +1 -1
  19. package/dist/cli/__tests__/launch-fallback.test.js +88 -2
  20. package/dist/cli/__tests__/launch-fallback.test.js.map +1 -1
  21. package/dist/cli/__tests__/ralph.test.js +62 -0
  22. package/dist/cli/__tests__/ralph.test.js.map +1 -1
  23. package/dist/cli/__tests__/setup-install-mode.test.js +45 -0
  24. package/dist/cli/__tests__/setup-install-mode.test.js.map +1 -1
  25. package/dist/cli/__tests__/team.test.js +465 -12
  26. package/dist/cli/__tests__/team.test.js.map +1 -1
  27. package/dist/cli/__tests__/ultragoal.test.js +40 -0
  28. package/dist/cli/__tests__/ultragoal.test.js.map +1 -1
  29. package/dist/cli/explore.d.ts.map +1 -1
  30. package/dist/cli/explore.js +208 -8
  31. package/dist/cli/explore.js.map +1 -1
  32. package/dist/cli/index.d.ts +11 -3
  33. package/dist/cli/index.d.ts.map +1 -1
  34. package/dist/cli/index.js +124 -18
  35. package/dist/cli/index.js.map +1 -1
  36. package/dist/cli/ralph.d.ts.map +1 -1
  37. package/dist/cli/ralph.js +37 -3
  38. package/dist/cli/ralph.js.map +1 -1
  39. package/dist/cli/setup.d.ts.map +1 -1
  40. package/dist/cli/setup.js +93 -4
  41. package/dist/cli/setup.js.map +1 -1
  42. package/dist/cli/team.d.ts +1 -0
  43. package/dist/cli/team.d.ts.map +1 -1
  44. package/dist/cli/team.js +42 -7
  45. package/dist/cli/team.js.map +1 -1
  46. package/dist/cli/ultragoal.d.ts +1 -1
  47. package/dist/cli/ultragoal.d.ts.map +1 -1
  48. package/dist/cli/ultragoal.js +6 -3
  49. package/dist/cli/ultragoal.js.map +1 -1
  50. package/dist/config/__tests__/codex-hooks.test.js +5 -0
  51. package/dist/config/__tests__/codex-hooks.test.js.map +1 -1
  52. package/dist/config/__tests__/models.test.js +18 -1
  53. package/dist/config/__tests__/models.test.js.map +1 -1
  54. package/dist/config/codex-hooks.d.ts.map +1 -1
  55. package/dist/config/codex-hooks.js +4 -1
  56. package/dist/config/codex-hooks.js.map +1 -1
  57. package/dist/config/models.d.ts +6 -0
  58. package/dist/config/models.d.ts.map +1 -1
  59. package/dist/config/models.js +37 -0
  60. package/dist/config/models.js.map +1 -1
  61. package/dist/exec/followup.d.ts +1 -0
  62. package/dist/exec/followup.d.ts.map +1 -1
  63. package/dist/exec/followup.js +9 -3
  64. package/dist/exec/followup.js.map +1 -1
  65. package/dist/hooks/__tests__/anti-slop-workflow.test.js +19 -0
  66. package/dist/hooks/__tests__/anti-slop-workflow.test.js.map +1 -1
  67. package/dist/hooks/__tests__/consensus-execution-handoff.test.js +19 -2
  68. package/dist/hooks/__tests__/consensus-execution-handoff.test.js.map +1 -1
  69. package/dist/hooks/__tests__/deep-interview-contract.test.js +40 -0
  70. package/dist/hooks/__tests__/deep-interview-contract.test.js.map +1 -1
  71. package/dist/hooks/__tests__/foreground-isolation-contract.test.d.ts +2 -0
  72. package/dist/hooks/__tests__/foreground-isolation-contract.test.d.ts.map +1 -0
  73. package/dist/hooks/__tests__/foreground-isolation-contract.test.js +28 -0
  74. package/dist/hooks/__tests__/foreground-isolation-contract.test.js.map +1 -0
  75. package/dist/hooks/__tests__/session.test.js +32 -0
  76. package/dist/hooks/__tests__/session.test.js.map +1 -1
  77. package/dist/hooks/codebase-map.d.ts.map +1 -1
  78. package/dist/hooks/codebase-map.js +3 -2
  79. package/dist/hooks/codebase-map.js.map +1 -1
  80. package/dist/hooks/extensibility/dispatcher.d.ts.map +1 -1
  81. package/dist/hooks/extensibility/dispatcher.js +6 -4
  82. package/dist/hooks/extensibility/dispatcher.js.map +1 -1
  83. package/dist/hooks/extensibility/logging.d.ts.map +1 -1
  84. package/dist/hooks/extensibility/logging.js +3 -2
  85. package/dist/hooks/extensibility/logging.js.map +1 -1
  86. package/dist/hooks/extensibility/sdk/paths.d.ts.map +1 -1
  87. package/dist/hooks/extensibility/sdk/paths.js +4 -3
  88. package/dist/hooks/extensibility/sdk/paths.js.map +1 -1
  89. package/dist/hooks/session.d.ts.map +1 -1
  90. package/dist/hooks/session.js +22 -12
  91. package/dist/hooks/session.js.map +1 -1
  92. package/dist/hud/__tests__/hud-tmux-injection.test.js +8 -7
  93. package/dist/hud/__tests__/hud-tmux-injection.test.js.map +1 -1
  94. package/dist/hud/__tests__/reconcile.test.js +1 -1
  95. package/dist/hud/__tests__/state.test.js +24 -0
  96. package/dist/hud/__tests__/state.test.js.map +1 -1
  97. package/dist/hud/index.js +1 -1
  98. package/dist/hud/index.js.map +1 -1
  99. package/dist/hud/state.d.ts.map +1 -1
  100. package/dist/hud/state.js +22 -8
  101. package/dist/hud/state.js.map +1 -1
  102. package/dist/hud/tmux.js +1 -1
  103. package/dist/hud/tmux.js.map +1 -1
  104. package/dist/imagegen/continuation.d.ts +44 -0
  105. package/dist/imagegen/continuation.d.ts.map +1 -0
  106. package/dist/imagegen/continuation.js +220 -0
  107. package/dist/imagegen/continuation.js.map +1 -0
  108. package/dist/mcp/__tests__/bootstrap.test.js +47 -2
  109. package/dist/mcp/__tests__/bootstrap.test.js.map +1 -1
  110. package/dist/mcp/__tests__/server-lifecycle.test.js +49 -1
  111. package/dist/mcp/__tests__/server-lifecycle.test.js.map +1 -1
  112. package/dist/mcp/bootstrap.d.ts +2 -0
  113. package/dist/mcp/bootstrap.d.ts.map +1 -1
  114. package/dist/mcp/bootstrap.js +95 -15
  115. package/dist/mcp/bootstrap.js.map +1 -1
  116. package/dist/mcp/lifecycle-telemetry.d.ts +16 -0
  117. package/dist/mcp/lifecycle-telemetry.d.ts.map +1 -0
  118. package/dist/mcp/lifecycle-telemetry.js +95 -0
  119. package/dist/mcp/lifecycle-telemetry.js.map +1 -0
  120. package/dist/pipeline/__tests__/stages.test.js +274 -5
  121. package/dist/pipeline/__tests__/stages.test.js.map +1 -1
  122. package/dist/pipeline/stages/team-exec.d.ts +2 -0
  123. package/dist/pipeline/stages/team-exec.d.ts.map +1 -1
  124. package/dist/pipeline/stages/team-exec.js +51 -26
  125. package/dist/pipeline/stages/team-exec.js.map +1 -1
  126. package/dist/planning/__tests__/artifacts.test.js +138 -3
  127. package/dist/planning/__tests__/artifacts.test.js.map +1 -1
  128. package/dist/planning/__tests__/context-pack-status.test.d.ts +2 -0
  129. package/dist/planning/__tests__/context-pack-status.test.d.ts.map +1 -0
  130. package/dist/planning/__tests__/context-pack-status.test.js +271 -0
  131. package/dist/planning/__tests__/context-pack-status.test.js.map +1 -0
  132. package/dist/planning/artifacts.d.ts +12 -1
  133. package/dist/planning/artifacts.d.ts.map +1 -1
  134. package/dist/planning/artifacts.js +32 -9
  135. package/dist/planning/artifacts.js.map +1 -1
  136. package/dist/planning/context-pack-status.d.ts +42 -0
  137. package/dist/planning/context-pack-status.d.ts.map +1 -0
  138. package/dist/planning/context-pack-status.js +479 -0
  139. package/dist/planning/context-pack-status.js.map +1 -0
  140. package/dist/runtime/__tests__/process-tree.test.d.ts +2 -0
  141. package/dist/runtime/__tests__/process-tree.test.d.ts.map +1 -0
  142. package/dist/runtime/__tests__/process-tree.test.js +107 -0
  143. package/dist/runtime/__tests__/process-tree.test.js.map +1 -0
  144. package/dist/runtime/process-tree.d.ts +28 -0
  145. package/dist/runtime/process-tree.d.ts.map +1 -0
  146. package/dist/runtime/process-tree.js +230 -0
  147. package/dist/runtime/process-tree.js.map +1 -0
  148. package/dist/scripts/__tests__/codex-native-hook.test.js +205 -1
  149. package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
  150. package/dist/scripts/__tests__/notify-state-io.test.d.ts +2 -0
  151. package/dist/scripts/__tests__/notify-state-io.test.d.ts.map +1 -0
  152. package/dist/scripts/__tests__/notify-state-io.test.js +40 -0
  153. package/dist/scripts/__tests__/notify-state-io.test.js.map +1 -0
  154. package/dist/scripts/codex-native-hook.d.ts.map +1 -1
  155. package/dist/scripts/codex-native-hook.js +111 -7
  156. package/dist/scripts/codex-native-hook.js.map +1 -1
  157. package/dist/scripts/notify-hook/managed-tmux.d.ts.map +1 -1
  158. package/dist/scripts/notify-hook/managed-tmux.js +6 -9
  159. package/dist/scripts/notify-hook/managed-tmux.js.map +1 -1
  160. package/dist/scripts/notify-hook/process-runner.d.ts.map +1 -1
  161. package/dist/scripts/notify-hook/process-runner.js +4 -1
  162. package/dist/scripts/notify-hook/process-runner.js.map +1 -1
  163. package/dist/scripts/notify-hook/state-io.d.ts.map +1 -1
  164. package/dist/scripts/notify-hook/state-io.js +4 -7
  165. package/dist/scripts/notify-hook/state-io.js.map +1 -1
  166. package/dist/scripts/notify-hook.js +25 -3
  167. package/dist/scripts/notify-hook.js.map +1 -1
  168. package/dist/scripts/verify-native-agents.d.ts.map +1 -1
  169. package/dist/scripts/verify-native-agents.js +3 -1
  170. package/dist/scripts/verify-native-agents.js.map +1 -1
  171. package/dist/sidecar/__tests__/tmux.test.js +1 -1
  172. package/dist/sidecar/__tests__/tmux.test.js.map +1 -1
  173. package/dist/sidecar/tmux.js +1 -1
  174. package/dist/sidecar/tmux.js.map +1 -1
  175. package/dist/state/__tests__/workflow-transition.test.js +45 -1
  176. package/dist/state/__tests__/workflow-transition.test.js.map +1 -1
  177. package/dist/state/workflow-transition-reconcile.js +2 -2
  178. package/dist/state/workflow-transition-reconcile.js.map +1 -1
  179. package/dist/state/workflow-transition.js +2 -2
  180. package/dist/state/workflow-transition.js.map +1 -1
  181. package/dist/team/__tests__/approved-execution.test.js +96 -0
  182. package/dist/team/__tests__/approved-execution.test.js.map +1 -1
  183. package/dist/team/__tests__/followup-planner.test.js +16 -0
  184. package/dist/team/__tests__/followup-planner.test.js.map +1 -1
  185. package/dist/team/__tests__/model-contract.test.js +16 -0
  186. package/dist/team/__tests__/model-contract.test.js.map +1 -1
  187. package/dist/team/__tests__/repo-aware-decomposition.test.js +20 -0
  188. package/dist/team/__tests__/repo-aware-decomposition.test.js.map +1 -1
  189. package/dist/team/__tests__/runtime-cli.test.js +16 -0
  190. package/dist/team/__tests__/runtime-cli.test.js.map +1 -1
  191. package/dist/team/__tests__/runtime.test.js +209 -11
  192. package/dist/team/__tests__/runtime.test.js.map +1 -1
  193. package/dist/team/__tests__/scaling.test.js +110 -0
  194. package/dist/team/__tests__/scaling.test.js.map +1 -1
  195. package/dist/team/__tests__/tmux-session.test.js +9 -0
  196. package/dist/team/__tests__/tmux-session.test.js.map +1 -1
  197. package/dist/team/__tests__/worker-runtime-identity.test.js +6 -0
  198. package/dist/team/__tests__/worker-runtime-identity.test.js.map +1 -1
  199. package/dist/team/approved-execution.d.ts +13 -0
  200. package/dist/team/approved-execution.d.ts.map +1 -1
  201. package/dist/team/approved-execution.js +40 -22
  202. package/dist/team/approved-execution.js.map +1 -1
  203. package/dist/team/followup-planner.d.ts +1 -0
  204. package/dist/team/followup-planner.d.ts.map +1 -1
  205. package/dist/team/followup-planner.js +9 -9
  206. package/dist/team/followup-planner.js.map +1 -1
  207. package/dist/team/model-contract.d.ts +1 -1
  208. package/dist/team/model-contract.d.ts.map +1 -1
  209. package/dist/team/model-contract.js +4 -3
  210. package/dist/team/model-contract.js.map +1 -1
  211. package/dist/team/repo-aware-decomposition.d.ts +1 -0
  212. package/dist/team/repo-aware-decomposition.d.ts.map +1 -1
  213. package/dist/team/repo-aware-decomposition.js +5 -1
  214. package/dist/team/repo-aware-decomposition.js.map +1 -1
  215. package/dist/team/runtime-cli.d.ts +4 -0
  216. package/dist/team/runtime-cli.d.ts.map +1 -1
  217. package/dist/team/runtime-cli.js +14 -1
  218. package/dist/team/runtime-cli.js.map +1 -1
  219. package/dist/team/runtime.d.ts +1 -0
  220. package/dist/team/runtime.d.ts.map +1 -1
  221. package/dist/team/runtime.js +46 -16
  222. package/dist/team/runtime.js.map +1 -1
  223. package/dist/team/scaling.d.ts.map +1 -1
  224. package/dist/team/scaling.js +13 -6
  225. package/dist/team/scaling.js.map +1 -1
  226. package/dist/team/tmux-session.d.ts.map +1 -1
  227. package/dist/team/tmux-session.js +7 -0
  228. package/dist/team/tmux-session.js.map +1 -1
  229. package/dist/ultragoal/__tests__/artifacts.test.js +51 -0
  230. package/dist/ultragoal/__tests__/artifacts.test.js.map +1 -1
  231. package/dist/ultragoal/__tests__/docs-contract.test.d.ts +2 -0
  232. package/dist/ultragoal/__tests__/docs-contract.test.d.ts.map +1 -0
  233. package/dist/ultragoal/__tests__/docs-contract.test.js +23 -0
  234. package/dist/ultragoal/__tests__/docs-contract.test.js.map +1 -0
  235. package/dist/ultragoal/artifacts.d.ts +2 -2
  236. package/dist/ultragoal/artifacts.d.ts.map +1 -1
  237. package/dist/ultragoal/artifacts.js +37 -1
  238. package/dist/ultragoal/artifacts.js.map +1 -1
  239. package/dist/verification/__tests__/ci-rust-gates.test.js +44 -14
  240. package/dist/verification/__tests__/ci-rust-gates.test.js.map +1 -1
  241. package/package.json +1 -1
  242. package/plugins/oh-my-codex/.codex-plugin/plugin.json +1 -1
  243. package/plugins/oh-my-codex/skills/ai-slop-cleaner/SKILL.md +9 -0
  244. package/plugins/oh-my-codex/skills/deep-interview/SKILL.md +25 -2
  245. package/plugins/oh-my-codex/skills/plan/SKILL.md +7 -4
  246. package/plugins/oh-my-codex/skills/ralplan/SKILL.md +13 -3
  247. package/plugins/oh-my-codex/skills/team/SKILL.md +2 -2
  248. package/plugins/oh-my-codex/skills/visual-ralph/SKILL.md +8 -0
  249. package/prompts/planner.md +1 -1
  250. package/skills/ai-slop-cleaner/SKILL.md +9 -0
  251. package/skills/deep-interview/SKILL.md +25 -2
  252. package/skills/plan/SKILL.md +7 -4
  253. package/skills/ralplan/SKILL.md +13 -3
  254. package/skills/team/SKILL.md +2 -2
  255. package/skills/visual-ralph/SKILL.md +8 -0
  256. package/src/scripts/__tests__/codex-native-hook.test.ts +231 -1
  257. package/src/scripts/__tests__/notify-state-io.test.ts +73 -0
  258. package/src/scripts/codex-native-hook.ts +129 -14
  259. package/src/scripts/notify-hook/managed-tmux.ts +6 -7
  260. package/src/scripts/notify-hook/process-runner.ts +4 -1
  261. package/src/scripts/notify-hook/state-io.ts +5 -7
  262. package/src/scripts/notify-hook.ts +26 -3
  263. package/src/scripts/verify-native-agents.ts +3 -1
@@ -47,6 +47,9 @@ describe('ultragoal artifacts', () => {
47
47
  const instruction = buildCodexGoalInstruction(started.goal, started.plan);
48
48
  assert.match(instruction, /call get_goal/i);
49
49
  assert.match(instruction, /call create_goal/i);
50
+ assert.match(instruction, /different completed legacy\/thread goal/i);
51
+ assert.match(instruction, /fresh Codex thread/i);
52
+ assert.match(instruction, /--status blocked/);
50
53
  assert.match(instruction, /update_goal\(\{status: "complete"\}\)/);
51
54
  assert.match(instruction, /--codex-goal-json/);
52
55
  assert.match(instruction, /Complete first milestone/);
@@ -89,5 +92,53 @@ describe('ultragoal artifacts', () => {
89
92
  assert.match(ledger, /"event":"goal_retried"/);
90
93
  });
91
94
  });
95
+ it('records a completed legacy Codex-goal blocker without failing the active ultragoal', async () => {
96
+ await withTempRepo(async (cwd) => {
97
+ await createUltragoalPlan(cwd, {
98
+ brief: 'brief',
99
+ goals: [
100
+ { title: 'First', objective: 'Complete first milestone.' },
101
+ ],
102
+ });
103
+ const first = await startNextUltragoal(cwd);
104
+ const blocked = await checkpointUltragoal(cwd, {
105
+ goalId: first.goal.id,
106
+ status: 'blocked',
107
+ evidence: 'completed aggregate Codex goal blocks create_goal',
108
+ codexGoal: { goal: { objective: 'achieve all goals on this repo ultragoal status', status: 'complete' } },
109
+ now: new Date('2026-05-04T10:03:00Z'),
110
+ });
111
+ assert.equal(blocked.activeGoalId, first.goal.id);
112
+ assert.equal(blocked.goals[0]?.status, 'in_progress');
113
+ assert.equal(blocked.goals[0]?.failureReason, undefined);
114
+ assert.equal(blocked.goals[0]?.failedAt, undefined);
115
+ const ledger = await readFile(join(cwd, '.omx/ultragoal/ledger.jsonl'), 'utf-8');
116
+ assert.match(ledger, /"event":"goal_blocked"/);
117
+ assert.match(ledger, /completed aggregate Codex goal blocks create_goal/);
118
+ });
119
+ });
120
+ it('rejects blocked checkpoints for active or same-objective Codex goals', async () => {
121
+ await withTempRepo(async (cwd) => {
122
+ await createUltragoalPlan(cwd, {
123
+ brief: 'brief',
124
+ goals: [
125
+ { title: 'First', objective: 'Complete first milestone.' },
126
+ ],
127
+ });
128
+ const first = await startNextUltragoal(cwd);
129
+ await assert.rejects(() => checkpointUltragoal(cwd, {
130
+ goalId: first.goal.id,
131
+ status: 'blocked',
132
+ evidence: 'active wrong goal',
133
+ codexGoal: { goal: { objective: 'Different active work', status: 'active' } },
134
+ }), /strict objective mismatch protection remains required/);
135
+ await assert.rejects(() => checkpointUltragoal(cwd, {
136
+ goalId: first.goal.id,
137
+ status: 'blocked',
138
+ evidence: 'same complete goal',
139
+ codexGoal: { goal: { objective: first.goal.objective, status: 'complete' } },
140
+ }), /different completed legacy Codex goal/);
141
+ });
142
+ });
92
143
  });
93
144
  //# sourceMappingURL=artifacts.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.test.js","sourceRoot":"","sources":["../../../src/ultragoal/__tests__/artifacts.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAEzB,KAAK,UAAU,YAAY,CAAI,GAAgC;IAC7D,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC/B,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE;gBAC1C,KAAK,EAAE,4CAA4C;gBACnD,GAAG,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC;aACtC,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,oBAAoB,CAAC,CAAC;YACtD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,yBAAyB,CAAC,EAAE,OAAO,CAAC,EAAE,8CAA8C,CAAC,CAAC;YAE5H,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,6BAA6B,CAAC,EAAE,OAAO,CAAC,CAAC;YACjF,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC/B,MAAM,mBAAmB,CAAC,GAAG,EAAE;gBAC7B,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE;oBACL,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,2BAA2B,EAAE;oBAC1D,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,4BAA4B,EAAE;iBAC7D;aACF,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACzF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;YAClD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YAEtD,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACzF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAEpC,MAAM,WAAW,GAAG,yBAAyB,CAAC,OAAO,CAAC,IAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3E,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,uCAAuC,CAAC,CAAC;YACnE,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC;YACtD,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAC7C,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;YACtD,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC/B,MAAM,mBAAmB,CAAC,GAAG,EAAE;gBAC7B,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE;oBACL,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,2BAA2B,EAAE;oBAC1D,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,4BAA4B,EAAE;iBAC7D;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,mBAAmB,CAAC,GAAG,EAAE;gBAC7B,MAAM,EAAE,KAAK,CAAC,IAAK,CAAC,EAAE;gBACtB,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,mBAAmB;gBAC7B,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAK,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;aAC9E,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;YAE7C,MAAM,mBAAmB,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAK,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;YACnG,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAEpC,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YACnE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAErC,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAC1C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,6BAA6B,CAAC,EAAE,OAAO,CAAC,CAAC;YACjF,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;YACjD,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;YAC9C,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"artifacts.test.js","sourceRoot":"","sources":["../../../src/ultragoal/__tests__/artifacts.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=docs-contract.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-contract.test.d.ts","sourceRoot":"","sources":["../../../src/ultragoal/__tests__/docs-contract.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ import { describe, it } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { readFileSync } from 'node:fs';
4
+ import { dirname, join } from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+ const repoRoot = join(__dirname, '../../../');
8
+ function loadDoc(path) {
9
+ return readFileSync(join(repoRoot, path), 'utf-8');
10
+ }
11
+ describe('ultragoal docs contract', () => {
12
+ it('documents the completed legacy Codex-goal blocked checkpoint workaround', () => {
13
+ const doc = loadDoc('docs/ultragoal.md');
14
+ assert.match(doc, /checkpoint --goal-id G001-example --status blocked/);
15
+ assert.match(doc, /`goal_blocked`/);
16
+ assert.match(doc, /no Codex goal-tool reset\/new-goal surface/i);
17
+ assert.match(doc, /fresh Codex thread/i);
18
+ assert.match(doc, /same branch\/worktree/i);
19
+ assert.match(doc, /Active or incomplete wrong Codex goals remain strict mismatch errors/i);
20
+ assert.match(doc, /must not be used to bypass active-goal mismatch protection/i);
21
+ });
22
+ });
23
+ //# sourceMappingURL=docs-contract.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-contract.test.js","sourceRoot":"","sources":["../../../src/ultragoal/__tests__/docs-contract.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAE9C,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAED,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,GAAG,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAEzC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,oDAAoD,CAAC,CAAC;QACxE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;QACpC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,6CAA6C,CAAC,CAAC;QACjE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,uEAAuE,CAAC,CAAC;QAC3F,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,6DAA6D,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -30,7 +30,7 @@ export interface UltragoalPlan {
30
30
  }
31
31
  export interface UltragoalLedgerEntry {
32
32
  ts: string;
33
- event: 'plan_created' | 'goal_started' | 'goal_resumed' | 'goal_completed' | 'goal_failed' | 'goal_retried';
33
+ event: 'plan_created' | 'goal_started' | 'goal_resumed' | 'goal_completed' | 'goal_blocked' | 'goal_failed' | 'goal_retried';
34
34
  goalId?: string;
35
35
  status?: UltragoalStatus;
36
36
  message?: string;
@@ -53,7 +53,7 @@ export interface StartNextOptions {
53
53
  }
54
54
  export interface CheckpointOptions {
55
55
  goalId: string;
56
- status: Extract<UltragoalStatus, 'complete' | 'failed'>;
56
+ status: Extract<UltragoalStatus, 'complete' | 'failed'> | 'blocked';
57
57
  evidence?: string;
58
58
  codexGoal?: unknown;
59
59
  now?: Date;
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../src/ultragoal/artifacts.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEhF,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EACD,cAAc,GACd,cAAc,GACd,cAAc,GACd,gBAAgB,GAChB,aAAa,GACb,cAAc,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3E,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC,eAAe,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAC;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,qBAAa,cAAe,SAAQ,KAAK;CAAG;AAM5C,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvD;AAeD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAuB/F;AAkBD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAa3E;AAOD,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC,CAoC9G;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAS3K;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CA2BnL;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CA2CzG;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAyB1F"}
1
+ {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../src/ultragoal/artifacts.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,9 @@ function repoRelative(cwd, path) {
29
29
  function cleanLine(line) {
30
30
  return line.replace(/^\s*(?:[-*+]\s+|\d+[.)]\s+)/, '').trim();
31
31
  }
32
+ function normalizeObjective(value) {
33
+ return value.replace(/\s+/g, ' ').trim();
34
+ }
32
35
  function titleFromObjective(objective, fallback) {
33
36
  const firstLine = objective.split(/\r?\n/).map((line) => line.trim()).find(Boolean) ?? fallback;
34
37
  return firstLine.length > 72 ? `${firstLine.slice(0, 69).trimEnd()}...` : firstLine;
@@ -164,6 +167,38 @@ export async function checkpointUltragoal(cwd, options) {
164
167
  const goal = plan.goals.find((candidate) => candidate.id === options.goalId);
165
168
  if (!goal)
166
169
  throw new UltragoalError(`Unknown ultragoal id: ${options.goalId}`);
170
+ const now = iso(options.now);
171
+ if (options.status === 'blocked') {
172
+ if (goal.status !== 'in_progress') {
173
+ throw new UltragoalError(`Cannot record a blocked checkpoint for ${goal.id} while it is ${goal.status}; start or resume the ultragoal before recording a non-terminal blocker.`);
174
+ }
175
+ const snapshot = options.codexGoal === undefined ? null : parseCodexGoalSnapshot(options.codexGoal);
176
+ if (!snapshot?.available) {
177
+ throw new UltragoalError('Blocked ultragoal checkpoints require a get_goal snapshot for the completed legacy Codex goal that blocked create_goal; pass --codex-goal-json.');
178
+ }
179
+ if (snapshot.status !== 'complete') {
180
+ throw new UltragoalError(`Cannot record a blocked ultragoal checkpoint while the existing Codex goal is ${snapshot.status ?? 'unknown'}; strict objective mismatch protection remains required for active or incomplete goals.`);
181
+ }
182
+ if (!snapshot.objective) {
183
+ throw new UltragoalError('Blocked ultragoal checkpoint Codex snapshot is missing objective text.');
184
+ }
185
+ if (normalizeObjective(snapshot.objective) === normalizeObjective(goal.objective)) {
186
+ throw new UltragoalError('Blocked ultragoal checkpoint is only for a different completed legacy Codex goal; complete this ultragoal with --status complete after its audit passes.');
187
+ }
188
+ goal.updatedAt = now;
189
+ plan.activeGoalId = goal.id;
190
+ plan.updatedAt = now;
191
+ await writePlan(cwd, plan);
192
+ await appendLedger(cwd, {
193
+ ts: now,
194
+ event: 'goal_blocked',
195
+ goalId: goal.id,
196
+ status: goal.status,
197
+ evidence: options.evidence,
198
+ codexGoal: options.codexGoal,
199
+ });
200
+ return plan;
201
+ }
167
202
  if (options.status === 'complete') {
168
203
  const reconciliation = reconcileCodexGoalSnapshot(options.codexGoal === undefined ? null : parseCodexGoalSnapshot(options.codexGoal), {
169
204
  expectedObjective: goal.objective,
@@ -175,7 +210,6 @@ export async function checkpointUltragoal(cwd, options) {
175
210
  throw new UltragoalError(formatCodexGoalReconciliation(reconciliation));
176
211
  }
177
212
  }
178
- const now = iso(options.now);
179
213
  goal.status = options.status;
180
214
  goal.updatedAt = now;
181
215
  if (options.status === 'complete') {
@@ -218,6 +252,8 @@ export function buildCodexGoalInstruction(goal, plan) {
218
252
  'Codex goal integration constraints:',
219
253
  '- First call get_goal. If no active goal exists, call create_goal with the payload below.',
220
254
  '- If a different active Codex goal exists, finish/checkpoint that goal before starting this ultragoal.',
255
+ '- If get_goal returns a different completed legacy/thread goal and create_goal rejects because this thread already has a completed goal, continue this ultragoal in a fresh Codex thread (same repo/worktree) and create the payload there.',
256
+ `- To preserve the durable ledger before switching threads, record the non-terminal blocker without failing this goal: omx ultragoal checkpoint --goal-id ${goal.id} --status blocked --evidence "<completed legacy Codex goal blocks create_goal in this thread>" --codex-goal-json "<get_goal JSON or path>"`,
221
257
  '- Work only this goal until its completion audit passes.',
222
258
  '- After the goal is actually complete, call update_goal({status: "complete"}), call get_goal again for a fresh completion snapshot, then checkpoint the ledger with:',
223
259
  ` omx ultragoal checkpoint --goal-id ${goal.id} --status complete --evidence "<tests/files/PR evidence>" --codex-goal-json "<fresh get_goal JSON or path>"`,
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/ultragoal/artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACL,6BAA6B,EAC7B,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,0CAA0C,CAAC;AAElD,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAC9C,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;AAC1C,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAmE/C,MAAM,OAAO,cAAe,SAAQ,KAAK;CAAG;AAE5C,SAAS,GAAG,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE;IAC3B,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,IAAY;IAC7C,OAAO,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAChE,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAiB,EAAE,QAAgB;IAC7D,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC;IAChG,OAAO,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,KAAK;SACtB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC7D,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;SACrE,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAC7C,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC;WACzC,GAAG,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,KAAK,CACzE,CAAC;SACD,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;IAEjC,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;QACvC,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,KAAK;aACJ,KAAK,CAAC,SAAS,CAAC;aAChB,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;aACpC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAE/E,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,2CAA2C,CAAC,CAAC;IACpH,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACzC,KAAK,EAAE,kBAAkB,CAAC,SAAS,EAAE,QAAQ,KAAK,GAAG,CAAC,EAAE,CAAC;QACzD,SAAS;KACV,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,eAAe,CAAC,KAAa,EAAE,KAAa;IACnD,MAAM,IAAI,GAAG,KAAK;SACf,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACZ,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvB,OAAO,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3E,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,GAAW,EAAE,KAA2B;IAClE,MAAM,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,UAAU,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAW;IACjD,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,cAAc,CAAC,8BAA8B,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACnI,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAkB,CAAC;IAChD,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,cAAc,CAAC,6BAA6B,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,IAAmB;IACvD,MAAM,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAW,EAAE,OAA+B;IACpF,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,cAAc,CAAC,kCAAkC,aAAa,IAAI,eAAe,gCAAgC,CAAC,CAAC;IAC/H,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,WAAW,GAAuE,OAAO,CAAC,KAAK,EAAE,MAAM;QAC3G,CAAC,CAAC,OAAO,CAAC,KAAK;QACf,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,WAAW;SAC3B,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAiB,EAAE,CAAC,CAAC;QACpC,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;QACjG,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,KAAK,GAAG,CAAC,EAAE,CAAC;QAC5E,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QAChC,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;KACf,CAAC,CAAC,CAAC;IAEN,MAAM,IAAI,GAAkB;QAC1B,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG,aAAa,IAAI,eAAe,EAAE;QAChD,SAAS,EAAE,GAAG,aAAa,IAAI,eAAe,EAAE;QAChD,UAAU,EAAE,GAAG,aAAa,IAAI,gBAAgB,EAAE;QAClD,KAAK,EAAE,UAAU;KAClB,CAAC;IAEF,MAAM,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;IAC9G,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3B,MAAM,SAAS,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9C,MAAM,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,MAAM,kBAAkB,EAAE,CAAC,CAAC;IAC7G,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAmB;IACxD,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;QACxB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;QACtE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM;QAC7E,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM;QACxE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM;QACpE,YAAY,EAAE,IAAI,CAAC,YAAY;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAW,EAAE,UAA4B,EAAE;IAClF,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC;IAC1E,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC;QAChJ,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC9D,CAAC;IAED,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAChE,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QAC3D,IAAI,IAAI;YAAE,MAAM,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IACzI,CAAC;IACD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,EAAE,CAAC;IAErH,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;IAC5B,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;IAClB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;IACrB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;IAC/B,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;IACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC;IAC5B,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;IACrB,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3B,MAAM,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACtI,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAW,EAAE,OAA0B;IAC/E,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7E,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,cAAc,CAAC,yBAAyB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/E,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAClC,MAAM,cAAc,GAAG,0BAA0B,CAC/C,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC,EAClF;YACE,iBAAiB,EAAE,IAAI,CAAC,SAAS;YACjC,eAAe,EAAE,CAAC,UAAU,CAAC;YAC7B,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,IAAI;SACtB,CACF,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;YACvB,MAAM,IAAI,cAAc,CAAC,6BAA6B,CAAC,cAAc,CAAC,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC7B,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;IACrB,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;QACtC,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;IAC9D,CAAC;IACD,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;IACrB,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3B,MAAM,YAAY,CAAC,GAAG,EAAE;QACtB,EAAE,EAAE,GAAG;QACP,KAAK,EAAE,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa;QACvE,MAAM,EAAE,IAAI,CAAC,EAAE;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAAmB,EAAE,IAAmB;IAChF,MAAM,aAAa,GAAG;QACpB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE,CAAC;IACF,OAAO;QACL,+BAA+B;QAC/B,SAAS,IAAI,CAAC,SAAS,EAAE;QACzB,WAAW,IAAI,CAAC,UAAU,EAAE;QAC5B,SAAS,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE;QAClC,EAAE;QACF,qCAAqC;QACrC,2FAA2F;QAC3F,wGAAwG;QACxG,0DAA0D;QAC1D,sKAAsK;QACtK,wCAAwC,IAAI,CAAC,EAAE,6GAA6G;QAC5J,kIAAkI;QAClI,EAAE;QACF,sBAAsB;QACtB,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,EAAE;QACF,YAAY;QACZ,IAAI,CAAC,SAAS;KACf,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/ultragoal/artifacts.ts"],"names":[],"mappings":"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"}
@@ -8,9 +8,13 @@ function readCiWorkflow() {
8
8
  return readFileSync(workflowPath, 'utf-8');
9
9
  }
10
10
  function jobBlock(workflow, jobName) {
11
- const match = workflow.match(new RegExp(`^ ${jobName}:\\n([\\s\\S]*?)(?=^ [a-z0-9-]+:\\n|\\Z)`, 'm'));
12
- assert.ok(match?.[0], `missing CI job block for ${jobName}`);
13
- return match[0];
11
+ const startMatch = workflow.match(new RegExp(`(^|\\n) ${jobName}:\\n`));
12
+ assert.ok(startMatch?.index !== undefined, `missing CI job block for ${jobName}`);
13
+ const start = startMatch.index + startMatch[1].length;
14
+ const afterJobHeader = start + ` ${jobName}:\n`.length;
15
+ const nextJobOffset = workflow.slice(afterJobHeader).search(/\n [a-z0-9-]+:\n/);
16
+ const end = nextJobOffset === -1 ? workflow.length : afterJobHeader + nextJobOffset;
17
+ return workflow.slice(start, end);
14
18
  }
15
19
  describe('CI Rust gates', () => {
16
20
  it('requires rustfmt, clippy, and Rust test coverage gates plus an explicit Rust toolchain setup for the final native build lane', () => {
@@ -39,9 +43,9 @@ describe('CI Rust gates', () => {
39
43
  assert.match(workflow, /name:\s*Build dist artifact/);
40
44
  assert.match(workflow, /name:\s*Upload prebuilt dist artifact/);
41
45
  assert.match(workflow, /name:\s*ci-dist-node20/);
42
- assert.match(workflow, /^ coverage-team-critical:\s*\n(?:.*\n)*?^\s+needs:\s*\[typecheck, build-dist\]/m);
43
- assert.match(workflow, /^ ralph-persistence-gate:\s*\n(?:.*\n)*?^\s+needs:\s*\[typecheck, build-dist\]/m);
44
- assert.match(workflow, /^ build:\s*\n(?:.*\n)*?^\s+needs:\s*\[rustfmt, clippy, lint, typecheck, build-dist\]/m);
46
+ assert.match(workflow, /^ coverage-team-critical:\s*\n(?:.*\n)*?^\s+needs:\s*\[build-dist\]/m);
47
+ assert.match(workflow, /^ ralph-persistence-gate:\s*\n(?:.*\n)*?^\s+needs:\s*\[build-dist\]/m);
48
+ assert.match(workflow, /^ build:\s*\n(?:.*\n)*?^\s+needs:\s*\[build-dist\]/m);
45
49
  for (const jobName of ['test', 'coverage-team-critical', 'ralph-persistence-gate', 'build']) {
46
50
  assert.match(workflow, new RegExp(`^ ${jobName}:\\s*\\n(?:.*\\n)*?^\\s+- name:\\s*Download prebuilt dist artifact\\s*\\n\\s+uses:\\s*actions/download-artifact@v8`, 'm'));
47
51
  }
@@ -49,21 +53,47 @@ describe('CI Rust gates', () => {
49
53
  assert.match(testJob, /^\s+- name:\s*Run grouped full-suite lane\s*\n(?:.*\n)*?^\s+run:\s*\|\n\s+node dist\/scripts\/run-test-files\.js/m);
50
54
  assert.doesNotMatch(testJob, /^\s+npm run build$/m);
51
55
  });
56
+ it('uses npm package caching without skipping clean dependency installs', () => {
57
+ const workflow = readCiWorkflow();
58
+ for (const jobName of ['lint', 'typecheck', 'build-dist', 'test', 'coverage-team-critical', 'ralph-persistence-gate', 'build']) {
59
+ const job = jobBlock(workflow, jobName);
60
+ assert.match(job, /uses:\s*actions\/setup-node@v6/);
61
+ assert.match(job, /cache:\s*npm/);
62
+ assert.match(job, /run:\s*npm ci/);
63
+ assert.doesNotMatch(job, /uses:\s*actions\/cache@v4/);
64
+ assert.doesNotMatch(job, /path:\s*node_modules/);
65
+ assert.doesNotMatch(job, /cache-hit != 'true'/);
66
+ }
67
+ for (const jobName of ['clippy', 'rust-tests', 'build']) {
68
+ assert.match(jobBlock(workflow, jobName), /uses:\s*Swatinem\/rust-cache@v2/);
69
+ }
70
+ assert.match(workflow, /needs:\s*\[rustfmt, clippy, rust-tests, lint, typecheck, test, coverage-team-critical, ralph-persistence-gate, build\]/);
71
+ });
52
72
  it('avoids path-filtered CI triggers so required checks cannot be skipped into a pending state', () => {
53
73
  const workflow = readCiWorkflow();
54
74
  assert.match(workflow, /^on:\n push:\n branches: \[main, dev, experimental\/dev\]\n pull_request:\n branches: \[main, dev, experimental\/dev\]/m);
55
75
  assert.doesNotMatch(workflow, /^\s+paths:\s*/m);
56
76
  assert.doesNotMatch(workflow, /^\s+paths-ignore:\s*/m);
57
77
  });
58
- it('marks Rust formatting, Clippy, and tests as required in the CI status gate', () => {
78
+ it('marks every required CI lane as required and reported in the CI status gate', () => {
59
79
  const workflow = readCiWorkflow();
60
- assert.match(workflow, /needs:\s*\[rustfmt, clippy, rust-tests, lint, typecheck, test, coverage-team-critical, ralph-persistence-gate, build\]/);
61
- assert.match(workflow, /needs\.rustfmt\.result/);
62
- assert.match(workflow, /needs\.clippy\.result/);
63
- assert.match(workflow, /needs\.rust-tests\.result/);
64
- assert.match(workflow, /echo " rustfmt: \$\{\{ needs\.rustfmt\.result \}\}"/);
65
- assert.match(workflow, /echo " clippy: \$\{\{ needs\.clippy\.result \}\}"/);
66
- assert.match(workflow, /echo " rust-tests: \$\{\{ needs\.rust-tests\.result \}\}"/);
80
+ const ciStatusJob = jobBlock(workflow, 'ci-status');
81
+ const requiredJobs = [
82
+ 'rustfmt',
83
+ 'clippy',
84
+ 'rust-tests',
85
+ 'lint',
86
+ 'typecheck',
87
+ 'test',
88
+ 'coverage-team-critical',
89
+ 'ralph-persistence-gate',
90
+ 'build',
91
+ ];
92
+ assert.match(ciStatusJob, /needs:\s*\[rustfmt, clippy, rust-tests, lint, typecheck, test, coverage-team-critical, ralph-persistence-gate, build\]/);
93
+ for (const jobName of requiredJobs) {
94
+ assert.match(ciStatusJob, new RegExp(`needs\\.${jobName}\\.result`), `${jobName} result should be checked`);
95
+ assert.match(ciStatusJob, new RegExp(`echo \" ${jobName}: \\$\\{\\{ needs\\.${jobName}\\.result \\}\\}\"`), `${jobName} result should be reported`);
96
+ }
67
97
  });
68
98
  it('keeps expensive report-only coverage out of the required CI path', () => {
69
99
  const workflow = readCiWorkflow();
@@ -1 +1 @@
1
- {"version":3,"file":"ci-rust-gates.test.js","sourceRoot":"","sources":["../../../src/verification/__tests__/ci-rust-gates.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ci-rust-gates.test.js","sourceRoot":"","sources":["../../../src/verification/__tests__/ci-rust-gates.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-codex",
3
- "version": "0.16.0",
3
+ "version": "0.16.1",
4
4
  "description": "Multi-agent orchestration layer for OpenAI Codex CLI",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-codex",
3
- "version": "0.16.0",
3
+ "version": "0.16.1",
4
4
  "description": "Multi-agent orchestration layer for OpenAI Codex CLI",
5
5
  "author": {
6
6
  "name": "Yeachan Heo",
@@ -59,6 +59,13 @@ Use this skill when:
59
59
  - **Dead code** — unused code, unreachable branches, stale flags, debug leftovers
60
60
  - **Needless abstraction** — pass-through wrappers, speculative indirection, single-use helper layers
61
61
  - **Boundary violations** — hidden coupling, leaky responsibilities, wrong-layer imports or side effects
62
+ - **UI/design slop** — review visual outputs as context-sensitive signals, not absolute bans; preserve intentional brand, design-system, accessibility, or product-context exceptions when the rationale is clear
63
+ - Korean body text that is too small: challenge 11-12px body copy; Korean body text generally needs 14px or larger unless a dense, accessible system explicitly supports smaller text
64
+ - Gratuitous depth: avoid putting box shadows on every logo, surface, card, icon, background, and step block when hierarchy or affordance does not need it
65
+ - Repetitive content scaffolding: trim repeated eyebrow + title + description + paragraph stacks, filler explanation text, and generic emoji badges that do not add meaning
66
+ - Default AI palettes: question blue/purple defaults such as #3B82F6 when there is no brand, semantic, or system rationale
67
+ - Over-perfect grids: avoid reflexive uniform 3-column or 4-column card grids when the product context would benefit from rhythm, asymmetry, carousel cuts, bento composition, or varied emphasis
68
+ - Extreme gradients: tone down "AI demo" gradients unless the brand or campaign intentionally calls for that intensity
62
69
  - **Missing tests** — behavior not locked, weak regression coverage, gaps around edge cases
63
70
 
64
71
  5. **Execute passes one smell at a time**
@@ -84,6 +91,7 @@ Use this skill when:
84
91
  - Simplifications made
85
92
  - Fallback findings, classifications, and escalation status
86
93
  - Tests/diagnostics/build checks run
94
+ - UI/design reviewer checklist findings when visual/UI files were in scope
87
95
  - Remaining risks
88
96
  - Residual follow-ups or consciously deferred cleanup
89
97
 
@@ -97,6 +105,7 @@ Scope: [files or feature area]
97
105
  Behavior Lock: [targeted regression tests added/run]
98
106
  Cleanup Plan: [bounded smells and order]
99
107
  Fallback Findings: [none, or finding -> masking fallback slop / grounded compatibility/fail-safe fallback -> escalation status]
108
+ UI/Design Findings: [none/N/A, or signal -> action taken/deferred -> intentional exception rationale]
100
109
 
101
110
  Passes Completed:
102
111
  - Fallback-like code resolution gate - [root-cause repair, explicit failure behavior, preserved grounded fallback, or ralplan handoff]
@@ -55,6 +55,14 @@ If no flag is provided, use **Standard**.
55
55
  - Keep total prompt payloads within a safe budget by summarizing or trimming retained history; preserve newest/highest-signal answers and never let raw oversized context crowd out the current question
56
56
  - Reduce user effort: ask only the highest-leverage unresolved question, and never ask the user for codebase facts that can be discovered directly
57
57
  - For brownfield work, prefer evidence-backed confirmation questions such as "I found X in Y. Should this change follow that pattern?"
58
+ - Route facts before judgment in the Ouroboros style: before presenting a user-facing interview round, classify whether the needed information is a discoverable fact, a fact needing confirmation, or a human decision. The interview is with the human for judgment, not for facts the agent can inspect.
59
+ - Use these transcript/spec labels only; never use them as `omx question` `source` values, and never replace the runtime `source: "deep-interview"` contract for user-facing deep-interview questions:
60
+ - `[from-code][auto-confirmed]` — exact, high-confidence codebase facts from manifests/configs or direct source evidence, with no prescription attached.
61
+ - `[from-code]` — codebase findings that are useful but inferred, pattern-based, or low/medium confidence and therefore need a confirmation-style user-facing round before being treated as settled.
62
+ - `[from-research]` — externally sourced facts such as API limits, compatibility, or public documentation; facts only, not decisions.
63
+ - `[from-user]` — goals, preferences, business logic, scope, non-goals, acceptance criteria, tradeoffs, and any decision-bearing interpretation.
64
+ - Treat `[from-code][auto-confirmed]` and other non-user fact discoveries as context/transcript updates, not interview rounds: do not call `omx question`, do not create a pending deep-interview question obligation, and do not increment the user-facing round number for facts the agent can safely establish.
65
+ - Auto-confirm only descriptive facts. If a finding implies what the new feature should do, which pattern it should follow, which tradeoff to accept, or what should stay in/out of scope, route the entire decision-bearing question to the user as `[from-user]` even when code or research facts are available.
58
66
  - In attached-tmux Codex CLI, deep-interview uses `omx question` as the required OMX-owned structured questioning path for every interview round
59
67
  - When invoking `omx question` through attached-tmux Bash/tool paths, preserve the leader-pane return target by prefixing the command with `OMX_QUESTION_RETURN_PANE=$TMUX_PANE` (or a concrete `%pane` value)
60
68
  - If you launch `omx question` in a background terminal, immediately wait for that background terminal to finish and read its JSON answer before scoring ambiguity, asking another round, or handing off
@@ -146,6 +154,8 @@ Follow-up pressure ladder after each answer:
146
154
 
147
155
  Prefer staying on the same thread for multiple rounds when it has the highest leverage. Breadth without pressure is not progress.
148
156
 
157
+ Maintain a **Breadth Ledger** across independent ambiguity tracks: scope, constraints, outputs, verification, brownfield integration, and any user-mentioned deliverable tracks. The ledger is a guard, not a mandatory rotation rule: stay deep on the current thread until it has been pressure-tested, then zoom out only when another material track remains unresolved and would change execution.
158
+
149
159
  Detailed dimensions:
150
160
  - Intent Clarity — why the user wants this
151
161
  - Outcome Clarity — what end state they want
@@ -268,7 +278,9 @@ Readiness gate:
268
278
  - `Non-goals` must be explicit
269
279
  - `Decision Boundaries` must be explicit
270
280
  - A pressure pass must be complete: at least one earlier answer has been revisited with an evidence, assumption, or tradeoff follow-up
281
+ - A practical closure audit must pass: another question would change execution materially, not merely polish wording or chase a narrow edge case
271
282
  - If either gate is unresolved, or the pressure pass is incomplete, continue interviewing even when weighted ambiguity is below threshold
283
+ - Treat a low ambiguity score as permission to audit closure, not permission to keep drilling indefinitely. If remaining uncertainty would not change implementation, crystallize the spec or ask a final closure question instead of opening a new branch.
272
284
 
273
285
  ### 2d) Report progress
274
286
  Show weighted breakdown table, readiness-gate status (`Non-goals`, `Decision Boundaries`), and the next focus dimension.
@@ -278,6 +290,7 @@ Append round result and updated scores via `state_write`.
278
290
 
279
291
  ### 2f) Round controls
280
292
  - Do not offer early exit before the first explicit assumption probe and one persistent follow-up have happened
293
+ - Apply a **Dialectic Rhythm Guard**: track consecutive non-user fact discoveries and confirmation-style answers (`[from-code][auto-confirmed]`, `[from-code]`, or `[from-research]`). After 3 consecutive non-user or confirmation answers, the next material user-facing round must solicit direct human judgment (`[from-user]`) unless the closure audit says the interview is ready to crystallize.
281
294
  - Round 4+: allow explicit early exit with risk warning
282
295
  - Soft warning at profile midpoint (e.g., round 3/6/10 depending on profile)
283
296
  - Hard cap at profile `max_rounds`
@@ -348,6 +361,16 @@ When the clarified task is specifically about `$autoresearch`, or the skill is i
348
361
 
349
362
  Present execution options after artifact generation using explicit handoff contracts. Treat the deep-interview spec as the current requirements source of truth and preserve intent, non-goals, decision boundaries, acceptance criteria, and any residual-risk warnings across the handoff.
350
363
 
364
+ ### Goal-mode follow-ups
365
+
366
+ Include these product-facing suggestions when they fit the clarified spec, without removing the existing `$ralplan`, `$autopilot`, `$ralph`, and `$team` handoff options:
367
+
368
+ - **`$ultragoal`** — use for general goal-oriented follow-up when the spec should be converted into durable Codex goals with sequential completion tracking.
369
+ - **`$autoresearch-goal`** — use when the clarified context is a research project: a research question, reference/literature gathering, evaluator-backed analysis, or professor/critic-style deliverable.
370
+ - **`$performance-goal`** — use when the clarified context is an optimization or performance project with measurable speed, latency, throughput, memory, benchmark, or evaluator criteria.
371
+
372
+ Preserve `$ralph` for persistent single-owner execution/verification and `$team` for coordinated parallel implementation. Present goal-mode options as context-sensitive next steps, not as generic replacements for implementation lanes.
373
+
351
374
  ### 1. **`$ralplan` (Recommended)**
352
375
  - **Input Artifact:** `.omx/specs/deep-interview-{slug}.md` (optionally accompanied by the transcript/context snapshot for traceability)
353
376
  - **Invocation:** `$plan --consensus --direct <spec-path>`
@@ -355,7 +378,7 @@ Present execution options after artifact generation using explicit handoff contr
355
378
  - **Skipped / Already-Satisfied Stages:** Requirements discovery, ambiguity clarification, and early intent-boundary elicitation
356
379
  - **Expected Output:** Canonical planning artifacts under `.omx/plans/`, especially `prd-*.md` and `test-spec-*.md`
357
380
  - **Best When:** Requirements are clear enough to stop interviewing, but architectural validation / consensus planning is still desirable
358
- - **Next Recommended Step:** Use the approved planning artifacts with `$autopilot`, `$ralph`, or `$team` depending on the desired execution style
381
+ - **Next Recommended Step:** Use the approved planning artifacts with `$autopilot`, `$ralph`, `$team`, or a goal-mode follow-up (`$ultragoal`, `$autoresearch-goal`, `$performance-goal`) depending on whether the next need is direct execution, coordination, durable goals, research validation, or measurable optimization
359
382
 
360
383
  ### 2. **`$autopilot`**
361
384
  - **Input Artifact:** `.omx/specs/deep-interview-{slug}.md`
@@ -431,7 +454,7 @@ Present execution options after artifact generation using explicit handoff contr
431
454
  - [ ] Transcript written to `.omx/interviews/{slug}-{timestamp}.md`
432
455
  - [ ] Spec written to `.omx/specs/deep-interview-{slug}.md`
433
456
  - [ ] Brownfield questions use evidence-backed confirmation when applicable
434
- - [ ] Handoff options provided (`$ralplan`, `$autopilot`, `$ralph`, `$team`)
457
+ - [ ] Handoff options provided (`$ralplan`, `$autopilot`, `$ralph`, `$team`) plus context-sensitive goal-mode suggestions (`$ultragoal`, `$autoresearch-goal`, `$performance-goal`) when applicable
435
458
  - [ ] No direct implementation performed in this mode
436
459
  </Final_Checklist>
437
460
 
@@ -95,10 +95,12 @@ Jumping into code without understanding requirements leads to rework, scope cree
95
95
  c. Update the plan file in `.omx/plans/` with the accepted improvements (add missing details, refine steps, strengthen acceptance criteria, ADR updates, etc.)
96
96
  d. Note which improvements were applied in a brief changelog section at the end of the plan
97
97
  e. Before any execution handoff, derive an explicit **available-agent-types roster** from the known prompt catalog and add concrete **follow-up staffing guidance** for both `$ralph` and `$team` (recommended roles, counts, suggested reasoning levels by lane, and why each lane exists)
98
- f. For the `$team` path, add an explicit launch-hint block with concrete `omx team` / `$team` commands and a **team verification path** (what team proves before shutdown, what Ralph verifies after handoff)
98
+ f. Add a product-facing **Goal-Mode Follow-up Suggestions** section: suggest `$ultragoal` for general goal-oriented follow-up, `$autoresearch-goal` when the context is a research project, and `$performance-goal` when the context is an optimization or performance project. Keep these suggestions alongside the Ralph/team paths rather than replacing them when implementation delivery is still the main need.
99
+ g. For the `$team` path, add an explicit launch-hint block with concrete `omx team` / `$team` commands and a **team verification path** (what team proves before shutdown, what Ralph verifies after handoff)
99
100
  7. On Critic approval (with improvements applied): *(--interactive only)* If running with `--interactive`, use `AskUserQuestion` / the structured question UI to present the plan with these options:
100
101
  - **Approve and execute** — proceed to implementation via ralph+ultrawork
101
102
  - **Approve and implement via team** — proceed to implementation via coordinated parallel team agents
103
+ - **Start goal-mode follow-up** — proceed via `$ultragoal`, `$autoresearch-goal`, or `$performance-goal` when the approved plan fits durable goals, research validation, or measurable optimization
102
104
  - **Request changes** — return to step 1 with user feedback
103
105
  - **Reject** — discard the plan entirely
104
106
  If NOT running with `--interactive`, output the final approved plan and stop. Do NOT auto-execute.
@@ -106,6 +108,7 @@ Jumping into code without understanding requirements leads to rework, scope cree
106
108
  9. On user approval (--interactive only):
107
109
  - **Approve and execute**: **MUST** invoke `$ralph` with the approved plan path from `.omx/plans/` as context **plus the explicit available-agent-types roster, suggested reasoning levels, concrete role allocation guidance, and direct launch hints for Ralph follow-up work**. Do NOT implement directly. Do NOT edit source code files in the planning agent. The ralph skill handles execution via ultrawork parallel agents.
108
110
  - **Approve and implement via team**: **MUST** invoke `$team` with the approved plan path from `.omx/plans/` as context **plus the explicit available-agent-types roster, suggested reasoning levels, concrete staffing / worker-role allocation guidance, explicit `omx team` / `$team` launch hints, and the team verification path**. Do NOT implement directly. The team skill coordinates parallel agents across the staged pipeline for faster execution on large tasks.
111
+ - **Start goal-mode follow-up**: **MUST** invoke the selected goal workflow with the approved plan path and appropriate success context: `$ultragoal` for general goal-oriented follow-up, `$autoresearch-goal` for research projects, or `$performance-goal` for optimization/performance projects with measurable evaluator criteria. Do NOT implement directly in the planning agent.
109
112
 
110
113
  ### Review Mode (`--review`)
111
114
 
@@ -127,7 +130,7 @@ Every plan includes:
127
130
  - Verification Steps
128
131
  - For consensus/ralplan: **RALPLAN-DR summary** (Principles, Decision Drivers, Options)
129
132
  - For consensus/ralplan final output: **ADR** (Decision, Drivers, Alternatives considered, Why chosen, Consequences, Follow-ups)
130
- - For consensus/ralplan execution handoff: **Available-Agent-Types Roster**, **Follow-up Staffing Guidance** (including suggested reasoning levels by lane), explicit `omx team` / `$team` **Launch Hints**, and **Team Verification Path**
133
+ - For consensus/ralplan execution handoff: **Available-Agent-Types Roster**, **Follow-up Staffing Guidance** (including suggested reasoning levels by lane), product-facing **Goal-Mode Follow-up Suggestions** (`$ultragoal`, `$autoresearch-goal`, `$performance-goal` when contextually appropriate), explicit `omx team` / `$team` **Launch Hints**, and **Team Verification Path**
131
134
  - For deliberate consensus mode: **Pre-mortem (3 scenarios)** and **Expanded Test Plan** (unit/integration/e2e/observability)
132
135
 
133
136
  Plans are saved to `.omx/plans/`. Drafts go to `.omx/drafts/`.
@@ -146,8 +149,8 @@ Plans are saved to `.omx/plans/`. Drafts go to `.omx/drafts/`.
146
149
  - **CRITICAL — Consensus mode agent calls MUST be sequential, never parallel.** Always await the Architect result before issuing the Critic call.
147
150
  - In consensus mode, default to RALPLAN-DR short mode; enable deliberate mode on `--deliberate` or explicit high-risk signals (auth/security, migrations, destructive changes, production incidents, compliance/PII, public API breakage)
148
151
  - In consensus mode with `--interactive`: use `AskUserQuestion` / the structured question UI for the user feedback step (step 2) and the final approval step (step 7) -- never ask for approval in plain text when a structured surface is available. Without `--interactive`, auto-proceed through planning steps without pausing. Output the final plan without execution.
149
- - In consensus mode with `--interactive`, on user approval **MUST** invoke `$ralph` for execution (step 9) -- never implement directly in the planning agent
150
- - In consensus mode, execution follow-up handoff **MUST** include an explicit available-agent-types roster plus concrete staffing / role-allocation guidance grounded in that roster, suggested reasoning levels by lane, explicit `omx team` / `$team` launch hints, and a team verification path
152
+ - In consensus mode with `--interactive`, on user approval **MUST** invoke the selected follow-up lane from step 9 (`$ralph`, `$team`, `$ultragoal`, `$autoresearch-goal`, or `$performance-goal`) -- never implement directly in the planning agent
153
+ - In consensus mode, execution follow-up handoff **MUST** include an explicit available-agent-types roster plus concrete staffing / role-allocation guidance grounded in that roster, suggested reasoning levels by lane, product-facing goal-mode follow-up suggestions (`$ultragoal` generally, `$autoresearch-goal` for research projects, `$performance-goal` for optimization/performance projects), explicit `omx team` / `$team` launch hints, and a team verification path
151
154
  </Tool_Usage>
152
155
 
153
156