oh-my-opencode 4.1.1 → 4.2.0

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 (261) hide show
  1. package/README.ja.md +2 -1
  2. package/README.ko.md +2 -1
  3. package/README.md +2 -1
  4. package/README.ru.md +2 -1
  5. package/README.zh-cn.md +2 -1
  6. package/dist/agents/atlas/default-prompt-sections.d.ts +3 -3
  7. package/dist/agents/atlas/gemini-prompt-sections.d.ts +2 -2
  8. package/dist/agents/atlas/gpt-prompt-sections.d.ts +2 -2
  9. package/dist/agents/atlas/kimi-prompt-sections.d.ts +3 -3
  10. package/dist/agents/atlas/opus-4-7-prompt-sections.d.ts +3 -3
  11. package/dist/agents/momus.d.ts +1 -1
  12. package/dist/agents/prometheus/behavioral-summary.d.ts +1 -1
  13. package/dist/agents/prometheus/high-accuracy-mode.d.ts +1 -1
  14. package/dist/agents/prometheus/identity-constraints.d.ts +1 -1
  15. package/dist/agents/prometheus/plan-generation.d.ts +1 -1
  16. package/dist/agents/prometheus/plan-template.d.ts +1 -1
  17. package/dist/cli/index.js +2938 -1254
  18. package/dist/cli/run/server-connection.d.ts +32 -2
  19. package/dist/config/schema/team-mode.d.ts +1 -1
  20. package/dist/features/background-agent/error-classifier.d.ts +1 -0
  21. package/dist/features/background-agent/fallback-retry-handler.d.ts +15 -0
  22. package/dist/features/background-agent/manager.d.ts +11 -8
  23. package/dist/features/background-agent/parent-wake-notifier.d.ts +74 -0
  24. package/dist/features/background-agent/process-cleanup.d.ts +2 -0
  25. package/dist/features/background-agent/session-route.d.ts +12 -0
  26. package/dist/features/background-agent/spawner.d.ts +2 -2
  27. package/dist/features/background-agent/task-registry.d.ts +6 -0
  28. package/dist/features/background-agent/types.d.ts +2 -0
  29. package/dist/features/boulder-state/constants.d.ts +4 -4
  30. package/dist/features/boulder-state/storage.d.ts +1 -1
  31. package/dist/features/builtin-commands/templates/init-deep.d.ts +1 -1
  32. package/dist/features/builtin-commands/templates/start-work.d.ts +1 -1
  33. package/dist/features/context-injector/injector.d.ts +1 -1
  34. package/dist/features/opencode-skill-loader/git-master-template-injection.d.ts +18 -0
  35. package/dist/features/run-continuation-state/constants.d.ts +1 -1
  36. package/dist/features/team-mode/team-layout-tmux/resolve-caller-tmux-session.d.ts +3 -1
  37. package/dist/features/team-mode/tools/lifecycle-test-fixture.d.ts +3 -3
  38. package/dist/features/team-mode/tools/messaging.d.ts +1 -0
  39. package/dist/features/team-mode/types.d.ts +2 -2
  40. package/dist/features/tmux-subagent/attachable-session-status.d.ts +1 -1
  41. package/dist/features/tmux-subagent/manager.d.ts +6 -0
  42. package/dist/features/tmux-subagent/pane-state-parser.d.ts +2 -0
  43. package/dist/features/tmux-subagent/polling-manager.d.ts +6 -2
  44. package/dist/features/tmux-subagent/types.d.ts +4 -0
  45. package/dist/hooks/atlas/boulder-continuation-injector.d.ts +1 -0
  46. package/dist/hooks/atlas/omo-path.d.ts +6 -0
  47. package/dist/hooks/atlas/tool-execute-after.d.ts +3 -0
  48. package/dist/hooks/atlas/tool-progress.d.ts +14 -0
  49. package/dist/hooks/atlas/types.d.ts +7 -0
  50. package/dist/hooks/auto-slash-command/detector.d.ts +2 -0
  51. package/dist/hooks/auto-update-checker/cache.d.ts +8 -1
  52. package/dist/hooks/auto-update-checker/checker/cached-version.d.ts +8 -1
  53. package/dist/hooks/background-notification/hook.d.ts +0 -6
  54. package/dist/hooks/compaction-context-injector/types.d.ts +1 -0
  55. package/dist/hooks/interactive-bash-session/state-manager.d.ts +1 -1
  56. package/dist/hooks/json-error-recovery/hook.d.ts +1 -1
  57. package/dist/hooks/keyword-detector/detector.d.ts +1 -0
  58. package/dist/hooks/keyword-detector/ultrawork/default.d.ts +1 -1
  59. package/dist/hooks/keyword-detector/ultrawork/gemini.d.ts +1 -1
  60. package/dist/hooks/keyword-detector/ultrawork/planner.d.ts +1 -1
  61. package/dist/hooks/prometheus-md-only/constants.d.ts +1 -1
  62. package/dist/hooks/prometheus-md-only/path-policy.d.ts +3 -3
  63. package/dist/hooks/ralph-loop/completion-promise-detector-test-input.d.ts +11 -0
  64. package/dist/hooks/ralph-loop/constants.d.ts +1 -1
  65. package/dist/hooks/ralph-loop/continuation-prompt-injector.d.ts +4 -0
  66. package/dist/hooks/ralph-loop/iteration-continuation.d.ts +5 -0
  67. package/dist/hooks/ralph-loop/loop-state-controller.d.ts +3 -3
  68. package/dist/hooks/ralph-loop/pending-verification-handler.d.ts +2 -1
  69. package/dist/hooks/ralph-loop/ralph-loop-event-handler.d.ts +2 -2
  70. package/dist/hooks/ralph-loop/storage.d.ts +2 -2
  71. package/dist/hooks/ralph-loop/types.d.ts +4 -0
  72. package/dist/hooks/ralph-loop/verification-failure-handler.d.ts +2 -2
  73. package/dist/hooks/rules-injector/injector.d.ts +9 -2
  74. package/dist/hooks/rules-injector/matcher.d.ts +5 -0
  75. package/dist/hooks/rules-injector/project-root-finder.d.ts +4 -0
  76. package/dist/hooks/rules-injector/rule-scan-cache.d.ts +9 -2
  77. package/dist/hooks/runtime-fallback/constants.d.ts +10 -0
  78. package/dist/hooks/runtime-fallback/first-prompt-watchdog.d.ts +25 -0
  79. package/dist/hooks/runtime-fallback/hook.d.ts +14 -1
  80. package/dist/hooks/runtime-fallback/last-user-retry-parts.d.ts +10 -2
  81. package/dist/hooks/runtime-fallback/types.d.ts +10 -0
  82. package/dist/hooks/session-recovery/detect-error-type.d.ts +1 -1
  83. package/dist/hooks/session-recovery/hook.d.ts +1 -0
  84. package/dist/hooks/session-recovery/interrupted-idle-message-fetch-timeout.d.ts +7 -0
  85. package/dist/hooks/session-recovery/recover-tool-result-missing.d.ts +6 -1
  86. package/dist/hooks/session-recovery/types.d.ts +12 -0
  87. package/dist/hooks/shared/prompt-async-gate.d.ts +1 -0
  88. package/dist/hooks/shared/session-idle-settle.d.ts +1 -11
  89. package/dist/hooks/sisyphus-junior-notepad/constants.d.ts +1 -1
  90. package/dist/hooks/team-mode-status-injector/hook.d.ts +2 -1
  91. package/dist/hooks/todo-continuation-enforcer/pending-question-detection.d.ts +2 -0
  92. package/dist/hooks/todo-continuation-enforcer/session-state.d.ts +3 -4
  93. package/dist/hooks/todo-continuation-enforcer/types.d.ts +2 -3
  94. package/dist/hooks/tool-pair-validator/hook.d.ts +7 -2
  95. package/dist/hooks/unstable-agent-babysitter/task-message-analyzer.d.ts +1 -0
  96. package/dist/hooks/write-existing-file-guard/tool-execute-before-handler.d.ts +1 -0
  97. package/dist/index.d.ts +1 -1
  98. package/dist/index.js +8152 -9863
  99. package/dist/mcp/index.d.ts +3 -1
  100. package/dist/mcp/lsp.d.ts +13 -0
  101. package/dist/mcp/types.d.ts +1 -0
  102. package/dist/plugin/build-team-idle-wake-hint-client.d.ts +12 -0
  103. package/dist/plugin/chat-message.d.ts +1 -1
  104. package/dist/plugin/tool-registry.d.ts +1 -2
  105. package/dist/plugin-dispose.d.ts +0 -3
  106. package/dist/shared/agent-sort-shim.d.ts +1 -0
  107. package/dist/shared/delegated-child-session-bootstrap.d.ts +25 -0
  108. package/dist/shared/dynamic-truncator.d.ts +2 -0
  109. package/dist/shared/host-skill-config.d.ts +2 -0
  110. package/dist/shared/index.d.ts +2 -0
  111. package/dist/shared/internal-initiator-marker.d.ts +25 -0
  112. package/dist/shared/legacy-workspace-migration.d.ts +5 -0
  113. package/dist/shared/logger.d.ts +12 -0
  114. package/dist/shared/model-error-classifier.d.ts +2 -0
  115. package/dist/shared/model-resolution-pipeline.d.ts +4 -0
  116. package/dist/shared/opencode-http-api.d.ts +9 -0
  117. package/dist/shared/prompt-async-gate.d.ts +82 -0
  118. package/dist/shared/replace-tool-args.d.ts +13 -0
  119. package/dist/shared/session-idle-settle.d.ts +11 -0
  120. package/dist/shared/tmux/tmux-utils/pane-activate.d.ts +1 -0
  121. package/dist/shared/tmux/tmux-utils/pane-close.d.ts +10 -0
  122. package/dist/shared/tmux/tmux-utils/pane-command.d.ts +2 -0
  123. package/dist/shared/tmux/tmux-utils/pane-replace.d.ts +11 -1
  124. package/dist/shared/tmux/tmux-utils/pane-spawn.d.ts +1 -1
  125. package/dist/shared/tmux/tmux-utils/server-health.d.ts +12 -1
  126. package/dist/shared/tmux/tmux-utils/session-spawn.d.ts +2 -2
  127. package/dist/shared/tmux/tmux-utils/window-spawn.d.ts +1 -1
  128. package/dist/shared/tmux/tmux-utils.d.ts +2 -0
  129. package/dist/testing/create-plugin-module.d.ts +41 -0
  130. package/dist/tools/background-task/constants.d.ts +1 -1
  131. package/dist/tools/background-task/with-sdk-call-timeout.d.ts +7 -0
  132. package/dist/tools/call-omo-agent/session-creator.d.ts +2 -1
  133. package/dist/tools/call-omo-agent/sync-executor.d.ts +2 -2
  134. package/dist/tools/delegate-task/subagent-discovery.d.ts +2 -0
  135. package/dist/tools/delegate-task/sync-prompt-sender.d.ts +2 -1
  136. package/dist/tools/delegate-task/sync-session-creator.d.ts +2 -0
  137. package/dist/tools/delegate-task/sync-task.d.ts +1 -1
  138. package/dist/tools/index.d.ts +0 -3
  139. package/dist/tools/interactive-bash/tools.d.ts +5 -0
  140. package/package.json +29 -25
  141. package/packages/lsp-tools-mcp/dist/cli.d.ts +3 -0
  142. package/packages/lsp-tools-mcp/dist/cli.d.ts.map +1 -0
  143. package/packages/lsp-tools-mcp/dist/cli.js +24 -0
  144. package/packages/lsp-tools-mcp/dist/cli.js.map +1 -0
  145. package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.d.ts +2 -0
  146. package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.d.ts.map +1 -0
  147. package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.js +7 -0
  148. package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.js.map +1 -0
  149. package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.d.ts +14 -0
  150. package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.d.ts.map +1 -0
  151. package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.js +110 -0
  152. package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.js.map +1 -0
  153. package/packages/lsp-tools-mcp/dist/lsp/client.d.ts +21 -0
  154. package/packages/lsp-tools-mcp/dist/lsp/client.d.ts.map +1 -0
  155. package/packages/lsp-tools-mcp/dist/lsp/client.js +130 -0
  156. package/packages/lsp-tools-mcp/dist/lsp/client.js.map +1 -0
  157. package/{dist/tools/lsp/server-config-loader.d.ts → packages/lsp-tools-mcp/dist/lsp/config-loader.d.ts} +6 -6
  158. package/packages/lsp-tools-mcp/dist/lsp/config-loader.d.ts.map +1 -0
  159. package/packages/lsp-tools-mcp/dist/lsp/config-loader.js +110 -0
  160. package/packages/lsp-tools-mcp/dist/lsp/config-loader.js.map +1 -0
  161. package/packages/lsp-tools-mcp/dist/lsp/connection.d.ts +5 -0
  162. package/packages/lsp-tools-mcp/dist/lsp/connection.d.ts.map +1 -0
  163. package/packages/lsp-tools-mcp/dist/lsp/connection.js +67 -0
  164. package/packages/lsp-tools-mcp/dist/lsp/connection.js.map +1 -0
  165. package/packages/lsp-tools-mcp/dist/lsp/constants.d.ts +11 -0
  166. package/packages/lsp-tools-mcp/dist/lsp/constants.d.ts.map +1 -0
  167. package/packages/lsp-tools-mcp/dist/lsp/constants.js +11 -0
  168. package/packages/lsp-tools-mcp/dist/lsp/constants.js.map +1 -0
  169. package/packages/lsp-tools-mcp/dist/lsp/directory-diagnostics.d.ts +4 -0
  170. package/packages/lsp-tools-mcp/dist/lsp/directory-diagnostics.d.ts.map +1 -0
  171. package/packages/lsp-tools-mcp/dist/lsp/directory-diagnostics.js +124 -0
  172. package/packages/lsp-tools-mcp/dist/lsp/directory-diagnostics.js.map +1 -0
  173. package/packages/lsp-tools-mcp/dist/lsp/errors.d.ts +36 -0
  174. package/packages/lsp-tools-mcp/dist/lsp/errors.d.ts.map +1 -0
  175. package/packages/lsp-tools-mcp/dist/lsp/errors.js +57 -0
  176. package/packages/lsp-tools-mcp/dist/lsp/errors.js.map +1 -0
  177. package/{dist/tools/lsp/lsp-formatters.d.ts → packages/lsp-tools-mcp/dist/lsp/formatters.d.ts} +5 -5
  178. package/packages/lsp-tools-mcp/dist/lsp/formatters.d.ts.map +1 -0
  179. package/packages/lsp-tools-mcp/dist/lsp/formatters.js +109 -0
  180. package/packages/lsp-tools-mcp/dist/lsp/formatters.js.map +1 -0
  181. package/{dist/tools → packages/lsp-tools-mcp/dist}/lsp/infer-extension.d.ts +1 -0
  182. package/packages/lsp-tools-mcp/dist/lsp/infer-extension.d.ts.map +1 -0
  183. package/packages/lsp-tools-mcp/dist/lsp/infer-extension.js +59 -0
  184. package/packages/lsp-tools-mcp/dist/lsp/infer-extension.js.map +1 -0
  185. package/packages/lsp-tools-mcp/dist/lsp/json-rpc-connection.d.ts +37 -0
  186. package/packages/lsp-tools-mcp/dist/lsp/json-rpc-connection.d.ts.map +1 -0
  187. package/packages/lsp-tools-mcp/dist/lsp/json-rpc-connection.js +248 -0
  188. package/packages/lsp-tools-mcp/dist/lsp/json-rpc-connection.js.map +1 -0
  189. package/{dist/tools → packages/lsp-tools-mcp/dist}/lsp/language-mappings.d.ts +2 -0
  190. package/packages/lsp-tools-mcp/dist/lsp/language-mappings.d.ts.map +1 -0
  191. package/packages/lsp-tools-mcp/dist/lsp/language-mappings.js +170 -0
  192. package/packages/lsp-tools-mcp/dist/lsp/language-mappings.js.map +1 -0
  193. package/packages/lsp-tools-mcp/dist/lsp/manager.d.ts +48 -0
  194. package/packages/lsp-tools-mcp/dist/lsp/manager.d.ts.map +1 -0
  195. package/packages/lsp-tools-mcp/dist/lsp/manager.js +308 -0
  196. package/packages/lsp-tools-mcp/dist/lsp/manager.js.map +1 -0
  197. package/packages/lsp-tools-mcp/dist/lsp/process.d.ts +26 -0
  198. package/packages/lsp-tools-mcp/dist/lsp/process.d.ts.map +1 -0
  199. package/packages/lsp-tools-mcp/dist/lsp/process.js +124 -0
  200. package/packages/lsp-tools-mcp/dist/lsp/process.js.map +1 -0
  201. package/packages/lsp-tools-mcp/dist/lsp/server-definitions.d.ts +5 -0
  202. package/packages/lsp-tools-mcp/dist/lsp/server-definitions.d.ts.map +1 -0
  203. package/packages/lsp-tools-mcp/dist/lsp/server-definitions.js +159 -0
  204. package/packages/lsp-tools-mcp/dist/lsp/server-definitions.js.map +1 -0
  205. package/packages/lsp-tools-mcp/dist/lsp/server-installation.d.ts +3 -0
  206. package/packages/lsp-tools-mcp/dist/lsp/server-installation.d.ts.map +1 -0
  207. package/packages/lsp-tools-mcp/dist/lsp/server-installation.js +51 -0
  208. package/packages/lsp-tools-mcp/dist/lsp/server-installation.js.map +1 -0
  209. package/packages/lsp-tools-mcp/dist/lsp/server-resolution.d.ts +12 -0
  210. package/packages/lsp-tools-mcp/dist/lsp/server-resolution.d.ts.map +1 -0
  211. package/packages/lsp-tools-mcp/dist/lsp/server-resolution.js +75 -0
  212. package/packages/lsp-tools-mcp/dist/lsp/server-resolution.js.map +1 -0
  213. package/packages/lsp-tools-mcp/dist/lsp/transport.d.ts +26 -0
  214. package/packages/lsp-tools-mcp/dist/lsp/transport.d.ts.map +1 -0
  215. package/packages/lsp-tools-mcp/dist/lsp/transport.js +234 -0
  216. package/packages/lsp-tools-mcp/dist/lsp/transport.js.map +1 -0
  217. package/{dist/tools → packages/lsp-tools-mcp/dist}/lsp/types.d.ts +28 -26
  218. package/packages/lsp-tools-mcp/dist/lsp/types.d.ts.map +1 -0
  219. package/packages/lsp-tools-mcp/dist/lsp/types.js +2 -0
  220. package/packages/lsp-tools-mcp/dist/lsp/types.js.map +1 -0
  221. package/packages/lsp-tools-mcp/dist/lsp/utils.d.ts +5 -0
  222. package/packages/lsp-tools-mcp/dist/lsp/utils.d.ts.map +1 -0
  223. package/packages/lsp-tools-mcp/dist/lsp/utils.js +43 -0
  224. package/packages/lsp-tools-mcp/dist/lsp/utils.js.map +1 -0
  225. package/{dist/tools → packages/lsp-tools-mcp/dist}/lsp/workspace-edit.d.ts +2 -1
  226. package/packages/lsp-tools-mcp/dist/lsp/workspace-edit.d.ts.map +1 -0
  227. package/packages/lsp-tools-mcp/dist/lsp/workspace-edit.js +114 -0
  228. package/packages/lsp-tools-mcp/dist/lsp/workspace-edit.js.map +1 -0
  229. package/packages/lsp-tools-mcp/dist/mcp.d.ts +31 -0
  230. package/packages/lsp-tools-mcp/dist/mcp.d.ts.map +1 -0
  231. package/packages/lsp-tools-mcp/dist/mcp.js +95 -0
  232. package/packages/lsp-tools-mcp/dist/mcp.js.map +1 -0
  233. package/packages/lsp-tools-mcp/dist/tools.d.ts +91 -0
  234. package/packages/lsp-tools-mcp/dist/tools.d.ts.map +1 -0
  235. package/packages/lsp-tools-mcp/dist/tools.js +453 -0
  236. package/packages/lsp-tools-mcp/dist/tools.js.map +1 -0
  237. package/dist/hooks/atlas/sisyphus-path.d.ts +0 -6
  238. package/dist/tools/lsp/client.d.ts +0 -3
  239. package/dist/tools/lsp/config.d.ts +0 -3
  240. package/dist/tools/lsp/constants.d.ts +0 -6
  241. package/dist/tools/lsp/diagnostics-tool.d.ts +0 -2
  242. package/dist/tools/lsp/directory-diagnostics.d.ts +0 -1
  243. package/dist/tools/lsp/find-references-tool.d.ts +0 -2
  244. package/dist/tools/lsp/goto-definition-tool.d.ts +0 -2
  245. package/dist/tools/lsp/index.d.ts +0 -8
  246. package/dist/tools/lsp/language-config.d.ts +0 -1
  247. package/dist/tools/lsp/lsp-client-connection.d.ts +0 -4
  248. package/dist/tools/lsp/lsp-client-transport.d.ts +0 -22
  249. package/dist/tools/lsp/lsp-client-wrapper.d.ts +0 -9
  250. package/dist/tools/lsp/lsp-client.d.ts +0 -17
  251. package/dist/tools/lsp/lsp-manager-process-cleanup.d.ts +0 -15
  252. package/dist/tools/lsp/lsp-manager-temp-directory-cleanup.d.ts +0 -8
  253. package/dist/tools/lsp/lsp-process.d.ts +0 -29
  254. package/dist/tools/lsp/lsp-server.d.ts +0 -24
  255. package/dist/tools/lsp/rename-tools.d.ts +0 -3
  256. package/dist/tools/lsp/server-definitions.d.ts +0 -3
  257. package/dist/tools/lsp/server-installation.d.ts +0 -1
  258. package/dist/tools/lsp/server-path-bases.d.ts +0 -1
  259. package/dist/tools/lsp/server-resolution.d.ts +0 -15
  260. package/dist/tools/lsp/symbols-tool.d.ts +0 -2
  261. package/dist/tools/lsp/tools.d.ts +0 -5
@@ -4,4 +4,4 @@
4
4
  * The markdown template structure for work plans generated by Prometheus.
5
5
  * Includes TL;DR, context, objectives, verification strategy, TODOs, and success criteria.
6
6
  */
7
- export declare const PROMETHEUS_PLAN_TEMPLATE = "## Plan Structure\n\nGenerate plan to: `.sisyphus/plans/{name}.md`\n\n```markdown\n# {Plan Title}\n\n## TL;DR\n\n> **Quick Summary**: [1-2 sentences capturing the core objective and approach]\n> \n> **Deliverables**: [Bullet list of concrete outputs]\n> - [Output 1]\n> - [Output 2]\n> \n> **Estimated Effort**: [Quick | Short | Medium | Large | XL]\n> **Parallel Execution**: [YES - N waves | NO - sequential]\n> **Critical Path**: [Task X \u2192 Task Y \u2192 Task Z]\n\n---\n\n## Context\n\n### Original Request\n[User's initial description]\n\n### Interview Summary\n**Key Discussions**:\n- [Point 1]: [User's decision/preference]\n- [Point 2]: [Agreed approach]\n\n**Research Findings**:\n- [Finding 1]: [Implication]\n- [Finding 2]: [Recommendation]\n\n### Metis Review\n**Identified Gaps** (addressed):\n- [Gap 1]: [How resolved]\n- [Gap 2]: [How resolved]\n\n---\n\n## Work Objectives\n\n### Core Objective\n[1-2 sentences: what we're achieving]\n\n### Concrete Deliverables\n- [Exact file/endpoint/feature]\n\n### Definition of Done\n- [ ] [Verifiable condition with command]\n\n### Must Have\n- [Non-negotiable requirement]\n\n### Must NOT Have (Guardrails)\n- [Explicit exclusion from Metis review]\n- [AI slop pattern to avoid]\n- [Scope boundary]\n\n---\n\n## Verification Strategy (MANDATORY)\n\n> **ZERO HUMAN INTERVENTION** - ALL verification is agent-executed. No exceptions.\n> Acceptance criteria requiring \"user manually tests/confirms\" are FORBIDDEN.\n\n### Test Decision\n- **Infrastructure exists**: [YES/NO]\n- **Automated tests**: [TDD / Tests-after / None]\n- **Framework**: [bun test / vitest / jest / pytest / none]\n- **If TDD**: Each task follows RED (failing test) \u2192 GREEN (minimal impl) \u2192 REFACTOR\n\n### QA Policy\nEvery task MUST include agent-executed QA scenarios (see TODO template below).\nEvidence saved to `.sisyphus/evidence/task-{N}-{scenario-slug}.{ext}`.\n\n- **Frontend/UI**: Use Playwright (playwright skill) - Navigate, interact, assert DOM, screenshot\n- **TUI/CLI**: Use interactive_bash (tmux) - Run command, send keystrokes, validate output\n- **API/Backend**: Use Bash (curl) - Send requests, assert status + response fields\n- **Library/Module**: Use Bash (bun/node REPL) - Import, call functions, compare output\n\n---\n\n## Execution Strategy\n\n### Parallel Execution Waves\n\n> Maximize throughput by grouping independent tasks into parallel waves.\n> Each wave completes before the next begins.\n> Target: 5-8 tasks per wave. Fewer than 3 per wave (except final) = under-splitting.\n\n```\nWave 1 (Start Immediately - foundation + scaffolding):\n\u251C\u2500\u2500 Task 1: Project scaffolding + config [quick]\n\u251C\u2500\u2500 Task 2: Design system tokens [quick]\n\u251C\u2500\u2500 Task 3: Type definitions [quick]\n\u251C\u2500\u2500 Task 4: Schema definitions [quick]\n\u251C\u2500\u2500 Task 5: Storage interface + in-memory impl [quick]\n\u251C\u2500\u2500 Task 6: Auth middleware [quick]\n\u2514\u2500\u2500 Task 7: Client module [quick]\n\nWave 2 (After Wave 1 - core modules, MAX PARALLEL):\n\u251C\u2500\u2500 Task 8: Core business logic (depends: 3, 5, 7) [deep]\n\u251C\u2500\u2500 Task 9: API endpoints (depends: 4, 5) [unspecified-high]\n\u251C\u2500\u2500 Task 10: Secondary storage impl (depends: 5) [unspecified-high]\n\u251C\u2500\u2500 Task 11: Retry/fallback logic (depends: 8) [deep]\n\u251C\u2500\u2500 Task 12: UI layout + navigation (depends: 2) [visual-engineering]\n\u251C\u2500\u2500 Task 13: API client + hooks (depends: 4) [quick]\n\u2514\u2500\u2500 Task 14: Telemetry middleware (depends: 5, 10) [unspecified-high]\n\nWave 3 (After Wave 2 - integration + UI):\n\u251C\u2500\u2500 Task 15: Main route combining modules (depends: 6, 11, 14) [deep]\n\u251C\u2500\u2500 Task 16: UI data visualization (depends: 12, 13) [visual-engineering]\n\u251C\u2500\u2500 Task 17: Deployment config A (depends: 15) [quick]\n\u251C\u2500\u2500 Task 18: Deployment config B (depends: 15) [quick]\n\u251C\u2500\u2500 Task 19: Deployment config C (depends: 15) [quick]\n\u2514\u2500\u2500 Task 20: UI request log + build (depends: 16) [visual-engineering]\n\nWave FINAL (After ALL tasks \u2014 4 parallel reviews, then user okay):\n\u251C\u2500\u2500 Task F1: Plan compliance audit (oracle)\n\u251C\u2500\u2500 Task F2: Code quality review (unspecified-high)\n\u251C\u2500\u2500 Task F3: Real manual QA (unspecified-high)\n\u2514\u2500\u2500 Task F4: Scope fidelity check (deep)\n-> Present results -> Get explicit user okay\n\nCritical Path: Task 1 \u2192 Task 5 \u2192 Task 8 \u2192 Task 11 \u2192 Task 15 \u2192 Task 21 \u2192 F1-F4 \u2192 user okay\nParallel Speedup: ~70% faster than sequential\nMax Concurrent: 7 (Waves 1 & 2)\n```\n\n### Dependency Matrix (abbreviated - show ALL tasks in your generated plan)\n\n- **1-7**: - - 8-14, 1\n- **8**: 3, 5, 7 - 11, 15, 2\n- **11**: 8 - 15, 2\n- **14**: 5, 10 - 15, 2\n- **15**: 6, 11, 14 - 17-19, 21, 3\n- **21**: 15 - 23, 24, 4\n\n> This is abbreviated for reference. YOUR generated plan must include the FULL matrix for ALL tasks.\n\n### Agent Dispatch Summary\n\n- **1**: **7** - T1-T4 \u2192 `quick`, T5 \u2192 `quick`, T6 \u2192 `quick`, T7 \u2192 `quick`\n- **2**: **7** - T8 \u2192 `deep`, T9 \u2192 `unspecified-high`, T10 \u2192 `unspecified-high`, T11 \u2192 `deep`, T12 \u2192 `visual-engineering`, T13 \u2192 `quick`, T14 \u2192 `unspecified-high`\n- **3**: **6** - T15 \u2192 `deep`, T16 \u2192 `visual-engineering`, T17-T19 \u2192 `quick`, T20 \u2192 `visual-engineering`\n- **4**: **4** - T21 \u2192 `deep`, T22 \u2192 `unspecified-high`, T23 \u2192 `deep`, T24 \u2192 `git`\n- **FINAL**: **4** - F1 \u2192 `oracle`, F2 \u2192 `unspecified-high`, F3 \u2192 `unspecified-high`, F4 \u2192 `deep`\n\n---\n\n## TODOs\n\n> Implementation + Test = ONE Task. Never separate.\n> EVERY task MUST have: Recommended Agent Profile + Parallelization info + QA Scenarios.\n> **A task WITHOUT QA Scenarios is INCOMPLETE. No exceptions.**\n\n- [ ] 1. [Task Title]\n\n **What to do**:\n - [Clear implementation steps]\n - [Test cases to cover]\n\n **Must NOT do**:\n - [Specific exclusions from guardrails]\n\n **Recommended Agent Profile**:\n > Select category + skills based on task domain. Justify each choice.\n - **Category**: `[visual-engineering | ultrabrain | artistry | quick | unspecified-low | unspecified-high | writing]`\n - Reason: [Why this category fits the task domain]\n - **Skills**: [`skill-1`, `skill-2`]\n - `skill-1`: [Why needed - domain overlap explanation]\n - `skill-2`: [Why needed - domain overlap explanation]\n - **Skills Evaluated but Omitted**:\n - `omitted-skill`: [Why domain doesn't overlap]\n\n **Parallelization**:\n - **Can Run In Parallel**: YES | NO\n - **Parallel Group**: Wave N (with Tasks X, Y) | Sequential\n - **Blocks**: [Tasks that depend on this task completing]\n - **Blocked By**: [Tasks this depends on] | None (can start immediately)\n\n **References** (CRITICAL - Be Exhaustive):\n\n > The executor has NO context from your interview. References are their ONLY guide.\n > Each reference must answer: \"What should I look at and WHY?\"\n\n **Pattern References** (existing code to follow):\n - `src/services/auth.ts:45-78` - Authentication flow pattern (JWT creation, refresh token handling)\n\n **API/Type References** (contracts to implement against):\n - `src/types/user.ts:UserDTO` - Response shape for user endpoints\n\n **Test References** (testing patterns to follow):\n - `src/__tests__/auth.test.ts:describe(\"login\")` - Test structure and mocking patterns\n\n **External References** (libraries and frameworks):\n - Official docs: `https://zod.dev/?id=basic-usage` - Zod validation syntax\n\n **WHY Each Reference Matters** (explain the relevance):\n - Don't just list files - explain what pattern/information the executor should extract\n - Bad: `src/utils.ts` (vague, which utils? why?)\n - Good: `src/utils/validation.ts:sanitizeInput()` - Use this sanitization pattern for user input\n\n **Acceptance Criteria**:\n\n > **AGENT-EXECUTABLE VERIFICATION ONLY** - No human action permitted.\n > Every criterion MUST be verifiable by running a command or using a tool.\n\n **If TDD (tests enabled):**\n - [ ] Test file created: src/auth/login.test.ts\n - [ ] bun test src/auth/login.test.ts \u2192 PASS (3 tests, 0 failures)\n\n **QA Scenarios (MANDATORY - task is INCOMPLETE without these):**\n\n > **This is NOT optional. A task without QA scenarios WILL BE REJECTED.**\n >\n > Write scenario tests that verify the ACTUAL BEHAVIOR of what you built.\n > Minimum: 1 happy path + 1 failure/edge case per task.\n > Each scenario = exact tool + exact steps + exact assertions + evidence path.\n >\n > **The executing agent MUST run these scenarios after implementation.**\n > **The orchestrator WILL verify evidence files exist before marking task complete.**\n\n \\`\\`\\`\n Scenario: [Happy path - what SHOULD work]\n Tool: [Playwright / interactive_bash / Bash (curl)]\n Preconditions: [Exact setup state]\n Steps:\n 1. [Exact action - specific command/selector/endpoint, no vagueness]\n 2. [Next action - with expected intermediate state]\n 3. [Assertion - exact expected value, not \"verify it works\"]\n Expected Result: [Concrete, observable, binary pass/fail]\n Failure Indicators: [What specifically would mean this failed]\n Evidence: .sisyphus/evidence/task-{N}-{scenario-slug}.{ext}\n\n Scenario: [Failure/edge case - what SHOULD fail gracefully]\n Tool: [same format]\n Preconditions: [Invalid input / missing dependency / error state]\n Steps:\n 1. [Trigger the error condition]\n 2. [Assert error is handled correctly]\n Expected Result: [Graceful failure with correct error message/code]\n Evidence: .sisyphus/evidence/task-{N}-{scenario-slug}-error.{ext}\n \\`\\`\\`\n\n > **Specificity requirements - every scenario MUST use:**\n > - **Selectors**: Specific CSS selectors (`.login-button`, not \"the login button\")\n > - **Data**: Concrete test data (`\"test@example.com\"`, not `\"[email]\"`)\n > - **Assertions**: Exact values (`text contains \"Welcome back\"`, not \"verify it works\")\n > - **Timing**: Wait conditions where relevant (`timeout: 10s`)\n > - **Negative**: At least ONE failure/error scenario per task\n >\n > **Anti-patterns (your scenario is INVALID if it looks like this):**\n > - \u274C \"Verify it works correctly\" - HOW? What does \"correctly\" mean?\n > - \u274C \"Check the API returns data\" - WHAT data? What fields? What values?\n > - \u274C \"Test the component renders\" - WHERE? What selector? What content?\n > - \u274C Any scenario without an evidence path\n\n **Evidence to Capture:**\n - [ ] Each evidence file named: task-{N}-{scenario-slug}.{ext}\n - [ ] Screenshots for UI, terminal output for CLI, response bodies for API\n\n **Commit**: YES | NO (groups with N)\n - Message: `type(scope): desc`\n - Files: `path/to/file`\n - Pre-commit: `test command`\n\n---\n\n## Final Verification Wave (MANDATORY \u2014 after ALL implementation tasks)\n\n> 4 review agents run in PARALLEL. ALL must APPROVE. Present consolidated results to user and get explicit \"okay\" before completing.\n>\n> **Do NOT auto-proceed after verification. Wait for user's explicit approval before marking work complete.**\n> **Never mark F1-F4 as checked before getting user's okay.** Rejection or user feedback -> fix -> re-run -> present again -> wait for okay.\n\n- [ ] F1. **Plan Compliance Audit** \u2014 `oracle`\n Read the plan end-to-end. For each \"Must Have\": verify implementation exists (read file, curl endpoint, run command). For each \"Must NOT Have\": search codebase for forbidden patterns \u2014 reject with file:line if found. Check evidence files exist in .sisyphus/evidence/. Compare deliverables against plan.\n Output: `Must Have [N/N] | Must NOT Have [N/N] | Tasks [N/N] | VERDICT: APPROVE/REJECT`\n\n- [ ] F2. **Code Quality Review** \u2014 `unspecified-high`\n Run `tsc --noEmit` + linter + `bun test`. Review all changed files for: `as any`/`@ts-ignore`, empty catches, console.log in prod, commented-out code, unused imports. Check AI slop: excessive comments, over-abstraction, generic names (data/result/item/temp).\n Output: `Build [PASS/FAIL] | Lint [PASS/FAIL] | Tests [N pass/N fail] | Files [N clean/N issues] | VERDICT`\n\n- [ ] F3. **Real Manual QA** \u2014 `unspecified-high` (+ `playwright` skill if UI)\n Start from clean state. Execute EVERY QA scenario from EVERY task \u2014 follow exact steps, capture evidence. Test cross-task integration (features working together, not isolation). Test edge cases: empty state, invalid input, rapid actions. Save to `.sisyphus/evidence/final-qa/`.\n Output: `Scenarios [N/N pass] | Integration [N/N] | Edge Cases [N tested] | VERDICT`\n\n- [ ] F4. **Scope Fidelity Check** \u2014 `deep`\n For each task: read \"What to do\", read actual diff (git log/diff). Verify 1:1 \u2014 everything in spec was built (no missing), nothing beyond spec was built (no creep). Check \"Must NOT do\" compliance. Detect cross-task contamination: Task N touching Task M's files. Flag unaccounted changes.\n Output: `Tasks [N/N compliant] | Contamination [CLEAN/N issues] | Unaccounted [CLEAN/N files] | VERDICT`\n\n---\n\n## Commit Strategy\n\n- **1**: `type(scope): desc` - file.ts, npm test\n\n---\n\n## Success Criteria\n\n### Verification Commands\n```bash\ncommand # Expected: output\n```\n\n### Final Checklist\n- [ ] All \"Must Have\" present\n- [ ] All \"Must NOT Have\" absent\n- [ ] All tests pass\n```\n\n---\n";
7
+ export declare const PROMETHEUS_PLAN_TEMPLATE = "## Plan Structure\n\nGenerate plan to: `.omo/plans/{name}.md`\n\n```markdown\n# {Plan Title}\n\n## TL;DR\n\n> **Quick Summary**: [1-2 sentences capturing the core objective and approach]\n> \n> **Deliverables**: [Bullet list of concrete outputs]\n> - [Output 1]\n> - [Output 2]\n> \n> **Estimated Effort**: [Quick | Short | Medium | Large | XL]\n> **Parallel Execution**: [YES - N waves | NO - sequential]\n> **Critical Path**: [Task X \u2192 Task Y \u2192 Task Z]\n\n---\n\n## Context\n\n### Original Request\n[User's initial description]\n\n### Interview Summary\n**Key Discussions**:\n- [Point 1]: [User's decision/preference]\n- [Point 2]: [Agreed approach]\n\n**Research Findings**:\n- [Finding 1]: [Implication]\n- [Finding 2]: [Recommendation]\n\n### Metis Review\n**Identified Gaps** (addressed):\n- [Gap 1]: [How resolved]\n- [Gap 2]: [How resolved]\n\n---\n\n## Work Objectives\n\n### Core Objective\n[1-2 sentences: what we're achieving]\n\n### Concrete Deliverables\n- [Exact file/endpoint/feature]\n\n### Definition of Done\n- [ ] [Verifiable condition with command]\n\n### Must Have\n- [Non-negotiable requirement]\n\n### Must NOT Have (Guardrails)\n- [Explicit exclusion from Metis review]\n- [AI slop pattern to avoid]\n- [Scope boundary]\n\n---\n\n## Verification Strategy (MANDATORY)\n\n> **ZERO HUMAN INTERVENTION** - ALL verification is agent-executed. No exceptions.\n> Acceptance criteria requiring \"user manually tests/confirms\" are FORBIDDEN.\n\n### Test Decision\n- **Infrastructure exists**: [YES/NO]\n- **Automated tests**: [TDD / Tests-after / None]\n- **Framework**: [bun test / vitest / jest / pytest / none]\n- **If TDD**: Each task follows RED (failing test) \u2192 GREEN (minimal impl) \u2192 REFACTOR\n\n### QA Policy\nEvery task MUST include agent-executed QA scenarios (see TODO template below).\nEvidence saved to `.omo/evidence/task-{N}-{scenario-slug}.{ext}`.\n\n- **Frontend/UI**: Use Playwright (playwright skill) - Navigate, interact, assert DOM, screenshot\n- **TUI/CLI**: Use interactive_bash (tmux) - Run command, send keystrokes, validate output\n- **API/Backend**: Use Bash (curl) - Send requests, assert status + response fields\n- **Library/Module**: Use Bash (bun/node REPL) - Import, call functions, compare output\n\n---\n\n## Execution Strategy\n\n### Parallel Execution Waves\n\n> Maximize throughput by grouping independent tasks into parallel waves.\n> Each wave completes before the next begins.\n> Target: 5-8 tasks per wave. Fewer than 3 per wave (except final) = under-splitting.\n\n```\nWave 1 (Start Immediately - foundation + scaffolding):\n\u251C\u2500\u2500 Task 1: Project scaffolding + config [quick]\n\u251C\u2500\u2500 Task 2: Design system tokens [quick]\n\u251C\u2500\u2500 Task 3: Type definitions [quick]\n\u251C\u2500\u2500 Task 4: Schema definitions [quick]\n\u251C\u2500\u2500 Task 5: Storage interface + in-memory impl [quick]\n\u251C\u2500\u2500 Task 6: Auth middleware [quick]\n\u2514\u2500\u2500 Task 7: Client module [quick]\n\nWave 2 (After Wave 1 - core modules, MAX PARALLEL):\n\u251C\u2500\u2500 Task 8: Core business logic (depends: 3, 5, 7) [deep]\n\u251C\u2500\u2500 Task 9: API endpoints (depends: 4, 5) [unspecified-high]\n\u251C\u2500\u2500 Task 10: Secondary storage impl (depends: 5) [unspecified-high]\n\u251C\u2500\u2500 Task 11: Retry/fallback logic (depends: 8) [deep]\n\u251C\u2500\u2500 Task 12: UI layout + navigation (depends: 2) [visual-engineering]\n\u251C\u2500\u2500 Task 13: API client + hooks (depends: 4) [quick]\n\u2514\u2500\u2500 Task 14: Telemetry middleware (depends: 5, 10) [unspecified-high]\n\nWave 3 (After Wave 2 - integration + UI):\n\u251C\u2500\u2500 Task 15: Main route combining modules (depends: 6, 11, 14) [deep]\n\u251C\u2500\u2500 Task 16: UI data visualization (depends: 12, 13) [visual-engineering]\n\u251C\u2500\u2500 Task 17: Deployment config A (depends: 15) [quick]\n\u251C\u2500\u2500 Task 18: Deployment config B (depends: 15) [quick]\n\u251C\u2500\u2500 Task 19: Deployment config C (depends: 15) [quick]\n\u2514\u2500\u2500 Task 20: UI request log + build (depends: 16) [visual-engineering]\n\nWave FINAL (After ALL tasks \u2014 4 parallel reviews, then user okay):\n\u251C\u2500\u2500 Task F1: Plan compliance audit (oracle)\n\u251C\u2500\u2500 Task F2: Code quality review (unspecified-high)\n\u251C\u2500\u2500 Task F3: Real manual QA (unspecified-high)\n\u2514\u2500\u2500 Task F4: Scope fidelity check (deep)\n-> Present results -> Get explicit user okay\n\nCritical Path: Task 1 \u2192 Task 5 \u2192 Task 8 \u2192 Task 11 \u2192 Task 15 \u2192 Task 21 \u2192 F1-F4 \u2192 user okay\nParallel Speedup: ~70% faster than sequential\nMax Concurrent: 7 (Waves 1 & 2)\n```\n\n### Dependency Matrix (abbreviated - show ALL tasks in your generated plan)\n\n- **1-7**: - - 8-14, 1\n- **8**: 3, 5, 7 - 11, 15, 2\n- **11**: 8 - 15, 2\n- **14**: 5, 10 - 15, 2\n- **15**: 6, 11, 14 - 17-19, 21, 3\n- **21**: 15 - 23, 24, 4\n\n> This is abbreviated for reference. YOUR generated plan must include the FULL matrix for ALL tasks.\n\n### Agent Dispatch Summary\n\n- **1**: **7** - T1-T4 \u2192 `quick`, T5 \u2192 `quick`, T6 \u2192 `quick`, T7 \u2192 `quick`\n- **2**: **7** - T8 \u2192 `deep`, T9 \u2192 `unspecified-high`, T10 \u2192 `unspecified-high`, T11 \u2192 `deep`, T12 \u2192 `visual-engineering`, T13 \u2192 `quick`, T14 \u2192 `unspecified-high`\n- **3**: **6** - T15 \u2192 `deep`, T16 \u2192 `visual-engineering`, T17-T19 \u2192 `quick`, T20 \u2192 `visual-engineering`\n- **4**: **4** - T21 \u2192 `deep`, T22 \u2192 `unspecified-high`, T23 \u2192 `deep`, T24 \u2192 `git`\n- **FINAL**: **4** - F1 \u2192 `oracle`, F2 \u2192 `unspecified-high`, F3 \u2192 `unspecified-high`, F4 \u2192 `deep`\n\n---\n\n## TODOs\n\n> Implementation + Test = ONE Task. Never separate.\n> EVERY task MUST have: Recommended Agent Profile + Parallelization info + QA Scenarios.\n> **A task WITHOUT QA Scenarios is INCOMPLETE. No exceptions.**\n\n- [ ] 1. [Task Title]\n\n **What to do**:\n - [Clear implementation steps]\n - [Test cases to cover]\n\n **Must NOT do**:\n - [Specific exclusions from guardrails]\n\n **Recommended Agent Profile**:\n > Select category + skills based on task domain. Justify each choice.\n - **Category**: `[visual-engineering | ultrabrain | artistry | quick | unspecified-low | unspecified-high | writing]`\n - Reason: [Why this category fits the task domain]\n - **Skills**: [`skill-1`, `skill-2`]\n - `skill-1`: [Why needed - domain overlap explanation]\n - `skill-2`: [Why needed - domain overlap explanation]\n - **Skills Evaluated but Omitted**:\n - `omitted-skill`: [Why domain doesn't overlap]\n\n **Parallelization**:\n - **Can Run In Parallel**: YES | NO\n - **Parallel Group**: Wave N (with Tasks X, Y) | Sequential\n - **Blocks**: [Tasks that depend on this task completing]\n - **Blocked By**: [Tasks this depends on] | None (can start immediately)\n\n **References** (CRITICAL - Be Exhaustive):\n\n > The executor has NO context from your interview. References are their ONLY guide.\n > Each reference must answer: \"What should I look at and WHY?\"\n\n **Pattern References** (existing code to follow):\n - `src/services/auth.ts:45-78` - Authentication flow pattern (JWT creation, refresh token handling)\n\n **API/Type References** (contracts to implement against):\n - `src/types/user.ts:UserDTO` - Response shape for user endpoints\n\n **Test References** (testing patterns to follow):\n - `src/__tests__/auth.test.ts:describe(\"login\")` - Test structure and mocking patterns\n\n **External References** (libraries and frameworks):\n - Official docs: `https://zod.dev/?id=basic-usage` - Zod validation syntax\n\n **WHY Each Reference Matters** (explain the relevance):\n - Don't just list files - explain what pattern/information the executor should extract\n - Bad: `src/utils.ts` (vague, which utils? why?)\n - Good: `src/utils/validation.ts:sanitizeInput()` - Use this sanitization pattern for user input\n\n **Acceptance Criteria**:\n\n > **AGENT-EXECUTABLE VERIFICATION ONLY** - No human action permitted.\n > Every criterion MUST be verifiable by running a command or using a tool.\n\n **If TDD (tests enabled):**\n - [ ] Test file created: src/auth/login.test.ts\n - [ ] bun test src/auth/login.test.ts \u2192 PASS (3 tests, 0 failures)\n\n **QA Scenarios (MANDATORY - task is INCOMPLETE without these):**\n\n > **This is NOT optional. A task without QA scenarios WILL BE REJECTED.**\n >\n > Write scenario tests that verify the ACTUAL BEHAVIOR of what you built.\n > Minimum: 1 happy path + 1 failure/edge case per task.\n > Each scenario = exact tool + exact steps + exact assertions + evidence path.\n >\n > **The executing agent MUST run these scenarios after implementation.**\n > **The orchestrator WILL verify evidence files exist before marking task complete.**\n\n \\`\\`\\`\n Scenario: [Happy path - what SHOULD work]\n Tool: [Playwright / interactive_bash / Bash (curl)]\n Preconditions: [Exact setup state]\n Steps:\n 1. [Exact action - specific command/selector/endpoint, no vagueness]\n 2. [Next action - with expected intermediate state]\n 3. [Assertion - exact expected value, not \"verify it works\"]\n Expected Result: [Concrete, observable, binary pass/fail]\n Failure Indicators: [What specifically would mean this failed]\n Evidence: .omo/evidence/task-{N}-{scenario-slug}.{ext}\n\n Scenario: [Failure/edge case - what SHOULD fail gracefully]\n Tool: [same format]\n Preconditions: [Invalid input / missing dependency / error state]\n Steps:\n 1. [Trigger the error condition]\n 2. [Assert error is handled correctly]\n Expected Result: [Graceful failure with correct error message/code]\n Evidence: .omo/evidence/task-{N}-{scenario-slug}-error.{ext}\n \\`\\`\\`\n\n > **Specificity requirements - every scenario MUST use:**\n > - **Selectors**: Specific CSS selectors (`.login-button`, not \"the login button\")\n > - **Data**: Concrete test data (`\"test@example.com\"`, not `\"[email]\"`)\n > - **Assertions**: Exact values (`text contains \"Welcome back\"`, not \"verify it works\")\n > - **Timing**: Wait conditions where relevant (`timeout: 10s`)\n > - **Negative**: At least ONE failure/error scenario per task\n >\n > **Anti-patterns (your scenario is INVALID if it looks like this):**\n > - \u274C \"Verify it works correctly\" - HOW? What does \"correctly\" mean?\n > - \u274C \"Check the API returns data\" - WHAT data? What fields? What values?\n > - \u274C \"Test the component renders\" - WHERE? What selector? What content?\n > - \u274C Any scenario without an evidence path\n\n **Evidence to Capture:**\n - [ ] Each evidence file named: task-{N}-{scenario-slug}.{ext}\n - [ ] Screenshots for UI, terminal output for CLI, response bodies for API\n\n **Commit**: YES | NO (groups with N)\n - Message: `type(scope): desc`\n - Files: `path/to/file`\n - Pre-commit: `test command`\n\n---\n\n## Final Verification Wave (MANDATORY \u2014 after ALL implementation tasks)\n\n> 4 review agents run in PARALLEL. ALL must APPROVE. Present consolidated results to user and get explicit \"okay\" before completing.\n>\n> **Do NOT auto-proceed after verification. Wait for user's explicit approval before marking work complete.**\n> **Never mark F1-F4 as checked before getting user's okay.** Rejection or user feedback -> fix -> re-run -> present again -> wait for okay.\n\n- [ ] F1. **Plan Compliance Audit** \u2014 `oracle`\n Read the plan end-to-end. For each \"Must Have\": verify implementation exists (read file, curl endpoint, run command). For each \"Must NOT Have\": search codebase for forbidden patterns \u2014 reject with file:line if found. Check evidence files exist in .omo/evidence/. Compare deliverables against plan.\n Output: `Must Have [N/N] | Must NOT Have [N/N] | Tasks [N/N] | VERDICT: APPROVE/REJECT`\n\n- [ ] F2. **Code Quality Review** \u2014 `unspecified-high`\n Run `tsc --noEmit` + linter + `bun test`. Review all changed files for: `as any`/`@ts-ignore`, empty catches, console.log in prod, commented-out code, unused imports. Check AI slop: excessive comments, over-abstraction, generic names (data/result/item/temp).\n Output: `Build [PASS/FAIL] | Lint [PASS/FAIL] | Tests [N pass/N fail] | Files [N clean/N issues] | VERDICT`\n\n- [ ] F3. **Real Manual QA** \u2014 `unspecified-high` (+ `playwright` skill if UI)\n Start from clean state. Execute EVERY QA scenario from EVERY task \u2014 follow exact steps, capture evidence. Test cross-task integration (features working together, not isolation). Test edge cases: empty state, invalid input, rapid actions. Save to `.omo/evidence/final-qa/`.\n Output: `Scenarios [N/N pass] | Integration [N/N] | Edge Cases [N tested] | VERDICT`\n\n- [ ] F4. **Scope Fidelity Check** \u2014 `deep`\n For each task: read \"What to do\", read actual diff (git log/diff). Verify 1:1 \u2014 everything in spec was built (no missing), nothing beyond spec was built (no creep). Check \"Must NOT do\" compliance. Detect cross-task contamination: Task N touching Task M's files. Flag unaccounted changes.\n Output: `Tasks [N/N compliant] | Contamination [CLEAN/N issues] | Unaccounted [CLEAN/N files] | VERDICT`\n\n---\n\n## Commit Strategy\n\n- **1**: `type(scope): desc` - file.ts, npm test\n\n---\n\n## Success Criteria\n\n### Verification Commands\n```bash\ncommand # Expected: output\n```\n\n### Final Checklist\n- [ ] All \"Must Have\" present\n- [ ] All \"Must NOT Have\" absent\n- [ ] All tests pass\n```\n\n---\n";