@khoavu882/doflow 0.0.0-stage → 2.0.0-beta.3

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 (407) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +132 -2
  3. package/bin/doflow.js +44 -0
  4. package/core/.antigravity-plugin/hooks.json +39 -0
  5. package/core/.antigravity-plugin/mcp_config.json +18 -0
  6. package/core/.antigravity-plugin/plugin.json +31 -0
  7. package/core/.claude-plugin/marketplace.json +20 -0
  8. package/core/.claude-plugin/plugin.json +21 -0
  9. package/core/.codex-plugin/marketplace.json +20 -0
  10. package/core/.codex-plugin/plugin.json +35 -0
  11. package/core/.plugin/plugin.json +19 -0
  12. package/core/harnesses/antigravity/hooks/pre-implementation-gate.sh +9 -0
  13. package/core/harnesses/antigravity/hooks/stop-check.sh +10 -0
  14. package/core/harnesses/claude/hooks/lib.sh +304 -0
  15. package/core/harnesses/claude/hooks/mcp-tool-guard.sh +20 -0
  16. package/core/harnesses/claude/hooks/permission-audit.sh +47 -0
  17. package/core/harnesses/claude/hooks/post-compact.sh +74 -0
  18. package/core/harnesses/claude/hooks/post-edit-lint.sh +36 -0
  19. package/core/harnesses/claude/hooks/post-tool-failure.sh +47 -0
  20. package/core/harnesses/claude/hooks/pre-bash-guard.sh +20 -0
  21. package/core/harnesses/claude/hooks/pre-compact.sh +43 -0
  22. package/core/harnesses/claude/hooks/pre-implement-gate.sh +21 -0
  23. package/core/harnesses/claude/hooks/session-end.sh +89 -0
  24. package/core/harnesses/claude/hooks/session-start.sh +5 -0
  25. package/core/harnesses/claude/hooks/skill-config-audit.sh +39 -0
  26. package/core/harnesses/claude/hooks/stop-check.sh +5 -0
  27. package/core/harnesses/claude/hooks/subagent-audit.sh +7 -0
  28. package/core/harnesses/claude/hooks/user-prompt-submit.sh +5 -0
  29. package/core/harnesses/claude/settings/keybindings.json +20 -0
  30. package/core/harnesses/claude/settings/settings.json +201 -0
  31. package/core/harnesses/claude/statusline/doflow-statusline.sh +49 -0
  32. package/core/harnesses/codex/agents/core-implementer.toml +7 -0
  33. package/core/harnesses/codex/agents/quality-guardian.toml +8 -0
  34. package/core/harnesses/codex/agents/research-writer.toml +8 -0
  35. package/core/harnesses/codex/agents/spec-analyst.toml +8 -0
  36. package/core/harnesses/codex/agents/system-architect.toml +9 -0
  37. package/core/harnesses/codex/config/config.toml +10 -0
  38. package/core/harnesses/codex/hooks/hooks.json +122 -0
  39. package/core/harnesses/codex/hooks/lib.sh +335 -0
  40. package/core/harnesses/codex/hooks/mcp-tool-guard.sh +18 -0
  41. package/core/harnesses/codex/hooks/post-edit-lint.impl.sh +52 -0
  42. package/core/harnesses/codex/hooks/post-edit-lint.sh +6 -0
  43. package/core/harnesses/codex/hooks/pre-bash-guard.sh +18 -0
  44. package/core/harnesses/codex/hooks/pre-compact.impl.sh +46 -0
  45. package/core/harnesses/codex/hooks/pre-compact.sh +9 -0
  46. package/core/harnesses/codex/hooks/pre-implement-gate.sh +19 -0
  47. package/core/harnesses/codex/hooks/session-end.impl.sh +92 -0
  48. package/core/harnesses/codex/hooks/session-end.sh +5 -0
  49. package/core/harnesses/codex/hooks/session-start.sh +5 -0
  50. package/core/harnesses/codex/hooks/stop-check.sh +8 -0
  51. package/core/harnesses/codex/hooks/subagent-audit.sh +8 -0
  52. package/core/harnesses/codex/hooks/user-prompt-submit.sh +6 -0
  53. package/core/harnesses/gemini/hooks/hooks.json +77 -0
  54. package/core/harnesses/gemini/hooks/lib.sh +302 -0
  55. package/core/harnesses/gemini/hooks/mcp-tool-guard.sh +21 -0
  56. package/core/harnesses/gemini/hooks/post-edit-lint.sh +39 -0
  57. package/core/harnesses/gemini/hooks/pre-bash-guard.sh +21 -0
  58. package/core/harnesses/gemini/hooks/pre-compact.sh +38 -0
  59. package/core/harnesses/gemini/hooks/pre-implement-gate.sh +22 -0
  60. package/core/harnesses/gemini/hooks/session-end.impl.sh +89 -0
  61. package/core/harnesses/gemini/hooks/session-end.sh +5 -0
  62. package/core/harnesses/gemini/hooks/session-start.sh +5 -0
  63. package/core/harnesses/gemini/settings/adapter-defaults.json +4 -0
  64. package/core/harnesses/kiro/agents/doflow.json +58 -0
  65. package/core/harnesses/kiro/hooks/doflow.json +53 -0
  66. package/core/harnesses/kiro/hooks/lib.sh +324 -0
  67. package/core/harnesses/kiro/hooks/mcp-tool-guard.sh +9 -0
  68. package/core/harnesses/kiro/hooks/pre-bash-guard.sh +9 -0
  69. package/core/harnesses/kiro/hooks/pre-implement-gate.sh +9 -0
  70. package/core/harnesses/kiro/hooks/session-start.sh +9 -0
  71. package/core/harnesses/kiro/hooks/stop-check.sh +43 -0
  72. package/core/harnesses/shared/hooks/ENVELOPE_MIGRATION.md +39 -0
  73. package/core/harnesses/shared/hooks/adapters/antigravity.js +111 -0
  74. package/core/harnesses/shared/hooks/adapters/arg-fields.js +19 -0
  75. package/core/harnesses/shared/hooks/adapters/gemini.js +114 -0
  76. package/core/harnesses/shared/hooks/hooks.json +47 -0
  77. package/core/harnesses/shared/hooks/policies/blocked-patterns.conf +91 -0
  78. package/core/harnesses/shared/hooks/policies/capture-failure.sh +97 -0
  79. package/core/harnesses/shared/hooks/policies/deny-json.sh +29 -0
  80. package/core/harnesses/shared/hooks/policies/lib.sh +501 -0
  81. package/core/harnesses/shared/hooks/policies/mcp-policy.conf +21 -0
  82. package/core/harnesses/shared/hooks/policies/mcp-tool-guard.sh +91 -0
  83. package/core/harnesses/shared/hooks/policies/pre-bash-guard.sh +328 -0
  84. package/core/harnesses/shared/hooks/policies/pre-implementation-gate.sh +496 -0
  85. package/core/harnesses/shared/hooks/policies/prompt-nudge.jq +131 -0
  86. package/core/harnesses/shared/hooks/policies/session-context.sh +141 -0
  87. package/core/harnesses/shared/hooks/policies/stop-check.sh +264 -0
  88. package/core/harnesses/shared/hooks/policies/subagent-audit.sh +46 -0
  89. package/core/harnesses/shared/hooks/policies/user-prompt-submit.sh +235 -0
  90. package/core/harnesses/shared/hooks/stream-hook-runner.js +590 -0
  91. package/core/harnesses/shared/locator/doflow-run +87 -0
  92. package/core/registry/advice.json +101 -0
  93. package/core/registry/assets.json +792 -0
  94. package/core/registry/capabilities.json +120 -0
  95. package/core/registry/contracts.json +189 -0
  96. package/core/registry/external-tools.json +191 -0
  97. package/core/registry/harnesses.json +2062 -0
  98. package/core/registry/lifecycle.json +231 -0
  99. package/core/registry/mcp.json +18 -0
  100. package/core/registry/models.json +79 -0
  101. package/core/registry/readiness-templates.json +118 -0
  102. package/core/registry/routes.json +47 -0
  103. package/core/registry/storage.json +1057 -0
  104. package/core/registry/verification.json +258 -0
  105. package/core/registry/workflows.json +790 -0
  106. package/core/shared/agent-specs/core-implementer.md +73 -0
  107. package/core/shared/agent-specs/quality-guardian.md +28 -0
  108. package/core/shared/agent-specs/research-writer.md +31 -0
  109. package/core/shared/agent-specs/spec-analyst.md +33 -0
  110. package/core/shared/agent-specs/system-architect.md +29 -0
  111. package/core/shared/guidance/DOFLOW_CORE.md +8 -0
  112. package/core/shared/guidance/FLAGS.md +25 -0
  113. package/core/shared/guidance/PRINCIPLES.md +61 -0
  114. package/core/shared/guidance/VERSION +1 -0
  115. package/core/shared/guidance/mcp/MCP_Context7.md +18 -0
  116. package/core/shared/guidance/mcp/MCP_Sequential.md +17 -0
  117. package/core/shared/guidance/modes/MODE_Brainstorming.md +46 -0
  118. package/core/shared/guidance/modes/MODE_DeepResearch.md +69 -0
  119. package/core/shared/guidance/modes/MODE_Introspection.md +33 -0
  120. package/core/shared/guidance/modes/MODE_Orchestration.md +57 -0
  121. package/core/shared/guidance/modes/MODE_Task_Management.md +74 -0
  122. package/core/shared/guidance/pointers/claude-gemini.md +2 -0
  123. package/core/shared/guidance/pointers/codex.md +6 -0
  124. package/core/shared/guidance/references/ARTIFACT_FORMAT.md +373 -0
  125. package/core/shared/guidance/references/ARTIFACT_VOICE.md +104 -0
  126. package/core/shared/guidance/references/CONSTITUTION_BASE.md +47 -0
  127. package/core/shared/guidance/references/DIAGRAM_GUIDE.md +161 -0
  128. package/core/shared/guidance/references/DOFLOW_CHAIN.md +87 -0
  129. package/core/shared/guidance/references/EVIDENCE_LEDGER.md +93 -0
  130. package/core/shared/guidance/references/MODEL_SELECTION.md +74 -0
  131. package/core/shared/guidance/references/ORCHESTRATION.md +36 -0
  132. package/core/shared/guidance/references/RESEARCH_CONFIG.md +21 -0
  133. package/core/shared/guidance/references/WORKFLOW_HANDOFF.md +81 -0
  134. package/core/shared/guidance/rules/RULE_01_SAFETY.md +25 -0
  135. package/core/shared/guidance/rules/RULE_02_WORKFLOW.md +23 -0
  136. package/core/shared/guidance/rules/RULE_03_QUALITY.md +14 -0
  137. package/core/shared/guidance/rules/RULE_04_QUESTIONS.md +46 -0
  138. package/core/shared/scripts/doflow/assets/mermaid-theme.json +46 -0
  139. package/core/shared/scripts/doflow/bash/do-exec-paths.sh +167 -0
  140. package/core/shared/scripts/doflow/bash/do-git-state.sh +546 -0
  141. package/core/shared/scripts/doflow/bash/do-parallel-check.sh +208 -0
  142. package/core/shared/scripts/doflow/bash/do-paths.sh +347 -0
  143. package/core/shared/scripts/doflow/bash/do-prereqs.sh +66 -0
  144. package/core/shared/scripts/doflow/bash/do-review-package.sh +127 -0
  145. package/core/shared/scripts/doflow/bash/do-task-brief.sh +698 -0
  146. package/core/shared/scripts/doflow/bash/render-audit.sh +224 -0
  147. package/core/shared/scripts/doflow/bash/render-diagrams.sh +177 -0
  148. package/core/shared/scripts/doflow/bash/render-puml.sh +223 -0
  149. package/core/shared/scripts/doflow/bash/sync-context.sh +66 -0
  150. package/core/shared/scripts/doflow/bash/validate-artifacts.sh +526 -0
  151. package/core/shared/scripts/doflow/bin/doflow-run +592 -0
  152. package/core/shared/skills/do/SKILL.md +128 -0
  153. package/core/shared/skills/do/references/estimation.md +13 -0
  154. package/core/shared/skills/do/references/pm_routing.md +25 -0
  155. package/core/shared/skills/do/references/tool_matrix.md +52 -0
  156. package/core/shared/skills/do-brainstorm/SKILL.md +252 -0
  157. package/core/shared/skills/do-code-review/README.md +49 -0
  158. package/core/shared/skills/do-code-review/SKILL.md +333 -0
  159. package/core/shared/skills/do-code-review/assets/sample_c_clean.c +71 -0
  160. package/core/shared/skills/do-code-review/assets/sample_c_smells.c +66 -0
  161. package/core/shared/skills/do-code-review/assets/sample_cpp_shift.cpp +19 -0
  162. package/core/shared/skills/do-code-review/assets/sample_csharp_clean.cs +100 -0
  163. package/core/shared/skills/do-code-review/assets/sample_csharp_smells.cs +78 -0
  164. package/core/shared/skills/do-code-review/assets/sample_java_clean.java +55 -0
  165. package/core/shared/skills/do-code-review/assets/sample_java_smells.java +56 -0
  166. package/core/shared/skills/do-code-review/assets/sample_json_clean.json +7 -0
  167. package/core/shared/skills/do-code-review/assets/sample_markdown_clean.md +30 -0
  168. package/core/shared/skills/do-code-review/assets/sample_markdown_smells.md +29 -0
  169. package/core/shared/skills/do-code-review/assets/sample_shell_heredoc.sh +38 -0
  170. package/core/shared/skills/do-code-review/assets/sample_shell_smells.sh +15 -0
  171. package/core/shared/skills/do-code-review/assets/sample_typescript_strings.ts +36 -0
  172. package/core/shared/skills/do-code-review/assets/sample_yaml_smells.yaml +6 -0
  173. package/core/shared/skills/do-code-review/content-types/config.md +83 -0
  174. package/core/shared/skills/do-code-review/content-types/markdown.md +132 -0
  175. package/core/shared/skills/do-code-review/expected_outputs/sample_c_clean_quality.json +79 -0
  176. package/core/shared/skills/do-code-review/expected_outputs/sample_c_smells_quality.json +169 -0
  177. package/core/shared/skills/do-code-review/expected_outputs/sample_cpp_shift_quality.json +49 -0
  178. package/core/shared/skills/do-code-review/expected_outputs/sample_csharp_clean_quality.json +149 -0
  179. package/core/shared/skills/do-code-review/expected_outputs/sample_csharp_smells_quality.json +157 -0
  180. package/core/shared/skills/do-code-review/expected_outputs/sample_java_clean_quality.json +67 -0
  181. package/core/shared/skills/do-code-review/expected_outputs/sample_java_smells_quality.json +97 -0
  182. package/core/shared/skills/do-code-review/expected_outputs/sample_json_clean_quality.json +33 -0
  183. package/core/shared/skills/do-code-review/expected_outputs/sample_markdown_clean_quality.json +1 -0
  184. package/core/shared/skills/do-code-review/expected_outputs/sample_markdown_smells_quality.json +16 -0
  185. package/core/shared/skills/do-code-review/expected_outputs/sample_shell_heredoc_quality.json +54 -0
  186. package/core/shared/skills/do-code-review/expected_outputs/sample_shell_smells_quality.json +91 -0
  187. package/core/shared/skills/do-code-review/expected_outputs/sample_typescript_strings_quality.json +60 -0
  188. package/core/shared/skills/do-code-review/expected_outputs/sample_yaml_smells_quality.json +46 -0
  189. package/core/shared/skills/do-code-review/languages/c.md +103 -0
  190. package/core/shared/skills/do-code-review/languages/cpp.md +103 -0
  191. package/core/shared/skills/do-code-review/languages/csharp.md +97 -0
  192. package/core/shared/skills/do-code-review/languages/dart.md +108 -0
  193. package/core/shared/skills/do-code-review/languages/go.md +92 -0
  194. package/core/shared/skills/do-code-review/languages/java.md +103 -0
  195. package/core/shared/skills/do-code-review/languages/kotlin.md +88 -0
  196. package/core/shared/skills/do-code-review/languages/php.md +109 -0
  197. package/core/shared/skills/do-code-review/languages/python.md +94 -0
  198. package/core/shared/skills/do-code-review/languages/ruby.md +105 -0
  199. package/core/shared/skills/do-code-review/languages/rust.md +99 -0
  200. package/core/shared/skills/do-code-review/languages/shell.md +90 -0
  201. package/core/shared/skills/do-code-review/languages/swift.md +88 -0
  202. package/core/shared/skills/do-code-review/languages/typescript.md +97 -0
  203. package/core/shared/skills/do-code-review/review-policy.json +47 -0
  204. package/core/shared/skills/do-code-review/rules/universal.md +49 -0
  205. package/core/shared/skills/do-code-review/scripts/code_quality_checker.py +1696 -0
  206. package/core/shared/skills/do-code-review/scripts/doc_quality_checker.py +532 -0
  207. package/core/shared/skills/do-code-review/scripts/pr_analyzer.py +620 -0
  208. package/core/shared/skills/do-code-review/scripts/review_report_generator.py +505 -0
  209. package/core/shared/skills/do-constitution/SKILL.md +72 -0
  210. package/core/shared/skills/do-design/SKILL.md +212 -0
  211. package/core/shared/skills/do-diagnose/SKILL.md +156 -0
  212. package/core/shared/skills/do-diagnose/references/code_audit.md +15 -0
  213. package/core/shared/skills/do-diagnose/references/refactoring.md +12 -0
  214. package/core/shared/skills/do-diagnose/references/root_cause.md +17 -0
  215. package/core/shared/skills/do-document/SKILL.md +81 -0
  216. package/core/shared/skills/do-document/references/api-reference.md +42 -0
  217. package/core/shared/skills/do-document/references/deep_research.md +18 -0
  218. package/core/shared/skills/do-document/references/embedded-research.md +11 -0
  219. package/core/shared/skills/do-document/references/implementation-flow.md +105 -0
  220. package/core/shared/skills/do-document/references/index_generator.md +9 -0
  221. package/core/shared/skills/do-document/references/user-guide.md +22 -0
  222. package/core/shared/skills/do-execute-plan/SKILL.md +261 -0
  223. package/core/shared/skills/do-execute-plan/references/handoff_record.md +57 -0
  224. package/core/shared/skills/do-execute-plan/references/parallel_dispatch.md +92 -0
  225. package/core/shared/skills/do-execute-plan/references/readiness_gate.md +155 -0
  226. package/core/shared/skills/do-execute-plan/references/run_position.md +63 -0
  227. package/core/shared/skills/do-execute-plan/references/scaffold.md +441 -0
  228. package/core/shared/skills/do-execute-plan/references/task_attempts.md +41 -0
  229. package/core/shared/skills/do-flow/SKILL.md +186 -0
  230. package/core/shared/skills/do-flow/references/task_classes.md +134 -0
  231. package/core/shared/skills/do-git/SKILL.md +115 -0
  232. package/core/shared/skills/do-git/references/hotfix-ritual.md +44 -0
  233. package/core/shared/skills/do-git/references/lifecycle-policy.md +54 -0
  234. package/core/shared/skills/do-git/references/release-ritual.md +64 -0
  235. package/core/shared/skills/do-implement/SKILL.md +222 -0
  236. package/core/shared/skills/do-plan/SKILL.md +219 -0
  237. package/core/shared/skills/do-test/SKILL.md +113 -0
  238. package/core/shared/templates/doflow/constitution-template.md +28 -0
  239. package/core/shared/templates/doflow/data-model-template.md +169 -0
  240. package/core/shared/templates/doflow/design-template.md +193 -0
  241. package/core/shared/templates/doflow/external-contract-template.md +35 -0
  242. package/core/shared/templates/doflow/intent-template.md +45 -0
  243. package/core/shared/templates/doflow/plan-template.md +151 -0
  244. package/core/shared/templates/doflow/question-log-template.md +51 -0
  245. package/core/shared/templates/doflow/requirement-template.md +126 -0
  246. package/core/shared/templates/doflow/specs-template.md +55 -0
  247. package/core/shared/templates/doflow/state-template.md +59 -0
  248. package/core/shared/workflows/do-flow-chain.md +17 -0
  249. package/package.json +46 -4
  250. package/src/adapters/antigravity/index.ts +631 -0
  251. package/src/adapters/claude/index.ts +548 -0
  252. package/src/adapters/claude/mcp.ts +94 -0
  253. package/src/adapters/codex/agents.ts +208 -0
  254. package/src/adapters/codex/config.ts +272 -0
  255. package/src/adapters/codex/hooks.ts +203 -0
  256. package/src/adapters/codex/index.ts +707 -0
  257. package/src/adapters/codex/mcp.ts +271 -0
  258. package/src/adapters/codex/native-projection.ts +34 -0
  259. package/src/adapters/copilot/index.ts +413 -0
  260. package/src/adapters/copy-tree.ts +620 -0
  261. package/src/adapters/gemini/hooks.ts +210 -0
  262. package/src/adapters/gemini/index.ts +390 -0
  263. package/src/adapters/hook-commands.ts +60 -0
  264. package/src/adapters/index.ts +106 -0
  265. package/src/adapters/kiro/index.ts +310 -0
  266. package/src/adapters/mcp-entries.ts +331 -0
  267. package/src/adapters/opencode/index.ts +466 -0
  268. package/src/adapters/pi/index.ts +279 -0
  269. package/src/adapters/pi/json-members.ts +185 -0
  270. package/src/adapters/pi/mcp.ts +373 -0
  271. package/src/adapters/resolve-source.ts +19 -0
  272. package/src/cli/commands/install.ts +218 -0
  273. package/src/cli/commands/list-backups.ts +21 -0
  274. package/src/cli/commands/reconcile.ts +120 -0
  275. package/src/cli/commands/remove.ts +82 -0
  276. package/src/cli/commands/rollback.ts +172 -0
  277. package/src/cli/commands/self-update.ts +33 -0
  278. package/src/cli/commands/status.ts +138 -0
  279. package/src/cli/commands/tools.ts +92 -0
  280. package/src/cli/commands/update.ts +162 -0
  281. package/src/cli/index.ts +568 -0
  282. package/src/cli/runtime-commands.ts +281 -0
  283. package/src/cli/shared.ts +218 -0
  284. package/src/helper/bash-helper.ts +34 -0
  285. package/src/helper/git.ts +24 -0
  286. package/src/helper/guardrails.ts +49 -0
  287. package/src/helper/harness-paths.ts +140 -0
  288. package/src/helper/marker-merge.ts +116 -0
  289. package/src/helper/prompt.ts +61 -0
  290. package/src/helper/repo-root.ts +29 -0
  291. package/src/helper/settings-merge.ts +151 -0
  292. package/src/helper/settings-scope.ts +33 -0
  293. package/src/helper/toml.ts +244 -0
  294. package/src/install/backup-set.ts +149 -0
  295. package/src/install/backup.ts +724 -0
  296. package/src/install/context.ts +58 -0
  297. package/src/install/manifest.ts +145 -0
  298. package/src/install/mcp.ts +254 -0
  299. package/src/install/paths.ts +84 -0
  300. package/src/install/targets.ts +90 -0
  301. package/src/install/tool-lifecycle.ts +151 -0
  302. package/src/lifecycle/bash-availability.ts +25 -0
  303. package/src/lifecycle/index.ts +812 -0
  304. package/src/lifecycle/mcp-index.ts +28 -0
  305. package/src/lifecycle/policies.ts +73 -0
  306. package/src/lifecycle/view.ts +175 -0
  307. package/src/registry/index.ts +611 -0
  308. package/src/release/sync-plugin-versions.ts +66 -0
  309. package/src/runtime/advice/cli.ts +283 -0
  310. package/src/runtime/advice/client.ts +324 -0
  311. package/src/runtime/advice/config.ts +189 -0
  312. package/src/runtime/advice/doctor.ts +169 -0
  313. package/src/runtime/advice/endpoint-guard.ts +134 -0
  314. package/src/runtime/advice/kinds.ts +154 -0
  315. package/src/runtime/advice/providers/ollama-systemone.ts +209 -0
  316. package/src/runtime/advice/record.ts +166 -0
  317. package/src/runtime/advice/registry.ts +170 -0
  318. package/src/runtime/advice/strength.ts +66 -0
  319. package/src/runtime/brief-tools.ts +342 -0
  320. package/src/runtime/c4-project.ts +371 -0
  321. package/src/runtime/capability-router.ts +484 -0
  322. package/src/runtime/checkouts.ts +170 -0
  323. package/src/runtime/claims.ts +468 -0
  324. package/src/runtime/cli-result.ts +55 -0
  325. package/src/runtime/cli.ts +678 -0
  326. package/src/runtime/command-detect.ts +516 -0
  327. package/src/runtime/context-pack.ts +492 -0
  328. package/src/runtime/decision-register.ts +493 -0
  329. package/src/runtime/evidence-ledger.ts +338 -0
  330. package/src/runtime/failure/capture.ts +272 -0
  331. package/src/runtime/failure/classifier.ts +68 -0
  332. package/src/runtime/failure/cli.ts +178 -0
  333. package/src/runtime/failure/home.ts +64 -0
  334. package/src/runtime/failure/store.ts +226 -0
  335. package/src/runtime/feature-resolve.ts +79 -0
  336. package/src/runtime/freshness.ts +177 -0
  337. package/src/runtime/health.ts +863 -0
  338. package/src/runtime/history-compactor.ts +237 -0
  339. package/src/runtime/implementation-gate.ts +321 -0
  340. package/src/runtime/inventory/coverage.ts +218 -0
  341. package/src/runtime/inventory/identity.ts +65 -0
  342. package/src/runtime/inventory/index.ts +705 -0
  343. package/src/runtime/inventory/precedence.ts +134 -0
  344. package/src/runtime/inventory/read-scopes.ts +131 -0
  345. package/src/runtime/inventory/siblings.ts +192 -0
  346. package/src/runtime/knowledge/chunker.ts +124 -0
  347. package/src/runtime/knowledge/hybrid.ts +149 -0
  348. package/src/runtime/knowledge/index-store.ts +145 -0
  349. package/src/runtime/knowledge/retrieval.ts +194 -0
  350. package/src/runtime/leak-scan.ts +185 -0
  351. package/src/runtime/lifecycle/cli.ts +276 -0
  352. package/src/runtime/lifecycle/event-store.ts +340 -0
  353. package/src/runtime/lifecycle/fold.ts +353 -0
  354. package/src/runtime/lifecycle/followup.ts +432 -0
  355. package/src/runtime/lifecycle/goal.ts +249 -0
  356. package/src/runtime/lifecycle/intent-writer.ts +86 -0
  357. package/src/runtime/lifecycle/overview.ts +292 -0
  358. package/src/runtime/lifecycle/release.ts +241 -0
  359. package/src/runtime/lifecycle/report-store.ts +221 -0
  360. package/src/runtime/lifecycle/retention.ts +212 -0
  361. package/src/runtime/lifecycle/root.ts +71 -0
  362. package/src/runtime/lifecycle/status.ts +353 -0
  363. package/src/runtime/lifecycle/store-upkeep.ts +393 -0
  364. package/src/runtime/locator-resolve.ts +158 -0
  365. package/src/runtime/mask.ts +210 -0
  366. package/src/runtime/mcp-consultations.ts +412 -0
  367. package/src/runtime/mcp-reach.ts +157 -0
  368. package/src/runtime/model-router.ts +153 -0
  369. package/src/runtime/outcome.ts +467 -0
  370. package/src/runtime/reach.ts +148 -0
  371. package/src/runtime/readiness-record.ts +150 -0
  372. package/src/runtime/readiness.ts +435 -0
  373. package/src/runtime/recovery.ts +282 -0
  374. package/src/runtime/research-request.ts +231 -0
  375. package/src/runtime/retrieval-plan.ts +578 -0
  376. package/src/runtime/scaffold/artifacts.ts +217 -0
  377. package/src/runtime/scaffold/fingerprint.ts +56 -0
  378. package/src/runtime/scaffold/generate.ts +911 -0
  379. package/src/runtime/scaffold/languages.ts +245 -0
  380. package/src/runtime/storage/cli.ts +64 -0
  381. package/src/runtime/storage/engine.ts +249 -0
  382. package/src/runtime/storage/registry.ts +130 -0
  383. package/src/runtime/storage/roots.ts +63 -0
  384. package/src/runtime/storage/rules.ts +282 -0
  385. package/src/runtime/storage/upkeep.ts +243 -0
  386. package/src/runtime/storage/work-status.ts +326 -0
  387. package/src/runtime/task-attempts.ts +415 -0
  388. package/src/runtime/task-classifier.ts +550 -0
  389. package/src/runtime/task-scope.ts +130 -0
  390. package/src/runtime/task-state.ts +176 -0
  391. package/src/runtime/trace/indicators.ts +235 -0
  392. package/src/runtime/trace/ledger.ts +626 -0
  393. package/src/runtime/trace/render.ts +76 -0
  394. package/src/runtime/trace/views.ts +459 -0
  395. package/src/runtime/verification/contract-runner.ts +341 -0
  396. package/src/runtime/verification/engine.ts +1461 -0
  397. package/src/runtime/verification/registry.ts +130 -0
  398. package/src/runtime/verification/scope-bound.ts +418 -0
  399. package/src/runtime/verification/test-selection.ts +172 -0
  400. package/src/runtime/workflow-engine.ts +588 -0
  401. package/src/runtime/workflow-orchestrator.ts +953 -0
  402. package/src/runtime/worktree.ts +340 -0
  403. package/src/state/index.ts +193 -0
  404. package/src/state/lockfile.ts +136 -0
  405. package/src/state/run-lock.ts +408 -0
  406. package/types/node-commonjs.d.ts +68 -0
  407. package/types/runtime.d.ts +91 -0
@@ -0,0 +1,169 @@
1
+ # Data Model: [FEATURE NAME]
2
+
3
+ **Feature:** [NNN-slug] · **Design:** ./design.md · **Maturity:** Draft · **Created:** [DATE]
4
+
5
+ > Entity/data model and data-flow diagrams a design decided, split out of design.md's own narrative
6
+ > (§5/§6) and specs.md's interface-contract detail (§1). Reads ./design.md; distinct from ./specs.md
7
+ > the way a persisted shape and the flows that move through it are distinct from the contracts that
8
+ > expose them.
9
+ >
10
+ > Structure follows `references/ARTIFACT_FORMAT.md`: the document-level `Maturity` is `Draft`,
11
+ > `In review` or `Approved`. Neither §1 nor §2 below carries an `ID`-bearing index — a diagram is not
12
+ > a normative, citable statement — so both stay free-form; §3 History is index-then-detail like
13
+ > every other chain artifact's final section, and its item-level `Status` is only `Live` or
14
+ > `Superseded → <ref>`.
15
+
16
+ ## 1. Data Model
17
+
18
+ <!-- Free-form, NOT part of the indexed convention above — diagrams and schema tables are not
19
+ ID-bearing normative statements, so this section stays exactly as specs-template.md's former
20
+ §2 already was.
21
+
22
+ The model is presented in two tiers. The conceptual domain map comes first and carries no
23
+ attributes, so the shape of the domain is legible before any field name. One ER view per
24
+ bounded subdomain follows, each carrying the attributes, keys and cardinalities of that
25
+ subdomain alone. Splitting one diagram into views must not drop an entity, a key or a
26
+ constraint the single diagram carried. -->
27
+
28
+ ### Conceptual domain map
29
+
30
+ <!-- The entities and the relationships between them, with no attributes. Skip with "N/A: [why]" if
31
+ the feature persists no entity. -->
32
+
33
+ ```mermaid
34
+ flowchart LR
35
+ USER["User"]
36
+ POST["Post"]
37
+ COMMENT["Comment"]
38
+
39
+ USER -->|"creates"| POST
40
+ POST -->|"contains"| COMMENT
41
+ ```
42
+
43
+ #### ER view: [subdomain]
44
+
45
+ <!-- One heading of this form per bounded subdomain, each an erDiagram carrying the attributes,
46
+ keys and cardinalities of that subdomain alone. Skip with "N/A: [why]" if the feature persists
47
+ no entity. -->
48
+
49
+ ```mermaid
50
+ erDiagram
51
+ USER ||--o{ POST : "creates"
52
+ USER {
53
+ uuid id PK
54
+ string email UK
55
+ string name
56
+ timestamp created_at
57
+ }
58
+ POST ||--o{ COMMENT : "contains"
59
+ POST {
60
+ uuid id PK
61
+ uuid user_id FK
62
+ string title
63
+ text content
64
+ timestamp created_at
65
+ }
66
+ COMMENT {
67
+ uuid id PK
68
+ uuid post_id FK
69
+ uuid author_id FK
70
+ text body
71
+ timestamp created_at
72
+ }
73
+ ```
74
+
75
+ ### Database Schemas (ORM / DDL)
76
+
77
+ <!-- The catalog of every table the views above draw, with its keys, indexes and ORM file. -->
78
+
79
+ | Table | Purpose | Primary Key | Foreign Keys & Relations | Key Indexes | Schema / ORM File |
80
+ |---|---|---|---|---|---|
81
+ | `[table_name]` | [one-line table responsibility] | `id` (UUID) | `[user_id]` → `users(id)` | `idx_[table]_[col]` | `src/db/schema/[table].ts` |
82
+
83
+ ### UX / UI Specifications
84
+ - **Design Tokens & Cues:** [color tokens (e.g. Indigo for Work, Emerald for Personal), badge variants, typography]
85
+ - **Component States:** [loading, empty, populated, error states]
86
+
87
+ ## 2. Sequence / Data Flow
88
+
89
+ <!-- Free-form, NOT part of the indexed convention — a diagram is not an ID-bearing normative
90
+ statement, so this section stays free-form exactly as §1 does.
91
+
92
+ One `sequenceDiagram` per non-trivial interaction the feature introduces. Scaffolding matches
93
+ §1's depth deliberately: this is the chain's most-used diagram type, not an afterthought.
94
+
95
+ `references/DIAGRAM_GUIDE.md` governs the lifeline ceiling. There is no message ceiling,
96
+ because a sequence diagram lays out columnwise and cannot tangle however many messages it
97
+ carries — so show the whole interaction rather than trimming it to look tidy.
98
+
99
+ Conventions:
100
+ - Declare every participant up front, in the order they first act, so the columns read
101
+ left-to-right in causal order.
102
+ - Use `actor` for a human or an external caller and `participant` for a component.
103
+ - `->>` is a call, `-->>` is a return. Keep returns only where the returned value matters.
104
+ - Put the failure path in an `alt` block. An interaction drawn only on its happy path hides
105
+ the branch a reader most needs.
106
+ - `Note over X,Y:` carries a constraint or an invariant, never narration of the line above.
107
+ - Prefer `rect` over `par` to mark a region: `par` claims the steps happen simultaneously,
108
+ which most groupings cannot support. Reserve `par` for genuine parallelism, `alt` for a
109
+ branch.
110
+
111
+ Skip with "N/A: [why]" if the feature introduces no non-trivial interaction. -->
112
+
113
+ ### [Interaction name]
114
+
115
+ [One sentence: what triggers this flow and what it ends with.]
116
+
117
+ ```mermaid
118
+ sequenceDiagram
119
+ actor User
120
+ participant API as [entry point]
121
+ participant SVC as [service]
122
+ participant DB as [data store]
123
+
124
+ User->>API: [request]
125
+ API->>SVC: [call]
126
+
127
+ alt [failure condition]
128
+ SVC-->>API: [error shape]
129
+ API-->>User: [status code and message]
130
+ else [success]
131
+ SVC->>DB: [read or write]
132
+ DB-->>SVC: [result]
133
+ SVC-->>API: [payload]
134
+ API-->>User: [status code]
135
+ end
136
+
137
+ Note over SVC,DB: [invariant that must hold across this step]
138
+ ```
139
+
140
+ [If the failure branch has consequences the diagram cannot carry — a retry policy, a compensating
141
+ action, an idempotency requirement — state them in a sentence beneath the diagram rather than
142
+ crowding the fence.]
143
+
144
+ ### Flow: [name]
145
+
146
+ <!-- One "#### Flow: <name>" heading per end-to-end flow, each embedding its committed render from
147
+ design/c4/flow-<name>.png. The heading name matches its source file's stem, which is the only
148
+ index -- nothing maintains a manifest, because a manifest could disagree with the directory.
149
+
150
+ This slot carries NO inline text diagram, and that asymmetry is forced by grammar rather than
151
+ chosen: Mermaid has no lane primitive, and approximating lanes with subgraph grouping would
152
+ carry no lane semantics and so would misrepresent the diagram it stood in for. The authored
153
+ .puml remains readable text under review, so the flow's logic is still diffable.
154
+
155
+ `references/DIAGRAM_GUIDE.md` §6 governs the lane conventions. Skip with "N/A: [why]" when the
156
+ feature's flow involves a single actor. -->
157
+
158
+ ![End-to-end flow: [name]](design/c4/flow-[name].png)
159
+
160
+ [One sentence: what triggers this flow and what it ends with. Any consequence the lanes cannot
161
+ carry — a retry policy, a compensating action, an idempotency requirement — belongs here rather
162
+ than crowded into the diagram.]
163
+
164
+ ## 3. History
165
+
166
+ <!-- Superseded data-model entries move here; the index row above stays as a tombstone with
167
+ `Superseded → <ref>`. -->
168
+
169
+ None — initial version.
@@ -0,0 +1,193 @@
1
+ # Design: [FEATURE NAME]
2
+
3
+ **Feature:** [NNN-slug] · **Requirement:** [REQUIREMENT_PATH] · **Maturity:** Draft · **Created:** [DATE]
4
+
5
+ > System shape — architecture, APIs, data/interface contracts. Reads [REQUIREMENT_PATH].
6
+ > Distinct from plan.md's HOW-to-implement; this is HOW-it's-shaped.
7
+ >
8
+ > Structure follows `references/ARTIFACT_FORMAT.md`: indexed sections carry a table above full
9
+ > `**Detail**`, the document-level `Maturity` is `Draft`, `In review` or `Approved`, the item-level
10
+ > `Status` is only `Live` or `Superseded → <ref>`, and superseded prose moves to §9.
11
+
12
+ ## 1. Architecture Approach
13
+
14
+ **Decisions and blockers:**
15
+
16
+ <!-- One row per decision this design makes, placed above the architectural prose. "Decision" names
17
+ what is being settled. "Shape chosen" is the answer this design gives it. "Owner" is the person
18
+ or role accountable for that answer. "Blocks approval?" says whether a reviewer can approve the
19
+ design while this decision stands as written, and names what has to happen first when it cannot.
20
+ A reviewer who reads only this table knows what is being decided, who decided it, and what
21
+ stands between the design and approval. Replace the table with "N/A: [why]" when the feature is
22
+ too small to carry decisions worth tabling. With a decision register, end Shape chosen with its
23
+ DEC-###: see ARTIFACT_FORMAT.md §12. -->
24
+
25
+ | Decision | Shape chosen | Owner | Blocks approval? |
26
+ |---|---|---|---|
27
+ | [what is being settled] | [the shape this design gives it] | [person or role accountable] | no |
28
+ | [what is being settled] | [the shape this design gives it] | [person or role accountable] | yes: [what must happen first] |
29
+
30
+ [Component boundaries, where this fits in the existing system, 2–4 sentences.]
31
+
32
+ ## 2. System Overview (C4)
33
+
34
+ <!-- The visual complement to §1 — lets a reader unfamiliar with this feature see the shape before
35
+ reading prose. C4 is kept as the conceptual zoom model (Context → Container → Component) and
36
+ rendered with Mermaid `flowchart` + `subgraph`. Each level heading is written
37
+ "C4 Level N: ...", so no level label collides with a §3 component ID such as C3.
38
+
39
+ Do NOT use the C4Context / C4Container diagram types. They are experimental in Mermaid: no
40
+ direction control, relationship labels collide with arrowheads, and rendering varies across
41
+ viewers. `flowchart` is the most widely supported type and puts labels legibly on the arrow.
42
+
43
+ Skip a level with "N/A: [why]". For a trivial single-file change with no new external
44
+ interaction, write "N/A: [why]" for the whole section. -->
45
+
46
+ <!-- C4 Level 2 below sits inside the generated-block markers `doflow-run render-puml` replaces.
47
+ When this feature authors its C4 in PlantUML under design/c4/, edit container.puml and re-run
48
+ the verb; editing between the markers by hand is a change the next render discards.
49
+
50
+ A feature that authors no PlantUML writes the Mermaid here by hand, as it always did. The
51
+ markers are inert in that case — with no design/c4/ directory the verb reports and exits
52
+ before it opens this file — so leave them or delete them, whichever reads better.
53
+
54
+ The markers delimit LEVEL 2 ONLY. The projector emits one block per run, from container.puml
55
+ when it exists and context.puml otherwise, so a second marker pair would have nothing to fill.
56
+ Levels 1 and 3 are hand-written at every level of PlantUML adoption. -->
57
+
58
+ ### C4 Level 1: System Context
59
+
60
+ [Who/what uses this system, and which external systems it talks to. One box per actor or external
61
+ system — internal components belong at C4 Level 2 or C4 Level 3, not here.]
62
+
63
+ ```mermaid
64
+ flowchart TB
65
+ subgraph actors["Actors"]
66
+ USER["[actor/user]<br/>(who initiates this)"]
67
+ end
68
+ subgraph system["[this system]"]
69
+ SVC["[one-line responsibility]"]
70
+ end
71
+ EXT["[external system]<br/>(what it provides or consumes)"]
72
+
73
+ USER -->|"[interaction, e.g. Uses]"| SVC
74
+ SVC -->|"[interaction, e.g. Calls]"| EXT
75
+ SVC -.->|"[secondary/async relation]"| EXT
76
+ ```
77
+
78
+ ### C4 Level 2: Container
79
+
80
+ [Which deployable services/apps/data stores this feature spans, and how they talk. One box per
81
+ independently deployable unit — internals of a single container belong at C4 Level 3.]
82
+
83
+ <!-- generated from design/c4/container.puml by `doflow-run render-puml` -- do not edit by hand
84
+ source-hash: not-yet-rendered -->
85
+ ```mermaid
86
+ flowchart LR
87
+ USER["[actor/user]"]
88
+ subgraph boundary["[system name]"]
89
+ APP["[container name]<br/>[tech stack]"]
90
+ DB[("[data store]<br/>[what it holds]")]
91
+ end
92
+ EXT["[external system]"]
93
+
94
+ USER -->|"[protocol, e.g. HTTPS/JSON]"| APP
95
+ APP -->|"[reads/writes]"| DB
96
+ APP -->|"[interaction]"| EXT
97
+ ```
98
+ <!-- end generated -->
99
+
100
+ ### C4 Level 3: Component
101
+
102
+ <!-- Required when this feature touches 3+ components within a single container; otherwise write
103
+ "N/A: covered by §3 Components & Boundaries". On a small change this diagram restates the §3
104
+ table verbatim, and a diagram that adds nothing trains authors to tick boxes. -->
105
+
106
+ [Internals of the container this feature changes — handlers, services, ports, adapters.]
107
+
108
+ ```mermaid
109
+ flowchart TB
110
+ subgraph container["[container name]"]
111
+ C_A["[component]<br/>[responsibility]"]
112
+ C_B["[component]<br/>[responsibility]"]
113
+ end
114
+ STORE[("[data store]")]
115
+
116
+ C_A -->|"[call]"| C_B
117
+ C_B -->|"[persists]"| STORE
118
+ ```
119
+
120
+ ## 3. Components & Boundaries
121
+
122
+ | ID | Component | Kind | Serves | Status |
123
+ |---|---|---|---|---|
124
+ | C1 | [component name] | service / script / template / reference | FR-001 | Live |
125
+
126
+ **Detail**
127
+
128
+ <!-- A component entry names the component after its ID, then answers the four labels below in
129
+ order. The labels are structural, not emphasis, and none may be dropped or reordered. -->
130
+
131
+ - **C1:** [component name]
132
+ - **Responsibility:** [what this component is answerable for, in full].
133
+ - **Owns:** [the state, files or decisions it holds].
134
+ - **Does not own:** [what a reader could expect it to hold but another component does].
135
+ - **Contracts:** [the FR-### and IC-### identifiers it serves].
136
+
137
+ ## 4. API / Interface Contracts
138
+
139
+ <!-- Endpoints, CLI verb signatures, and repository/service interfaces that anchor implementation
140
+ live in ./specs.md §1 Interface Contracts, not here — each as one ID-bearing IC-### entry so
141
+ plan.md and implementation can cite a contract by id instead of a paragraph. Write `N/A: [why]` if
142
+ this feature genuinely introduces no interface contracts; otherwise leave a one-line pointer,
143
+ e.g. "See ./specs.md §1." -->
144
+
145
+ ## 5. Data Model
146
+
147
+ The data-model shape is governed by `./data-model.md` §1.
148
+
149
+ <!-- Data model diagrams (ER diagrams, table schema catalogs) and UX design tokens live in
150
+ ./data-model.md §1 Data Model, not here. Write `N/A: [why]` if this feature introduces no data
151
+ model or UX changes; otherwise leave a one-line pointer, e.g. "See ./data-model.md §1." -->
152
+
153
+ ## 6. Sequence / Data Flow
154
+
155
+ The data-flow shape is governed by `./data-model.md` §2.
156
+
157
+ <!-- Sequence diagrams showing key interaction flows (a `sequenceDiagram` works well here) live in
158
+ ./data-model.md §2 Sequence / Data Flow, not here. Write `N/A: [why]` if this feature introduces
159
+ no non-trivial interaction sequence; otherwise leave a one-line pointer, e.g.
160
+ "See ./data-model.md §2." -->
161
+
162
+ ## 7. Design Risks & Alternatives Considered
163
+
164
+ | ID | Risk / Alternative | Disposition | Status |
165
+ |---|---|---|---|
166
+ | R1 | [risk, or an alternative shape considered] | mitigated / accepted / rejected | Live |
167
+
168
+ **Detail**
169
+
170
+ - **R1** → [why this shape was chosen, or why the risk is accepted and what it costs if it lands].
171
+
172
+ ## 8. Assumptions
173
+
174
+ <!-- With a decision register, a row from a "Decide for me" pick cites its DEC-### in Basis: see ARTIFACT_FORMAT.md §12. -->
175
+
176
+ | ID | Assumption | Affects | Basis |
177
+ |---|---|---|---|
178
+ | A1 | [assumption stated] | C1 | [why this default, or "user deferred"] |
179
+
180
+ **Detail**
181
+
182
+ - **A1** — [the reasoning, and what would change if it turns out wrong].
183
+
184
+ <!-- Write "None — no design-level clarification questions were deferred." in place of the table
185
+ and detail if every design-level ambiguity was resolved by a direct answer rather than the
186
+ defer escape hatch during /do-design's clarification loop. -->
187
+
188
+ ## 9. History
189
+
190
+ <!-- Superseded design decisions move here; the index row above stays as a tombstone with
191
+ `Superseded → <ref>`. -->
192
+
193
+ None — initial version.
@@ -0,0 +1,35 @@
1
+ # [Vendor/Service Name] Contract
2
+
3
+ > An `external-contract:` target for `/do-execute-plan --scaffold`. Points a `plan.md` task's
4
+ > `depends-on:` value (a genuine external dependency with no local repo — a vendor API, a SaaS
5
+ > integration) at this doc instead of leaving it silently skipped. `## Methods` and `## Types` are required — a doc missing either fails
6
+ > the compliance check with an explicit warning, not a silent skip. `## Webhook` is optional; omit
7
+ > the whole section if this dependency never pushes data back. Grammar inside every section is
8
+ > identical to the generic-pseudocode fallback notation in
9
+ > `skills/do-execute-plan/scaffold.md` — one notation for both, nothing new to learn.
10
+ >
11
+ > The generated frame lands in `agent-docs/doflow/<slug>/scaffold/contracts/<service>/`, alongside
12
+ > the rest of that run's scaffold rather than in a `contracts/` directory of its own.
13
+
14
+ ## Methods
15
+
16
+ ```text
17
+ interface [Vendor]Client {
18
+ [method1]([param1]: [Param1Type], [param2]: [Param2Type]): [Return1Type]
19
+ [method2]([param1]: [Param1Type]): [Return2Type]
20
+ }
21
+ ```
22
+
23
+ ## Types
24
+
25
+ ```text
26
+ type [Name] = { [field1]: [type1], [field2]: [type2] }
27
+ ```
28
+
29
+ ## Webhook
30
+
31
+ [Optional — delete this section entirely if this dependency never calls back into your system.]
32
+
33
+ ```text
34
+ type [Name] = { [field1]: [type1], [field2]: [type2] }
35
+ ```
@@ -0,0 +1,45 @@
1
+ # Intent: [SHORT TITLE]
2
+
3
+ **Raised by:** [NAME OR ROLE] · **Date:** [DATE]
4
+
5
+ > An intent is written **before** any branch, feature directory or slug exists, and needs no command
6
+ > to create: copy this file to `agent-docs/intent/<kebab-description>.md` and fill it in. It is not a
7
+ > chain artifact — it carries no `Maturity` and no `Status`, because nothing has been decided yet.
8
+ >
9
+ > Write it in your own terms. Architecture, interfaces, file paths and task breakdowns are all
10
+ > deliberately absent: an intent records a problem worth someone's attention, not a plan for solving
11
+ > it. If it is picked up, `/do-brainstorm --intent <path>` reads it and turns it into a
12
+ > `requirement.md`, which is where decisions start being made.
13
+ >
14
+ > An intent that is never built is a success of this format, not a failure of it. That is why intents
15
+ > are not numbered: a number would claim a place in a queue that nobody has promised.
16
+
17
+ ## 1. Problem
18
+
19
+ [What is wrong, missing or painful today, in your own words. Describe the situation, not a solution —
20
+ if a sentence here contains the word "add" or names a mechanism, it probably belongs in §2 or nowhere
21
+ yet.]
22
+
23
+ ## 2. Proposed outcome
24
+
25
+ [What would be observably different if this were addressed? State it as something a person could
26
+ notice or check, rather than as the thing to build. "Reviewers stop missing X" rather than "add a
27
+ check for X".]
28
+
29
+ ## 3. Affected
30
+
31
+ [Who and what this touches: the people who feel the problem, the systems involved, the existing
32
+ behaviour that would change. Name them even where you are unsure — a guess marked as one is more
33
+ useful than an omission.]
34
+
35
+ ## 4. Constraints
36
+
37
+ [What already bounds this: deadlines, policies, contracts, systems that cannot change, decisions
38
+ already taken elsewhere. Write "none known" rather than leaving it blank, so a reader can tell the
39
+ difference between no constraints and no thought about them.]
40
+
41
+ ## 5. Open questions
42
+
43
+ [What you do not know. List them rather than guessing — discovery treats these as the ambiguities it
44
+ must resolve, so an honest question here is more valuable than a confident answer that turns out to be
45
+ wrong.]
@@ -0,0 +1,151 @@
1
+ # Implementation Plan: [FEATURE NAME]
2
+
3
+ **Feature:** [NNN-slug] · **Requirement:** [REQUIREMENT_PATH] · **Design:** [DESIGN_PATH] · **Maturity:** Draft · **Created:** [DATE]
4
+
5
+ > HOW. Reads [REQUIREMENT_PATH] and [DESIGN_PATH]. Resolve every `[NEEDS CLARIFICATION]` from the
6
+ > requirement here.
7
+ >
8
+ > Structure follows `references/ARTIFACT_FORMAT.md`: indexed sections carry a table above full
9
+ > `**Detail**`, the document-level `Maturity` is `Draft`, `In review` or `Approved`, the item-level
10
+ > `Status` is only `Live` or `Superseded → <ref>`, and superseded prose moves to §9.
11
+
12
+ ## 1. Approach
13
+
14
+ [Chosen approach in 2–4 sentences; the key technical decisions.]
15
+
16
+ ## 2. Constitution Check (GATE)
17
+
18
+ > Verify against both constitution tiers, tier-2 taking precedence — you reconcile them yourself;
19
+ > nothing merges them for you. Any violation = STOP and revise the approach before continuing.
20
+ > (Advisory by default; not the hard hook gate.)
21
+
22
+ - [ ] Complies with [PRINCIPLE]: [how]
23
+ - [ ] No violation of [PRINCIPLE]: [how]
24
+
25
+ **Result:** PASS / FAIL — [note]
26
+
27
+ ## 3. Research & Decisions
28
+
29
+ <!-- D# only without a decision register; with one, list DEC-### instead (ARTIFACT_FORMAT.md §12). -->
30
+ - **D1:** [decision] — resolves [NEEDS CLARIFICATION: …]; rationale: [evidence].
31
+
32
+ ## 4. Components & Changes
33
+
34
+ | ID | Change | Files | Phase | Status |
35
+ |---|---|---|---|---|
36
+ | CH1 | [one-line summary] | [path] | A | Live |
37
+
38
+ **Detail**
39
+
40
+ - **CH1** → [what changes and why, in full].
41
+
42
+ ## 5. Data / Contracts
43
+
44
+ [schema, API, or interface pointers — or `N/A: [why]`.]
45
+
46
+ ## 6. Risks & Mitigations
47
+
48
+ | ID | Risk | Mitigation | Status |
49
+ |---|---|---|---|
50
+ | RK1 | [risk] | [mitigation] | Live |
51
+
52
+ **Detail**
53
+
54
+ - **RK1** → [how it would actually manifest, and what the mitigation does or does not cover].
55
+
56
+ ## 7. Validation Strategy
57
+
58
+ | Requirement | Verified by |
59
+ |---|---|
60
+ | FR-001 | [test, manual check, or gate] |
61
+
62
+ ## 8. Tasks
63
+
64
+ > Dependency-ordered. `[P]` = parallel-safe with its phase siblings — siblings marked `[P]` must
65
+ > write disjoint `files:`, or they are not parallel-safe. `[US#]` = traces to a
66
+ > user story in requirement.md. The `- [ ]` checkboxes are the execution contract parsed by
67
+ > `/do-execute-plan` — keep the markers intact. `depends-on:` is optional — set it when a task
68
+ > depends on an external service that has no owning task in this same plan (not a service also
69
+ > touched by another task here); `/do-execute-plan --scaffold` reads it to know which services
70
+ > need a code frame generated. `external-contract:` is also optional — set it alongside `depends-on:`
71
+ > only when that dependency has no local repo (a vendor API, a SaaS integration) but *does* have a
72
+ > documented contract; points to a doc built from `templates/doflow/external-contract-template.md`, and
73
+ > tells `--scaffold` to generate a real frame from it instead of silently skipping a non-local
74
+ > dependency (the default when no `external-contract:` is set — not every dependency needs one).
75
+
76
+ ### Repo Branch Plan
77
+
78
+ > Populate when this plan spans 2+ repos (a container workspace, not a monorepo) — derive `Repo`
79
+ > from each task's `files:` path *and* each task's `depends-on:` value the same way, by walking up
80
+ > to the nearest enclosing `.git` (a `depends-on:` value that resolves to no `.git` is skipped, not
81
+ > guessed); derive `Planned Branch` from `requirement.md`'s `**Ticket:**`
82
+ > field + this feature's slug (`feat/<TICKET>-<slug-description>`, or `feat/<slug>` if no ticket is
83
+ > recorded); `Role` is `primary` (owns a task here) or `dependency-only` (referenced only via
84
+ > `depends-on:`). For a single-repo plan, write "N/A: single-repo feature" instead of the table.
85
+
86
+ | Repo | Planned Branch | Role |
87
+ |---|---|---|
88
+ | [repo path] | `feat/[branch]` | primary |
89
+
90
+ ### Task Summary
91
+
92
+ <!-- Phase-level orientation only. The per-task checklist below stays the single source of truth
93
+ for tasks and is never mirrored into a per-task index table — duplicating every task line is
94
+ the drift this structure exists to prevent, in the file where drift costs most.
95
+
96
+ The heading is "Task Summary", not "Phase Summary": the latter collides with the
97
+ "### Phase <X>" pattern used to find phase sections. Each row's task count must match the
98
+ `- [ ]` lines under its phase heading. -->
99
+
100
+ | Phase | Tasks | Delivers | [P] |
101
+ |---|---|---|---|
102
+ | A | 2 | [what this phase produces] | yes |
103
+ | B | 1 | [what this phase produces] | no |
104
+
105
+ ### Dependency Graph
106
+
107
+ <!-- Phases, the dependency order between tasks, and which tasks carry `[P]`. Orientation only:
108
+ the per-task `- [ ]` checklist below stays the single source of truth and this diagram is
109
+ never a second inventory of it. `references/DIAGRAM_GUIDE.md` governs the node and edge
110
+ ceilings and the direction convention; write "N/A: [why]" for a plan too small to have
111
+ meaningful ordering. -->
112
+
113
+ ```mermaid
114
+ flowchart LR
115
+ subgraph PA["Phase A — [name]"]
116
+ A1["A.1 [P]<br/>[task]"]
117
+ A2["A.2<br/>[task]"]
118
+ end
119
+ subgraph PB["Phase B — [name]"]
120
+ B1["B.1 [P]<br/>[task]"]
121
+ end
122
+
123
+ A1 -->|"blocks"| A2
124
+ A2 --> PB
125
+ ```
126
+
127
+ ### Phase A — [name]
128
+
129
+ - [ ] A.1 [P] [US1] [task] — owner: [agent]; files: [paths]; depends-on: [service, optional]; external-contract: [doc path, optional]
130
+ - [ ] A.2 [US1] [task, depends A.1] — owner: [agent]; files: [paths]; depends-on: [service, optional]; external-contract: [doc path, optional]
131
+
132
+ ### Phase B — [name]
133
+
134
+ - [ ] B.1 [P] [US2] [task] — owner: [agent]; files: [paths]; depends-on: [service, optional]; external-contract: [doc path, optional]
135
+
136
+ ### Checkpoints
137
+
138
+ - After Phase A: [validation step]; commit `[message]`
139
+
140
+ ### Completion criteria
141
+
142
+ - [ ] All tasks checked
143
+ - [ ] Validation gates pass
144
+ - [ ] state.md updated
145
+
146
+ ## 9. History
147
+
148
+ <!-- Superseded decisions or tasks move here; the index row above stays as a tombstone with
149
+ `Superseded → <ref>`. -->
150
+
151
+ None — initial version.
@@ -0,0 +1,51 @@
1
+ # [Stage] Dialogue — Round [N]
2
+
3
+ **Feature:** [NNN-slug] · **Stage:** [intention|design|plan] · **Round:** [N]
4
+
5
+ > The one recurring shape every `intention/*-question.md`, `design/*-question.md` and
6
+ > `plan/*-question.md` file uses: the Socratic dialogue transcript for a single round of a chain
7
+ > stage's `AskUserQuestion` loop. This is a dialogue transcript, not an ID-bearing normative
8
+ > artifact — out of `references/ARTIFACT_FORMAT.md`'s index/detail scope, the same way that
9
+ > reference's own intro already carves out `state.md`.
10
+ >
11
+ > Not to be confused with the differently-named `{stage}-questions.md` convention in
12
+ > `rules/RULE_04_QUESTIONS.md`: that file is a *request for input*, written for a
13
+ > non-interactive harness and awaiting a `[Answer]:` tag before the run can continue. This one is
14
+ > the opposite direction — a completed *record* of a round that already happened, filed after the
15
+ > user answered, never awaiting anything.
16
+
17
+ ## Question 1 — [question text as asked]
18
+
19
+ **Options offered:**
20
+ - [option A]
21
+ - [option B]
22
+ - [option C]
23
+ - Other (free text)
24
+
25
+ **Answer:** [the option the user picked, or their free-text answer, verbatim]
26
+
27
+ <!-- If the user picked "Decide for me" (or the harness's equivalent defer choice) instead of a
28
+ normal option, do NOT record it under "Answer" as if it were one. Record it as:
29
+
30
+ **Resolved via:** recorded assumption — [one-line rationale for the default taken]
31
+
32
+ matching how requirement-template.md §8 Assumptions already documents a deferred answer: the
33
+ rationale that was written down, not the fact that the user declined to choose. -->
34
+
35
+ ## Question 2 — [question text as asked]
36
+
37
+ **Options offered:**
38
+ - [option A]
39
+ - [option B]
40
+
41
+ **Answer:** [verbatim]
42
+
43
+ <!-- Repeat one "## Question N" block per question actually asked this round — omit blocks for
44
+ questions that were not asked rather than leaving placeholders behind.
45
+
46
+ Naming: one file per Socratic round, numbered `<stage-prefix>-NN-question.md`, zero-padded to
47
+ two digits:
48
+ - intention/brainstorm-01-question.md, intention/brainstorm-02-question.md, ...
49
+ - design/design-01-question.md, design/design-02-question.md, ...
50
+ - plan/plan-01-question.md, plan/plan-02-question.md, ...
51
+ A new round is always a new file — never appended to a prior round's file. -->