oh-my-opencode 4.18.1 → 4.18.2

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 (116) hide show
  1. package/.agents/skills/codex-qa/scripts/lsp-e2e.sh +39 -16
  2. package/.agents/skills/opencode-qa/scripts/lsp-e2e.sh +111 -28
  3. package/bin/AGENTS.md +33 -0
  4. package/dist/cli/index.js +57 -18
  5. package/dist/cli-node/index.js +57 -18
  6. package/dist/hooks/anthropic-context-window-limit-recovery/empty-content-recovery-sdk.d.ts +6 -0
  7. package/dist/hooks/category-skill-reminder/hook.d.ts +9 -1
  8. package/dist/hooks/comment-checker/hook.d.ts +8 -1
  9. package/dist/hooks/todo-continuation-enforcer/types.d.ts +3 -0
  10. package/dist/index.js +560 -333
  11. package/dist/plugin/messages-transform.d.ts +1 -0
  12. package/dist/plugin-handlers/prometheus-agent-config-builder.d.ts +2 -0
  13. package/dist/tui.js +43 -4
  14. package/package.json +13 -13
  15. package/packages/git-bash-mcp/dist/cli.js +81 -19
  16. package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +4 -4
  17. package/packages/lsp-core/src/lsp/directory-diagnostics.test.ts +118 -1
  18. package/packages/lsp-core/src/lsp/directory-diagnostics.ts +1 -1
  19. package/packages/lsp-daemon/dist/cli.js +262 -63
  20. package/packages/lsp-daemon/dist/client.js +194 -50
  21. package/packages/lsp-daemon/dist/daemon-client.d.ts +2 -2
  22. package/packages/lsp-daemon/dist/daemon-client.js +26 -2
  23. package/packages/lsp-daemon/dist/ensure-daemon.d.ts +5 -4
  24. package/packages/lsp-daemon/dist/ensure-daemon.js +79 -18
  25. package/packages/lsp-daemon/dist/index.js +262 -63
  26. package/packages/lsp-daemon/dist/proxy.d.ts +2 -0
  27. package/packages/lsp-daemon/dist/proxy.js +79 -23
  28. package/packages/lsp-tools-mcp/dist/cli.js +82 -20
  29. package/packages/lsp-tools-mcp/dist/mcp.js +82 -20
  30. package/packages/lsp-tools-mcp/dist/tools.js +1 -1
  31. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  32. package/packages/omo-codex/plugin/.mcp.json +2 -1
  33. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  34. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  35. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +100 -28
  36. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +100 -28
  37. package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
  38. package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +21 -9
  39. package/packages/omo-codex/plugin/components/codegraph/test/mcp-bridge-fixtures.ts +35 -0
  40. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge-lifecycle.test.ts +69 -0
  41. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge.test.ts +57 -1
  42. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  43. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  44. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  45. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  46. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  47. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  48. package/packages/omo-codex/plugin/components/lsp/.mcp.json +2 -1
  49. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
  50. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +113 -31
  51. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  52. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  53. package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +1 -0
  54. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-5.5.md +1 -1
  55. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-5.6.md +5 -3
  56. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  57. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  58. package/packages/omo-codex/plugin/components/start-work-continuation/README.md +2 -2
  59. package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +3 -3
  60. package/packages/omo-codex/plugin/components/start-work-continuation/dist/cli.js +2 -2
  61. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
  62. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
  63. package/packages/omo-codex/plugin/components/start-work-continuation/src/boulder-reader.ts +1 -1
  64. package/packages/omo-codex/plugin/components/start-work-continuation/src/codex-hook.ts +1 -1
  65. package/packages/omo-codex/plugin/components/start-work-continuation/test/boulder-reader.test.ts +15 -1
  66. package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +20 -0
  67. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  68. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  69. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  70. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  71. package/packages/omo-codex/plugin/components/ultrawork/directive.md +50 -33
  72. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  73. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  74. package/packages/omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md +50 -33
  75. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +50 -33
  76. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +3 -3
  77. package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +5 -6
  78. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  79. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  80. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +1 -1
  81. package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +5 -6
  82. package/packages/omo-codex/plugin/components/ulw-loop/test/stop-resume-hook.test.ts +2 -2
  83. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  84. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  85. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  86. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
  87. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  88. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  89. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  90. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  91. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  92. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  93. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  94. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  95. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  96. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
  97. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  98. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  99. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
  100. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  101. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
  102. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  103. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  104. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  105. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  106. package/packages/omo-codex/plugin/package-lock.json +13 -13
  107. package/packages/omo-codex/plugin/package.json +1 -1
  108. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +10 -2
  109. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +7 -0
  110. package/packages/omo-codex/plugin/skills/start-work/SKILL.md +3 -2
  111. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +50 -33
  112. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +1 -1
  113. package/packages/omo-codex/plugin/test/mcp-research-servers.test.mjs +1 -0
  114. package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +7 -0
  115. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +35 -4
  116. package/packages/omo-codex/scripts/install-dist/install-local.mjs +1 -1
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/components/teammode/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 10,
11
- "statusMessage": "(OmO 4.18.1) Checking Thread Title Hygiene",
11
+ "statusMessage": "(OmO 4.18.2) Checking Thread Title Hygiene",
12
12
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\teammode\\dist\\cli.js\" hook post-tool-use"
13
13
  }
14
14
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook post-tool-use",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 4.18.1) Matching Project Rules",
10
+ "statusMessage": "(OmO 4.18.2) Matching Project Rules",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\rules\\dist\\cli.js\" hook post-tool-use"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook pre-tool-use",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 4.18.1) Enforcing Unlimited Goal Budget",
10
+ "statusMessage": "(OmO 4.18.2) Enforcing Unlimited Goal Budget",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook pre-tool-use"
12
12
  }
13
13
  ],
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook pre-tool-use-spawn",
10
10
  "timeout": 5,
11
- "statusMessage": "(OmO 4.18.1) Guarding Ulw-Loop Spawns",
11
+ "statusMessage": "(OmO 4.18.2) Guarding Ulw-Loop Spawns",
12
12
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook pre-tool-use-spawn"
13
13
  }
14
14
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/git-bash/dist/cli.js\" hook pre-tool-use",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 4.18.1) Recommending Git Bash MCP",
10
+ "statusMessage": "(OmO 4.18.2) Recommending Git Bash MCP",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\git-bash\\dist\\cli.js\" hook pre-tool-use"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/scripts/auto-update.mjs\" hook session-start",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 4.18.1) Checking Auto Update",
10
+ "statusMessage": "(OmO 4.18.2) Checking Auto Update",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\scripts\\auto-update.mjs\" hook session-start"
12
12
  }
13
13
  ],
@@ -8,7 +8,7 @@
8
8
  "command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
9
9
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
10
10
  "timeout": 30,
11
- "statusMessage": "(OmO 4.18.1) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 4.18.2) Checking Bootstrap Provisioning"
12
12
  }
13
13
  ]
14
14
  }
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/codegraph/dist/cli.js\" hook session-start",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 4.18.1) Checking CodeGraph Bootstrap",
10
+ "statusMessage": "(OmO 4.18.2) Checking CodeGraph Bootstrap",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\codegraph\\dist\\cli.js\" hook session-start"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook session-start",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 4.18.1) Loading Project Rules",
10
+ "statusMessage": "(OmO 4.18.2) Loading Project Rules",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\rules\\dist\\cli.js\" hook session-start"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/telemetry/dist/cli.js\" hook session-start",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 4.18.1) Recording Session Telemetry",
10
+ "statusMessage": "(OmO 4.18.2) Recording Session Telemetry",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\telemetry\\dist\\cli.js\" hook session-start"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/start-work-continuation/dist/cli.js\" hook stop",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 4.18.1) Checking Start-Work Continuation",
10
+ "statusMessage": "(OmO 4.18.2) Checking Start-Work Continuation",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\start-work-continuation\\dist\\cli.js\" hook stop"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook stop",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 4.18.1) Checking Ulw-Loop Resume",
10
+ "statusMessage": "(OmO 4.18.2) Checking Ulw-Loop Resume",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook stop"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/start-work-continuation/dist/cli.js\" hook subagent-stop",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 4.18.1) Checking Start-Work Continuation",
10
+ "statusMessage": "(OmO 4.18.2) Checking Start-Work Continuation",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\start-work-continuation\\dist\\cli.js\" hook subagent-stop"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/lazycodex-executor-verify/dist/cli.js\" hook subagent-stop",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 4.18.1) Verifying LazyCodex Executor Evidence",
10
+ "statusMessage": "(OmO 4.18.2) Verifying LazyCodex Executor Evidence",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\lazycodex-executor-verify\\dist\\cli.js\" hook subagent-stop"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/ultrawork/dist/cli.js\" hook user-prompt-submit",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 4.18.1) Checking Ultrawork Trigger",
10
+ "statusMessage": "(OmO 4.18.2) Checking Ultrawork Trigger",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ultrawork\\dist\\cli.js\" hook user-prompt-submit"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook user-prompt-submit",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 4.18.1) Checking Ulw-Loop Steering",
10
+ "statusMessage": "(OmO 4.18.2) Checking Ulw-Loop Steering",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook user-prompt-submit"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook user-prompt-submit",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 4.18.1) Loading Project Rules",
10
+ "statusMessage": "(OmO 4.18.2) Loading Project Rules",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\rules\\dist\\cli.js\" hook user-prompt-submit"
12
12
  }
13
13
  ]
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/omo-codex-plugin",
3
- "version": "4.18.1",
3
+ "version": "4.18.2",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@sisyphuslabs/omo-codex-plugin",
9
- "version": "4.18.1",
9
+ "version": "4.18.2",
10
10
  "workspaces": [
11
11
  "components/codegraph",
12
12
  "components/comment-checker",
@@ -100,7 +100,7 @@
100
100
  },
101
101
  "components/codegraph": {
102
102
  "name": "@sisyphuslabs/codex-codegraph",
103
- "version": "4.18.1",
103
+ "version": "4.18.2",
104
104
  "bin": {
105
105
  "omo-codegraph": "dist/cli.js"
106
106
  },
@@ -119,7 +119,7 @@
119
119
  },
120
120
  "components/comment-checker": {
121
121
  "name": "@code-yeongyu/codex-comment-checker",
122
- "version": "4.18.1",
122
+ "version": "4.18.2",
123
123
  "license": "MIT",
124
124
  "bin": {
125
125
  "omo-comment-checker": "dist/cli.js"
@@ -140,7 +140,7 @@
140
140
  },
141
141
  "components/git-bash": {
142
142
  "name": "@sisyphuslabs/codex-git-bash-hook",
143
- "version": "4.18.1",
143
+ "version": "4.18.2",
144
144
  "bin": {
145
145
  "omo-git-bash-hook": "dist/cli.js"
146
146
  },
@@ -155,7 +155,7 @@
155
155
  },
156
156
  "components/lazycodex-executor-verify": {
157
157
  "name": "@code-yeongyu/codex-lazycodex-executor-verify",
158
- "version": "4.18.1",
158
+ "version": "4.18.2",
159
159
  "license": "MIT",
160
160
  "bin": {
161
161
  "lazycodex-executor-verify": "dist/cli.js"
@@ -172,7 +172,7 @@
172
172
  },
173
173
  "components/lsp": {
174
174
  "name": "@code-yeongyu/codex-lsp",
175
- "version": "4.18.1",
175
+ "version": "4.18.2",
176
176
  "license": "MIT",
177
177
  "dependencies": {
178
178
  "@code-yeongyu/lsp-daemon": "file:../../../../lsp-daemon",
@@ -193,7 +193,7 @@
193
193
  },
194
194
  "components/rules": {
195
195
  "name": "@code-yeongyu/codex-rules",
196
- "version": "4.18.1",
196
+ "version": "4.18.2",
197
197
  "license": "MIT",
198
198
  "dependencies": {
199
199
  "picomatch": "^4.0.3"
@@ -215,7 +215,7 @@
215
215
  },
216
216
  "components/start-work-continuation": {
217
217
  "name": "@code-yeongyu/codex-start-work-continuation",
218
- "version": "4.18.1",
218
+ "version": "4.18.2",
219
219
  "license": "MIT",
220
220
  "bin": {
221
221
  "omo-start-work-continuation": "dist/cli.js"
@@ -232,7 +232,7 @@
232
232
  },
233
233
  "components/teammode": {
234
234
  "name": "@sisyphuslabs/codex-teammode",
235
- "version": "4.18.1",
235
+ "version": "4.18.2",
236
236
  "devDependencies": {
237
237
  "@types/node": "^25.9.3",
238
238
  "bun-types": "^1.3.1",
@@ -245,7 +245,7 @@
245
245
  },
246
246
  "components/telemetry": {
247
247
  "name": "@code-yeongyu/codex-telemetry",
248
- "version": "4.18.1",
248
+ "version": "4.18.2",
249
249
  "license": "MIT",
250
250
  "bin": {
251
251
  "omo-telemetry": "dist/cli.js"
@@ -263,7 +263,7 @@
263
263
  },
264
264
  "components/ultrawork": {
265
265
  "name": "@code-yeongyu/codex-ultrawork",
266
- "version": "4.18.1",
266
+ "version": "4.18.2",
267
267
  "license": "MIT",
268
268
  "bin": {
269
269
  "omo-ultrawork": "dist/cli.js"
@@ -281,7 +281,7 @@
281
281
  },
282
282
  "components/ulw-loop": {
283
283
  "name": "@code-yeongyu/codex-ulw-loop",
284
- "version": "4.18.1",
284
+ "version": "4.18.2",
285
285
  "license": "MIT",
286
286
  "bin": {
287
287
  "omo-ulw-loop": "dist/cli.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/omo-codex-plugin",
3
- "version": "4.18.1",
3
+ "version": "4.18.2",
4
4
  "description": "Aggregate Codex plugin root for OMO components.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -132,9 +132,10 @@ const startWorkOriginalCompletion = `When all top-level checkboxes in \`## TODOs
132
132
  const startWorkCodexCompletion = `When all top-level checkboxes in \`## TODOs\` and \`## Final Verification Wave\` are complete:
133
133
 
134
134
  1. Run the plan's final verification commands.
135
- 2. Complete the **Global Review and Debugging Gate** before any completion claim, PR creation, PR handoff, branch handoff, or merge. The gate's pass binds to the commit SHA it reviewed and covers every later checkpoint at that same SHA — never re-run it on an already-passed SHA; re-run only when new commits land:
135
+ 2. Complete the **Global Review and Debugging Gate** before any completion claim, PR creation, PR handoff, branch handoff, or merge:
136
136
  - Invoke the \`review-work\` skill with the final diff, changed files, user goal, constraints, run command, and verification evidence. All five review lanes must return PASS. A timeout, missing deliverable, ack-only child, \`BLOCKED:\`, or inconclusive lane is a gate failure, not approval.
137
- - Run a debugging-oriented runtime audit even when the review passes: name at least three plausible failure hypotheses for the changed surface, run the distinguishing checks against the actual artifact, and append the ruled-out or confirmed result to \`.omo/start-work/ledger.jsonl\`.
137
+ - Each passing review lane binds to the exact full commit SHA it reviewed. Immediately append a durable record to \`.omo/start-work/ledger.jsonl\` with the lane name, full SHA, PASS verdict, and report artifact/source. Before same-SHA reuse after any continuation or compaction, re-read the ledger record and require the exact lane/SHA pair; memory, chat history, or an unstamped report is not coverage. New commits require fresh applicable lane coverage.
138
+ - Run a debugging-oriented runtime audit even when the review passes: name at least three plausible failure hypotheses for the changed surface, run the distinguishing checks against the actual artifact, and append a separate durable record with the audit name, exact full SHA, verdict, and evidence artifact/source to \`.omo/start-work/ledger.jsonl\`. Reuse it only after re-reading an exact audit/SHA match.
138
139
  - If any review lane or debugging hypothesis fails, invoke the \`debugging\` skill, confirm root cause with runtime evidence, add the minimal failing test or reproduction, fix it, rerun the affected verification, then rerun the Global Review and Debugging Gate.
139
140
  - Evidence hygiene is mandatory: redact or mask secrets and sensitive user data before writing \`.omo/start-work/ledger.jsonl\`, a PR body, or a handoff. Never include raw tokens, credentials, auth headers, cookies, API keys, env dumps, private logs, or PII; use concise summaries, lengths, hashes, or short non-sensitive prefixes instead.
140
141
  - If the work includes creating, updating, or handing off a PR, refresh \`git status\` and the PR/branch state from the task-owned worktree after the gate, and include only redacted review/debugging evidence in the PR body or handoff.
@@ -156,6 +157,13 @@ failed, investigate the underlying uncertainty with the \`debugging\` skill when
156
157
  runtime behavior may be wrong, fix with evidence, and rerun the affected lane
157
158
  before claiming completion, creating or handing off a PR, or merging.
158
159
 
160
+ After each lane reaches PASS, immediately append a durable task-evidence record
161
+ to the active ledger with the lane name, exact full commit SHA, PASS verdict,
162
+ and report artifact/source. Before reusing coverage after continuation or
163
+ compaction, re-read that record and require the exact lane/SHA pair. Memory,
164
+ chat history, or an unstamped report is not coverage; a new commit requires
165
+ fresh applicable lane records.
166
+
159
167
  A rejecting lane must name its blockers inline in its final message — each
160
168
  blocker cites the violated goal criterion or requirement plus an evidence
161
169
  pointer. A bare REJECT/FAIL token without findings is not a verdict; treat it
@@ -70,6 +70,13 @@ failed, investigate the underlying uncertainty with the `debugging` skill when
70
70
  runtime behavior may be wrong, fix with evidence, and rerun the affected lane
71
71
  before claiming completion, creating or handing off a PR, or merging.
72
72
 
73
+ After each lane reaches PASS, immediately append a durable task-evidence record
74
+ to the active ledger with the lane name, exact full commit SHA, PASS verdict,
75
+ and report artifact/source. Before reusing coverage after continuation or
76
+ compaction, re-read that record and require the exact lane/SHA pair. Memory,
77
+ chat history, or an unstamped report is not coverage; a new commit requires
78
+ fresh applicable lane records.
79
+
73
80
  A rejecting lane must name its blockers inline in its final message — each
74
81
  blocker cites the violated goal criterion or requirement plus an evidence
75
82
  pointer. A bare REJECT/FAIL token without findings is not a verdict; treat it
@@ -176,9 +176,10 @@ Only after verification passes:
176
176
  When all top-level checkboxes in `## TODOs` and `## Final Verification Wave` are complete:
177
177
 
178
178
  1. Run the plan's final verification commands.
179
- 2. Complete the **Global Review and Debugging Gate** before any completion claim, PR creation, PR handoff, branch handoff, or merge. The gate's pass binds to the commit SHA it reviewed and covers every later checkpoint at that same SHA — never re-run it on an already-passed SHA; re-run only when new commits land:
179
+ 2. Complete the **Global Review and Debugging Gate** before any completion claim, PR creation, PR handoff, branch handoff, or merge:
180
180
  - Invoke the `review-work` skill with the final diff, changed files, user goal, constraints, run command, and verification evidence. All five review lanes must return PASS. A timeout, missing deliverable, ack-only child, `BLOCKED:`, or inconclusive lane is a gate failure, not approval.
181
- - Run a debugging-oriented runtime audit even when the review passes: name at least three plausible failure hypotheses for the changed surface, run the distinguishing checks against the actual artifact, and append the ruled-out or confirmed result to `.omo/start-work/ledger.jsonl`.
181
+ - Each passing review lane binds to the exact full commit SHA it reviewed. Immediately append a durable record to `.omo/start-work/ledger.jsonl` with the lane name, full SHA, PASS verdict, and report artifact/source. Before same-SHA reuse after any continuation or compaction, re-read the ledger record and require the exact lane/SHA pair; memory, chat history, or an unstamped report is not coverage. New commits require fresh applicable lane coverage.
182
+ - Run a debugging-oriented runtime audit even when the review passes: name at least three plausible failure hypotheses for the changed surface, run the distinguishing checks against the actual artifact, and append a separate durable record with the audit name, exact full SHA, verdict, and evidence artifact/source to `.omo/start-work/ledger.jsonl`. Reuse it only after re-reading an exact audit/SHA match.
182
183
  - If any review lane or debugging hypothesis fails, invoke the `debugging` skill, confirm root cause with runtime evidence, add the minimal failing test or reproduction, fix it, rerun the affected verification, then rerun the Global Review and Debugging Gate.
183
184
  - Evidence hygiene is mandatory: redact or mask secrets and sensitive user data before writing `.omo/start-work/ledger.jsonl`, a PR body, or a handoff. Never include raw tokens, credentials, auth headers, cookies, API keys, env dumps, private logs, or PII; use concise summaries, lengths, hashes, or short non-sensitive prefixes instead.
184
185
  - If the work includes creating, updating, or handing off a PR, refresh `git status` and the PR/branch state from the task-owned worktree after the gate, and include only redacted review/debugging evidence in the PR body or handoff.
@@ -112,9 +112,7 @@ notepad with a one-line reason each. Skipping a skill that fits the
112
112
  task is a defect. Open a skill's body only when THIS session will
113
113
  execute its workflow; skills a delegated session needs are named in
114
114
  its prompt and read there, not here.
115
- Next, fire the first discovery wave in ONE parallel action (Finding
116
- things below): direct lookups plus `explorer` / `librarian` children
117
- for unfamiliar layout or external contracts.
115
+ Next, fire the first discovery wave under Finding things below.
118
116
  Then run Tier triage (above) on the change set and record the tier —
119
117
  tier sizes evidence and review, never who plans. Size planning by
120
118
  what the wave left UNDECIDED, not by how many steps you can list:
@@ -214,25 +212,27 @@ GOOD pair (test-first, ordered):
214
212
  BAD: "Implement feature" / "Fix bug" / "Add tests later" / writing
215
213
  production code before its failing test → rewrite.
216
214
 
217
- # Finding things (lead with these, parallel-flood the first wave)
215
+ # Finding things (lead with these, code-mode the first wave)
218
216
  Never guess from memory — locate with the right tool, and re-read before
219
- you claim or change. Fire 3+ independent lookups in one action;
220
- serialize only when one output strictly feeds the next.
221
- - CodeGraph, when `codegraph_*` tools exist -> use `codegraph_explore`
222
- first for how/where/what/flow questions and before edits; if absent,
223
- inactive/uninitialized, or cold-start unavailable, keep moving with
224
- Read/Grep/Glob/LSP and the ast-grep skill.
225
- - Repo-wide inspection, CLI smoke tests, git/history, bounded command
226
- output use native shell commands directly: `rg`, `rg --files`,
227
- `cat`, and `git`. Narrow huge output before reading it.
228
- - Symbols definitions, references, rename impact, diagnostics →
229
- `lsp_goto_definition`, `lsp_find_references`, `lsp_symbols`,
230
- `lsp_diagnostics`. Use the LSP, not text search, for anything
231
- symbol-shaped.
232
- - Structural shapes call/function/class/import patterns, codemods →
233
- the `ast-grep` skill or `sg` CLI with `$VAR` / `$$$` metavars.
234
- - Text / strings / comments / logs → `rg`. File-name discovery →
235
- `glob` / `find`. Verbatim content `read`.
217
+ you claim or change. **USE CODE MODE AGGRESSIVELY FOR BOUNDED WAVES.**
218
+ When multiple independent tool calls produce results that can be materially
219
+ filtered, joined, deduplicated, or reduced, make ONE `exec` / eval JavaScript
220
+ program that calls eligible tools concurrently with `Promise.all` and emits only
221
+ decision-relevant evidence. For shell-native repo work without programmatic
222
+ tool access, use ONE Python script with `concurrent.futures`, `subprocess`,
223
+ and utility functions to batch commands and reduce output. Keep direct calls
224
+ when one result chooses the next action, outputs are already small, semantic
225
+ judgment is required between calls, approval or side effects are involved,
226
+ or native artifacts / citations must be preserved.
227
+ - Architecture / flow / blast radius → `codegraph_explore` first when
228
+ `codegraph_*` exists; if unavailable, continue with repo tools and LSP.
229
+ - **SYMBOLS REQUIRE LSP** — definitions, references, rename impact,
230
+ workspace symbols, and diagnostics use the available `lsp_*` tools, not
231
+ text search. Run diagnostics after edits and treat errors as blocking.
232
+ - Repo text / filenames / history / bounded shell output → `rg`,
233
+ `rg --files`, `git`, and native utilities; narrow output in-program.
234
+ - Structural call / function / class / import shapes and codemods → the
235
+ `ast-grep` skill or `sg` with `$VAR` / `$$$` metavariables.
236
236
  When discovery needs multiple angles or the module layout is
237
237
  unfamiliar, delegate to the `explorer` subagent (read-only codebase
238
238
  search, absolute-path results). For research that leaves the repo —
@@ -296,21 +296,39 @@ Until every success criterion PASSES with its evidence captured:
296
296
  vars. Append a one-line cleanup receipt to the notepad next to the
297
297
  artifact, e.g. `cleanup: killed 12345; tmux kill-session ulw-qa-foo;
298
298
  rm -rf /tmp/ulw.aB12cD`. No receipt → criterion stays in_progress.
299
- 6. Verify: LSP diagnostics clean on changed files + full test suite
300
- green (no skipped, no xfail added this turn).
299
+ 6. Verify: LSP diagnostics clean on changed files + the test scope
300
+ this criterion touched green (no skipped, no xfail added this
301
+ turn). Re-run a validation command (suite, typecheck, build) only
302
+ when its inputs changed since its last green run; ONE full-suite
303
+ pass belongs immediately before the final message, not after
304
+ every increment.
301
305
  7. Mark completed. Append non-obvious findings / learnings.
302
- 8. After each increment, re-run every criterion's scenario. Record
303
- PASS/FAIL inline with the evidence paths AND the cleanup receipt.
304
- Loop until all PASS.
305
-
306
- Parallel-batch independent reads / searches / subagents within a step,
307
- but NEVER parallelise RED and GREEN of the same criterion.
306
+ 8. After each increment, re-run the scenarios that increment could
307
+ have affected; re-run the full set once, right before the final
308
+ message. Record PASS/FAIL inline with the evidence paths AND the
309
+ cleanup receipt. Loop until all PASS.
310
+
311
+ Within a step, follow Finding things; NEVER parallelise RED and GREEN of
312
+ the same criterion.
313
+
314
+ # Waiting discipline (a poll costs a full model round)
315
+ Every status check you issue as a tool call replays the entire
316
+ accumulated context through the model. When a command will run long
317
+ (installs, builds, test suites, containers, CI), run it to completion
318
+ in ONE call with a timeout sized to the expected duration, or send
319
+ output to a log file and read it once when a completion signal is
320
+ expected. Never re-poll the same surface with empty reads or
321
+ sub-minute waits — batch waiting into the fewest, longest blocking
322
+ calls the harness allows, and do independent root work while the
323
+ command runs. If two consecutive checks show no state change, double
324
+ the wait before the next check or switch to a completion signal.
308
325
 
309
326
  # Codex subagent reliability
310
327
  Every `multi_agent_v1.spawn_agent` message is self-contained and starts with
311
- `TASK: <imperative assignment>`, then names `DELIVERABLE`, `SCOPE`, and
312
- `VERIFY`. State that it is an executable assignment, not a context
313
- handoff. Use `fork_context: false` unless full history is truly
328
+ `TASK: <imperative assignment>`, then names `DELIVERABLE`, `SCOPE`,
329
+ `VERIFY`, and `STOP WHEN` the observable condition that ends the
330
+ child's run; a child without a stop condition wanders past its goal.
331
+ State that it is an executable assignment, not a context handoff. Use `fork_context: false` unless full history is truly
314
332
  required; paste only the context the child needs. Full-history forks can
315
333
  make the child continue old parent context instead of the delegated task.
316
334
  If your tool list has a flat `spawn_agent` with a required `task_name` instead of `multi_agent_v1.*` (`multi_agent_v2`), rewrite: `fork_context: false` becomes `fork_turns: "none"`, `send_input` becomes `send_message`, finished agents end on their own (no `close_agent`; `followup_task` re-tasks, `interrupt_agent` stops), and `wait_agent` takes only `timeout_ms`, returning on any child mailbox activity.
@@ -420,7 +438,6 @@ message + present for approval.
420
438
  - Never suppress lints / errors / test failures. Never delete, skip,
421
439
  `.only`, `.skip`, `xfail`, or comment out tests to green the suite.
422
440
  - Never claim done from inference — only from captured evidence.
423
- - Parallel tool calls for any independent work.
424
441
 
425
442
  # Output discipline
426
443
  - First line literally: `ULTRAWORK MODE ENABLED!`
@@ -187,7 +187,7 @@ Trigger only for the final aggregate goal after every criterion in every goal is
187
187
  2. FREEZE first — no more edits or rebases. At the frozen HEAD, re-run Manual-QA for any PASS criterion whose stamped tree differs from `git rev-parse --short "HEAD^{tree}"`, so every criterion is proven on the frozen tree; each artifact exists and is non-empty.
188
188
  3a. Spawn lazycodex-code-reviewer and lazycodex-qa-executor in parallel (`fork_context: false` on v1; `fork_turns: "none"` on v2) with brief, goals, desired outcome, diff, evidence; wait for BOTH and confirm their report artifacts exist on disk.
189
189
  3b. Only then spawn lazycodex-gate-reviewer with those artifact paths.
190
- 3c. The gate's approval binds to the frozen tree and covers its three lanes — code quality, hands-on QA, and goal verification. A later rebase or amend that keeps the tree identical keeps the approval; changed content needs fresh review of the delta.
190
+ 3c. The gate's approval binds to the frozen tree and full commit SHA and covers its three lanes — code quality, hands-on QA, and goal verification. Immediately append one durable `.omo/ulw-loop/ledger.jsonl` record per passing lane with the lane name, full SHA, verdict, and report artifact/source. Before reuse after continuation or compaction, re-read the ledger and require the exact lane/SHA pair; memory or an unstamped report is not coverage. A later rebase or amend that keeps the tree identical still has a new SHA and needs fresh lane stamps; changed content needs fresh review of the delta.
191
191
  4. Treat timeout, missing deliverable, ack-only, `BLOCKED:`, or inconclusive review as a blocker. Any fix restarts the freeze at the new HEAD: re-run ONLY the proofs it invalidated and stamp the fresh output — never regenerate all evidence or relabel stale output to HEAD — re-review the delta at most TWICE; then record-review-blockers (step 5) and surface to the user.
192
192
  5. If review remains blocked, run `omo ulw-loop record-review-blockers --goal-id <id> --title "<...>" --objective "<...>" --evidence "<review findings>" --codex-goal-json <snapshot> --json`.
193
193
  6. If clean, checkpoint final completion:
@@ -20,4 +20,5 @@ test("#given aggregate MCP config #when inspected #then registers research MCPs
20
20
  assert.equal(Object.hasOwn(mcp.mcpServers, "ast_grep"), false);
21
21
  assert.deepEqual(mcp.mcpServers.codegraph.args, ["components/codegraph/dist/serve.js"]);
22
22
  assert.equal(mcp.mcpServers.codegraph.required, false);
23
+ assert.equal(mcp.mcpServers.lsp.startup_timeout_sec, 10);
23
24
  });
@@ -241,6 +241,9 @@ test("#given start-work skill #when synced for Codex #then the difficulty-tier d
241
241
  assert.match(content, /lazycodex-worker-medium/);
242
242
  assert.match(content, /Delegation by difficulty/);
243
243
  assert.match(content, /Global Review and Debugging Gate/);
244
+ assert.match(content, /full commit SHA/);
245
+ assert.match(content, /re-read the ledger record/);
246
+ assert.match(content, /exact lane\/SHA pair/);
244
247
  assert.doesNotMatch(content, /works the same on both surfaces/);
245
248
  });
246
249
 
@@ -256,6 +259,10 @@ test("#given review-work skill #when some lanes do not finish #then aggregate re
256
259
  assert.match(content, /Do not spin in repeated/);
257
260
  assert.match(content, /bare REJECT\/FAIL token without findings is not a verdict/);
258
261
  assert.match(content, /cites the violated goal criterion/);
262
+ assert.match(content, /append a durable task-evidence record/);
263
+ assert.match(content, /full commit SHA/);
264
+ assert.match(content, /re-read that record/);
265
+ assert.match(content, /exact lane\/SHA pair/);
259
266
  assert.match(content, /Do not use `multi_agent_v1\.send_input` as an interrupt/);
260
267
  });
261
268
 
@@ -77,9 +77,10 @@ const startWorkOriginalCompletion = `When all top-level checkboxes in \`## TODOs
77
77
  const startWorkCodexCompletion = `When all top-level checkboxes in \`## TODOs\` and \`## Final Verification Wave\` are complete:
78
78
 
79
79
  1. Run the plan's final verification commands.
80
- 2. Complete the **Global Review and Debugging Gate** before any completion claim, PR creation, PR handoff, branch handoff, or merge. The gate's pass binds to the commit SHA it reviewed and covers every later checkpoint at that same SHA — never re-run it on an already-passed SHA; re-run only when new commits land:
80
+ 2. Complete the **Global Review and Debugging Gate** before any completion claim, PR creation, PR handoff, branch handoff, or merge:
81
81
  - Invoke the \`review-work\` skill with the final diff, changed files, user goal, constraints, run command, and verification evidence. All five review lanes must return PASS. A timeout, missing deliverable, ack-only child, \`BLOCKED:\`, or inconclusive lane is a gate failure, not approval.
82
- - Run a debugging-oriented runtime audit even when the review passes: name at least three plausible failure hypotheses for the changed surface, run the distinguishing checks against the actual artifact, and append the ruled-out or confirmed result to \`.omo/start-work/ledger.jsonl\`.
82
+ - Each passing review lane binds to the exact full commit SHA it reviewed. Immediately append a durable record to \`.omo/start-work/ledger.jsonl\` with the lane name, full SHA, PASS verdict, and report artifact/source. Before same-SHA reuse after any continuation or compaction, re-read the ledger record and require the exact lane/SHA pair; memory, chat history, or an unstamped report is not coverage. New commits require fresh applicable lane coverage.
83
+ - Run a debugging-oriented runtime audit even when the review passes: name at least three plausible failure hypotheses for the changed surface, run the distinguishing checks against the actual artifact, and append a separate durable record with the audit name, exact full SHA, verdict, and evidence artifact/source to \`.omo/start-work/ledger.jsonl\`. Reuse it only after re-reading an exact audit/SHA match.
83
84
  - If any review lane or debugging hypothesis fails, invoke the \`debugging\` skill, confirm root cause with runtime evidence, add the minimal failing test or reproduction, fix it, rerun the affected verification, then rerun the Global Review and Debugging Gate.
84
85
  - Evidence hygiene is mandatory: redact or mask secrets and sensitive user data before writing \`.omo/start-work/ledger.jsonl\`, a PR body, or a handoff. Never include raw tokens, credentials, auth headers, cookies, API keys, env dumps, private logs, or PII; use concise summaries, lengths, hashes, or short non-sensitive prefixes instead.
85
86
  - If the work includes creating, updating, or handing off a PR, refresh \`git status\` and the PR/branch state from the task-owned worktree after the gate, and include only redacted review/debugging evidence in the PR body or handoff.
@@ -91,8 +92,38 @@ const startWorkOriginalHardRule = "- No completion claim while an applicable ult
91
92
 
92
93
  const startWorkCodexHardRule = "- No completion claim while an applicable ultraqa adversarial class was never probed. Each applicable class needs a captured observable result; each skipped class needs a one-line not-applicable reason in the ledger.\n- No `ORCHESTRATION COMPLETE`, final response, PR creation, PR handoff, or merge before the Global Review and Debugging Gate passes with recorded evidence.\n- No PR/branch implementation or review in the main worktree; create or use a task-owned git worktree first.\n- No unprefixed session ids in Boulder state. Codex sessions are always `codex:<session_id>`.";
93
94
 
94
- const reviewWorkCodexGatePattern =
95
- /\nWhen `review-work` is used as a final implementation, PR, or `\$start-work`\ngate, it is blocking\. A timeout, missing deliverable, ack-only response,\nexplicit `BLOCKED:`, or inconclusive lane is not a pass\. Treat that lane as\nfailed, investigate the underlying uncertainty with the `debugging` skill when\nruntime behavior may be wrong, fix with evidence, and rerun the affected lane\nbefore claiming completion, creating or handing off a PR, or merging\.\n\nA rejecting lane must name its blockers inline in its final message — each\nblocker cites the violated goal criterion or requirement plus an evidence\npointer\. A bare REJECT\/FAIL token without findings is not a verdict; treat it\nas an inconclusive lane \(one bounded respawn, then record it inconclusive with\nthat reason\)\.\n\nWhen reviewing a PR or branch, collect diff, file contents, and verification\nresults from a dedicated review worktree attached to that branch\. Never\ncheckout, test, or edit the review branch in the main worktree\.\n\nReview evidence must be safe to share\. Redact or mask secrets and sensitive\nuser data before including evidence in logs, PR bodies, or handoffs\. Never\ninclude raw tokens, credentials, auth headers, cookies, API keys, env dumps,\nprivate logs, or PII; summarize with lengths, hashes, and short non-sensitive\nprefixes when identity is needed\.\n/;
95
+ const reviewWorkCodexGate = `
96
+ When \`review-work\` is used as a final implementation, PR, or \`$start-work\`
97
+ gate, it is blocking. A timeout, missing deliverable, ack-only response,
98
+ explicit \`BLOCKED:\`, or inconclusive lane is not a pass. Treat that lane as
99
+ failed, investigate the underlying uncertainty with the \`debugging\` skill when
100
+ runtime behavior may be wrong, fix with evidence, and rerun the affected lane
101
+ before claiming completion, creating or handing off a PR, or merging.
102
+
103
+ After each lane reaches PASS, immediately append a durable task-evidence record
104
+ to the active ledger with the lane name, exact full commit SHA, PASS verdict,
105
+ and report artifact/source. Before reusing coverage after continuation or
106
+ compaction, re-read that record and require the exact lane/SHA pair. Memory,
107
+ chat history, or an unstamped report is not coverage; a new commit requires
108
+ fresh applicable lane records.
109
+
110
+ A rejecting lane must name its blockers inline in its final message — each
111
+ blocker cites the violated goal criterion or requirement plus an evidence
112
+ pointer. A bare REJECT/FAIL token without findings is not a verdict; treat it
113
+ as an inconclusive lane (one bounded respawn, then record it inconclusive with
114
+ that reason).
115
+
116
+ When reviewing a PR or branch, collect diff, file contents, and verification
117
+ results from a dedicated review worktree attached to that branch. Never
118
+ checkout, test, or edit the review branch in the main worktree.
119
+
120
+ Review evidence must be safe to share. Redact or mask secrets and sensitive
121
+ user data before including evidence in logs, PR bodies, or handoffs. Never
122
+ include raw tokens, credentials, auth headers, cookies, API keys, env dumps,
123
+ private logs, or PII; summarize with lengths, hashes, and short non-sensitive
124
+ prefixes when identity is needed.
125
+ `;
126
+ const reviewWorkCodexGatePattern = new RegExp(reviewWorkCodexGate.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
96
127
 
97
128
  export function removeCodexSkillOverlays(skillName, content) {
98
129
  if (skillName === "ulw-research") {
@@ -5903,7 +5903,7 @@ var package_default;
5903
5903
  var init_package = __esm(() => {
5904
5904
  package_default = {
5905
5905
  name: "@oh-my-opencode/omo-codex",
5906
- version: "4.18.1",
5906
+ version: "4.18.2",
5907
5907
  type: "module",
5908
5908
  private: true,
5909
5909
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",