@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,1057 @@
1
+ {
2
+ "version": 1,
3
+ "description": "Declared DoFlow storage retention catalogue.",
4
+ "settings": {
5
+ "optOutFile": "prune",
6
+ "upkeepIntervalHours": 24,
7
+ "passBudgetMs": 750,
8
+ "maxRemovalsPerPass": 5000,
9
+ "passLockStaleSeconds": 120,
10
+ "orphanGraceHours": 24,
11
+ "staleTmpHours": 24,
12
+ "ignoreFile": {
13
+ "name": ".gitignore",
14
+ "lines": [
15
+ "# DoFlow runtime state: local to this machine, kept out of git by DoFlow.",
16
+ "# Removed by `doflow remove` when DoFlow leaves this project.",
17
+ "*",
18
+ "!/ledger.json"
19
+ ]
20
+ }
21
+ },
22
+ "roots": {
23
+ "project-doflow": {
24
+ "base": "project",
25
+ "segments": [
26
+ ".doflow"
27
+ ]
28
+ },
29
+ "project-state": {
30
+ "base": "project",
31
+ "segments": [
32
+ ".doflow",
33
+ "state"
34
+ ]
35
+ },
36
+ "user-doflow": {
37
+ "base": "home",
38
+ "segments": [
39
+ ".doflow"
40
+ ]
41
+ },
42
+ "user-state": {
43
+ "base": "home",
44
+ "segments": [
45
+ ".doflow",
46
+ "state"
47
+ ]
48
+ },
49
+ "config-home": {
50
+ "base": "xdg-config",
51
+ "segments": [
52
+ "doflow"
53
+ ]
54
+ }
55
+ },
56
+ "stores": [
57
+ {
58
+ "id": "verification-logs",
59
+ "root": "project-state",
60
+ "path": "verification/logs",
61
+ "entry": "file",
62
+ "match": "^[0-9]{13}-[A-Za-z0-9._-]+\\.log$",
63
+ "rule": "count-and-age",
64
+ "bound": {
65
+ "keepNewest": 40,
66
+ "maxAgeDays": 30
67
+ },
68
+ "protect": "open-work",
69
+ "moments": [
70
+ "verify",
71
+ "verb"
72
+ ],
73
+ "writers": [
74
+ "src/runtime/verification/contract-runner.ts"
75
+ ]
76
+ },
77
+ {
78
+ "id": "task-evidence",
79
+ "root": "project-state",
80
+ "path": "evidence",
81
+ "entry": "record",
82
+ "match": "^[A-Za-z0-9][A-Za-z0-9._-]*\\.json$",
83
+ "rule": "work",
84
+ "bound": {
85
+ "finishedDays": 30
86
+ },
87
+ "protect": null,
88
+ "moments": [
89
+ "verb"
90
+ ],
91
+ "writers": [
92
+ "src/runtime/task-state.ts"
93
+ ]
94
+ },
95
+ {
96
+ "id": "task-readiness",
97
+ "root": "project-state",
98
+ "path": "readiness",
99
+ "entry": "record",
100
+ "match": "^[A-Za-z0-9][A-Za-z0-9._-]*\\.json$",
101
+ "rule": "work",
102
+ "bound": {
103
+ "finishedDays": 30
104
+ },
105
+ "protect": null,
106
+ "moments": [
107
+ "verb"
108
+ ],
109
+ "writers": [
110
+ "src/runtime/readiness-record.ts",
111
+ "src/runtime/task-state.ts"
112
+ ]
113
+ },
114
+ {
115
+ "id": "task-research",
116
+ "root": "project-state",
117
+ "path": "research",
118
+ "entry": "record",
119
+ "match": "^[A-Za-z0-9][A-Za-z0-9._-]*\\.json$",
120
+ "rule": "work",
121
+ "bound": {
122
+ "finishedDays": 30
123
+ },
124
+ "protect": null,
125
+ "moments": [
126
+ "verb"
127
+ ],
128
+ "writers": [
129
+ "src/runtime/task-state.ts"
130
+ ]
131
+ },
132
+ {
133
+ "id": "task-outcome",
134
+ "root": "project-state",
135
+ "path": "outcome",
136
+ "entry": "record",
137
+ "match": "^[A-Za-z0-9][A-Za-z0-9._-]*\\.json$",
138
+ "rule": "work",
139
+ "bound": {
140
+ "finishedDays": 30
141
+ },
142
+ "protect": null,
143
+ "moments": [
144
+ "verb"
145
+ ],
146
+ "writers": [
147
+ "src/runtime/outcome.ts"
148
+ ]
149
+ },
150
+ {
151
+ "id": "task-retrieval",
152
+ "root": "project-state",
153
+ "path": "retrieval",
154
+ "entry": "record",
155
+ "match": "^[A-Za-z0-9][A-Za-z0-9._-]*\\.json$",
156
+ "rule": "work",
157
+ "bound": {
158
+ "finishedDays": 30
159
+ },
160
+ "protect": null,
161
+ "moments": [
162
+ "verb"
163
+ ],
164
+ "writers": [
165
+ "src/runtime/retrieval-plan.ts"
166
+ ]
167
+ },
168
+ {
169
+ "id": "task-attempts",
170
+ "root": "project-state",
171
+ "path": "task-attempts",
172
+ "entry": "record",
173
+ "match": "^[A-Za-z0-9][A-Za-z0-9._-]*\\.json$",
174
+ "rule": "work",
175
+ "bound": {
176
+ "finishedDays": 30
177
+ },
178
+ "protect": null,
179
+ "moments": [
180
+ "verb"
181
+ ],
182
+ "writers": [
183
+ "src/runtime/task-state.ts"
184
+ ]
185
+ },
186
+ {
187
+ "id": "task-orchestration",
188
+ "root": "project-state",
189
+ "path": "orchestration",
190
+ "entry": "record",
191
+ "match": "^[A-Za-z0-9][A-Za-z0-9._-]*\\.json$",
192
+ "rule": "work",
193
+ "bound": {
194
+ "finishedDays": 30
195
+ },
196
+ "protect": null,
197
+ "moments": [
198
+ "verb"
199
+ ],
200
+ "writers": [
201
+ "src/runtime/task-state.ts",
202
+ "src/runtime/workflow-orchestrator.ts"
203
+ ]
204
+ },
205
+ {
206
+ "id": "runs-project",
207
+ "root": "project-state",
208
+ "path": "runs",
209
+ "entry": "file",
210
+ "match": "^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.jsonl$",
211
+ "rule": "date-partition",
212
+ "bound": {
213
+ "maxAgeDays": 180
214
+ },
215
+ "protect": null,
216
+ "moments": [
217
+ "verb"
218
+ ],
219
+ "writers": [
220
+ "core/shared/scripts/doflow/bin/doflow-run",
221
+ "src/runtime/trace/ledger.ts"
222
+ ]
223
+ },
224
+ {
225
+ "id": "runs-user",
226
+ "root": "user-state",
227
+ "path": "runs",
228
+ "entry": "file",
229
+ "match": "^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.jsonl$",
230
+ "rule": "date-partition",
231
+ "bound": {
232
+ "maxAgeDays": 180
233
+ },
234
+ "protect": null,
235
+ "moments": [
236
+ "verb"
237
+ ],
238
+ "writers": [
239
+ "core/shared/scripts/doflow/bin/doflow-run",
240
+ "src/runtime/trace/ledger.ts"
241
+ ]
242
+ },
243
+ {
244
+ "id": "advice-picks-project",
245
+ "root": "project-state",
246
+ "path": "advice/picks",
247
+ "entry": "file",
248
+ "match": "^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.jsonl$",
249
+ "rule": "date-partition",
250
+ "bound": {
251
+ "maxAgeDays": 90
252
+ },
253
+ "protect": null,
254
+ "moments": [
255
+ "verb"
256
+ ],
257
+ "writers": [
258
+ "src/runtime/advice/record.ts"
259
+ ]
260
+ },
261
+ {
262
+ "id": "advice-picks-user",
263
+ "root": "user-state",
264
+ "path": "advice/picks",
265
+ "entry": "file",
266
+ "match": "^[0-9]{4}-[0-9]{2}-[0-9]{2}\\.jsonl$",
267
+ "rule": "date-partition",
268
+ "bound": {
269
+ "maxAgeDays": 90
270
+ },
271
+ "protect": null,
272
+ "moments": [
273
+ "verb"
274
+ ],
275
+ "writers": [
276
+ "src/runtime/advice/record.ts"
277
+ ]
278
+ },
279
+ {
280
+ "id": "recovery-user",
281
+ "root": "user-state",
282
+ "path": "recovery",
283
+ "entry": "file",
284
+ "match": "^recovery_[A-Za-z0-9_-]+\\.json$",
285
+ "rule": "recovery",
286
+ "bound": {
287
+ "keepNewest": 3
288
+ },
289
+ "protect": null,
290
+ "moments": [
291
+ "install"
292
+ ],
293
+ "writers": [
294
+ "src/state/index.ts"
295
+ ]
296
+ },
297
+ {
298
+ "id": "recovery-project",
299
+ "root": "project-state",
300
+ "path": "recovery",
301
+ "entry": "file",
302
+ "match": "^recovery_[A-Za-z0-9_-]+\\.json$",
303
+ "rule": "recovery",
304
+ "bound": {
305
+ "keepNewest": 3
306
+ },
307
+ "protect": null,
308
+ "moments": [
309
+ "install"
310
+ ],
311
+ "writers": [
312
+ "src/state/index.ts"
313
+ ]
314
+ },
315
+ {
316
+ "id": "lifecycle-events",
317
+ "root": "project-state",
318
+ "path": "lifecycle/events",
319
+ "entry": "file",
320
+ "match": "^[A-Za-z0-9][A-Za-z0-9._-]*\\.json$",
321
+ "rule": "lifecycle-settled",
322
+ "bound": {
323
+ "defaultHours": 4320
324
+ },
325
+ "protect": null,
326
+ "moments": [
327
+ "lifecycle-verb",
328
+ "verb"
329
+ ],
330
+ "writers": [
331
+ "src/runtime/lifecycle/event-store.ts"
332
+ ]
333
+ },
334
+ {
335
+ "id": "report-bodies",
336
+ "root": "config-home",
337
+ "path": "reports",
338
+ "entry": "dir",
339
+ "match": "^[0-9a-f]{12}$",
340
+ "rule": "report-orphan",
341
+ "bound": {
342
+ "orphanGraceHours": 24,
343
+ "foreignMaxAgeDays": 180
344
+ },
345
+ "protect": null,
346
+ "moments": [
347
+ "verb"
348
+ ],
349
+ "writers": [
350
+ "src/runtime/lifecycle/report-store.ts",
351
+ "src/runtime/storage/engine.ts"
352
+ ]
353
+ },
354
+ {
355
+ "id": "session-dirs",
356
+ "root": "config-home",
357
+ "path": "session-env/sessions",
358
+ "entry": "dir",
359
+ "match": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$",
360
+ "rule": "age",
361
+ "bound": {
362
+ "maxAgeDays": 30
363
+ },
364
+ "protect": null,
365
+ "moments": [
366
+ "session",
367
+ "verb"
368
+ ],
369
+ "writers": [
370
+ "core/harnesses/claude/hooks/lib.sh",
371
+ "core/harnesses/claude/hooks/permission-audit.sh",
372
+ "core/harnesses/claude/hooks/post-edit-lint.sh",
373
+ "core/harnesses/claude/hooks/post-tool-failure.sh",
374
+ "core/harnesses/claude/hooks/skill-config-audit.sh",
375
+ "core/harnesses/codex/hooks/lib.sh",
376
+ "core/harnesses/codex/hooks/post-edit-lint.impl.sh",
377
+ "core/harnesses/gemini/hooks/lib.sh",
378
+ "core/harnesses/gemini/hooks/post-edit-lint.sh",
379
+ "core/harnesses/kiro/hooks/lib.sh",
380
+ "core/harnesses/shared/hooks/policies/lib.sh",
381
+ "core/harnesses/shared/hooks/policies/session-context.sh",
382
+ "core/harnesses/shared/hooks/policies/stop-check.sh",
383
+ "core/harnesses/shared/hooks/policies/subagent-audit.sh",
384
+ "core/harnesses/shared/hooks/policies/user-prompt-submit.sh"
385
+ ]
386
+ },
387
+ {
388
+ "id": "project-dirs",
389
+ "root": "config-home",
390
+ "path": "session-env/projects",
391
+ "entry": "dir",
392
+ "match": "^[0-9a-f]{16}$",
393
+ "rule": "age",
394
+ "bound": {
395
+ "maxAgeDays": 90
396
+ },
397
+ "protect": null,
398
+ "moments": [
399
+ "session",
400
+ "verb"
401
+ ],
402
+ "writers": [
403
+ "core/harnesses/claude/hooks/lib.sh",
404
+ "core/harnesses/claude/hooks/post-compact.sh",
405
+ "core/harnesses/claude/hooks/session-end.sh",
406
+ "core/harnesses/codex/hooks/lib.sh",
407
+ "core/harnesses/codex/hooks/session-end.impl.sh",
408
+ "core/harnesses/gemini/hooks/lib.sh",
409
+ "core/harnesses/gemini/hooks/session-end.impl.sh",
410
+ "core/harnesses/kiro/hooks/lib.sh",
411
+ "core/harnesses/shared/hooks/policies/lib.sh",
412
+ "core/harnesses/shared/hooks/policies/session-context.sh",
413
+ "core/harnesses/shared/hooks/policies/user-prompt-submit.sh"
414
+ ]
415
+ },
416
+ {
417
+ "id": "installer-backups-user-doflow",
418
+ "root": "user-doflow",
419
+ "path": "backups",
420
+ "entry": "dir",
421
+ "match": "^[A-Za-z0-9._-]+$",
422
+ "rule": "existing",
423
+ "bound": {
424
+ "value": 3,
425
+ "text": "keep 3"
426
+ },
427
+ "protect": null,
428
+ "moments": [],
429
+ "writers": [
430
+ "src/install/backup.ts"
431
+ ],
432
+ "source": {
433
+ "file": "src/install/backup.ts",
434
+ "pattern": "DEFAULT_BACKUP_RETENTION = {value}"
435
+ }
436
+ },
437
+ {
438
+ "id": "installer-backups-project-doflow",
439
+ "root": "project-doflow",
440
+ "path": "backups",
441
+ "entry": "dir",
442
+ "match": "^[A-Za-z0-9._-]+$",
443
+ "rule": "existing",
444
+ "bound": {
445
+ "value": 3,
446
+ "text": "keep 3"
447
+ },
448
+ "protect": null,
449
+ "moments": [],
450
+ "writers": [
451
+ "src/install/backup.ts"
452
+ ],
453
+ "source": {
454
+ "file": "src/install/backup.ts",
455
+ "pattern": "DEFAULT_BACKUP_RETENTION = {value}"
456
+ }
457
+ },
458
+ {
459
+ "id": "nudge-markers",
460
+ "root": "config-home",
461
+ "path": "session-env/nudge",
462
+ "entry": "file",
463
+ "match": "^[A-Za-z0-9._-]+$",
464
+ "rule": "existing",
465
+ "bound": {
466
+ "value": 30,
467
+ "text": "prune after 30 days"
468
+ },
469
+ "protect": null,
470
+ "moments": [],
471
+ "writers": [
472
+ "core/harnesses/shared/hooks/policies/lib.sh"
473
+ ],
474
+ "source": {
475
+ "file": "core/harnesses/shared/hooks/policies/lib.sh",
476
+ "pattern": "-mtime +{value}"
477
+ }
478
+ },
479
+ {
480
+ "id": "sessions-log",
481
+ "root": "config-home",
482
+ "path": "sessions.log",
483
+ "entry": "file",
484
+ "match": "^sessions\\.log$",
485
+ "rule": "existing",
486
+ "bound": {
487
+ "value": 500,
488
+ "text": "keep last 500 lines"
489
+ },
490
+ "protect": null,
491
+ "moments": [],
492
+ "writers": [
493
+ "core/harnesses/claude/hooks/lib.sh",
494
+ "core/harnesses/claude/hooks/session-end.sh",
495
+ "core/harnesses/codex/hooks/lib.sh",
496
+ "core/harnesses/codex/hooks/session-end.impl.sh",
497
+ "core/harnesses/gemini/hooks/lib.sh",
498
+ "core/harnesses/gemini/hooks/session-end.impl.sh",
499
+ "core/harnesses/kiro/hooks/lib.sh",
500
+ "core/harnesses/shared/hooks/policies/lib.sh",
501
+ "core/harnesses/shared/hooks/policies/session-context.sh"
502
+ ],
503
+ "source": {
504
+ "file": "core/harnesses/claude/hooks/session-end.sh",
505
+ "pattern": "tail -n {value}"
506
+ }
507
+ },
508
+ {
509
+ "id": "failure-events",
510
+ "root": "config-home",
511
+ "path": "failures",
512
+ "entry": "file",
513
+ "match": "^[A-Za-z0-9._-]+$",
514
+ "rule": "existing",
515
+ "bound": {
516
+ "value": 4,
517
+ "text": "keep 4 rotated files"
518
+ },
519
+ "protect": null,
520
+ "moments": [],
521
+ "writers": [
522
+ "core/harnesses/shared/hooks/policies/capture-failure.sh",
523
+ "core/harnesses/shared/hooks/stream-hook-runner.js",
524
+ "core/shared/scripts/doflow/bin/doflow-run",
525
+ "src/runtime/failure/capture.ts",
526
+ "src/runtime/failure/cli.ts",
527
+ "src/runtime/failure/store.ts"
528
+ ],
529
+ "source": {
530
+ "file": "src/runtime/failure/capture.ts",
531
+ "pattern": "KEEP_ROTATED = {value}"
532
+ }
533
+ },
534
+ {
535
+ "id": "install-ledger-user-state",
536
+ "root": "user-state",
537
+ "path": "ledger.json",
538
+ "entry": "file",
539
+ "match": "^ledger\\.json$",
540
+ "rule": "existing",
541
+ "bound": {
542
+ "text": "one file, overwritten"
543
+ },
544
+ "protect": null,
545
+ "moments": [],
546
+ "writers": [
547
+ "src/state/index.ts"
548
+ ],
549
+ "source": {
550
+ "file": "src/state/index.ts",
551
+ "pattern": "LEDGER_FILE"
552
+ }
553
+ },
554
+ {
555
+ "id": "install-ledger-project-state",
556
+ "root": "project-state",
557
+ "path": "ledger.json",
558
+ "entry": "file",
559
+ "match": "^ledger\\.json$",
560
+ "rule": "existing",
561
+ "bound": {
562
+ "text": "one file, overwritten"
563
+ },
564
+ "protect": null,
565
+ "moments": [],
566
+ "writers": [
567
+ "src/state/index.ts"
568
+ ],
569
+ "source": {
570
+ "file": "src/state/index.ts",
571
+ "pattern": "LEDGER_FILE"
572
+ }
573
+ },
574
+ {
575
+ "id": "lifecycle-control",
576
+ "root": "project-state",
577
+ "path": "lifecycle",
578
+ "entry": "dir",
579
+ "match": "^[A-Za-z0-9._-]+$",
580
+ "rule": "existing",
581
+ "bound": {
582
+ "text": "self-cleaning"
583
+ },
584
+ "protect": null,
585
+ "moments": [],
586
+ "writers": [
587
+ "src/runtime/lifecycle/store-upkeep.ts"
588
+ ],
589
+ "source": {
590
+ "file": "src/runtime/lifecycle/store-upkeep.ts",
591
+ "pattern": "MIGRATING_PREFIX"
592
+ }
593
+ },
594
+ {
595
+ "id": "task-locks-project-state",
596
+ "root": "project-state",
597
+ "path": "",
598
+ "entry": "dir",
599
+ "match": "^.+\\.lock$",
600
+ "rule": "existing",
601
+ "bound": {
602
+ "value": 10000,
603
+ "text": "removed on release; stale locks are broken"
604
+ },
605
+ "protect": null,
606
+ "moments": [],
607
+ "writers": [
608
+ "src/runtime/storage/engine.ts",
609
+ "src/runtime/task-state.ts"
610
+ ],
611
+ "source": {
612
+ "file": "src/runtime/task-state.ts",
613
+ "pattern": "LOCK_STALE_MS = 10_000"
614
+ }
615
+ },
616
+ {
617
+ "id": "install-projections-user-doflow",
618
+ "root": "user-doflow",
619
+ "path": "",
620
+ "entry": "dir",
621
+ "match": "^(?:scripts|runtime|guidance|shared|templates|\\.install-manifest\\.json|doflow\\.lock)$",
622
+ "rule": "existing",
623
+ "bound": {
624
+ "text": "owned by the install ledger"
625
+ },
626
+ "protect": null,
627
+ "moments": [],
628
+ "writers": [
629
+ "src/adapters/antigravity/index.ts",
630
+ "src/adapters/copy-tree.ts",
631
+ "src/install/manifest.ts",
632
+ "src/lifecycle/index.ts",
633
+ "src/state/index.ts"
634
+ ],
635
+ "source": {
636
+ "file": "src/lifecycle/index.ts",
637
+ "pattern": "MCP_INDEX.md"
638
+ }
639
+ },
640
+ {
641
+ "id": "install-projections-project-doflow",
642
+ "root": "project-doflow",
643
+ "path": "",
644
+ "entry": "dir",
645
+ "match": "^(?:scripts|runtime|guidance|shared|templates|\\.install-manifest\\.json|doflow\\.lock)$",
646
+ "rule": "existing",
647
+ "bound": {
648
+ "text": "owned by the install ledger"
649
+ },
650
+ "protect": null,
651
+ "moments": [],
652
+ "writers": [
653
+ "src/adapters/antigravity/index.ts",
654
+ "src/adapters/copy-tree.ts",
655
+ "src/install/manifest.ts",
656
+ "src/lifecycle/index.ts",
657
+ "src/state/index.ts"
658
+ ],
659
+ "source": {
660
+ "file": "src/lifecycle/index.ts",
661
+ "pattern": "MCP_INDEX.md"
662
+ }
663
+ },
664
+ {
665
+ "id": "knowledge-index-user-doflow",
666
+ "root": "user-doflow",
667
+ "path": "index",
668
+ "entry": "file",
669
+ "match": "^[A-Za-z0-9._-]+$",
670
+ "rule": "existing",
671
+ "bound": {
672
+ "text": "rewritten atomically, sha-keyed"
673
+ },
674
+ "protect": null,
675
+ "moments": [],
676
+ "writers": [
677
+ "src/runtime/knowledge/index-store.ts"
678
+ ],
679
+ "source": {
680
+ "file": "src/runtime/knowledge/index-store.ts",
681
+ "pattern": "sha256"
682
+ }
683
+ },
684
+ {
685
+ "id": "knowledge-index-project-doflow",
686
+ "root": "project-doflow",
687
+ "path": "index",
688
+ "entry": "file",
689
+ "match": "^[A-Za-z0-9._-]+$",
690
+ "rule": "existing",
691
+ "bound": {
692
+ "text": "rewritten atomically, sha-keyed"
693
+ },
694
+ "protect": null,
695
+ "moments": [],
696
+ "writers": [
697
+ "src/runtime/knowledge/index-store.ts"
698
+ ],
699
+ "source": {
700
+ "file": "src/runtime/knowledge/index-store.ts",
701
+ "pattern": "sha256"
702
+ }
703
+ },
704
+ {
705
+ "id": "bench-worktrees",
706
+ "root": "project-doflow",
707
+ "path": "worktrees",
708
+ "entry": "dir",
709
+ "match": "^[A-Za-z0-9._-]+$",
710
+ "rule": "existing",
711
+ "bound": {
712
+ "text": "removed per case by the bench runner, not shipped"
713
+ },
714
+ "protect": null,
715
+ "moments": [],
716
+ "writers": [
717
+ "src/runtime/worktree.ts"
718
+ ],
719
+ "source": {
720
+ "file": "src/runtime/worktree.ts",
721
+ "pattern": "worktree"
722
+ }
723
+ },
724
+ {
725
+ "id": "user-settings-project-doflow",
726
+ "root": "project-doflow",
727
+ "path": "",
728
+ "entry": "file",
729
+ "match": "^(?:prompt-nudge|prune|decision-model\\.json)$",
730
+ "rule": "existing",
731
+ "bound": {
732
+ "text": "one line each, user-authored; decision-model.json is one JSON object, written by hand or by advise --action configure"
733
+ },
734
+ "protect": null,
735
+ "moments": [],
736
+ "writers": [
737
+ "src/runtime/advice/config.ts"
738
+ ],
739
+ "source": {
740
+ "file": "core/harnesses/shared/hooks/policies/lib.sh",
741
+ "pattern": "prompt-nudge"
742
+ }
743
+ },
744
+ {
745
+ "id": "user-settings-config-home",
746
+ "root": "config-home",
747
+ "path": "",
748
+ "entry": "file",
749
+ "match": "^(?:prompt-nudge|prune|decision-model\\.json)$",
750
+ "rule": "existing",
751
+ "bound": {
752
+ "text": "one line each, user-authored; decision-model.json is one JSON object, written by hand or by advise --action configure"
753
+ },
754
+ "protect": null,
755
+ "moments": [],
756
+ "writers": [
757
+ "src/runtime/advice/config.ts"
758
+ ],
759
+ "source": {
760
+ "file": "core/harnesses/shared/hooks/policies/lib.sh",
761
+ "pattern": "prompt-nudge"
762
+ }
763
+ },
764
+ {
765
+ "id": "state-ignore-project-state",
766
+ "root": "project-state",
767
+ "path": ".gitignore",
768
+ "entry": "file",
769
+ "match": "^\\.gitignore$",
770
+ "rule": "control",
771
+ "bound": {
772
+ "text": "state ignore file"
773
+ },
774
+ "protect": null,
775
+ "moments": [
776
+ "uninstall"
777
+ ],
778
+ "writers": [
779
+ "src/runtime/storage/upkeep.ts"
780
+ ]
781
+ },
782
+ {
783
+ "id": "state-ignore-user-state",
784
+ "root": "user-state",
785
+ "path": ".gitignore",
786
+ "entry": "file",
787
+ "match": "^\\.gitignore$",
788
+ "rule": "control",
789
+ "bound": {
790
+ "text": "state ignore file"
791
+ },
792
+ "protect": null,
793
+ "moments": [
794
+ "uninstall"
795
+ ],
796
+ "writers": [
797
+ "src/runtime/storage/upkeep.ts"
798
+ ]
799
+ },
800
+ {
801
+ "id": "upkeep-marker-project-state",
802
+ "root": "project-state",
803
+ "path": "upkeep-due",
804
+ "entry": "file",
805
+ "match": "^upkeep-due$",
806
+ "rule": "control",
807
+ "bound": {
808
+ "text": "daily upkeep marker"
809
+ },
810
+ "protect": null,
811
+ "moments": [
812
+ "uninstall"
813
+ ],
814
+ "writers": [
815
+ "src/runtime/storage/upkeep.ts"
816
+ ]
817
+ },
818
+ {
819
+ "id": "upkeep-marker-user-state",
820
+ "root": "user-state",
821
+ "path": "upkeep-due",
822
+ "entry": "file",
823
+ "match": "^upkeep-due$",
824
+ "rule": "control",
825
+ "bound": {
826
+ "text": "daily upkeep marker"
827
+ },
828
+ "protect": null,
829
+ "moments": [
830
+ "uninstall"
831
+ ],
832
+ "writers": [
833
+ "src/runtime/storage/upkeep.ts"
834
+ ]
835
+ },
836
+ {
837
+ "id": "upkeep-marker-config-home",
838
+ "root": "config-home",
839
+ "path": "upkeep-due",
840
+ "entry": "file",
841
+ "match": "^upkeep-due$",
842
+ "rule": "control",
843
+ "bound": {
844
+ "text": "daily upkeep marker"
845
+ },
846
+ "protect": null,
847
+ "moments": [
848
+ "uninstall"
849
+ ],
850
+ "writers": [
851
+ "src/runtime/storage/upkeep.ts"
852
+ ]
853
+ },
854
+ {
855
+ "id": "upkeep-lock-project-state",
856
+ "root": "project-state",
857
+ "path": "upkeep.lock",
858
+ "entry": "dir",
859
+ "match": "^upkeep\\.lock$",
860
+ "rule": "control",
861
+ "bound": {
862
+ "text": "upkeep pass lock"
863
+ },
864
+ "protect": null,
865
+ "moments": [
866
+ "uninstall"
867
+ ],
868
+ "writers": [
869
+ "src/runtime/storage/upkeep.ts"
870
+ ]
871
+ },
872
+ {
873
+ "id": "upkeep-lock-user-state",
874
+ "root": "user-state",
875
+ "path": "upkeep.lock",
876
+ "entry": "dir",
877
+ "match": "^upkeep\\.lock$",
878
+ "rule": "control",
879
+ "bound": {
880
+ "text": "upkeep pass lock"
881
+ },
882
+ "protect": null,
883
+ "moments": [
884
+ "uninstall"
885
+ ],
886
+ "writers": [
887
+ "src/runtime/storage/upkeep.ts"
888
+ ]
889
+ },
890
+ {
891
+ "id": "upkeep-lock-config-home",
892
+ "root": "config-home",
893
+ "path": "upkeep.lock",
894
+ "entry": "dir",
895
+ "match": "^upkeep\\.lock$",
896
+ "rule": "control",
897
+ "bound": {
898
+ "text": "upkeep pass lock"
899
+ },
900
+ "protect": null,
901
+ "moments": [
902
+ "uninstall"
903
+ ],
904
+ "writers": [
905
+ "src/runtime/storage/upkeep.ts"
906
+ ]
907
+ },
908
+ {
909
+ "id": "upkeep-roots",
910
+ "root": "user-state",
911
+ "path": "upkeep-roots",
912
+ "entry": "file",
913
+ "match": "^upkeep-roots$",
914
+ "rule": "control",
915
+ "bound": {
916
+ "text": "project upkeep roots index"
917
+ },
918
+ "protect": null,
919
+ "moments": [
920
+ "uninstall"
921
+ ],
922
+ "writers": [
923
+ "src/runtime/storage/upkeep.ts"
924
+ ]
925
+ },
926
+ {
927
+ "id": "run-lock-project-state",
928
+ "root": "project-state",
929
+ "path": "",
930
+ "entry": "file",
931
+ "match": "^(?:run\\.lock|run\\.lock\\.claim\\.[A-Za-z0-9._-]+|\\.run\\.lock\\.[0-9a-f]{32}\\.tmp)$",
932
+ "rule": "control",
933
+ "bound": {
934
+ "text": "self-cleaning run lock and orphan sweep"
935
+ },
936
+ "protect": null,
937
+ "moments": [
938
+ "uninstall"
939
+ ],
940
+ "writers": [
941
+ "src/state/run-lock.ts"
942
+ ]
943
+ },
944
+ {
945
+ "id": "run-lock-user-state",
946
+ "root": "user-state",
947
+ "path": "",
948
+ "entry": "file",
949
+ "match": "^(?:run\\.lock|run\\.lock\\.claim\\.[A-Za-z0-9._-]+|\\.run\\.lock\\.[0-9a-f]{32}\\.tmp)$",
950
+ "rule": "control",
951
+ "bound": {
952
+ "text": "self-cleaning run lock and orphan sweep"
953
+ },
954
+ "protect": null,
955
+ "moments": [
956
+ "uninstall"
957
+ ],
958
+ "writers": [
959
+ "src/state/run-lock.ts"
960
+ ]
961
+ }
962
+ ],
963
+ "externalWriters": [
964
+ {
965
+ "file": "core/shared/scripts/doflow/bash/do-exec-paths.sh",
966
+ "reason": "agent-docs deliverable folder (<feature>/exec)"
967
+ },
968
+ {
969
+ "file": "core/shared/scripts/doflow/bash/do-review-package.sh",
970
+ "reason": "agent-docs deliverable (<feature>/exec/review-*.diff)"
971
+ },
972
+ {
973
+ "file": "core/shared/scripts/doflow/bash/do-task-brief.sh",
974
+ "reason": "agent-docs deliverable (<feature>/exec/*-brief.md and its *-brief.json record)"
975
+ },
976
+ {
977
+ "file": "core/shared/scripts/doflow/bash/render-audit.sh",
978
+ "reason": "agent-docs deliverable (audit.md, tmp beside it, removed by trap :111)"
979
+ },
980
+ {
981
+ "file": "core/shared/scripts/doflow/bash/render-diagrams.sh",
982
+ "reason": "OS temp scratch with trap rm -rf at :117"
983
+ },
984
+ {
985
+ "file": "core/shared/scripts/doflow/bash/render-puml.sh",
986
+ "reason": "agent-docs deliverable (.sha beside .puml; design.md block rewrite; trap :174)"
987
+ },
988
+ {
989
+ "file": "core/shared/scripts/doflow/bash/sync-context.sh",
990
+ "reason": "agent context file (AGENTS.md or CLAUDE.md) managed block, owned by the install ledger"
991
+ },
992
+ {
993
+ "file": "src/adapters/claude/index.ts",
994
+ "reason": "harness configuration/projection owned by the install ledger"
995
+ },
996
+ {
997
+ "file": "src/adapters/codex/config.ts",
998
+ "reason": "harness configuration/projection owned by the install ledger"
999
+ },
1000
+ {
1001
+ "file": "src/adapters/codex/hooks.ts",
1002
+ "reason": "harness configuration/projection owned by the install ledger"
1003
+ },
1004
+ {
1005
+ "file": "src/adapters/copilot/index.ts",
1006
+ "reason": "harness configuration/projection owned by the install ledger"
1007
+ },
1008
+ {
1009
+ "file": "src/adapters/gemini/hooks.ts",
1010
+ "reason": "harness configuration/projection owned by the install ledger"
1011
+ },
1012
+ {
1013
+ "file": "src/adapters/gemini/index.ts",
1014
+ "reason": "harness configuration/projection owned by the install ledger"
1015
+ },
1016
+ {
1017
+ "file": "src/adapters/mcp-entries.ts",
1018
+ "reason": "harness configuration/projection owned by the install ledger"
1019
+ },
1020
+ {
1021
+ "file": "src/adapters/opencode/index.ts",
1022
+ "reason": "harness configuration/projection owned by the install ledger"
1023
+ },
1024
+ {
1025
+ "file": "src/adapters/pi/index.ts",
1026
+ "reason": "harness configuration/projection owned by the install ledger"
1027
+ },
1028
+ {
1029
+ "file": "src/adapters/pi/mcp.ts",
1030
+ "reason": "harness configuration/projection owned by the install ledger"
1031
+ },
1032
+ {
1033
+ "file": "src/helper/marker-merge.ts",
1034
+ "reason": "harness instruction file managed block (CLAUDE.md, AGENTS.md, GEMINI.md), owned by the install ledger"
1035
+ },
1036
+ {
1037
+ "file": "src/release/sync-plugin-versions.ts",
1038
+ "reason": "maintainer release tool: rewrites the repo plugin manifests (no DoFlow root)"
1039
+ },
1040
+ {
1041
+ "file": "src/runtime/decision-register.ts",
1042
+ "reason": "agent-docs deliverable (decisions register of a feature)"
1043
+ },
1044
+ {
1045
+ "file": "src/runtime/history-compactor.ts",
1046
+ "reason": "agent-docs deliverable (decisions/history archive and artifact stub)"
1047
+ },
1048
+ {
1049
+ "file": "src/runtime/lifecycle/intent-writer.ts",
1050
+ "reason": "agent-docs deliverable (agent-docs/intent/*.md)"
1051
+ },
1052
+ {
1053
+ "file": "src/runtime/scaffold/generate.ts",
1054
+ "reason": "agent-docs deliverable (scaffold files and manifest)"
1055
+ }
1056
+ ]
1057
+ }