oh-my-opencode 4.15.0 → 4.16.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 (239) hide show
  1. package/dist/cli/doctor/checks/tui-plugin-config.d.ts +4 -4
  2. package/dist/cli/index.js +1149 -1040
  3. package/dist/cli/install-senpi/index.d.ts +1 -0
  4. package/dist/cli/run/poll-for-completion.d.ts +4 -0
  5. package/dist/cli/run/session-resolver.d.ts +1 -0
  6. package/dist/cli/senpi-platform-flag.d.ts +4 -0
  7. package/dist/cli/types.d.ts +2 -1
  8. package/dist/cli-node/index.js +1149 -1040
  9. package/dist/features/background-agent/manager.d.ts +16 -0
  10. package/dist/hooks/anthropic-context-window-limit-recovery/aggressive-truncation-strategy.d.ts +1 -0
  11. package/dist/index.js +1334 -1146
  12. package/dist/skills/debugging/references/methodology/06-fix.md +6 -0
  13. package/dist/skills/frontend/ATTRIBUTION.md +13 -3
  14. package/dist/skills/frontend/SKILL.md +8 -3
  15. package/dist/skills/frontend/references/design/README.md +1 -1
  16. package/dist/skills/frontend/references/design/_INDEX.md +1 -1
  17. package/dist/skills/frontend/references/design/lazyweb.md +77 -0
  18. package/dist/skills/frontend/references/design/stitch-design-example.md +121 -0
  19. package/dist/skills/frontend/references/designpowers/EVIDENCE.md +10 -2
  20. package/dist/skills/frontend/references/designpowers/UPSTREAM.md +1 -1
  21. package/dist/skills/programming/SKILL.md +10 -1
  22. package/dist/skills/programming/references/logging.md +91 -0
  23. package/dist/skills/ulw-plan/SKILL.md +5 -5
  24. package/dist/skills/ulw-plan/references/full-workflow.md +7 -7
  25. package/dist/skills/ulw-plan/references/intent-unclear.md +3 -3
  26. package/dist/skills/ulw-research/ATTRIBUTION.md +2 -2
  27. package/dist/skills/ulw-research/SKILL.md +28 -7
  28. package/dist/tools/skill/description-formatter.d.ts +1 -0
  29. package/dist/tools/skill/description-formatter.test-support.d.ts +9 -0
  30. package/dist/tools/skill/zauc-mocks-skill-tools/test-support.d.ts +25 -0
  31. package/dist/tui.js +121 -419
  32. package/package.json +32 -15
  33. package/packages/git-bash-mcp/dist/cli.js +2 -2
  34. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  35. package/packages/omo-codex/plugin/components/bootstrap/AGENTS.md +55 -0
  36. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +212 -117
  37. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  38. package/packages/omo-codex/plugin/components/codegraph/AGENTS.md +51 -0
  39. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +936 -248
  40. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +233 -135
  41. package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
  42. package/packages/omo-codex/plugin/components/codegraph/src/cache-gc.ts +29 -0
  43. package/packages/omo-codex/plugin/components/codegraph/src/cli.ts +13 -0
  44. package/packages/omo-codex/plugin/components/codegraph/src/hook-sweep.ts +25 -0
  45. package/packages/omo-codex/plugin/components/codegraph/src/hook-types.ts +3 -1
  46. package/packages/omo-codex/plugin/components/codegraph/src/hook.ts +30 -1
  47. package/packages/omo-codex/plugin/components/codegraph/src/serve.ts +16 -2
  48. package/packages/omo-codex/plugin/components/codegraph/src/sweep-cli.ts +80 -0
  49. package/packages/omo-codex/plugin/components/codegraph/test/cache-gc.test.ts +34 -0
  50. package/packages/omo-codex/plugin/components/codegraph/test/hook-exclusion.test.ts +107 -0
  51. package/packages/omo-codex/plugin/components/codegraph/test/hook-registration.test.ts +26 -0
  52. package/packages/omo-codex/plugin/components/codegraph/test/hook-sweep.test.ts +29 -0
  53. package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +8 -21
  54. package/packages/omo-codex/plugin/components/codegraph/test/mcp-bridge-fixtures.ts +108 -0
  55. package/packages/omo-codex/plugin/components/codegraph/test/serve-built-wrapper.test.ts +76 -0
  56. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge.test.ts +17 -111
  57. package/packages/omo-codex/plugin/components/codegraph/test/serve-provision.test.ts +1 -1
  58. package/packages/omo-codex/plugin/components/codegraph/test/serve.test.ts +45 -67
  59. package/packages/omo-codex/plugin/components/codegraph/test/sweep-cli.test.ts +56 -0
  60. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  61. package/packages/omo-codex/plugin/components/git-bash/AGENTS.md +31 -0
  62. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  63. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/AGENTS.md +45 -0
  64. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  65. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  66. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus.md +37 -102
  67. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  68. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
  69. package/packages/omo-codex/plugin/components/teammode/AGENTS.md +46 -0
  70. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  71. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +6 -0
  72. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +6 -0
  73. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  74. package/packages/omo-codex/plugin/components/ultrawork/AGENTS.md +5 -2
  75. package/packages/omo-codex/plugin/components/ultrawork/CHANGELOG.md +2 -0
  76. package/packages/omo-codex/plugin/components/ultrawork/README.md +3 -3
  77. package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +51 -2
  78. package/packages/omo-codex/plugin/components/ultrawork/package.json +2 -1
  79. package/packages/omo-codex/plugin/components/ultrawork/scripts/sync-directive.mjs +14 -1
  80. package/packages/omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md +380 -0
  81. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +5 -2
  82. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +4 -4
  83. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +2 -2
  84. package/packages/omo-codex/plugin/components/ultrawork/src/codex-hook.ts +5 -3
  85. package/packages/omo-codex/plugin/components/ultrawork/src/skill-pointer.ts +56 -0
  86. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +4 -4
  87. package/packages/omo-codex/plugin/components/ultrawork/test/directive-source.test.ts +12 -0
  88. package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +1 -0
  89. package/packages/omo-codex/plugin/components/ultrawork/test/skill-pointer.test.ts +82 -0
  90. package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +1 -0
  91. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +56 -5
  92. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-hook.d.ts +1 -0
  93. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-hook.js +5 -1
  94. package/packages/omo-codex/plugin/components/ulw-loop/dist/ultrawork-directive.d.ts +2 -1
  95. package/packages/omo-codex/plugin/components/ulw-loop/dist/ultrawork-directive.js +5 -3
  96. package/packages/omo-codex/plugin/components/ulw-loop/dist/ultrawork-skill-pointer.d.ts +7 -0
  97. package/packages/omo-codex/plugin/components/ulw-loop/dist/ultrawork-skill-pointer.js +46 -0
  98. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  99. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +1 -1
  100. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +5 -1
  101. package/packages/omo-codex/plugin/components/ulw-loop/src/ultrawork-directive.ts +9 -3
  102. package/packages/omo-codex/plugin/components/ulw-loop/src/ultrawork-skill-pointer.ts +55 -0
  103. package/packages/omo-codex/plugin/components/ulw-loop/test/ultrawork-directive.test.ts +49 -0
  104. package/packages/omo-codex/plugin/package-lock.json +13 -13
  105. package/packages/omo-codex/plugin/package.json +1 -1
  106. package/packages/omo-codex/plugin/scripts/auto-update-plan.mjs +147 -2
  107. package/packages/omo-codex/plugin/scripts/auto-update-release-notes.mjs +33 -0
  108. package/packages/omo-codex/plugin/scripts/auto-update.mjs +48 -10
  109. package/packages/omo-codex/plugin/scripts/build-components.mjs +63 -17
  110. package/packages/omo-codex/plugin/scripts/materialize-shared-upstreams.mjs +10 -3
  111. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +19 -0
  112. package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +18 -0
  113. package/packages/omo-codex/plugin/skills/debugging/references/methodology/06-fix.md +6 -0
  114. package/packages/omo-codex/plugin/skills/frontend/ATTRIBUTION.md +13 -3
  115. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +8 -3
  116. package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +1 -1
  117. package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +1 -1
  118. package/packages/omo-codex/plugin/skills/frontend/references/design/lazyweb.md +77 -0
  119. package/packages/omo-codex/plugin/skills/frontend/references/design/stitch-design-example.md +121 -0
  120. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/EVIDENCE.md +10 -2
  121. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/UPSTREAM.md +1 -1
  122. package/packages/omo-codex/plugin/skills/programming/SKILL.md +10 -1
  123. package/packages/omo-codex/plugin/skills/programming/references/logging.md +91 -0
  124. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +380 -0
  125. package/packages/omo-codex/plugin/skills/ultrawork/agents/openai.yaml +2 -0
  126. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +1 -1
  127. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +5 -2
  128. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +4 -4
  129. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +2 -2
  130. package/packages/omo-codex/plugin/skills/ulw-research/ATTRIBUTION.md +2 -2
  131. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +31 -10
  132. package/packages/omo-codex/plugin/test/auto-update-release-notes.test.mjs +32 -0
  133. package/packages/omo-codex/plugin/test/auto-update.test.mjs +153 -3
  134. package/packages/omo-codex/plugin/test/install-time-build-runtime.test.mjs +1 -1
  135. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +20 -1
  136. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +39 -10
  137. package/packages/omo-codex/plugin/test/ultrawork-skill-pointer.test.mjs +56 -0
  138. package/packages/omo-codex/plugin/test/ulw-research-epistemic-contract.test.mjs +98 -0
  139. package/packages/omo-codex/plugin/test/ulw-research-skill-contract.test.mjs +25 -7
  140. package/packages/omo-codex/scripts/install-dist/install-local.mjs +612 -4193
  141. package/packages/shared-skills/skills/debugging/references/methodology/06-fix.md +6 -0
  142. package/packages/shared-skills/skills/frontend/ATTRIBUTION.md +13 -3
  143. package/packages/shared-skills/skills/frontend/SKILL.md +8 -3
  144. package/packages/shared-skills/skills/frontend/references/design/README.md +1 -1
  145. package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +1 -1
  146. package/packages/shared-skills/skills/frontend/references/design/lazyweb.md +77 -0
  147. package/packages/shared-skills/skills/frontend/references/design/stitch-design-example.md +121 -0
  148. package/packages/shared-skills/skills/frontend/references/designpowers/EVIDENCE.md +10 -2
  149. package/packages/shared-skills/skills/frontend/references/designpowers/UPSTREAM.md +1 -1
  150. package/packages/shared-skills/skills/programming/SKILL.md +10 -1
  151. package/packages/shared-skills/skills/programming/references/logging.md +91 -0
  152. package/packages/shared-skills/skills/ulw-plan/SKILL.md +5 -5
  153. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +7 -7
  154. package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +3 -3
  155. package/packages/shared-skills/skills/ulw-research/ATTRIBUTION.md +2 -2
  156. package/packages/shared-skills/skills/ulw-research/SKILL.md +28 -7
  157. package/packages/omo-codex/plugin/skills/ultraresearch/SKILL.md +0 -10
  158. package/packages/omo-codex/plugin/skills/ultraresearch/agents/openai.yaml +0 -2
  159. /package/dist/skills/frontend/references/designpowers/vendor/skills/accessible-content/{SKILL.md → reference.md} +0 -0
  160. /package/dist/skills/frontend/references/designpowers/vendor/skills/adaptive-interfaces/{SKILL.md → reference.md} +0 -0
  161. /package/dist/skills/frontend/references/designpowers/vendor/skills/cognitive-accessibility/{SKILL.md → reference.md} +0 -0
  162. /package/dist/skills/frontend/references/designpowers/vendor/skills/design-debate/{SKILL.md → reference.md} +0 -0
  163. /package/dist/skills/frontend/references/designpowers/vendor/skills/design-debt-tracker/{SKILL.md → reference.md} +0 -0
  164. /package/dist/skills/frontend/references/designpowers/vendor/skills/design-handoff/{SKILL.md → reference.md} +0 -0
  165. /package/dist/skills/frontend/references/designpowers/vendor/skills/design-md/{SKILL.md → reference.md} +0 -0
  166. /package/dist/skills/frontend/references/designpowers/vendor/skills/design-retrospective/{SKILL.md → reference.md} +0 -0
  167. /package/dist/skills/frontend/references/designpowers/vendor/skills/design-review/{SKILL.md → reference.md} +0 -0
  168. /package/dist/skills/frontend/references/designpowers/vendor/skills/design-system-alignment/{SKILL.md → reference.md} +0 -0
  169. /package/dist/skills/frontend/references/designpowers/vendor/skills/designpowers-critique/{SKILL.md → reference.md} +0 -0
  170. /package/dist/skills/frontend/references/designpowers/vendor/skills/heuristic-evaluation/{SKILL.md → reference.md} +0 -0
  171. /package/dist/skills/frontend/references/designpowers/vendor/skills/inclusive-personas/{SKILL.md → reference.md} +0 -0
  172. /package/dist/skills/frontend/references/designpowers/vendor/skills/inspiration-scouting/{SKILL.md → reference.md} +0 -0
  173. /package/dist/skills/frontend/references/designpowers/vendor/skills/interaction-design/{SKILL.md → reference.md} +0 -0
  174. /package/dist/skills/frontend/references/designpowers/vendor/skills/motion-choreography/{SKILL.md → reference.md} +0 -0
  175. /package/dist/skills/frontend/references/designpowers/vendor/skills/research-planning/{SKILL.md → reference.md} +0 -0
  176. /package/dist/skills/frontend/references/designpowers/vendor/skills/responsive-patterns/{SKILL.md → reference.md} +0 -0
  177. /package/dist/skills/frontend/references/designpowers/vendor/skills/synthetic-user-testing/{SKILL.md → reference.md} +0 -0
  178. /package/dist/skills/frontend/references/designpowers/vendor/skills/taste-feedback/{SKILL.md → reference.md} +0 -0
  179. /package/dist/skills/frontend/references/designpowers/vendor/skills/taste-report/{SKILL.md → reference.md} +0 -0
  180. /package/dist/skills/frontend/references/designpowers/vendor/skills/token-architecture/{SKILL.md → reference.md} +0 -0
  181. /package/dist/skills/frontend/references/designpowers/vendor/skills/ui-composition/{SKILL.md → reference.md} +0 -0
  182. /package/dist/skills/frontend/references/designpowers/vendor/skills/usability-testing/{SKILL.md → reference.md} +0 -0
  183. /package/dist/skills/frontend/references/designpowers/vendor/skills/verification-before-shipping/{SKILL.md → reference.md} +0 -0
  184. /package/dist/skills/frontend/references/designpowers/vendor/skills/voice-and-tone/{SKILL.md → reference.md} +0 -0
  185. /package/dist/skills/frontend/references/designpowers/vendor/skills/writing-design-plans/{SKILL.md → reference.md} +0 -0
  186. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/accessible-content/{SKILL.md → reference.md} +0 -0
  187. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/adaptive-interfaces/{SKILL.md → reference.md} +0 -0
  188. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/cognitive-accessibility/{SKILL.md → reference.md} +0 -0
  189. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-debate/{SKILL.md → reference.md} +0 -0
  190. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-debt-tracker/{SKILL.md → reference.md} +0 -0
  191. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-handoff/{SKILL.md → reference.md} +0 -0
  192. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-md/{SKILL.md → reference.md} +0 -0
  193. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-retrospective/{SKILL.md → reference.md} +0 -0
  194. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-review/{SKILL.md → reference.md} +0 -0
  195. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-system-alignment/{SKILL.md → reference.md} +0 -0
  196. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/designpowers-critique/{SKILL.md → reference.md} +0 -0
  197. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/heuristic-evaluation/{SKILL.md → reference.md} +0 -0
  198. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/inclusive-personas/{SKILL.md → reference.md} +0 -0
  199. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/inspiration-scouting/{SKILL.md → reference.md} +0 -0
  200. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/interaction-design/{SKILL.md → reference.md} +0 -0
  201. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/motion-choreography/{SKILL.md → reference.md} +0 -0
  202. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/research-planning/{SKILL.md → reference.md} +0 -0
  203. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/responsive-patterns/{SKILL.md → reference.md} +0 -0
  204. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/synthetic-user-testing/{SKILL.md → reference.md} +0 -0
  205. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/taste-feedback/{SKILL.md → reference.md} +0 -0
  206. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/taste-report/{SKILL.md → reference.md} +0 -0
  207. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/token-architecture/{SKILL.md → reference.md} +0 -0
  208. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/ui-composition/{SKILL.md → reference.md} +0 -0
  209. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/usability-testing/{SKILL.md → reference.md} +0 -0
  210. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/verification-before-shipping/{SKILL.md → reference.md} +0 -0
  211. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/voice-and-tone/{SKILL.md → reference.md} +0 -0
  212. /package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/writing-design-plans/{SKILL.md → reference.md} +0 -0
  213. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/accessible-content/{SKILL.md → reference.md} +0 -0
  214. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/adaptive-interfaces/{SKILL.md → reference.md} +0 -0
  215. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/cognitive-accessibility/{SKILL.md → reference.md} +0 -0
  216. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-debate/{SKILL.md → reference.md} +0 -0
  217. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-debt-tracker/{SKILL.md → reference.md} +0 -0
  218. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-handoff/{SKILL.md → reference.md} +0 -0
  219. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-md/{SKILL.md → reference.md} +0 -0
  220. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-retrospective/{SKILL.md → reference.md} +0 -0
  221. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-review/{SKILL.md → reference.md} +0 -0
  222. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-system-alignment/{SKILL.md → reference.md} +0 -0
  223. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/designpowers-critique/{SKILL.md → reference.md} +0 -0
  224. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/heuristic-evaluation/{SKILL.md → reference.md} +0 -0
  225. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/inclusive-personas/{SKILL.md → reference.md} +0 -0
  226. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/inspiration-scouting/{SKILL.md → reference.md} +0 -0
  227. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/interaction-design/{SKILL.md → reference.md} +0 -0
  228. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/motion-choreography/{SKILL.md → reference.md} +0 -0
  229. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/research-planning/{SKILL.md → reference.md} +0 -0
  230. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/responsive-patterns/{SKILL.md → reference.md} +0 -0
  231. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/synthetic-user-testing/{SKILL.md → reference.md} +0 -0
  232. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/taste-feedback/{SKILL.md → reference.md} +0 -0
  233. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/taste-report/{SKILL.md → reference.md} +0 -0
  234. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/token-architecture/{SKILL.md → reference.md} +0 -0
  235. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/ui-composition/{SKILL.md → reference.md} +0 -0
  236. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/usability-testing/{SKILL.md → reference.md} +0 -0
  237. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/verification-before-shipping/{SKILL.md → reference.md} +0 -0
  238. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/voice-and-tone/{SKILL.md → reference.md} +0 -0
  239. /package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/writing-design-plans/{SKILL.md → reference.md} +0 -0
@@ -0,0 +1,380 @@
1
+ ---
2
+ name: ultrawork
3
+ description: Binding ultrawork mode directive for omo on Codex. When a prompt contains ultrawork or ulw, the omo UserPromptSubmit hook injects a short bootstrap that points at this file. Read the whole file and follow every rule in it for the rest of the task.
4
+ metadata:
5
+ short-description: Binding ultrawork mode directive
6
+ ---
7
+
8
+ <ultrawork-mode>
9
+
10
+ **MANDATORY**: First user-visible line this turn MUST be exactly:
11
+ `ULTRAWORK MODE ENABLED!`
12
+
13
+ [CODE RED] Maximum precision. Outcome-first. Evidence-driven.
14
+
15
+ # Role
16
+ Expert coding agent. Plan obsessively. Ship verified work. No process
17
+ narration.
18
+
19
+ # Goal
20
+ Deliver EXACTLY what the user asked, end-to-end working, proven by
21
+ captured evidence: a failing-first proof that went RED→GREEN through
22
+ the cheapest faithful channel, plus real-surface proof sized by the
23
+ tier below. TESTS ALONE NEVER PROVE DONE — a green suite means the
24
+ unit-level contract holds, not that the user-facing behavior works.
25
+
26
+ # Tier triage (classify ONCE at bootstrap; record tier + one-line
27
+ justification in the notepad; ratchet up only)
28
+ Default is LIGHT. Take HEAVY only when the change set hits a fact you
29
+ can point to: a new module / layer / domain model / abstraction;
30
+ auth, security, session, or permissions; an external integration
31
+ (API, queue, payment, webhook); a DB schema or migration; concurrency,
32
+ transaction boundaries, or cache invalidation; a refactor crossing
33
+ domain boundaries; or the user signaled care ("carefully",
34
+ "thoroughly", "design first") or demanded review.
35
+ When unsure, take HEAVY. If a HEAVY fact surfaces mid-task, upgrade
36
+ immediately and redo whatever the LIGHT path skipped; never downgrade
37
+ mid-task. The tier sizes process, never honesty: both tiers capture
38
+ evidence, record cleanup receipts, and obey the never-suppress rules.
39
+
40
+ LIGHT — a narrow change inside existing layers (one-spot bugfix, a
41
+ method or endpoint following an existing pattern, a validation rule,
42
+ a query tweak, copy/constants): plan directly in the notepad; 1-2
43
+ success criteria (happy path + the riskiest edge); one real-surface
44
+ proof of the user-visible deliverable, where auxiliary surfaces are
45
+ first-class for CLI- or data-shaped work; self-review recorded in the
46
+ notepad instead of the reviewer loop.
47
+ HEAVY — anything a fact above names: the `plan` agent decides waves;
48
+ 3+ success criteria (happy, edge, regression, adversarial risk), each
49
+ with its own channel scenario and both evidence pieces; reviewer loop
50
+ until unconditional approval.
51
+
52
+ # Manual-QA channels
53
+ Run real-surface proof yourself through the channel that faithfully
54
+ exercises the surface; capture the artifact.
55
+
56
+ 1. HTTP call — hit the live endpoint with `curl -i` (or a
57
+ Playwright APIRequestContext); capture status line + headers +
58
+ body.
59
+ 2. tmux — `tmux new-session -d -s ulw-qa-<criterion>`, drive with
60
+ `send-keys`, dump via `tmux capture-pane -pS -E -`; transcript
61
+ is the artifact.
62
+ 3. Browser use — in Codex, use `browser:control-in-app-browser`
63
+ first when available and no authenticated/persistent user browser
64
+ profile is required. Otherwise use Chrome to drive the REAL page;
65
+ if Chrome is not available, download and use agent-browser
66
+ (https://github.com/vercel-labs/agent-browser). Capture action
67
+ log + screenshot path. Never downgrade to a non-browser surface
68
+ for a browser-facing criterion.
69
+ 4. Computer use — when the surface is a desktop/GUI app rather than a
70
+ page, drive it via OS-level automation (a computer-use agent,
71
+ AppleScript, xdotool, etc.) against the running app; capture
72
+ action log + screenshot. USE THIS for any non-browser GUI
73
+ criterion; do not substitute a CLI dump for it.
74
+
75
+ For EVERY scenario name the exact tool and the exact invocation
76
+ upfront: the literal command / API call / page action with its concrete
77
+ inputs (URL, payload, keystrokes, selectors) and the single binary
78
+ observable that decides PASS vs FAIL. "run the endpoint", "open the
79
+ page", "check it works" are NOT scenarios — write the `curl ...`, the
80
+ `send-keys ...`, the Browser plugin action, the `page.click(...)`, the
81
+ expected status/text.
82
+
83
+ Auxiliary surfaces (CLI stdout / DB state diff / parsed config dump)
84
+ are first-class evidence for CLI- or data-shaped criteria; use a
85
+ channel scenario when the behavior is user-facing. `--dry-run`,
86
+ printing the command, "should respond", and "looks correct" never
87
+ count.
88
+
89
+ For TUI visual QA, terminal transcripts alone are not enough when a
90
+ visual surface is being evaluated. In this repo, prefer
91
+ `node script/qa/web-terminal-visual-qa.mjs --title "<surface>" --from-file <capture.txt> --evidence-dir <dir>`
92
+ or the helper's `--command` tmux-backed PTY connector when available.
93
+ Outside this repo, capture equivalent browser/computer-use rendered
94
+ terminal evidence: screenshot, plain transcript, rendered HTML or action
95
+ log, and cleanup receipt.
96
+
97
+ # Bootstrap (DO ALL FOUR BEFORE ANY OTHER WORK — NO SKIPPING)
98
+
99
+ ## 0. Survey the skills, then size the work
100
+ First, survey the loaded skill list and read the description of each
101
+ loosely relevant skill. Decide explicitly which skills this task will
102
+ use and prefer using every genuinely applicable one — name them in the
103
+ notepad with a one-line reason each. Skipping a skill that fits the
104
+ task is a defect.
105
+ Then run Tier triage (above) on the change set and record the tier.
106
+ HEAVY: spawn the `plan` agent with the gathered context, follow its
107
+ wave order and parallel grouping exactly, and run the verification it
108
+ specifies. LIGHT: plan directly in the notepad.
109
+
110
+ ## 1. Create the goal with binding success criteria
111
+ Call `create_goal` (or open your reply with a `# Goal` block treated as
112
+ binding) using exactly `objective`. Do not include `status`. Goals are
113
+ unlimited; never invent a numeric budget or limit.
114
+ The criteria MUST list, upfront:
115
+ - The user-visible deliverable in one line, and the tier with its
116
+ justification.
117
+ - Success criteria sized by tier (LIGHT 1-2, HEAVY 3+ covering happy
118
+ path, edge cases — boundary / empty / malformed / concurrent — and
119
+ adjacent-surface regression named by file + function), each naming
120
+ its exact scenario: the literal command / page action / payload and
121
+ the binary PASS/FAIL observable, plus the evidence artifact it will
122
+ capture.
123
+ - For each criterion, the failing-first proof (test id or scenario)
124
+ that will be captured RED BEFORE the implementation and GREEN after.
125
+ Evidence added after the green code does NOT satisfy this.
126
+
127
+ These scenarios are the contract. You are not done until every one of
128
+ them PASSES with its evidence captured.
129
+
130
+ ## 2. Open the durable notepad
131
+ Run: `NOTE=$(mktemp -t ulw-$(date +%Y%m%d-%H%M%S).XXXXXX.md)`. Echo the
132
+ path. Initialise it with these sections and APPEND (never rewrite) as
133
+ you work:
134
+
135
+ ```
136
+ # Ultrawork Notepad — <one-line goal>
137
+ Started: <ISO timestamp>
138
+
139
+ ## Plan (exhaustively detailed)
140
+ <every step you will take, in order, broken to atomic actions>
141
+
142
+ ## Success criteria + QA scenarios
143
+ <copied from the goal>
144
+
145
+ ## Now
146
+ <the single step in progress>
147
+
148
+ ## Todo
149
+ <every remaining step, ordered>
150
+
151
+ ## Findings
152
+ <every non-obvious fact discovered, with file:line refs>
153
+
154
+ ## Learnings
155
+ <patterns / pitfalls / principles to remember next turn>
156
+ ```
157
+
158
+ Append each finding, decision, command, RED/GREEN capture, and QA
159
+ artifact path the moment it happens. Update `## Now` and
160
+ `## Todo` on every transition. Append-only — never rewrite. This notepad
161
+ is your durable memory and it OUTLIVES the context window. After any
162
+ compaction or context loss (a `Context compacted` notice, a summarized
163
+ history, or you no longer see your own earlier steps), STOP and re-read
164
+ the WHOLE notepad FIRST before any other action, then resume from
165
+ `## Now`. Recover
166
+ state from the notepad; do not re-plan from scratch or re-run completed
167
+ steps.
168
+
169
+ ## 3. Register obsessive todos via `update_plan`
170
+ The todo tool is Codex `update_plan` — your live, user-visible
171
+ checklist. Translate every action from the plan into one `update_plan`
172
+ step — one step per atomic work unit: an edit plus its verification, a
173
+ QA scenario run, a teardown. Keep each step small enough to finish
174
+ within a few tool calls.
175
+ Call `update_plan` on EVERY state transition — the instant a step starts
176
+ (mark it `in_progress`) and the instant it finishes (mark it `completed`
177
+ and the next `in_progress`). Exactly ONE `in_progress` at a time. Mark
178
+ completed IMMEDIATELY — never batch, never let the rendered plan lag
179
+ behind reality. Add newly discovered steps the moment they surface
180
+ instead of waiting for the next pass. Step text encodes WHERE / WHY
181
+ (which criterion it advances) / HOW / VERIFY:
182
+ `path: <action> for <criterion> — verify by <check>`.
183
+
184
+ GOOD pair (test-first, ordered):
185
+ `foo.test.ts: Write FAILING case invalid-email→ValidationError for criterion 2 — verify by RED with assertion msg`
186
+ `src/foo/bar.ts: Implement validateEmail() RFC-5322-lite for criterion 2 — verify by foo.test.ts GREEN + curl 400 body`
187
+ BAD: "Implement feature" / "Fix bug" / "Add tests later" / writing
188
+ production code before its failing test → rewrite.
189
+
190
+ # Finding things (lead with these, parallel-flood the first wave)
191
+ Never guess from memory — locate with the right tool, and re-read before
192
+ you claim or change. Fire 3+ independent lookups in one action;
193
+ serialize only when one output strictly feeds the next.
194
+ - CodeGraph, when `codegraph_*` tools exist -> use `codegraph_explore`
195
+ first for how/where/what/flow questions and before edits; if absent,
196
+ inactive/uninitialized, or cold-start unavailable, keep moving with
197
+ Read/Grep/Glob/LSP and the ast-grep skill.
198
+ - Repo-wide inspection, CLI smoke tests, git/history, bounded command
199
+ output → use native shell commands directly: `rg`, `rg --files`,
200
+ `cat`, and `git`. Narrow huge output before reading it.
201
+ - Symbols — definitions, references, rename impact, diagnostics →
202
+ `lsp_goto_definition`, `lsp_find_references`, `lsp_symbols`,
203
+ `lsp_diagnostics`. Use the LSP, not text search, for anything
204
+ symbol-shaped.
205
+ - Structural shapes — call/function/class/import patterns, codemods →
206
+ the `ast-grep` skill or `sg` CLI with `$VAR` / `$$$` metavars.
207
+ - Text / strings / comments / logs → `rg`. File-name discovery →
208
+ `glob` / `find`. Verbatim content → `read`.
209
+ When discovery needs multiple angles or the module layout is
210
+ unfamiliar, delegate to the `explorer` subagent (read-only codebase
211
+ search, absolute-path results). For research that leaves the repo —
212
+ library/API/docs/web — delegate to the `librarian` subagent. Spawn them
213
+ `fork_context: false` and keep doing root work while they run.
214
+
215
+ # Execution loop (PIN → RED → GREEN → SURFACE → CLEAN)
216
+ Until every success criterion PASSES with its evidence captured:
217
+ 1. Pick next criterion → mark in_progress → update notepad `## Now`.
218
+ 2. PIN + RED: when touching existing behavior, first pin it with a
219
+ characterization test that passes on the unchanged code. Then
220
+ capture the failing-first proof through the cheapest faithful
221
+ channel — a unit test where a seam exists, an integration/e2e test
222
+ where the behavior lives in wiring, or the criterion's real-surface
223
+ scenario captured failing when no test seam exists. It must fail
224
+ for the RIGHT reason (not a syntax error, not a missing import).
225
+ Paste RED output into the notepad. No production code yet.
226
+ 3. GREEN: write the SMALLEST production change that flips RED→GREEN.
227
+ Before GREEN work that depends on external review, PR, issue, or
228
+ branch state, refresh current branch/PR/issue state and preserve existing ordering/policy;
229
+ separate compatibility detection from policy changes unless the goal
230
+ explicitly asks to change policy.
231
+ Re-run the proof. Capture GREEN output. A GREEN far larger than the
232
+ criterion implies means the proof was too coarse — split it.
233
+ 4. SURFACE: run the real-surface proof the criterion named (channel
234
+ table above; auxiliary surface for CLI- or data-shaped criteria),
235
+ end-to-end, yourself. If the RED proof was the scenario itself,
236
+ re-run it now and capture it passing. Paste the artifact path into
237
+ the notepad.
238
+ 5. CLEANUP (PAIRED — NEVER SKIP): the moment a QA scenario spawns any
239
+ resource, register its teardown as its own todo (e.g.
240
+ `cleanup: kill server pid for criterion 2 — verify kill -0 fails`).
241
+ Every runtime artifact the QA spawned in step 4 MUST be torn down
242
+ before this step completes:
243
+ server PIDs (`kill <pid>`; verify `kill -0` fails), `tmux` sessions
244
+ (`tmux kill-session -t ulw-qa-<criterion>`; verify with `tmux ls`),
245
+ browser / Playwright contexts (`.close()`), containers
246
+ (`docker rm -f`), bound ports (`lsof -i :<port>` empty), temp
247
+ sockets / files / dirs (`rm -rf` the `mktemp` paths), QA-only env
248
+ vars. Append a one-line cleanup receipt to the notepad next to the
249
+ artifact, e.g. `cleanup: killed 12345; tmux kill-session ulw-qa-foo;
250
+ rm -rf /tmp/ulw.aB12cD`. No receipt → criterion stays in_progress.
251
+ 6. Verify: LSP diagnostics clean on changed files + full test suite
252
+ green (no skipped, no xfail added this turn).
253
+ 7. Mark completed. Append non-obvious findings / learnings.
254
+ 8. After each increment, re-run every criterion's scenario. Record
255
+ PASS/FAIL inline with the evidence paths AND the cleanup receipt.
256
+ Loop until all PASS.
257
+
258
+ Parallel-batch independent reads / searches / subagents within a step,
259
+ but NEVER parallelise RED and GREEN of the same criterion.
260
+
261
+ # Codex subagent reliability
262
+ Every `multi_agent_v1.spawn_agent` message is self-contained and starts with
263
+ `TASK: <imperative assignment>`, then names `DELIVERABLE`, `SCOPE`, and
264
+ `VERIFY`. State that it is an executable assignment, not a context
265
+ handoff. Use `fork_context: false` unless full history is truly
266
+ required; paste only the context the child needs. Full-history forks can
267
+ make the child continue old parent context instead of the delegated task.
268
+
269
+ # TOML-backed subagent routing compatibility
270
+ Treat TOML-backed role routing as **routing-unverified**. The
271
+ `multi_agent_v1.spawn_agent` schema accepts `message`, `fork_context`,
272
+ `agent_type`, and `model`; it cannot select a TOML-backed role, model, reasoning
273
+ effort, or `service_tier` by name alone. Say so briefly in the notepad, paste the
274
+ role requirements into the message, and judge the result from delivered
275
+ evidence. Never claim the reviewer, planner, or explorer role was
276
+ selected from TOML unless runtime evidence confirms it.
277
+
278
+ Treat child status as a progress signal, not a timeout counter. For
279
+ work likely to exceed one wait cycle, tell the child to send
280
+ `WORKING: <task> - <current phase>` before long reading, testing, or
281
+ review passes, and `BLOCKED: <reason>` only when it cannot progress.
282
+ Track spawned agent names locally. Use `multi_agent_v1.wait_agent` for mailbox
283
+ signals, but a timeout only means no new mailbox update arrived.
284
+ Treat a running child as alive and keep doing independent root work.
285
+ Fallback only when the child is completed without the
286
+ deliverable, ack-only, or no longer running. If that followup is still
287
+ silent or ack-only, record the result as inconclusive, do not count it
288
+ as approval/pass, close it if safe, and respawn a smaller
289
+ `fork_context: false` task with the missing deliverable.
290
+
291
+ # Subagent-dependent transition barrier
292
+ Do not mark an `update_plan` step `completed` while an active child owns
293
+ evidence for that step. Do not start dependent implementation until the
294
+ audit, research, or review result is integrated or explicitly recorded
295
+ as inconclusive. Do not generate a plan before spawned research lanes
296
+ that feed the plan have returned or been closed as inconclusive.
297
+ Do not write the final answer, PR handoff, or completion summary while
298
+ active child agents remain open. Use short `multi_agent_v1.wait_agent` cycles.
299
+ After two silent waits send `TASK STILL ACTIVE: return <deliverable> or
300
+ BLOCKED: <reason>`. After four silent or ack-only checks, close the lane as
301
+ inconclusive, record that it is not approval, and respawn smaller only
302
+ if the deliverable is still required.
303
+
304
+ # Verification gate (TRIGGERED, NOT OPTIONAL)
305
+
306
+ Trigger when ANY apply:
307
+ - Tier is HEAVY.
308
+ - User demanded strict, rigorous, or proper review.
309
+ LIGHT tier records a self-review in the notepad instead: re-read the
310
+ diff, run diagnostics, confirm each criterion's evidence, and state in
311
+ one line why the tier held.
312
+
313
+ Procedure (NON-NEGOTIABLE):
314
+ 1. Spawn a child with `fork_context: false` and a self-contained reviewer
315
+ assignment in `message`. The `multi_agent_v1.spawn_agent` schema cannot select a
316
+ TOML-backed reviewer role, so paste the reviewer requirements into
317
+ the message.
318
+ Pass: goal, success-criteria, scenario evidence, full diff, notepad
319
+ path.
320
+ 2. Treat the reviewer's verdict as binding. There is NO "false
321
+ positive". Every concern is real. Do not argue. Do not minimise. Do
322
+ not explain it away.
323
+ 3. Fix every issue. Re-run the FULL scenario QA. Capture fresh
324
+ evidence. Update notepad.
325
+ 4. Re-submit to the SAME reviewer. Loop until you receive an
326
+ UNCONDITIONAL approval ("looks good but..." = REJECTION).
327
+ 5. Only on unconditional approval may you declare done. Stopping early
328
+ IS failure.
329
+
330
+ # Commits
331
+ Atomic, Conventional Commits (`<type>(<scope>): <imperative>` — feat /
332
+ fix / refactor / test / docs / chore / build / ci / perf). One logical
333
+ change per commit; each commit builds + tests green on its own. No WIP
334
+ on the final branch. If a plan file exists, final commit footer:
335
+ `Plan: .omo/plans/<slug>.md`. Do NOT auto-`git commit` unless the user
336
+ requested or preauthorised this session — default is stage + draft
337
+ message + present for approval.
338
+
339
+ # Constraints
340
+ - Every behavior change needs a failing-first proof captured BEFORE
341
+ the production change, through the cheapest faithful channel (unit
342
+ test at a seam; integration/e2e in wiring; the real-surface scenario
343
+ when no test seam exists). If you typed production code first, STOP,
344
+ revert, capture the proof failing, then redo the change. Exempt
345
+ only: pure formatting, comment-only edits, dependency bumps with no
346
+ behavior delta, rename-only moves — justify each in `## Findings`.
347
+ - A test that mirrors its implementation — asserting mocks were
348
+ called, pinning a constant, or unable to fail under any plausible
349
+ regression — is NOT evidence. Prefer a real-surface proof with no
350
+ new test over a tautological test.
351
+ - Refactors: characterization tests pinning current observable
352
+ behavior FIRST, green against the old code, green throughout.
353
+ - Smallest correct change. No drive-by refactors.
354
+ - Never suppress lints / errors / test failures. Never delete, skip,
355
+ `.only`, `.skip`, `xfail`, or comment out tests to green the suite.
356
+ - Never claim done from inference — only from captured evidence.
357
+ - Parallel tool calls for any independent work.
358
+
359
+ # Output discipline
360
+ - First line literally: `ULTRAWORK MODE ENABLED!`
361
+ - After bootstrap: 1-2 paragraph plan summary + notepad path.
362
+ - During execution: surface only state changes (RED captured, GREEN
363
+ captured, scenario PASS/FAIL with evidence paths, reviewer verdict).
364
+ - Final message: outcome + success-criteria checklist with evidence
365
+ refs + notepad path + reviewer approval (if gate triggered) + commit
366
+ list (`<sha> <subject>`). No file-by-file changelog unless asked.
367
+
368
+ # Stop rules
369
+ - Stop ONLY when every scenario PASSES with captured evidence, every
370
+ cleanup receipt is recorded, notepad is current, and (if gate
371
+ triggered) reviewer approved unconditionally.
372
+ - Leftover QA state (live process, `tmux` session, browser context,
373
+ bound port, temp file / dir) means NOT done. Tear it down, record
374
+ the receipt, then continue.
375
+ - After 2 identical failed attempts at one step, surface what was tried
376
+ and ask the user before another retry.
377
+ - After 2 parallel exploration waves yield no new useful facts, stop
378
+ exploring and act.
379
+
380
+ </ultrawork-mode>
@@ -0,0 +1,2 @@
1
+ interface:
2
+ display_name: "(OmO) ultrawork"
@@ -127,7 +127,7 @@ Gather context BEFORE planning with parallel `explorer` / `librarian` workers pl
127
127
  First survey available skills: read every loosely-relevant skill's description, deliberately choose which this work uses, and prefer applying genuinely-relevant skills over working raw.
128
128
  Then run tier triage per goal — rigor (LIGHT/HEAVY below) and shape (`delivery` default, or `research` when the deliverable is a cited answer, not an artifact) — and record both in an `annotate_ledger` steering entry. Default is LIGHT — a narrow change inside existing layers. Take HEAVY only on a fact you can point to: a new module / abstraction / domain model; auth, security, or session; an external integration; a DB schema or migration; concurrency, transaction boundaries, or cache invalidation; a cross-domain refactor; or the user signaled care or demanded review. When unsure, take HEAVY; upgrade the moment a HEAVY fact surfaces, never downgrade mid-run.
129
129
  HEAVY goals: spawn the `plan` agent with the gathered context, follow its wave ordering and parallel grouping exactly, and run the verification it specifies; carry 3+ successCriteria covering happy path, edge, regression, and adversarial risk. LIGHT goals: plan directly; carry 1-2 successCriteria (happy path + the riskiest edge) with one real-surface proof of the deliverable.
130
- Research-shape goals change the cycle: BEFORE each investigation, read this goal's prior ledger findings and open hypotheses, then extend them — never re-investigate an answered question (the ledger is your research notebook). Record findings via `annotate_ledger` with their source (`file:line`, command output, doc URL) as `--evidence`. Track hypotheses as `HYPOTHESIS[id]: <claim> | status: open`, flipped to `confirmed`/`refuted` only on an observed source. A research criterion passes on a cited answer — skip QA-channel, cleanup, and commit, but keep source-observability (never "looks correct"). Keep hypotheses inside the user's stated question; a scope-widening one is an `add_subgoal` proposal you surface, never silent creep. For a `research`-shape goal you MAY load `ulw-research` (legacy alias: `ultraresearch`) without hesitation — otherwise explicit-request-only, a research-shape goal IS that explicit demand. Research-only: never for a `delivery` goal. It composes with the librarian routing above — `ulw-research` for saturation (many parallel sources, recursive expansion), a single `librarian` for one lookup.
130
+ Research-shape goals change the cycle: BEFORE each investigation, read this goal's prior ledger findings and open hypotheses, then extend them — never re-investigate an answered question (the ledger is your research notebook). Record findings via `annotate_ledger` with their source (`file:line`, command output, doc URL) as `--evidence`. Track hypotheses as `HYPOTHESIS[id]: <claim> | status: open`, flipped to `confirmed`/`refuted` only on an observed source. A research criterion passes on a cited answer — skip QA-channel, cleanup, and commit, but keep source-observability (never "looks correct"). Keep hypotheses inside the user's stated question; a scope-widening one is an `add_subgoal` proposal you surface, never silent creep. For a `research`-shape goal you MAY load `ulw-research` without hesitation — otherwise explicit-request-only, a research-shape goal IS that explicit demand. Research-only: never for a `delivery` goal. It composes with the librarian routing above — `ulw-research` for saturation (many parallel sources, recursive expansion), a single `librarian` for one lookup.
131
131
  For each criterion, define upfront: `id`, exact `scenario` (tool + inputs + binary pass/fail), `expectedEvidence` artifact path, adversarial classes, stop condition, and Manual-QA channel. Vague QA ("verify it works") is a rejected criterion — revise it before execution.
132
132
  For optimization work, capture baseline speed before changes plus behavior/regression proof. Every attempt records speed, behavior/regression, and the keep/revert/iterate decision.
133
133
  A criterion's adversarial classes are the ultraqa classes a fact about the change triggers: malformed input, prompt injection, cancel/resume, stale state, dirty worktree, hung or long commands, flaky tests, misleading success output, repeated interruptions. Record untriggered classes as not-applicable in one line.
@@ -15,9 +15,12 @@ Outcome-first: explore a lot, ask few sharp questions - or none, when the intent
15
15
 
16
16
  ## INTENT ROUTING - pick ONE intent reference
17
17
 
18
- Before routing, parse review modifiers separately. If the user says "high accuracy", "ultra high accuracy", "고정밀", "deep review", or equivalent, set `review_required: true` in the draft. This does NOT choose CLEAR/UNCLEAR and does NOT suppress interview; it only makes the high-accuracy review gate required after the plan exists.
18
+ **Review modifiers are a gate trigger, not a style cue.** If the user says "high accuracy", "ultra high accuracy", "고정밀", "deep review", or equivalent - in ANY turn, even appended to a follow-up question and even after the plan already exists - set `review_required: true` in the draft: the dual high-accuracy review (native `momus` + the independent Codex CLI review) is now REQUIRED before handoff, and if the plan already exists you run it this same turn. Answering the current question more carefully does NOT satisfy it. This does NOT choose CLEAR/UNCLEAR and does NOT suppress interview.
19
19
 
20
- After grounding, make ONE judgment, record `intent: clear|unclear` plus `review_required`, and load ONE intent reference (you ALSO read `references/full-workflow.md` for the shared mechanics - see below). The test keys on whether the desired **OUTCOME** is clear, NOT on request length.
20
+ After grounding, make ONE judgment, record `intent: clear|unclear` plus `review_required`, **ANNOUNCE both to the user in one line**, then load ONE intent reference (you ALSO read `references/full-workflow.md` for the shared mechanics - see below). The test keys on whether the desired **OUTCOME** is clear, NOT on request length. The announcement is the user's first signal of whether they will be interviewed and whether high-accuracy review is already requested - never skip it.
21
+
22
+ > "Intent: **CLEAR**, review required - you specified the endpoint and asked for high accuracy. I will ask only the genuine forks, then run the high-accuracy review after approval."
23
+ > "Intent: **UNCLEAR**, review required - 'make auth better' is open-ended and you asked for high accuracy. I will choose best-practice defaults, then run the high-accuracy review automatically."
21
24
 
22
25
  - **OVERRIDE - explicit ask wins:** if the user explicitly asks to be questioned or interviewed ("ask me", "interview me", "why aren't you asking me" - in any language), route **CLEAR**, run the interview, and turn the adopt-default filter OFF: the user has claimed the forks, so every surviving one is ASKED, not defaulted. This beats the OUTCOME test below, even on a fuzzy brief.
23
26
  - **CLEAR** - the user knows the outcome; the only open items are preferences/tradeoffs the repo cannot answer (genuine owner-decisions). Read **`references/intent-clear.md`**: ask the surviving forks with WHY, run the normal approval gate, and offer high-accuracy review only when `review_required` is false.
@@ -36,7 +36,7 @@ Make ONE judgment and follow ONE reference. Review modifiers are not routing sig
36
36
  - CLEAR -> `intent-clear.md`: run the **two filters** on every candidate question; ask only surviving forks (owner-decisions), with WHY.
37
37
  - UNCLEAR -> `intent-unclear.md`: research maximally, adopt announced best-practice defaults, do not ask the user extra questions.
38
38
 
39
- If a draft/plan already exists and the user asks for high-accuracy review, high-accuracy planning, or to make the plan more accurate, do not reroute from scratch unless the scope changed. Load the draft, preserve its recorded `intent`, set `review_required: true`, update stale plan content if needed, then run the required review loop against the current plan.
39
+ If a draft/plan already exists and the user says a review modifier - even appended to an otherwise unrelated follow-up question - or asks to make the plan more accurate, do not reroute from scratch unless the scope changed. Load the draft, preserve its recorded `intent`, set `review_required: true`, answer the question if one was asked, update stale plan content if needed, then run the required review loop against the current plan in that same turn. A more rigorous answer is not a substitute for the review.
40
40
 
41
41
  Both paths record `intent`, `review_required`, and decisions to `.omo/drafts/<slug>.md` as they go - long sessions outlive your context, and plan generation reads the draft, not your memory.
42
42
 
@@ -82,10 +82,10 @@ Runs in parallel; ALL must APPROVE; surface results and wait for the user's expl
82
82
  ## Phase 4 - Deliver
83
83
  - CLEAR with `review_required: false`: present the plan summary, then ask ONE question and stop - start work now, or run a high-accuracy review first? Never pick for the user; never begin execution yourself - execution belongs to the worker.
84
84
  - CLEAR with `review_required: true`: run the high-accuracy review before delivery, record receipts, then present the plan summary and review result. Do not ask whether to run the review; the user already asked.
85
- - UNCLEAR: run Metis plus the high-accuracy review AUTOMATICALLY before presenting (unless Classify=Trivial), then present a brief that LEADS with the derived approach and the adopted defaults; still wait for the user's explicit okay.
85
+ - UNCLEAR: run the high-accuracy review AUTOMATICALLY before presenting (unless Classify=Trivial), then present a brief that LEADS with the derived approach and the adopted defaults; still wait for the user's explicit okay.
86
86
 
87
87
  ### High-accuracy review (dual review)
88
- The high-accuracy review is DUAL and both passes must return OKAY before handoff: (1) the native `momus` reviewer subagent, and (2) an independent Codex CLI review on gpt-5.5 at xhigh reasoning, run in a disposable isolated workspace and `CODEX_HOME` with the harness's normal approval and sandbox policy. Do not add flags that disable approvals or sandboxing. Fix every cited issue and resubmit BOTH fresh until each approves. CLEAR: runs when the user opts in or `review_required: true`. UNCLEAR: runs automatically unless Classify=Trivial.
88
+ The high-accuracy review is DUAL and both passes must return OKAY before handoff: (1) the native `momus` reviewer subagent, and (2) an independent Codex CLI review on gpt-5.5 at xhigh reasoning, run in a disposable isolated workspace and `CODEX_HOME` with the harness's normal approval and sandbox policy. Do not add flags that disable approvals or sandboxing. One round = exactly ONE `momus` + ONE independent review, dispatched together against the COMPLETE plan file (todos + TL;DR filled) - never a second `momus` while a round is in flight. After both verdicts return, fix every cited issue and resubmit both fresh until each approves. CLEAR: runs when the user opts in or `review_required: true`. UNCLEAR: runs automatically unless Classify=Trivial.
89
89
 
90
90
  The draft must record the native Momus session/result, the independent Codex CLI review command/result, and the fix/retry summary. Do not say "high-accuracy review completed" unless both receipts exist and both final verdicts are unconditional approval.
91
91
 
@@ -99,6 +99,6 @@ multi_agent_v1.spawn_agent({"message":"TASK: act as an explorer. DELIVERABLE: ..
99
99
  Roles: `explorer`, `librarian`, `metis`, `momus`. Spawn long plan/reviewer agents in the background and poll with short waits; require the child to send `WORKING: <task> - <phase>` before long passes and `BLOCKED: <reason>` only when progress stops. A wait timeout only means no new mailbox update arrived; treat a running child as alive. Fall back only when the child completed without the deliverable, is ack-only after followup, explicitly `BLOCKED:`, or no longer running; then respawn a smaller `fork_context: false` job. Close each agent after integrating its result.
100
100
 
101
101
  ## Stop rules
102
- - Plan file exists, template filled, every todo has references + acceptance + QA + commit, dependency matrix consistent: present the summary, ask the start-or-high-accuracy question (CLEAR) or lead with the best-practice brief (UNCLEAR), and stop. Execution belongs to the worker, never to you.
102
+ - Plan file exists, template filled, every todo has references + acceptance + QA + commit, dependency matrix consistent, and any required high-accuracy receipts recorded: present the summary, then (CLEAR without `review_required`) ask the start-or-high-accuracy question, or (CLEAR with `review_required` / UNCLEAR) report the review result - and stop. Execution belongs to the worker, never to you.
103
103
  - Brief presented and `status: awaiting-approval` recorded: wait. Do not re-explore unless the user changes scope.
104
104
  - Two research waves with no new useful facts: stop exploring, present the brief.
@@ -26,7 +26,7 @@ Fold a contrarian self-grill into the Metis spawn: challenge the single highest-
26
26
  </default_selection>
27
27
 
28
28
  <high_accuracy_auto>
29
- Because the human did not steer, adversarial review SUBSTITUTES for the interview you skipped - this is what catches a bad default. After the plan is written, run Metis gap analysis (always) AND the dual high-accuracy review defined in `full-workflow.md` AUTOMATICALLY - no "do you want a review?" question. Fold Metis silently; resubmit fresh until BOTH passes APPROVE; fix every cited issue.
29
+ Because the human did not steer, adversarial review SUBSTITUTES for the interview you skipped - this is what catches a bad default. Metis runs during plan generation as always; after Metis findings are folded and the plan file is complete, run the dual high-accuracy review defined in `full-workflow.md` AUTOMATICALLY - no "do you want a review?" question - and resubmit fresh until BOTH passes APPROVE, fixing every cited issue.
30
30
 
31
31
  TRIVIAL-TIER GUARD: if Classify sized the work Trivial, the auto-Momus loop is SUPPRESSED (Metis still runs once) - a vague-but-tiny request ("clean this up") must not trigger the full adversarial loop. UNCLEAR raises the research-plus-default posture; it does not override the Trivial cost guard for Momus.
32
32
  </high_accuracy_auto>
@@ -40,5 +40,5 @@ Request: "make auth better".
40
40
  1. Research waves -> current auth at `src/auth/*` (session cookies, no login rate-limit, bcrypt rounds=8, no MFA); best-practice baselines via librarian.
41
41
  2. Topology lock as an ANNOUNCEMENT, not a question: components = session hardening, brute-force protection, password policy, MFA (deferred).
42
42
  3. Adopted-defaults table (assumption | default | rationale | reversible?): bcrypt rounds 8 -> 12 (reversible), add 5/min-per-IP login limit (reversible), rotate session id on privilege change (reversible).
43
- 4. Auto Metis + Momus loop -> fix cited gaps -> brief LEADING with the approach and the defaults, surfaced in the human TL;DR for veto.
43
+ 4. Metis folded -> auto dual review (fix cited gaps until both approve) -> brief LEADING with the approach and the defaults, surfaced in the human TL;DR for veto.
44
44
  </worked_example>
@@ -7,9 +7,9 @@ is adapted into this skill's prompt contract.
7
7
 
8
8
  ---
9
9
 
10
- ## 1. insane-research (fivetaku) — inspiration for the claim-ledger verification gate
10
+ ## 1. insane-research (fivetaku) — inspiration for the claim-graph verification gate
11
11
 
12
- The non-code claim-ledger verification gate (Phase 3b: a data-flow-lock where the
12
+ The non-code claim-graph verification gate (Phase 3b: a data-flow-lock where the
13
13
  synthesis may assert a high-risk non-code claim only after it clears `>= 2 independent
14
14
  source domains + 1 counter-search + a primary source`, otherwise it is abstained to an
15
15
  unresolved/refuted annex) is inspired by the data-flow-lock verification design in
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ulw-research
3
- description: "Maximum-saturation research orchestration: parallel explore+librarian swarms across codebase, web, official docs, and OSS repos; a recursive EXPAND loop driven by leads workers return in message text; empirical verification by running code; cited synthesis and optional MD/HTML/PDF/PPTX reports. ACTIVATES ONLY on an explicit user demand for research — the word 'ulw-research' ('/ulw-research', '$ulw-research'), the legacy alias 'ultraresearch', any 'ulw' research wording, or an explicit request for research / deep research / an ultra-precise investigation, in any language. Never self-activates for ordinary questions, debugging, or implementation context-gathering. While active it overrides exploration-bounding defaults: exhaustive coverage is the goal."
3
+ description: "Maximum-saturation research orchestration: parallel explore+librarian swarms across codebase, web, official docs, and OSS repos; a recursive EXPAND loop driven by leads workers return in message text; empirical verification by running code; cited synthesis and optional MD/HTML/PDF/PPTX reports. ACTIVATES ONLY on an explicit user demand for research — the word 'ulw-research' ('/ulw-research', '$ulw-research'), any 'ulw' research wording, or an explicit request for research / deep research / an ultra-precise investigation, in any language. Never self-activates for ordinary questions, debugging, or implementation context-gathering. While active it overrides exploration-bounding defaults: exhaustive coverage is the goal."
4
4
  ---
5
5
 
6
6
  ## Codex Harness Tool Compatibility
@@ -33,7 +33,7 @@ You are the research orchestrator. The user has explicitly ordered exhaustive re
33
33
 
34
34
  ## Activation
35
35
 
36
- Run this skill only when the user explicitly demands it: the word "ulw-research" (also `/ulw-research`, `$ulw-research`), the legacy alias "ultraresearch" (also `/ultraresearch`, `$ultraresearch`), any "ulw" research wording, or an explicit request for research, deep research, or an ultra-precise investigation — in any language. An ordinary question, a debugging session, or another mode's context-gathering is not activation; answer those normally, and mention that `ulw-research` is available (legacy alias: `ultraresearch`) when a question would clearly benefit from it.
36
+ Run this skill only when the user explicitly demands it: the word "ulw-research" (also `/ulw-research`, `$ulw-research`), any "ulw" research wording, or an explicit request for research, deep research, or an ultra-precise investigation — in any language. An ordinary question, a debugging session, or another mode's context-gathering is not activation; answer those normally, and mention that `ulw-research` is available when a question would clearly benefit from it.
37
37
 
38
38
  Open your reply with the line `ULW-RESEARCH MODE ENABLED!`. If another active mode mandates its own first line (ultrawork does), print that mode's line first and this marker on the next line — both contracts stay satisfied.
39
39
 
@@ -51,9 +51,22 @@ The research is done when all of these hold:
51
51
  - Every EXPAND lead was investigated or explicitly closed as a duplicate or dead end, and convergence was reached under the Phase 2 rules.
52
52
  - Claims that were contested, undocumented, or performance-shaped were proven or refuted by executed code.
53
53
  - Every claim in the deliverable cites a source or a verification artifact.
54
+ - Every asserted claim is represented in the claim graph, tied to an intent-vs-reality diff when an expected truth exists, and backed by observation manifest entries from independent observation groups or a documented single-source exception; convergence or exception status is explicit.
54
55
  - Final materials follow the Phase 5 format default or the user's explicit format.
55
56
  - The session journal reconstructs what was searched, found, and expanded, wave by wave.
56
57
 
58
+ ## Epistemic instrumentation
59
+
60
+ Saturation is not just more searching; it is a knowledge-production protocol. The session journal must make the path from observation to claim to verdict auditable. The orchestrator owns these artifacts:
61
+
62
+ - `intent-diff.md` — one row per expected truth derived from the user intent, design/spec text, branch history, or authoritative docs. Required fields: `intent_id`, expected truth, observed reality, diff, violated invariant, intent source, supporting observations, status (`true`, `violated`, or `unknown`), and linked claim ids.
63
+ - `claim-graph.md` — the single claim store; one node per claim. Required fields: `claim_id`, statement, claim type, risk tier, scope, intent ids, supporting observations, contradicting observations, independent observation groups, convergence status, counter-search result, primary source backing, dependencies, status (`supported`, `partial`, `refuted`, or `unresolved`), and final synthesis location. High-risk non-code nodes that clear the Phase 3b gate are mirrored into a `verified-claims` digest section at the top of the file — the sole allowlist the synthesis draws non-code claims from.
64
+ - `observation-manifest.md` — one row per observation. Required fields: `observation_id`, source path or URL, evidence layer, observer group, independence basis, observer, `observed_at`, `valid_at` or `claim_valid_at`, artifact path, quote or line anchor, and contamination notes.
65
+ - `verification-economics.md` — one row per proof decision. Required fields: claim, risk, error cost, verification cost/time, chosen verification path, defer/verify decision, outcome, and residual risk.
66
+ - `cause-disappearance.md` — one row per causal finding. Required fields: cause id, expected truth, previous observation, `last_seen`, disconfirming observation, replacement cause if any, current status, and whether the violation is no longer observed.
67
+
68
+ Observation candidates and claim candidates travel back from workers as message text. The orchestrator writes the instrumentation artifacts, links candidates into the intent diff and claim graph, and records where each observation entered the synthesis. A conclusion is not ready for final materials until its expected truth/reality diff is closed or marked unknown, its claim node exists, and its independent-observation convergence status is supported or explicitly excepted.
69
+
57
70
  ## Run the swarm as a cooperating team
58
71
 
59
72
  Saturation research defaults to teammode, not isolated fire-and-forget workers: a lead one worker surfaces almost always reshapes what another should search next. When your harness gives you real cooperating members — Codex: the `teammode` skill (`codex_app` threads); OpenCode: `team_mode` — run this swarm as a team. Fall back to the background-worker swarm below only when team mode is unavailable, or the axes are genuinely independent with no cross-pollination expected.
@@ -80,7 +93,7 @@ Every research spawn message contains, in order:
80
93
  2. The budget lift: "This is an explicit exhaustive-research assignment. Your default retrieval budget and stop-when-answered rules do not apply — run the full protocol below and report every lead."
81
94
  3. Scope — the axis, the sources to hit, and what a complete answer contains.
82
95
  4. The role protocol (Phase 1).
83
- 5. The reply tail. EXPAND markers travel back as message text, never as files. Every worker ends the reply with:
96
+ 5. The reply tail. EXPAND markers, observation candidates, and claim candidates travel back as message text, never as files. Every worker ends the reply with:
84
97
 
85
98
  ```
86
99
  ## EXPAND
@@ -92,7 +105,7 @@ A worker with nothing to expand writes `## EXPAND` followed by `none — <one-li
92
105
 
93
106
  ## Phase 0 — Decompose and open the journal
94
107
 
95
- Before spawning anything, decompose the query:
108
+ Before spawning anything, decompose the query. Start from "what must be true if the user's intent/spec is true?", not "what looks broken?" Seed `intent-diff.md` with those expected truths before treating code, current docs, or web results as the source of truth:
96
109
 
97
110
  ```
98
111
  <analysis>
@@ -112,6 +125,11 @@ This is `$SESSION_DIR`. The orchestrator owns the journal: you write every file
112
125
 
113
126
  - `wave-<N>-<kind>-<axis>.md` — your digest of each worker return: key findings, sources with URLs, and the worker's EXPAND markers verbatim.
114
127
  - `expansion-log.md` — per wave: workers spawned, markers gained, leads opened and closed.
128
+ - `intent-diff.md` — orchestrator-owned expected-truth ledger comparing intent/spec/history to observed reality.
129
+ - `claim-graph.md` — orchestrator-owned claim graph linking every final assertion to observations, counterevidence, dependencies, and verdict.
130
+ - `observation-manifest.md` — orchestrator-owned observation manifest with `observed_at`, temporal validity, artifact paths, and contamination notes.
131
+ - `verification-economics.md` — proof-cost ledger mapping claim risk to verification path, deferral decisions, and residual risk.
132
+ - `cause-disappearance.md` — cause ledger tracking expected truth, previous observation, `last_seen`, disconfirming observation, and whether the violation is no longer observed.
115
133
  - `verify-<slug>.md`, `SYNTHESIS.md`, `REPORT.*` from later phases.
116
134
 
117
135
  Append each digest the moment its worker returns, not in a batch at the end — the journal is your recovery point after context loss and the user's audit trail.
@@ -183,19 +201,21 @@ Reply with: the exact code, the full output, environment (OS, runtime, dependenc
183
201
 
184
202
  Journal each verdict to `verify-<slug>.md`.
185
203
 
186
- ## Phase 3b — Lock non-code claims through a claim ledger
204
+ ## Phase 3b — Lock non-code claims through the claim graph
187
205
 
188
206
  Code settles code-shaped claims (Phase 3). Numeric, market-share, legal, dated, causal, and financial claims cannot be run — so they pass through a data-flow-lock instead (the verification idea adapted from fivetaku/insane-research): the synthesis may assert a high-risk non-code claim **only** if it cleared this gate, and the gate's output is the sole allowlist the synthesis draws from. Skip the gate and there is nothing to synthesize — the lock is self-enforcing.
189
207
 
190
- The claim ledger is orchestrator-owned. Workers only return verified-claim markers as message text, the same channel as EXPAND markers — never a file. As leads resolve, you record one ledger entry per asserted claim and compute its status; workers report claim candidates in their replies, and you decide.
208
+ The claim graph is orchestrator-owned. Workers only return verified-claim markers, observation candidates, and claim candidates as message text, the same channel as EXPAND markers — never a file. As leads resolve, you record one node per asserted claim in `claim-graph.md` and compute its status; workers report claim candidates in their replies, and you decide. The graph is the single claim store: final synthesis may not draw from free-form claims that skipped it.
191
209
 
192
210
  A high-risk claim clears the gate to `verified-claims` only when all hold:
193
211
 
194
212
  - **>= 2 independent source domains** corroborate it (two pages on the same domain count once).
213
+ - **>= 2 independent observation groups** converge on it, unless the graph records why a primary-only source is the correct single-source exception.
195
214
  - **One counter-search** actively looked for a refutation and did not find a stronger one.
196
215
  - **A primary source** (the standard, filing, dataset, or first-party doc) backs it, not only secondary commentary.
216
+ - **Temporal evidence is explicit**: each supporting observation records `observed_at` and either `valid_at` or `claim_valid_at`, so branch-only, historical, release, and current-runtime claims cannot be conflated.
197
217
 
198
- Anything that fails goes to an `Unresolved` (insufficient evidence) or `Refuted` (counter-search won) annex — abstention is a correct outcome, not a gap to paper over. Maintain `claim-ledger.md` with one row per claim `claim | risk | domains | counter-search | primary? | status (verified/unresolved/refuted)` — and write the cleared rows into a `verified-claims` digest. Worker reply marker (message text, same channel as EXPAND):
218
+ Anything that fails goes to an `Unresolved` (insufficient evidence) or `Refuted` (counter-search won) annex — abstention is a correct outcome, not a gap to paper over. Record each gate outcome on the claim node itself risk tier, independent source domains, counter-search result, primary source backing, and status — and mirror the cleared nodes into the `verified-claims` digest section at the top of `claim-graph.md`. Worker reply marker (message text, same channel as EXPAND):
199
219
 
200
220
  ```
201
221
  ## CLAIMS
@@ -204,10 +224,10 @@ Anything that fails goes to an `Unresolved` (insufficient evidence) or `Refuted`
204
224
 
205
225
  ## Phase 4 — Synthesize
206
226
 
207
- After convergence and all verifications, re-read the whole journal and write `SYNTHESIS.md`:
227
+ After convergence and all verifications, re-read the whole journal, start from `intent-diff.md`, `claim-graph.md`, and `observation-manifest.md`, then write `SYNTHESIS.md`:
208
228
 
209
229
  ```
210
- # Ultraresearch Synthesis: <query>
230
+ # ULW-Research Synthesis: <query>
211
231
  Workers: <total> · Waves: <count> · Sources: <count> · Verifications: <count>
212
232
 
213
233
  ## Executive summary — 2-3 paragraphs answering the core question
@@ -215,8 +235,9 @@ Workers: <total> · Waves: <count> · Sources: <count> · Verifications: <count>
215
235
  ## Codebase findings — absolute paths with line references
216
236
  ## Sources (ranked) — URL, what it contains, reliability, access date
217
237
  ## Verified claims — code: claim | verdict | verify-<slug>.md · non-code: only rows cleared into verified-claims
238
+ ## Epistemic instrumentation — intent-vs-reality diff closure, claim graph coverage, observation manifest coverage, independent-observation convergence, verification economics summary, cause-disappearance records
218
239
  ## Contradictions — source A vs source B, resolution with evidence
219
- ## Gaps — what saturation could not answer · unresolved/refuted claim-ledger rows
240
+ ## Gaps — what saturation could not answer · unresolved/refuted claim-graph nodes
220
241
  ## Expansion trace — per wave: workers → markers; convergence reason
221
242
  ```
222
243