lazycodex-ai 5.0.0-beta.62 → 5.0.0-beta.64

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 (215) hide show
  1. package/dist/cli/doctor/checks/browser-provider.d.ts +2 -0
  2. package/dist/cli/index.js +70 -41
  3. package/dist/cli-node/index.js +70 -41
  4. package/package.json +2 -6
  5. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  6. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +4 -2
  7. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  8. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  9. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  10. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  11. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  12. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  13. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  14. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  15. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  16. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  17. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  18. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  19. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  20. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  21. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  22. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  23. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  24. package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +2 -2
  25. package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +5 -4
  26. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  27. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  28. package/packages/omo-codex/plugin/components/ultrawork/src/directive-content.ts +1 -1
  29. package/packages/omo-codex/plugin/components/ulw-execute-continuation/directive.md +1 -1
  30. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  31. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  32. package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +13 -0
  33. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +5 -4
  34. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.d.ts +7 -5
  35. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.js +7 -2
  36. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +7 -4
  37. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +931 -442
  38. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.d.ts +6 -0
  39. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.js +20 -12
  40. package/packages/omo-codex/plugin/components/ulw-loop/dist/domain-types.d.ts +8 -0
  41. package/packages/omo-codex/plugin/components/ulw-loop/dist/driver-objective-ack.d.ts +4 -0
  42. package/packages/omo-codex/plugin/components/ulw-loop/dist/driver-objective-ack.js +18 -0
  43. package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence-artifacts.d.ts +1 -0
  44. package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence-artifacts.js +37 -0
  45. package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence.d.ts +1 -0
  46. package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence.js +24 -12
  47. package/packages/omo-codex/plugin/components/ulw-loop/dist/ledger.d.ts +4 -0
  48. package/packages/omo-codex/plugin/components/ulw-loop/dist/ledger.js +34 -0
  49. package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.d.ts +1 -0
  50. package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.js +6 -0
  51. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-commit.d.ts +19 -0
  52. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-commit.js +107 -0
  53. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.d.ts +6 -2
  54. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.js +54 -25
  55. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-goal-factory.d.ts +10 -3
  56. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-goal-factory.js +38 -31
  57. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.d.ts +9 -7
  58. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.js +105 -114
  59. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-log.d.ts +15 -0
  60. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-log.js +86 -0
  61. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-missing-recovery.d.ts +5 -1
  62. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-missing-recovery.js +15 -3
  63. package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.js +11 -8
  64. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/factory.js +28 -12
  65. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/manifest.d.ts +335 -0
  66. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/manifest.js +109 -10
  67. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/types.d.ts +3 -0
  68. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-budget-io.d.ts +5 -0
  69. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-budget-io.js +67 -0
  70. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.js +8 -62
  71. package/packages/omo-codex/plugin/components/ulw-loop/dist/state-lock.d.ts +11 -1
  72. package/packages/omo-codex/plugin/components/ulw-loop/dist/state-lock.js +120 -88
  73. package/packages/omo-codex/plugin/components/ulw-loop/dist/status-next-actions.d.ts +3 -2
  74. package/packages/omo-codex/plugin/components/ulw-loop/dist/status-next-actions.js +18 -10
  75. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-batch.js +4 -4
  76. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-mutations.d.ts +3 -2
  77. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-mutations.js +4 -4
  78. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-types.d.ts +9 -1
  79. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering.d.ts +3 -2
  80. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering.js +11 -11
  81. package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +8 -17
  82. package/packages/omo-codex/plugin/components/ulw-loop/dist/success-criteria-input.d.ts +9 -0
  83. package/packages/omo-codex/plugin/components/ulw-loop/dist/success-criteria-input.js +41 -0
  84. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  85. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  86. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +2 -2
  87. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-codex-validation.ts +15 -3
  88. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +7 -4
  89. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-snapshot.ts +26 -14
  90. package/packages/omo-codex/plugin/components/ulw-loop/src/domain-types.ts +8 -0
  91. package/packages/omo-codex/plugin/components/ulw-loop/src/driver-objective-ack.ts +20 -0
  92. package/packages/omo-codex/plugin/components/ulw-loop/src/evidence-artifacts.ts +45 -0
  93. package/packages/omo-codex/plugin/components/ulw-loop/src/evidence.ts +23 -16
  94. package/packages/omo-codex/plugin/components/ulw-loop/src/ledger.ts +33 -0
  95. package/packages/omo-codex/plugin/components/ulw-loop/src/paths.ts +7 -0
  96. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-commit.ts +124 -0
  97. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-crud.ts +67 -54
  98. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-goal-factory.ts +63 -31
  99. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-io.ts +126 -140
  100. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-log.ts +84 -0
  101. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-missing-recovery.ts +26 -3
  102. package/packages/omo-codex/plugin/components/ulw-loop/src/review-blockers.ts +11 -7
  103. package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/factory.ts +47 -12
  104. package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/manifest.ts +124 -10
  105. package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/types.ts +3 -0
  106. package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-budget-io.ts +59 -0
  107. package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-guard.ts +8 -59
  108. package/packages/omo-codex/plugin/components/ulw-loop/src/state-lock.ts +129 -111
  109. package/packages/omo-codex/plugin/components/ulw-loop/src/status-next-actions.ts +19 -10
  110. package/packages/omo-codex/plugin/components/ulw-loop/src/steering-batch.ts +4 -4
  111. package/packages/omo-codex/plugin/components/ulw-loop/src/steering-mutations.ts +5 -4
  112. package/packages/omo-codex/plugin/components/ulw-loop/src/steering-types.ts +13 -1
  113. package/packages/omo-codex/plugin/components/ulw-loop/src/steering.ts +12 -10
  114. package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +8 -16
  115. package/packages/omo-codex/plugin/components/ulw-loop/src/success-criteria-input.ts +56 -0
  116. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-snapshot.test.ts +37 -1
  117. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/barrier.ts +13 -0
  118. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-child.ts +65 -0
  119. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-cli-qa.mjs +76 -0
  120. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-crash.ts +23 -0
  121. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-mutations.mjs +58 -0
  122. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-writer.ts +65 -0
  123. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/lease-clock.ts +23 -0
  124. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-commit-log.test.ts +252 -0
  125. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-commit-recovery.test.ts +190 -0
  126. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-io.test.ts +50 -35
  127. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-log-newest.test.ts +72 -0
  128. package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-completed-plan.test.ts +43 -0
  129. package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-driver-states.test.ts +33 -4
  130. package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-dx.test.ts +219 -0
  131. package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-session-context.test.ts +21 -0
  132. package/packages/omo-codex/plugin/components/ulw-loop/test/state-lock.test.ts +92 -0
  133. package/packages/omo-codex/plugin/components/ulw-loop/test/status-next-actions-surface.test.ts +133 -0
  134. package/packages/omo-codex/plugin/components/ulw-loop/test/steering-batch.test.ts +12 -12
  135. package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +4 -1
  136. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  137. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  138. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  139. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  140. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  141. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  142. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  143. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  144. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  145. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  146. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  147. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  148. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  149. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  150. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  151. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  152. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  153. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  154. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  155. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  156. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  157. package/packages/omo-codex/plugin/package-lock.json +12 -12
  158. package/packages/omo-codex/plugin/package.json +1 -1
  159. package/packages/omo-codex/plugin/scripts/sync-skills.d.mts +4 -0
  160. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +15 -7
  161. package/packages/omo-codex/plugin/skills/ast-grep/SKILL.md +12 -0
  162. package/packages/omo-codex/plugin/skills/debugging/references/tools/playwright-cli.md +79 -161
  163. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +1 -1
  164. package/packages/omo-codex/plugin/skills/frontend/references/design/aside.md +1 -1
  165. package/packages/omo-codex/plugin/skills/frontend/references/design/clone-from-url.md +1 -1
  166. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/lighthouse-audit.py +2 -2
  167. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +1 -1
  168. package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +1 -82
  169. package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +17 -29
  170. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +2 -1
  171. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +2 -2
  172. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/playwright_mobile_chrome.js +5 -2
  173. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/playwright_real_chrome.js +8 -6
  174. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_playwright_stealth.py +86 -0
  175. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_playwright_templates.py +4 -7
  176. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +86 -100
  177. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +9 -3
  178. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/playwright.md +16 -13
  179. package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/extract_cookies.py +3 -3
  180. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +5 -4
  181. package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +1 -1
  182. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +2 -2
  183. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +3 -3
  184. package/packages/omo-codex/plugin/skills/visual-qa/AGENTS.md +1 -1
  185. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +1 -1
  186. package/packages/omo-codex/plugin/skills/visual-qa/references/browser-setup.md +75 -0
  187. package/packages/omo-codex/scripts/install-dist/install-local.mjs +6 -4
  188. package/packages/prompts-core/prompts/ultrawork/codex.md +5 -4
  189. package/packages/shared-skills/skills/ast-grep/SKILL.md +12 -0
  190. package/packages/shared-skills/skills/debugging/references/tools/playwright-cli.md +79 -161
  191. package/packages/shared-skills/skills/frontend/SKILL.md +1 -1
  192. package/packages/shared-skills/skills/frontend/references/design/aside.md +1 -1
  193. package/packages/shared-skills/skills/frontend/references/design/clone-from-url.md +1 -1
  194. package/packages/shared-skills/skills/frontend/scripts/perfection/lighthouse-audit.py +2 -2
  195. package/packages/shared-skills/skills/review-work/SKILL.md +1 -1
  196. package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +1 -82
  197. package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +17 -29
  198. package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +2 -1
  199. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +2 -2
  200. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/playwright_mobile_chrome.js +5 -2
  201. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/playwright_real_chrome.js +8 -6
  202. package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_playwright_stealth.py +86 -0
  203. package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_playwright_templates.py +4 -7
  204. package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +86 -100
  205. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +9 -3
  206. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/playwright.md +16 -13
  207. package/packages/shared-skills/skills/ultimate-browsing/scripts/extract_cookies.py +3 -3
  208. package/packages/shared-skills/skills/ulw-execute/SKILL.md +1 -1
  209. package/packages/shared-skills/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
  210. package/packages/shared-skills/skills/ulw-research/SKILL.md +3 -3
  211. package/packages/shared-skills/skills/visual-qa/AGENTS.md +1 -1
  212. package/packages/shared-skills/skills/visual-qa/SKILL.md +1 -1
  213. package/packages/shared-skills/skills/visual-qa/references/browser-setup.md +75 -0
  214. package/packages/omo-codex/plugin/skills/visual-qa/references/agent-browser-setup.md +0 -45
  215. package/packages/shared-skills/skills/visual-qa/references/agent-browser-setup.md +0 -45
@@ -3,10 +3,12 @@ import { existsSync, statSync } from "node:fs";
3
3
  import { readFile } from "node:fs/promises";
4
4
  import { resolve } from "node:path";
5
5
  import { combineCheckpointValidationErrors, validateCheckpointCodexGoal, } from "./checkpoint-codex-validation.js";
6
+ import { acknowledgeDriverObjective } from "./driver-objective-ack.js";
6
7
  import { requireAllCriteriaPass, requireAllPlanCriteriaPass, requireEssentialCriteriaPass } from "./evidence.js";
7
8
  import { codexGoalMode, isFinalRunCompletionCandidate } from "./goal-status.js";
8
9
  import { ulwLoopAttemptEvidenceDir } from "./paths.js";
9
- import { appendLedger, readUlwLoopPlan, withUlwLoopMutationLock, writePlan } from "./plan-io.js";
10
+ import { commit } from "./plan-commit.js";
11
+ import { readUlwLoopPlan, withUlwLoopMutationLock } from "./plan-io.js";
10
12
  import { classifyExternalAuthorizationBlocker, clearGoalBlockerFields, sameBlockerOccurrences, validateQualityGate, } from "./quality-gate.js";
11
13
  import { resolveToolkitSurface } from "./surface.js";
12
14
  import { iso, UlwLoopError } from "./types.js";
@@ -138,6 +140,7 @@ export async function checkpointUlwLoop(repoRoot, args, scope, dependencies) {
138
140
  codexGoal = validation.raw;
139
141
  nextActions = validation.nextActions;
140
142
  warnings = validation.warnings;
143
+ acknowledgeDriverObjective(plan, validation.unacknowledgedObjective);
141
144
  }
142
145
  catch (error) {
143
146
  if (!(error instanceof UlwLoopError))
@@ -187,12 +190,12 @@ export async function checkpointUlwLoop(repoRoot, args, scope, dependencies) {
187
190
  if (aggregateCompletion !== undefined)
188
191
  nextActions = [...nextActions, 'aggregate complete — now update_goal({status:"complete"})'];
189
192
  plan.updatedAt = now;
190
- await writePlan(repoRoot, plan, scope);
191
193
  const ledgerEntry = buildLedger(now, args, goal, qualityGate, codexGoal, aggregateCompletion);
192
- await appendLedger(repoRoot, ledgerEntry, scope);
194
+ const entries = [ledgerEntry];
193
195
  const closedBatch = args.status === "complete" ? batchClosedBy(plan, goal.id) : undefined;
194
196
  if (closedBatch !== undefined)
195
- await appendLedger(repoRoot, { at: now, kind: "batch_closed", goalId: goal.id, message: closedBatch.batchId }, scope);
197
+ entries.push({ at: now, kind: "batch_closed", goalId: goal.id, message: closedBatch.batchId });
198
+ await commit(repoRoot, scope, { plan, entries });
196
199
  return aggregateCompletion === undefined
197
200
  ? { plan, goal, ledgerEntry, nextActions, warnings }
198
201
  : { plan, goal, ledgerEntry, aggregateCompletion, nextActions, warnings };