deviatdd 2.5.4__tar.gz → 2.7.2__tar.gz

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 (357) hide show
  1. {deviatdd-2.5.4 → deviatdd-2.7.2}/CHANGELOG.md +138 -0
  2. {deviatdd-2.5.4 → deviatdd-2.7.2}/PKG-INFO +24 -2
  3. {deviatdd-2.5.4 → deviatdd-2.7.2}/README.md +23 -1
  4. {deviatdd-2.5.4 → deviatdd-2.7.2}/pyproject.toml +1 -1
  5. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/DeviaTDD-api.md +164 -44
  6. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/DeviaTDD-architecture.md +46 -19
  7. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/implementation-gap.md +6 -2
  8. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/cli/__init__.py +270 -29
  9. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/cli/meso.py +112 -22
  10. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/cli/micro.py +193 -65
  11. deviatdd-2.7.2/src/deviate/cli/walkthrough.py +188 -0
  12. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/agent.py +30 -8
  13. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/worktree.py +2 -0
  14. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-architecture.md +9 -13
  15. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-e2e.md +1 -2
  16. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-flows.md +8 -7
  17. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-prd.md +7 -0
  18. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-research.md +13 -12
  19. deviatdd-2.7.2/src/deviate/prompts/commands/deviate-review.md +399 -0
  20. deviatdd-2.7.2/src/deviate/prompts/commands/deviate-walkthrough.md +244 -0
  21. deviatdd-2.7.2/src/deviate/ui/__init__.py +27 -0
  22. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/ui/monitor.py +22 -0
  23. deviatdd-2.7.2/src/deviate/ui/pipeline.py +462 -0
  24. deviatdd-2.7.2/src/deviate/ui/render.py +46 -0
  25. deviatdd-2.7.2/src/deviate/visual/__init__.py +32 -0
  26. deviatdd-2.7.2/tests/test_cli/test_help.py +265 -0
  27. deviatdd-2.7.2/tests/test_cli/test_meso.py +63 -0
  28. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_cli/test_micro.py +10 -10
  29. deviatdd-2.7.2/tests/test_cli/test_top_level_run.py +276 -0
  30. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_meso/test_meso_model_routing.py +1 -1
  31. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_meso/test_meso_orchestration.py +50 -1
  32. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_micro/test_judge.py +1 -1
  33. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_micro/test_orchestration.py +16 -14
  34. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_micro/test_run.py +16 -12
  35. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_ui/test_monitor.py +26 -0
  36. deviatdd-2.7.2/tests/test_ui/test_pipeline.py +386 -0
  37. deviatdd-2.7.2/tests/test_visual_demo/test_tsk_001_01.py +54 -0
  38. {deviatdd-2.5.4 → deviatdd-2.7.2}/uv.lock +1 -1
  39. deviatdd-2.5.4/src/deviate/prompts/commands/deviate-review.md +0 -289
  40. deviatdd-2.5.4/src/deviate/ui/__init__.py +0 -5
  41. deviatdd-2.5.4/src/deviate/ui/render.py +0 -26
  42. deviatdd-2.5.4/tests/test_cli/test_meso.py +0 -15
  43. {deviatdd-2.5.4 → deviatdd-2.7.2}/.deviate/.gitignore +0 -0
  44. {deviatdd-2.5.4 → deviatdd-2.7.2}/.deviate/config.toml +0 -0
  45. {deviatdd-2.5.4 → deviatdd-2.7.2}/.deviate/evaluations/deviate-flows-skill-2026-06-26.json +0 -0
  46. {deviatdd-2.5.4 → deviatdd-2.7.2}/.env.example +0 -0
  47. {deviatdd-2.5.4 → deviatdd-2.7.2}/.gitattributes +0 -0
  48. {deviatdd-2.5.4 → deviatdd-2.7.2}/.githooks/pre-commit +0 -0
  49. {deviatdd-2.5.4 → deviatdd-2.7.2}/.githooks/pre-push +0 -0
  50. {deviatdd-2.5.4 → deviatdd-2.7.2}/.github/ISSUE_TEMPLATE/bug.md +0 -0
  51. {deviatdd-2.5.4 → deviatdd-2.7.2}/.github/ISSUE_TEMPLATE/feature.md +0 -0
  52. {deviatdd-2.5.4 → deviatdd-2.7.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  53. {deviatdd-2.5.4 → deviatdd-2.7.2}/.github/workflows/ci.yml +0 -0
  54. {deviatdd-2.5.4 → deviatdd-2.7.2}/.gitignore +0 -0
  55. {deviatdd-2.5.4 → deviatdd-2.7.2}/.opencode/.gitignore +0 -0
  56. {deviatdd-2.5.4 → deviatdd-2.7.2}/.opencode/opencode.json +0 -0
  57. {deviatdd-2.5.4 → deviatdd-2.7.2}/AGENTS.md +0 -0
  58. {deviatdd-2.5.4 → deviatdd-2.7.2}/CLAUDE.md +0 -0
  59. {deviatdd-2.5.4 → deviatdd-2.7.2}/CODE_OF_CONDUCT.md +0 -0
  60. {deviatdd-2.5.4 → deviatdd-2.7.2}/CONTRIBUTING.md +0 -0
  61. {deviatdd-2.5.4 → deviatdd-2.7.2}/LICENSE +0 -0
  62. {deviatdd-2.5.4 → deviatdd-2.7.2}/SECURITY.md +0 -0
  63. {deviatdd-2.5.4 → deviatdd-2.7.2}/deviatdd.png +0 -0
  64. {deviatdd-2.5.4 → deviatdd-2.7.2}/mise.toml +0 -0
  65. {deviatdd-2.5.4 → deviatdd-2.7.2}/pr_descriptions/feat/001-deviate-cli-python/008-meso-macro-automated-orchestration.md +0 -0
  66. {deviatdd-2.5.4 → deviatdd-2.7.2}/pr_descriptions/feat/adhoc/006-context-cli-integration.md +0 -0
  67. {deviatdd-2.5.4 → deviatdd-2.7.2}/pr_descriptions/feat-001-deviate-cli-python-001-cli-initialization-governance-provisioning-pr-11.md +0 -0
  68. {deviatdd-2.5.4 → deviatdd-2.7.2}/pr_descriptions/feat-001-deviate-cli-python-003-meso-layer-specification-task-decomposition.md +0 -0
  69. {deviatdd-2.5.4 → deviatdd-2.7.2}/pr_descriptions/feat-001-deviate-cli-python-004-micro-layer-tdd-sandbox-execution.md +0 -0
  70. {deviatdd-2.5.4 → deviatdd-2.7.2}/pr_descriptions/feat-001-deviate-cli-python-005-cli-architecture-realignment-skill-integration.md +0 -0
  71. {deviatdd-2.5.4 → deviatdd-2.7.2}/pr_descriptions/feat-001-deviate-cli-python-007-macro-meso-parity-backward-compatibility.md +0 -0
  72. {deviatdd-2.5.4 → deviatdd-2.7.2}/pr_descriptions/feat-002-deviatdd-gap-analysis-001-foundation-cli-infrastructure.md +0 -0
  73. {deviatdd-2.5.4 → deviatdd-2.7.2}/pr_descriptions/feat-002-deviatdd-gap-analysis-003-fast-path-commands.md +0 -0
  74. {deviatdd-2.5.4 → deviatdd-2.7.2}/pr_descriptions/feat-002-deviatdd-gap-analysis-004-governance-inspection.md +0 -0
  75. {deviatdd-2.5.4 → deviatdd-2.7.2}/pr_descriptions/feat-adhoc-001-streaming-pipeline-monitor.md +0 -0
  76. {deviatdd-2.5.4 → deviatdd-2.7.2}/pr_descriptions/feat-adhoc-008-ast-phase-prioritization.md +0 -0
  77. {deviatdd-2.5.4 → deviatdd-2.7.2}/pr_descriptions/feat_002-deviatdd-gap-analysis_001-foundation-cli-infrastructure.md +0 -0
  78. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/001-cli-initialization-governance-provisioning/manifest-t001.json +0 -0
  79. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/001-cli-initialization-governance-provisioning/manifest-t002.json +0 -0
  80. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/001-cli-initialization-governance-provisioning/manifest-t004.json +0 -0
  81. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/001-cli-initialization-governance-provisioning/spec.md +0 -0
  82. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/001-cli-initialization-governance-provisioning/tasks.md +0 -0
  83. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/002-macro-layer-state-ledger-management/spec.md +0 -0
  84. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/002-macro-layer-state-ledger-management/tasks.md +0 -0
  85. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/003-meso-layer-specification-task-decomposition/spec.md +0 -0
  86. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/003-meso-layer-specification-task-decomposition/tasks.md +0 -0
  87. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/004-micro-layer-tdd-sandbox-execution/spec.md +0 -0
  88. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/004-micro-layer-tdd-sandbox-execution/tasks.jsonl +0 -0
  89. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/004-micro-layer-tdd-sandbox-execution/tasks.md +0 -0
  90. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/005-cli-architecture-realignment-skill-integration/spec.md +0 -0
  91. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/005-cli-architecture-realignment-skill-integration/tasks.md +0 -0
  92. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/007-macro-meso-parity-backward-compatibility/spec.md +0 -0
  93. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/007-macro-meso-parity-backward-compatibility/tasks.md +0 -0
  94. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/008-meso-macro-automated-orchestration/spec.md +0 -0
  95. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/008-meso-macro-automated-orchestration/tasks.jsonl +0 -0
  96. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/008-meso-macro-automated-orchestration/tasks.md +0 -0
  97. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/data-model.md +0 -0
  98. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/design.md +0 -0
  99. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/explore.md +0 -0
  100. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/issues/001-cli-initialization-governance-provisioning.md +0 -0
  101. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/issues/002-macro-layer-state-ledger-management.md +0 -0
  102. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/issues/003-meso-layer-specification-task-decomposition.md +0 -0
  103. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/issues/004-micro-layer-tdd-sandbox-execution.md +0 -0
  104. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/issues/005-cli-architecture-realignment-skill-integration.md +0 -0
  105. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/issues/006-state-persistence-concurrency-safety.md +0 -0
  106. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/issues/007-macro-meso-parity-backward-compatibility.md +0 -0
  107. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/issues/008-meso-macro-automated-orchestration.md +0 -0
  108. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/001-deviate-cli-python/prd.md +0 -0
  109. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/001-foundation-cli-infrastructure/spec.md +0 -0
  110. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/001-foundation-cli-infrastructure/tasks.jsonl +0 -0
  111. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/001-foundation-cli-infrastructure/tasks.md +0 -0
  112. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/003-fast-path-commands/spec.md +0 -0
  113. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/003-fast-path-commands/tasks.jsonl +0 -0
  114. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/003-fast-path-commands/tasks.md +0 -0
  115. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/004-governance-inspection/spec.md +0 -0
  116. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/004-governance-inspection/tasks.jsonl +0 -0
  117. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/004-governance-inspection/tasks.md +0 -0
  118. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/005-micro-layer-integrity/spec.md +0 -0
  119. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/005-micro-layer-integrity/tasks.jsonl +0 -0
  120. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/005-micro-layer-integrity/tasks.md +0 -0
  121. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/data-model.md +0 -0
  122. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/design.md +0 -0
  123. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/explore.md +0 -0
  124. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/issues/001-foundation-cli-infrastructure.md +0 -0
  125. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/issues/002-context-pipeline.md +0 -0
  126. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/issues/003-fast-path-commands.md +0 -0
  127. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/issues/004-governance-inspection.md +0 -0
  128. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/issues/005-micro-layer-integrity.md +0 -0
  129. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/plan-tdd-integration-gap.md +0 -0
  130. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/002-deviatdd-gap-analysis/prd.md +0 -0
  131. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/003-graphite-cli-integration/explore.md +0 -0
  132. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/_product/flows/flows-product.md +0 -0
  133. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/_product/flows/index.md +0 -0
  134. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/001-streaming-pipeline-monitor/spec.md +0 -0
  135. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/001-streaming-pipeline-monitor/tasks.jsonl +0 -0
  136. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/001-streaming-pipeline-monitor/tasks.md +0 -0
  137. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/003-meso-layer-restructuring/spec.md +0 -0
  138. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/003-meso-layer-restructuring/tasks.jsonl +0 -0
  139. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/003-meso-layer-restructuring/tasks.md +0 -0
  140. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/004-deviate-review-skill/spec.md +0 -0
  141. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/004-deviate-review-skill/tasks.jsonl +0 -0
  142. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/004-deviate-review-skill/tasks.md +0 -0
  143. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/005-per-phase-model-configuration/plan.md +0 -0
  144. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/005-per-phase-model-configuration/tasks.jsonl +0 -0
  145. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/005-per-phase-model-configuration/tasks.md +0 -0
  146. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/006-context-cli-integration/plan.md +0 -0
  147. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/006-context-cli-integration/tasks.jsonl +0 -0
  148. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/006-context-cli-integration/tasks.md +0 -0
  149. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/007-graphite-cli/plan.md +0 -0
  150. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/007-graphite-cli/tasks.jsonl +0 -0
  151. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/007-graphite-cli/tasks.md +0 -0
  152. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/008-ast-phase-prioritization/plan.md +0 -0
  153. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/008-ast-phase-prioritization/tasks.jsonl +0 -0
  154. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/008-ast-phase-prioritization/tasks.md +0 -0
  155. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/009-pi-agent-backend-integration/plan.md +0 -0
  156. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/009-pi-agent-backend-integration/tasks.jsonl +0 -0
  157. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/009-pi-agent-backend-integration/tasks.md +0 -0
  158. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/010-deviate-setup-product-layer/plan.md +0 -0
  159. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/010-deviate-setup-product-layer/tasks.jsonl +0 -0
  160. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/010-deviate-setup-product-layer/tasks.md +0 -0
  161. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/issues/001-streaming-pipeline-monitor.md +0 -0
  162. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/issues/002-aider-agent-backend-integration.md +0 -0
  163. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/issues/003-meso-layer-restructuring.md +0 -0
  164. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/issues/004-deviate-review-skill.md +0 -0
  165. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/issues/005-per-phase-model-configuration.md +0 -0
  166. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/issues/006-context-cli-integration.md +0 -0
  167. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/issues/007-graphite-cli.md +0 -0
  168. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/issues/008-ast-phase-prioritization.md +0 -0
  169. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/issues/009-pi-agent-backend-integration.md +0 -0
  170. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/issues/010-deviate-setup-product-layer.md +0 -0
  171. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/adhoc/prd.md +0 -0
  172. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/constitution.md +0 -0
  173. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/explore/ast-tree-sitter.md +0 -0
  174. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/explore/graphite-cli.md +0 -0
  175. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/explore/pi-agent-backend.md +0 -0
  176. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/explore/product-layer.md +0 -0
  177. {deviatdd-2.5.4 → deviatdd-2.7.2}/specs/issues.jsonl +0 -0
  178. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/__init__.py +0 -0
  179. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/cli/_common.py +0 -0
  180. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/cli/adhoc.py +0 -0
  181. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/cli/constitution.py +0 -0
  182. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/cli/feature.py +0 -0
  183. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/cli/init.py +0 -0
  184. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/cli/inspect.py +0 -0
  185. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/cli/macro.py +0 -0
  186. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/cli/review.py +0 -0
  187. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/__init__.py +0 -0
  188. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/_shared.py +0 -0
  189. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/cache_discipline.py +0 -0
  190. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/commands.py +0 -0
  191. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/commit.py +0 -0
  192. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/complexity.py +0 -0
  193. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/constitution.py +0 -0
  194. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/contract.py +0 -0
  195. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/convention.py +0 -0
  196. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/epic.py +0 -0
  197. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/issues.py +0 -0
  198. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/prd.py +0 -0
  199. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/profile.py +0 -0
  200. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/repo.py +0 -0
  201. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/run_logger.py +0 -0
  202. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/tasks_ledger.py +0 -0
  203. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/__init__.py +0 -0
  204. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/analysis.py +0 -0
  205. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/models.py +0 -0
  206. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/parser.py +0 -0
  207. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/bash.scm +0 -0
  208. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/c_sharp.scm +0 -0
  209. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/cpp.scm +0 -0
  210. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/css.scm +0 -0
  211. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/dockerfile.scm +0 -0
  212. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/elixir.scm +0 -0
  213. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/go.scm +0 -0
  214. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/hcl.scm +0 -0
  215. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/html.scm +0 -0
  216. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/javascript.scm +0 -0
  217. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/json.scm +0 -0
  218. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/kotlin.scm +0 -0
  219. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/markdown.scm +0 -0
  220. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/python.scm +0 -0
  221. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/rust.scm +0 -0
  222. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/sql.scm +0 -0
  223. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/swift.scm +0 -0
  224. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/toml.scm +0 -0
  225. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/tsx.scm +0 -0
  226. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/typescript.scm +0 -0
  227. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/treesitter/queries/yaml.scm +0 -0
  228. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/core/validation.py +0 -0
  229. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/main.py +0 -0
  230. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/__init__.py +0 -0
  231. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/assembly.py +0 -0
  232. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/auto/__init__.py +0 -0
  233. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/auto/execute.md +0 -0
  234. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/auto/explore.md +0 -0
  235. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/auto/green.md +0 -0
  236. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/auto/judge.md +0 -0
  237. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/auto/plan.md +0 -0
  238. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/auto/prd.md +0 -0
  239. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/auto/red.md +0 -0
  240. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/auto/refactor.md +0 -0
  241. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/auto/research.md +0 -0
  242. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/auto/shard.md +0 -0
  243. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/auto/specify.md +0 -0
  244. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/auto/tasks.md +0 -0
  245. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-adhoc.md +0 -0
  246. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-constitution.md +0 -0
  247. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-execute.md +0 -0
  248. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-explore.md +0 -0
  249. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-green.md +0 -0
  250. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-hotfix.md +0 -0
  251. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-init.md +0 -0
  252. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-judge.md +0 -0
  253. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-merge.md +0 -0
  254. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-plan.md +0 -0
  255. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-pr.md +0 -0
  256. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-prune.md +0 -0
  257. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-red.md +0 -0
  258. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-refactor.md +0 -0
  259. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-release.md +0 -0
  260. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-shard.md +0 -0
  261. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-tasks.md +0 -0
  262. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/commands/deviate-triage.md +0 -0
  263. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/constitution_seed.md +0 -0
  264. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/core/core.md +0 -0
  265. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/core/macro-auto.md +0 -0
  266. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/core/macro-command.md +0 -0
  267. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/core/macro-skill.md +0 -0
  268. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/core/meso-auto.md +0 -0
  269. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/core/meso-command.md +0 -0
  270. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/core/meso-skill.md +0 -0
  271. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/core/micro-auto.md +0 -0
  272. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/core/micro-command.md +0 -0
  273. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/core/micro-skill.md +0 -0
  274. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/extras/deviate-pr-graphite-routing.md +0 -0
  275. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/governance/__init__.py +0 -0
  276. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/governance/agents_seed.md +0 -0
  277. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/governance/claudemd_seed.md +0 -0
  278. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/governance/graphite_seed.md +0 -0
  279. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/prompts/governance/libref_seed.md +0 -0
  280. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/state/__init__.py +0 -0
  281. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/state/config.py +0 -0
  282. {deviatdd-2.5.4 → deviatdd-2.7.2}/src/deviate/state/ledger.py +0 -0
  283. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/__init__.py +0 -0
  284. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/conftest.py +0 -0
  285. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/core/__init__.py +0 -0
  286. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/core/test_agent.py +0 -0
  287. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/core/test_treesitter.py +0 -0
  288. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/e2e/test_macro_workflow.bats +0 -0
  289. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_cli/__init__.py +0 -0
  290. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_cli/test_adhoc.py +0 -0
  291. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_cli/test_common.py +0 -0
  292. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_cli/test_constitution.py +0 -0
  293. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_cli/test_feature.py +0 -0
  294. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_cli/test_init.py +0 -0
  295. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_cli/test_inspect.py +0 -0
  296. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_cli/test_macro_contracts.py +0 -0
  297. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_cli/test_meso_contracts.py +0 -0
  298. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_cli/test_review.py +0 -0
  299. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_core/test_agent.py +0 -0
  300. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_core/test_cache_discipline.py +0 -0
  301. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_core/test_commands.py +0 -0
  302. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_core/test_commit.py +0 -0
  303. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_core/test_complexity.py +0 -0
  304. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_core/test_constitution.py +0 -0
  305. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_core/test_contract.py +0 -0
  306. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_core/test_convention.py +0 -0
  307. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_core/test_epic.py +0 -0
  308. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_core/test_issues.py +0 -0
  309. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_core/test_ledger.py +0 -0
  310. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_core/test_prd.py +0 -0
  311. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_core/test_profile.py +0 -0
  312. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_core/test_repo.py +0 -0
  313. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_core/test_tasks_ledger.py +0 -0
  314. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_core/test_validation.py +0 -0
  315. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_core/test_worktree.py +0 -0
  316. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_init.py +0 -0
  317. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_integration/__init__.py +0 -0
  318. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_integration/conftest.py +0 -0
  319. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_integration/test_command_installation.py +0 -0
  320. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_integration/test_init_export_cycle.py +0 -0
  321. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_integration/test_macro_full_cycle.py +0 -0
  322. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_integration/test_macro_layer.py +0 -0
  323. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_integration/test_macro_orchestration.py +0 -0
  324. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_integration/test_meso_layer.py +0 -0
  325. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_integration/test_meso_orchestration.py +0 -0
  326. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_integration/test_meso_task_ledger.py +0 -0
  327. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_integration/test_parity.py +0 -0
  328. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_integration/test_skill_installation.py +0 -0
  329. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_macro/__init__.py +0 -0
  330. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_macro/test_explore.py +0 -0
  331. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_macro/test_macro_model_routing.py +0 -0
  332. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_macro/test_macro_orchestration.py +0 -0
  333. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_macro/test_prd.py +0 -0
  334. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_macro/test_research.py +0 -0
  335. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_macro/test_shard.py +0 -0
  336. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_meso/__init__.py +0 -0
  337. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_meso/test_auto_prompt_templates.py +0 -0
  338. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_meso/test_plan_structure_injection.py +0 -0
  339. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_meso/test_prompt_assembly.py +0 -0
  340. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_meso/test_specify.py +0 -0
  341. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_meso/test_tasks.py +0 -0
  342. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_micro/__init__.py +0 -0
  343. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_micro/conftest.py +0 -0
  344. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_micro/test_e2e.py +0 -0
  345. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_micro/test_execute.py +0 -0
  346. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_micro/test_green.py +0 -0
  347. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_micro/test_hotfix.py +0 -0
  348. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_micro/test_output_filter.py +0 -0
  349. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_micro/test_red.py +0 -0
  350. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_micro/test_refactor.py +0 -0
  351. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_micro/test_task_label.py +0 -0
  352. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_state/__init__.py +0 -0
  353. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_state/test_config.py +0 -0
  354. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_state/test_ledger.py +0 -0
  355. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_state/test_session.py +0 -0
  356. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_ui/__init__.py +0 -0
  357. {deviatdd-2.5.4 → deviatdd-2.7.2}/tests/test_ui/test_render.py +0 -0
@@ -6,6 +6,86 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
8
  ## [Unreleased]
9
+ ### Changed
10
+ - **`deviate run` is now a full-pipeline orchestrator; per-task dispatch moved to `deviate micro run`.**
11
+ The top-level `deviate run` command now does both `deviate meso run` and
12
+ then runs `deviate micro run --all` inside the worktree the meso step just
13
+ created. The previous per-task / `--all` task dispatcher that used to live
14
+ as top-level `deviate run` was relocated to `deviate micro run [task-id]`
15
+ / `deviate micro run --all`. The new orchestrator supports `--issue`,
16
+ `--force`, `--profile`, `--no-judge`, `--no-refactor`, `--agent`, and
17
+ `--json`. The top-level command remains in the "Run by you (start here)"
18
+ panel as the canonical "go do the next thing" entry point; `deviate micro`
19
+ joined the agent-internal panel alongside `red`/`green`/`judge`/etc.
20
+ `_meso_run` now returns the created worktree path so the orchestrator
21
+ can `chdir` into it without re-deriving the path from the ledger; the
22
+ session's `last_command` is rewritten to the micro subcommand form when
23
+ the orchestrator hands off. (`src/deviate/cli/__init__.py`,
24
+ `src/deviate/cli/micro.py`, `src/deviate/cli/meso.py`,
25
+ `tests/test_cli/test_help.py`, `tests/test_cli/test_micro.py`,
26
+ `tests/test_micro/test_run.py`, `tests/test_micro/test_orchestration.py`,
27
+ `tests/test_cli/test_top_level_run.py`, `README.md`,
28
+ `specs/DeviaTDD-api.md`, `specs/DeviaTDD-architecture.md`,
29
+ `specs/implementation-gap.md`, `src/deviate/ui/pipeline.py`,
30
+ `src/deviate/prompts/commands/deviate-{walkthrough,review}.md`.)
31
+
32
+ - **`deviate meso run` default output no longer dumps `_plan_pre` / `_tasks_pre` JSON contracts.**
33
+ Those pre subcommands `print()` their JSON contract on stdout for the
34
+ agent-subprocess CLI workflow (`deviate plan pre` / `deviate tasks pre`).
35
+ When the in-process `_meso_run` parent invoked them directly, the JSON
36
+ leaked onto the user's terminal alongside the useful
37
+ `WORKTREE` / `SPEC_DISCOVERED` lines. A small `_silence_stdout` helper
38
+ captures and discards stdout around the two calls; rich console output
39
+ is unaffected, and the `deviate plan pre` / `deviate tasks pre` CLI
40
+ paths (which route through `@with_json_quiet`) are unchanged.
41
+ (`src/deviate/cli/meso.py`, `tests/test_meso/test_meso_orchestration.py`.)
42
+
43
+ - `deviate-review` prompt v3.0.0: reframed as JUDGE-aware review. Three domains
44
+ (Clean Code, Constitution, PRD Alignment) downgraded to light-sniff — cross-task
45
+ only, no re-reading governance files. Domain 3 renamed to "Pragmatism &
46
+ Architectural Coherence" with 6 new cross-task checks. Added strategy-gated
47
+ review (full/diff_first/targeted), finding classification with Severity +
48
+ Confidence, and machine-parseable Fix Instructions block. Flow Coverage
49
+ domain made diff-only to match JUDGE-aware posture. (PR #?.)
50
+ - `deviate-review` prompt v3.1.0: STEP 4 now autonomously applies
51
+ `[CRITICAL]` and `[SUGGESTION]` fixes from the Quick Fix Summary
52
+ (deterministic selection rule — no `ask` tool, no HITL choice prompt),
53
+ runs the project's aggregate validation gate, then commits the result
54
+ with a Conventional Commit subject
55
+ (`🐛 fix(review): apply N post-review fixes for {ISSUE_ID}`). Explicit
56
+ `git add -- <files>` (never `git add -A`) keeps the advisory report at
57
+ `.deviate/review/reports/` unstaged. `[OPPORTUNITY]` items remain
58
+ deferred to a future slice. Pre-commit and pre-push hooks remain
59
+ non-bypassable (`--no-verify` is never used); aggregate validation
60
+ failure reverts every fix via `git restore .` before aborting.
61
+ - `/deviate-walkthrough` prompt v1.1.0: enforces true one-section-per-turn cadence. The prompt's STEP 4 previously said "then (optionally) ask a structured question" and the ADHD-friendly laws said sections "may include an `ask`" — both wordings gave the agent permission to skip interactive questioning and dump the entire walkthrough in a single response, defeating the HITL Gate 3 design intent. Replaced with mandatory per-section `ask`, an explicit "Two sections in one response is a bug" rule, a renumbered Law #5 ("One section per turn"), a "When to ask — always" rule that removes the old escape hatch, and an explicit override of universal invariant #1 (the "Automated Execution" no-questions rule) so the HITL gate's interactive posture wins. The `ask` is the pacing mechanism — a two-option "Clear? / Next section →" is a valid gate, even on awareness-only sections.
62
+ ### Fixed
63
+ - `deviate micro run --all` no longer segfaults during the JUDGE phase when GREEN
64
+ fails to deliver passing tests. Root cause: the background-thread reader in
65
+ `_invoke_streaming` called `c.file.flush()` which bypassed Rich's RLock and
66
+ raced with main-thread `c.print` writes on `sys.stdout.fileno()`. Removed the
67
+ flush — both threads now only write through `c.print()`, which Rich
68
+ serializes internally via its own RLock on the shared Console instance.
69
+ (The `stdout_lock` in `_make_output_handler` already serialized the handler
70
+ body against `emit_jsonl` and remains in place for that purpose.)
71
+ - Background-thread pipe I/O errors in `_invoke_streaming` no longer surface a
72
+ CPython 3.13 `KeyError` traceback ("Exception ignored in thread ... read_stderr")
73
+ during agent subprocess shutdown. Both `read_stdout` and `read_stderr` now
74
+ catch pipe-closure exceptions (`ValueError`, `OSError`); `read_stdout` also
75
+ sets `stdout_done = True` in a `finally` block so the caller doesn't raise a
76
+ false `AgentTimeoutError` when the pipe closes concurrently with the timeout
77
+ branch. The thread still terminates correctly; losing residual stderr is
78
+ harmless because the manifest comes from stdout.
79
+ (`src/deviate/core/agent.py`.)
80
+ - Worktrees created by `deviate meso run` now receive the `.pi/` and `.omp/`
81
+ skill directories alongside `.claude/`, `.opencode/`, and `.factory/`.
82
+ Root cause: `_sync_agent_dirs_to_worktree` in `src/deviate/cli/meso.py`
83
+ iterated a hardcoded `_AGENT_DIRS` tuple that pre-dated the pi/omp
84
+ agent platforms, while `deviate setup`, `detect_agents`, and the
85
+ `.gitignore` patterns in `cli/__init__.py` already targeted all five
86
+ — so users on those platforms had to re-run `deviate setup` inside
87
+ every worktree. Added `.pi` and `.omp` to `_AGENT_DIRS` and updated
88
+ the docstring; added a regression test pinning the sync list.
9
89
  ### Added
10
90
  - PyPI-ready `pyproject.toml` metadata: `readme`, `license = "MIT"` (SPDX),
11
91
  `authors`, `keywords`, `classifiers` (incl. `License :: OSI Approved :: MIT
@@ -21,6 +101,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
21
101
  unset. A new `.env.example` documents the variable; `.env` is gitignored
22
102
  via a pattern that ignores `.env` and `.env.*` while keeping
23
103
  `.env.example` trackable.
104
+ - `/deviate-walkthrough` slash command: human-guided architectural walkthrough
105
+ that curates the diff by concern (DEEP_DIVE / NOTE / SKIM / SKIP triage),
106
+ asks structured yes/no or multiple-choice questions via the `ask` tool with
107
+ a recommended default, and surfaces architectural decisions missed by
108
+ automated phases. Includes `deviate walkthrough pre/post` CLI backend.
109
+ (PR #?.)
24
110
  - Security: `mise run publish` passes the token via `UV_PUBLISH_TOKEN`
25
111
  inline-prefix env var (`UV_PUBLISH_TOKEN="$PYPI_API_TOKEN" uv publish
26
112
  dist/*`) instead of the `--token` CLI flag. The inline form scopes the
@@ -65,7 +151,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
65
151
  `test_module_version_resolves` import-time guard fails loudly if the
66
152
  module-level lookup regresses.
67
153
 
154
+ :- CLI run output cleaned up: removed redundant "Processing TSK-..." line
155
+ (the rich phase panel already shows task identity), added missing
156
+ JUDGE phase panel/block to the execute-phase path, and fixed
157
+ duplicate JUDGE → text in the TDD-cycle path.
68
158
  ### Changed
159
+ - `deviate --help` now renders three Typer help panels instead of a flat
160
+ command list. **"Run by you (start here)"** is the human entry point —
161
+ `setup` (with `Bootstrap a new project with DeviaTDD (start here).`),
162
+ `run` (with `Use \`deviate run --all\` to drain the queue.`), and `meso`
163
+ (with `Use \`deviate meso run\` to run the automated setup → plan →
164
+ tasks pipeline`) — `run` and `meso` are surfaced in the panel by name
165
+ with their literal invocation, since `run --all` and `meso run` are the
166
+ actual entry points. **"Agent/internal (via /deviate-* slash
167
+ commands)"** lists every phase dispatcher (`specify`, `plan`, `tasks`,
168
+ `pr`, `merge`) and Typer group (`explore`, `research`, `prd`, `shard`,
169
+ `macro`, `adhoc`, `red`, `green`, `judge`, `refactor`, `execute`, `e2e`,
170
+ `hotfix`, `init`, `constitution`, `review`) the agent drives; first-
171
+ timers see that those commands are not for them. **"Optional / manual
172
+ utilities"** holds `feature` (create a branch) and `inspect` (list
173
+ issue/task ledgers) — useful but not on the standard path. Each
174
+ agent-internal command gained a one-line description (e.g. `Macro:
175
+ codebase exploration`, `Micro: write a failing test`, `Final PR review
176
+ (Gate 3)`) so the panel reads as a glossary, not a wall of names. The
177
+ `run_command` docstring (`src/deviate/cli/micro.py`) was rewritten to
178
+ lead with the `--all` invocation. Backed by
179
+ `tests/test_cli/test_help.py`, which pins panel names, membership,
180
+ ordering, and the literal meso/run invocations so the first-timer
181
+ wording can't regress.
69
182
  - **Shard prompts now own all vertical-slicing rules**; the PRD prompt's
70
183
  §Issue Sharding Strategy was removed to eliminate drift between the two.
71
184
  `src/deviate/prompts/commands/deviate-shard.md` (v1.1.0) now hard-enforces
@@ -113,6 +226,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
113
226
  Previously it only updated the ledger after an external merge. The `deviate
114
227
  merge` CLI command is unchanged — the prompt now drives it as a final step
115
228
  rather than relying on an external squash-merge tool.
229
+ - Active domain discipline applied to `/deviate-research`, `/deviate-prd`, `/deviate-flows`, and `/deviate-architecture`. Each phase now actively term-challenges against the relevant glossary (`data-model.md`, `domain-model.md`, `flows-product.md`), sharpens fuzzy language, stress-tests with concrete scenarios, and updates the artifact inline as terms resolve. The macro-layer `interactive_hitl_gate_1` and the PRD `AMBIGUITY_INTERROGATION` gate now require a discipline pass before presenting HITL questions; the Product-layer discovery steps are upgraded from passive 3–4 bullet blocks to structured 7–8 bullet active disciplines. Spec alignment: `specs/DeviaTDD-architecture.md` §2.1 and §5.0, `specs/DeviaTDD-api.md` §1.5 and §2.
230
+ - **Reworked `deviate meso run` and `deviate run --all` output** to a clean,
231
+ professional, rich-CLI format. New module `src/deviate/ui/pipeline.py`
232
+ ships five components — `PipelineBanner` (framed opening panel with
233
+ `MESO <issue_id>` and a `SPECIFY ▶ PLAN ▶ TASKS` step indicator),
234
+ `PhaseCallout` (per-phase rounded panel with `◐`/`●`/`✗` markers and
235
+ elapsed time), `RunBoard` (multi-column Rich `Table` updated in place
236
+ by the `OrchestrationMonitor` event stream), `TrainIndicator`
237
+ (sequential `● 1/3 ─▶─ ◐ 2/3 ─▶─ ○ 3/3` retry visual), and
238
+ `PipelineSummary` (closing totals / duration / status panel). The
239
+ `OrchestrationMonitor` gained an optional `board` parameter that
240
+ updates the board on every `phase_change` / `task_completed` /
241
+ `task_failed` event. All literal tokens the existing test suite
242
+ asserts against (`RED`, `GREEN`, `COMPLETED`, `JUDGE_REJECTED`,
243
+ `TRAIN`, `MESO`, `IDLE`, `DISCOVERED`, `INVOKE_AGENT`, `DRY_RUN`,
244
+ `NO_CLAIMABLE_ISSUES`, `ISSUE_COMPLETED`, `INVALID_ISSUE_ID`,
245
+ `BLOCKED`, `PROGRESS_RESET`, `TASK_ALREADY_DONE`, `TEST_FAILURE`,
246
+ `JUDGE_AGENT_NO_FEEDBACK`, `<PHASE>_FAILED`, etc.) are preserved
247
+ verbatim in the output — the framed panels are additive, not
248
+ replacements. Aesthetic: "Editorial / Refined Engineering" — restrained
249
+ palette (deep blue / semantic green-red-amber), heavy Unicode
250
+ box-drawing (`╭╮╰╯│─`), monospace tabular layout. 46 new tests in
251
+ `tests/test_ui/test_pipeline.py` pin the visual contract. Spec
252
+ alignment: `specs/DeviaTDD-api.md` §5.2 (`deviate run --all`) and §5.3
253
+ (`deviate meso run`) document the new output structure.
116
254
 
117
255
  ### Fixed
118
256
  - `resolve_issue_record` and `_deduplicate_issues` now treat `COMPLETED`
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deviatdd
3
- Version: 2.5.4
3
+ Version: 2.7.2
4
4
  Summary: DeviaTDD CLI — agent orchestration framework
5
5
  Project-URL: Homepage, https://github.com/wernerbisschoff/deviatdd
6
6
  Project-URL: Repository, https://github.com/wernerbisschoff/deviatdd
@@ -157,8 +157,28 @@ Once setup is done, drive the entire lifecycle from inside your agent. Each phas
157
157
  /deviate-review # ← Gate 3: final PR scan; merge or request changes
158
158
  ```
159
159
 
160
- The full lifecycle takes you from a problem statement to merged, tested code with a documented audit trail.
160
+ **Or, run the whole pipeline in one command** the top-level
161
+ `deviate run` is the canonical "go do the next thing" entry point. It
162
+ discovers the next BACKLOG issue, claims it (creating the per-issue
163
+ worktree), runs SPECIFY → PLAN → TASKS in the worktree, then drains
164
+ every PENDING task through the TDD cycle. Under the hood it chains
165
+ `deviate meso run` with `deviate micro run --all` inside the created
166
+ worktree:
167
+
168
+ ```
169
+ deviate run # full pipeline (meso + micro --all)
170
+ deviate run --issue ISS-001-007 # target a specific BACKLOG issue
171
+ deviate run --profile fast # skip JUDGE + REFACTOR in the micro drain
172
+ deviate run --no-judge --no-refactor # same, via boolean overrides
173
+ ```
174
+
175
+ For per-task or `deviate micro run --all` invocations inside an
176
+ already-claimed worktree, see [`deviate micro run`](https://github.com/werner-bisschoff/deviatdd):
177
+ top-level `run` does both meso and micro for you; the per-task
178
+ dispatcher is `deviate micro run <task-id>` and the queue drain is
179
+ `deviate micro run --all`.
161
180
 
181
+ The full lifecycle takes you from a problem statement to merged, tested code with a documented audit trail.
162
182
  ---
163
183
 
164
184
  ## Architecture: Four Layers, Three Gates
@@ -226,6 +246,7 @@ style Ex fill:#f5e1e1
226
246
  | **Macro · PRD** | `/deviate-prd` | `specs/{epic}/prd.md` (FR list + acceptance criteria) | Verify each FR is testable; commit. |
227
247
  | **Macro · Shard** *(Gate 2)* | `/deviate-shard` | `specs/{epic}/issues/ISS-NNN-*.md` (one file per vertical slice), with `flow_refs:` frontmatter and embedded `## User Stories Ledger` / `## ATDD Acceptance Criteria` sections | **Gate 2**: read every sharded issue for completeness, edge cases, and scope. Issues are born as full specs — there is no separate specify step. |
228
248
  | **Macro · Adhoc** *(shortcut)* | `/deviate-adhoc` | `specs/adhoc/ISS-ADH-NNN-*.md` (single issue, spec-enriched) | Use for low/medium-complexity tasks; the complexity classifier auto-routes high-complexity work to the full Macro path. |
249
+ | **Run** *(full pipeline, end-to-end)* | `deviate run` | Worktree at `.worktrees/<branch>/`, `tasks.md`, `tasks.jsonl`, then completed task commits | The canonical "go do the next thing" command. Discovers the next BACKLOG issue, claims it (creating a per-issue worktree), runs SPECIFY → PLAN → TASKS in that worktree, then drains every PENDING task through the TDD cycle. Forwards `--profile` / `--no-judge` / `--no-refactor` / `--agent` / `--json` to the micro drain. Internally calls `deviate meso run` then `deviate micro run --all` inside the created worktree. |
229
250
  | **Meso · Plan** | `/deviate-plan` | `specs/{epic}/issues/ISS-NNN/plan.md` (per-issue localized research, workstation file structure) | Review the workstation mapping and the integration surface listed; commit. Optional when shard already embedded spec sections. |
230
251
  | **Meso · Tasks** | `/deviate-tasks` | `specs/{epic}/issues/ISS-NNN/tasks.md` + `specs/{epic}/tasks.jsonl` (append-only ledger) | The `tasks.md` artifact is the human's execution blueprint. Verify: 4–8 tasks per issue, every task has a Verification CLI command, each task declares a Mode (`TDD` or `IMMEDIATE`) and Type, DAG `blocked_by` deps are right. TDD tasks flow to red→green→judge→refactor; IMMEDIATE tasks route to `/deviate-execute`. |
231
252
  | **Micro · Red** | `/deviate-red <task-id>` | A failing test (no production code) | Agent-internal; you see the test on commit. |
@@ -233,6 +254,7 @@ style Ex fill:#f5e1e1
233
254
  | **Micro · Judge** | `/deviate-judge <task-id>` | A `JUDGE_PASS` or `JUDGE_REJECTED` verdict over the GREEN diff | On rejection, the **Green → Judge → Green loop** rolls back to the RED commit, injects `<train_feedback>` into the next GREEN, and retries (up to 3 attempts). Read the feedback — it's the only signal you'll get for what the compliance checker objected to. |
234
255
  | **Micro · Refactor** | `/deviate-refactor <task-id>` | Polished, behavior-preserving code (only on `JUDGE_PASS`) | If the refactor breaks tests, the CLI discards it and the task completes on the verified GREEN. |
235
256
  | **Micro · Execute** | `/deviate-execute <task-id>` | A targeted change for `direct` / `e2e` tasks | Skips the TDD cycle; still has its own JUDGE pass. |
257
+ | **Micro · Run** *(agent-internal drain)* | `deviate micro run [task-id] --all` | Completed task commits per the cycle | Agent-internal dispatch — `deviate micro run <task-id>` runs a single task; `deviate micro run --all` drains every PENDING task. Top-level `deviate run` invokes this with `--all` inside the worktree the meso step just created. Forwards `--profile` / `--no-judge` / `--no-refactor` / `--agent` / `--json`. |
236
258
  | **Release** | `/deviate-pr <task-id>` | A conventional-commit PR | Open the PR; on merge, the issue ledger is appended with `COMPLETED`. |
237
259
  | **Release** *(Gate 3)* | `/deviate-review` | Final PR scan | **Gate 3**: merge or request changes. |
238
260
 
@@ -103,8 +103,28 @@ Once setup is done, drive the entire lifecycle from inside your agent. Each phas
103
103
  /deviate-review # ← Gate 3: final PR scan; merge or request changes
104
104
  ```
105
105
 
106
- The full lifecycle takes you from a problem statement to merged, tested code with a documented audit trail.
106
+ **Or, run the whole pipeline in one command** the top-level
107
+ `deviate run` is the canonical "go do the next thing" entry point. It
108
+ discovers the next BACKLOG issue, claims it (creating the per-issue
109
+ worktree), runs SPECIFY → PLAN → TASKS in the worktree, then drains
110
+ every PENDING task through the TDD cycle. Under the hood it chains
111
+ `deviate meso run` with `deviate micro run --all` inside the created
112
+ worktree:
113
+
114
+ ```
115
+ deviate run # full pipeline (meso + micro --all)
116
+ deviate run --issue ISS-001-007 # target a specific BACKLOG issue
117
+ deviate run --profile fast # skip JUDGE + REFACTOR in the micro drain
118
+ deviate run --no-judge --no-refactor # same, via boolean overrides
119
+ ```
120
+
121
+ For per-task or `deviate micro run --all` invocations inside an
122
+ already-claimed worktree, see [`deviate micro run`](https://github.com/werner-bisschoff/deviatdd):
123
+ top-level `run` does both meso and micro for you; the per-task
124
+ dispatcher is `deviate micro run <task-id>` and the queue drain is
125
+ `deviate micro run --all`.
107
126
 
127
+ The full lifecycle takes you from a problem statement to merged, tested code with a documented audit trail.
108
128
  ---
109
129
 
110
130
  ## Architecture: Four Layers, Three Gates
@@ -172,6 +192,7 @@ style Ex fill:#f5e1e1
172
192
  | **Macro · PRD** | `/deviate-prd` | `specs/{epic}/prd.md` (FR list + acceptance criteria) | Verify each FR is testable; commit. |
173
193
  | **Macro · Shard** *(Gate 2)* | `/deviate-shard` | `specs/{epic}/issues/ISS-NNN-*.md` (one file per vertical slice), with `flow_refs:` frontmatter and embedded `## User Stories Ledger` / `## ATDD Acceptance Criteria` sections | **Gate 2**: read every sharded issue for completeness, edge cases, and scope. Issues are born as full specs — there is no separate specify step. |
174
194
  | **Macro · Adhoc** *(shortcut)* | `/deviate-adhoc` | `specs/adhoc/ISS-ADH-NNN-*.md` (single issue, spec-enriched) | Use for low/medium-complexity tasks; the complexity classifier auto-routes high-complexity work to the full Macro path. |
195
+ | **Run** *(full pipeline, end-to-end)* | `deviate run` | Worktree at `.worktrees/<branch>/`, `tasks.md`, `tasks.jsonl`, then completed task commits | The canonical "go do the next thing" command. Discovers the next BACKLOG issue, claims it (creating a per-issue worktree), runs SPECIFY → PLAN → TASKS in that worktree, then drains every PENDING task through the TDD cycle. Forwards `--profile` / `--no-judge` / `--no-refactor` / `--agent` / `--json` to the micro drain. Internally calls `deviate meso run` then `deviate micro run --all` inside the created worktree. |
175
196
  | **Meso · Plan** | `/deviate-plan` | `specs/{epic}/issues/ISS-NNN/plan.md` (per-issue localized research, workstation file structure) | Review the workstation mapping and the integration surface listed; commit. Optional when shard already embedded spec sections. |
176
197
  | **Meso · Tasks** | `/deviate-tasks` | `specs/{epic}/issues/ISS-NNN/tasks.md` + `specs/{epic}/tasks.jsonl` (append-only ledger) | The `tasks.md` artifact is the human's execution blueprint. Verify: 4–8 tasks per issue, every task has a Verification CLI command, each task declares a Mode (`TDD` or `IMMEDIATE`) and Type, DAG `blocked_by` deps are right. TDD tasks flow to red→green→judge→refactor; IMMEDIATE tasks route to `/deviate-execute`. |
177
198
  | **Micro · Red** | `/deviate-red <task-id>` | A failing test (no production code) | Agent-internal; you see the test on commit. |
@@ -179,6 +200,7 @@ style Ex fill:#f5e1e1
179
200
  | **Micro · Judge** | `/deviate-judge <task-id>` | A `JUDGE_PASS` or `JUDGE_REJECTED` verdict over the GREEN diff | On rejection, the **Green → Judge → Green loop** rolls back to the RED commit, injects `<train_feedback>` into the next GREEN, and retries (up to 3 attempts). Read the feedback — it's the only signal you'll get for what the compliance checker objected to. |
180
201
  | **Micro · Refactor** | `/deviate-refactor <task-id>` | Polished, behavior-preserving code (only on `JUDGE_PASS`) | If the refactor breaks tests, the CLI discards it and the task completes on the verified GREEN. |
181
202
  | **Micro · Execute** | `/deviate-execute <task-id>` | A targeted change for `direct` / `e2e` tasks | Skips the TDD cycle; still has its own JUDGE pass. |
203
+ | **Micro · Run** *(agent-internal drain)* | `deviate micro run [task-id] --all` | Completed task commits per the cycle | Agent-internal dispatch — `deviate micro run <task-id>` runs a single task; `deviate micro run --all` drains every PENDING task. Top-level `deviate run` invokes this with `--all` inside the worktree the meso step just created. Forwards `--profile` / `--no-judge` / `--no-refactor` / `--agent` / `--json`. |
182
204
  | **Release** | `/deviate-pr <task-id>` | A conventional-commit PR | Open the PR; on merge, the issue ledger is appended with `COMPLETED`. |
183
205
  | **Release** *(Gate 3)* | `/deviate-review` | Final PR scan | **Gate 3**: merge or request changes. |
184
206
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "deviatdd"
3
- version = "2.5.4"
3
+ version = "2.7.2"
4
4
  description = "DeviaTDD CLI — agent orchestration framework"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -28,8 +28,10 @@ scripts. All commands are registered in `src/deviate/cli/__init__.py` using Type
28
28
  project-specific test/lint/format/setup/dev commands, ensures a symlink
29
29
  relationship between `CLAUDE.md` and `AGENTS.md` (via
30
30
  `_linkify_governance_files`), applies governance blocks to the canonical
31
- file, and installs the DeviaTDD prompt commands (currently
32
- 24 flat `.md` files: 24 `deviate-*`) into **all five** supported agent
31
+ file, and installs the DeviaTDD prompt commands. Currently 25 `deviate-*`
32
+ slash commands + 1 standalone `tools-mcp-servers` command (for Factory Droid)
33
+ — 26 flat `.md` files total — are installed to `.{agent}/commands/` (or
34
+ `.{agent}/prompts/` for Pi) during `deviate setup`. Commands land in all agent
33
35
  directories — `.claude/commands/`, `.opencode/commands/`,
34
36
  `.factory/commands/`, `.pi/prompts/`, `.omp/prompts/` — in a single invocation, regardless of which agent was passed
35
37
  via `--agent`. Each command is a flat `<name>.md` file with a minimal YAML
@@ -151,6 +153,8 @@ The Product layer ships as **agent skills** (no dedicated CLI subcommands) — t
151
153
 
152
154
  **Downstream consumption:** `deviate-shard` and `deviate-adhoc` SKILL.md bodies read `specs/_product/flows/`, `specs/_product/release-next.md`, `specs/_product/architecture.md`, and `specs/_product/domain-model.md` as authoritative context. Each sharded or adhoc issue emits a `flow_refs: [FLOW-XX, ...]` field in its YAML frontmatter and in the `IssueRecord.flow_refs` ledger entry (validated against `^FLOW-\d{2,}$`), so vertical slices stay traceable back to the flow that motivated them. `deviate adhoc pre` accepts a `--flow-ref FLOW-01,FLOW-02` CLI override to set the flow refs explicitly when the agent's natural-language inference is ambiguous.
153
155
 
156
+ **Active Domain Discipline** is enforced at HITL gates: the Product-layer discovery steps (`/deviate-flows`, `/deviate-architecture`) follow a structured 7–8 bullet active discipline — one question at a time with a recommended answer, dependency-ordered, read-first, term-challenge against the glossary, sharpen fuzzy language, stress-test with scenarios, and update the artifact (`flows-<domain>.md` or `domain-model.md`) inline as terms resolve.
157
+
154
158
  #### `/deviate-shard` (Macro Layer)
155
159
 
156
160
  * **Objective:** Decomposes the PRD into standalone, testable issue files.
@@ -170,6 +174,8 @@ All macro-layer commands follow the `pre`/`post` subcommand pattern (except `ini
170
174
  Every `pre` subcommand accepts `--json` (emit JSON contract to stdout) and `--quiet`
171
175
  (suppress diagnostic output).
172
176
 
177
+ **Active Domain Discipline** is enforced at HITL gates: the macro phases that interact with the human (`/deviate-research` Gate 1, `/deviate-prd` Ambiguity Interrogation, `/deviate-shard` Gate 2) actively term-challenge against the upstream glossary, sharpen fuzzy language, stress-test with concrete edge-case scenarios, and update the relevant artifact (`design.md`, `data-model.md`, `prd.md`) inline as terms resolve — not as a passive sign-off step.
178
+
173
179
  #### `deviate explore pre <problem> [--slug]`
174
180
 
175
181
  * **Source:** `src/deviate/cli/macro.py`
@@ -459,57 +465,130 @@ accepts `--json` and `--quiet`. `pre` emits a JSON contract describing the envir
459
465
 
460
466
  ### 5. Automated Pipeline Orchestration
461
467
 
462
- #### `deviate run <task-id>`
463
-
464
- * **Source:** `src/deviate/cli/micro.py` (`_run_single`, `_dispatch_task`)
465
- * **Description:** Triggers the automated execution cycle for a single task node. Routes by
466
- `execution_mode` (TDD or non-TDD). TDD mode runs the RED -> GREEN -> JUDGE -> REFACTOR
467
- cycle. Non-TDD (`DIRECT` or `E2E`) runs `_run_execute_phase`, which
468
- commits the work, then optionally runs a JUDGE pass against `spec.md` and rolls back
469
- on `COMPLIANCE_VIOLATION` (up to `max_judge_attempts = 3`).
470
- * **Green → Judge → Green loop (TDD only):** `_run_tdd_cycle` wraps the GREEN→JUDGE pair in a `while not judge_passed` loop with up to `max_train_attempts = 3`. On test failure or `COMPLIANCE_VIOLATION`, `_execute_rollback()` runs `git reset --hard <red_sha>` against the RED-boundary SHA stored in `session.red_commit_sha` (captured at the end of the RED phase), the session is `force_transition_to("GREEN")`, and the previous attempt's feedback is injected as `<train_feedback>` into the next GREEN prompt via `_build_auto_prompt("green", ...) + "\n\n<train_feedback>\n{...}\n</train_feedback>\n"`. The cycle retries from GREEN. After 3 attempts the task is marked `FAILED` and the pipeline halts with `PhaseFailedError`. The feedback source precedence is `train_feedback` (preferred) → `violations` (structured list) → `rationale` → `summary` → fallback string.
471
- * **Resume from Mid-Phase:** If `session.current_phase` is `JUDGE` or
472
- `REFACTOR` when invoked, the cycle resumes from that phase via the `start_phase`
473
- parameter. IDLE / RED trigger a fresh cycle from RED.
468
+ #### `deviate run` (Full-Pipeline Orchestrator)
469
+
470
+ * **Source:** `src/deviate/cli/__init__.py` (top-level `run_command`)
471
+ * **Description:** Canonical "go do the next thing" entry point. Chains the meso
472
+ pipeline (`deviate meso run`) with the micro drain (`deviate micro run --all`)
473
+ inside the worktree the meso step just created. Discovers the next unblocked
474
+ BACKLOG issue, claims it (creating the per-issue worktree), runs SPECIFY
475
+ PLAN TASKS in the worktree, then drains every PENDING task through the TDD
476
+ cycle (or the direct-execute phase for IMMEDIATE-typed tasks). Internally:
477
+ 1. Calls `_meso_run(issue_id=...)` from `src/deviate/cli/meso.py`, which returns
478
+ the created worktree path on success (`str(worktree_path)`).
479
+ 2. `chdir`s into that worktree, updates `.deviate/session.json` to record the
480
+ `run --all` handoff, and calls `_run_all()` from `src/deviate/cli/micro.py`
481
+ to drain every PENDING task.
482
+ 3. On hard failure (no worktree returned, worktree missing) prints a structured
483
+ error (`RUN_NO_WORKTREE` / `RUN_WORKTREE_MISSING`) and exits non-zero.
474
484
  * **Input Parameters:**
475
- * `<task-id>` (Positional: `TSK-NNN-NN` format; omit to auto-select the first PENDING
476
- task for the active issue)
485
+ * `--issue <ISS-NNN-NN>` (Target a specific BACKLOG issue; default: next unblocked)
486
+ * `--force` (Bypass `blocked_by` pre-flight guards; forwarded to meso)
487
+ * `--profile [full|fast|secure]` (Forwarded to the micro drain; resolved via
488
+ `resolve_profile()` from `src/deviate/core/profile.py`)
489
+ * `--no-judge`, `--no-refactor` (Composable boolean overrides for the profile;
490
+ forwarded to the micro drain)
491
+ * `--agent <name>` (Override agent backend for the micro phase)
492
+ * `--json` (Forward JSONL monitor events to stdout; suppresses Rich UI)
493
+ * **Exit Codes:** 0 on full success; 1 if meso or micro reports failure.
494
+ * **Replaces:** The old `deviate run <task-id>` and `deviate run --all`
495
+ task-dispatch surface. The per-task and `--all` dispatches now live at
496
+ `deviate micro run <task-id>` and `deviate micro run --all` respectively.
497
+
498
+ #### `deviate micro run [task-id]` / `deviate micro run --all`
499
+
500
+ * **Source:** `src/deviate/cli/micro.py` (`run_command` decorated by `micro_app`)
501
+ * **Description:** The per-task / queue-drain dispatcher that used to live as the
502
+ top-level `deviate run`. Routes each task by `execution_mode` to the TDD cycle
503
+ (RED → GREEN → JUDGE → REFACTOR) or to the execute phase. Single-task by
504
+ default; `--all` drains every PENDING task for the active issue (or all
505
+ issues if no active issue is set).
506
+ * **Single-Task (`deviate micro run <task-id>`):** Triggers the automated
507
+ execution cycle for a single task node. TDD mode runs the RED → GREEN →
508
+ JUDGE → REFACTOR cycle. Non-TDD (`DIRECT` or `E2E`) runs `_run_execute_phase`,
509
+ which commits the work, then optionally runs a JUDGE pass against `spec.md`
510
+ and rolls back on `COMPLIANCE_VIOLATION` (up to `max_judge_attempts = 3`).
511
+ Implements `_run_single` / `_dispatch_task` from `src/deviate/cli/micro.py`.
512
+ * **Green → Judge → Green loop (TDD only):** `_run_tdd_cycle` wraps the
513
+ GREEN → JUDGE pair in a `while not judge_passed` loop with up to
514
+ `max_train_attempts = 3`. On test failure or `COMPLIANCE_VIOLATION`,
515
+ `_execute_rollback()` runs `git reset --hard <red_sha>` against the
516
+ RED-boundary SHA stored in `session.red_commit_sha` (captured at the end of
517
+ the RED phase), the session is `force_transition_to("GREEN")`, and the
518
+ previous attempt's feedback is injected as `<train_feedback>` into the next
519
+ GREEN prompt via `_build_auto_prompt("green", ...) +
520
+ "\n\n<train_feedback>\n{...}\n</train_feedback>\n"`. The cycle retries from
521
+ GREEN. After 3 attempts the task is marked `FAILED` and the pipeline halts
522
+ with `PhaseFailedError`. The feedback source precedence is `train_feedback`
523
+ on the manifest → `_extract_judge_feedback(...)` from `tasks.md` → verbatim
524
+ verdict / rationale.
525
+ * **Resume from Mid-Phase:** If `session.current_phase` is `JUDGE` or
526
+ `REFACTOR` when invoked, the cycle resumes from that phase via the
527
+ `start_phase` parameter. IDLE / RED trigger a fresh cycle from RED.
528
+ * **Queue Drain (`deviate micro run --all`):** **Issue-scoped** task sweep.
529
+ Resolves the active issue from `session.active_issue_id` (falling back to
530
+ branch-derived detection via the `feat/{epic}/{issue}` regex against
531
+ `specs/issues.jsonl`), then dispatches **every PENDING task for that issue**
532
+ sequentially. Each task gets up to **2 retry attempts**
533
+ (`_execute_task_with_retry`, `for attempt in range(2)`) before being marked
534
+ `FAILED` in the issue-scoped `tasks.jsonl`. The pipeline **halts on the first
535
+ failure** (`any_failed = True; break`) and exits with code `1`. If no
536
+ `active_issue_id` is set and the branch cannot resolve an issue, no tasks are
537
+ dispatched. Implements `_run_all` from `src/deviate/cli/micro.py`.
538
+ * **Train Retry Loop (per task):** Inside each task's TDD cycle,
539
+ `_run_tdd_cycle` allows up to **3 train attempts** (`max_train_attempts = 3`)
540
+ when GREEN tests fail or JUDGE returns `COMPLIANCE_VIOLATION`. Each train
541
+ attempt injects `<train_feedback>` from the previous attempt's failure
542
+ output back into the GREEN prompt and re-runs GREEN. Exhaustion raises
543
+ `PhaseFailedError`.
544
+ * **Graphite Integration:** If `.deviate/config.toml` contains
545
+ `graphite = true`, after each successful task the runner invokes
546
+ `gt create -m "feat({TSK}): {description}"` to spin up a stacked branch for
547
+ the next task.
548
+ * **Dashboard / Output:** Constructs an `OrchestrationMonitor` (in
549
+ `src/deviate/ui/monitor.py`) wired to a `RunBoard`
550
+ (`src/deviate/ui/pipeline.py`) with `total_tasks` set to the pending count.
551
+ The RunBoard renders as a multi-column Rich `Table` whose rows are updated
552
+ in place via the monitor's event stream (`task_started` / `phase_change` /
553
+ `task_completed` / `task_failed`). Output structure:
554
+ * **Run header panel** — `RUN <issue_id> N pending task(s)` in a framed panel.
555
+ * **Per-phase callouts** — Each `RED` / `GREEN` / `JUDGE` / `REFACTOR` /
556
+ `EXECUTE` phase emits a `PhaseCallout` (rounded `╭─╮` panel) with the
557
+ phase tag, task ID, status marker (`◐` in-progress, `●` completed,
558
+ `✗` failed), and elapsed time. The original token-bearing line
559
+ (`RED →`, `GREEN →`, etc.) is preserved alongside for backwards-compat
560
+ with existing tooling.
561
+ * **Train retry indicator** — On each `_run_tdd_cycle` retry, a
562
+ `TrainIndicator` renders the current attempt against the maximum
563
+ (`● 1/3 ─▶─ ◐ 2/3 ─▶─ ○ 3/3`). The literal `TRAIN` token is preserved.
564
+ * **Final RunBoard snapshot** — A full re-render of the board reflecting the
565
+ post-run state of every task (markers + per-row error reasons).
566
+ * **Pipeline summary** — A `PipelineSummary` panel with totals
567
+ (`Total tasks`, `Completed`, `Failed`, `Duration`, `Status`).
568
+ In `--json` mode the same monitor emits JSONL events
569
+ (`task_started`, `phase_change`, `task_completed`, `task_failed`,
570
+ `pipeline_halted`, `pipeline_complete`); the rich board panels are
571
+ suppressed in JSON mode. Agent output is forwarded to the monitor via a
572
+ streaming callback.
573
+ * **Input Parameters:**
574
+ * `[task-id]` (Positional: `TSK-NNN-NN` format; omit to auto-select the first
575
+ PENDING task for the active issue; mutually exclusive with `--all`)
576
+ * `--all` (Drain every PENDING task for the active issue)
477
577
  * `--profile [full|fast|secure]` (Defaults to `full`):
478
578
  * `full` — RED + GREEN + JUDGE + REFACTOR (complete cycle)
479
579
  * `fast` — RED + GREEN only (skip JUDGE + REFACTOR)
480
580
  * `secure` — RED + GREEN + JUDGE (skip REFACTOR)
481
581
  * Boolean flags `--no-judge` / `--no-refactor` retained as composable overrides
482
- * `--agent` (Override agent backend; falls back to `[agent].backend` in
582
+ * `--agent <name>` (Override agent backend; falls back to `[agent].backend` in
483
583
  `.deviate/config.toml`)
484
584
  * `--dry-run` (Print the resolved task and exit without dispatching)
485
- * **Common Flags:** `--json`, `--quiet`
585
+ * `--json`, `--quiet`, `--verbose`
486
586
 
487
- #### `deviate run --all`
488
-
489
- * **Source:** `src/deviate/cli/micro.py` (`_run_all`)
490
- * **Description:** **Issue-scoped** task sweep. Resolves the active issue from
491
- `session.active_issue_id` (falling back to branch-derived detection via the
492
- `feat/{epic}/{issue}` regex against `specs/issues.jsonl`), then dispatches **every
493
- PENDING task for that issue** sequentially. Each task gets up to **2 retry attempts**
494
- (`_execute_task_with_retry`, `for attempt in range(2)`) before being marked `FAILED` in
495
- the issue-scoped `tasks.jsonl`. The pipeline **halts on the first failure**
496
- (`any_failed = True; break`) and exits with code `1`. If no `active_issue_id` is set
497
- and the branch cannot resolve an issue, no tasks are dispatched.
498
- * **Train Retry Loop (per task):** Inside each task's TDD cycle, `_run_tdd_cycle` allows
499
- up to **3 train attempts** (`max_train_attempts = 3`) when GREEN tests fail or JUDGE
500
- returns `COMPLIANCE_VIOLATION`. Each train attempt injects `<train_feedback>` from
501
- the previous attempt's failure output back into the GREEN prompt and re-runs GREEN.
502
- Exhaustion raises `PhaseFailedError`.
503
- * **Graphite Integration:** If `.deviate/config.toml` contains `graphite = true`, after
504
- each successful task the runner invokes `gt create -m "feat({TSK}): {description}"`
505
- to spin up a stacked branch for the next task.
506
- * **Dashboard / Output:** Constructs an `OrchestrationMonitor` with `total_tasks` set to
507
- the pending count. The monitor emits live Rich dashboard events (task markers, phase
508
- transitions) in TTY mode and JSONL events (`task_started`, `phase_change`,
509
- `task_completed`, `task_failed`, `pipeline_halted`, `pipeline_complete`) when
510
- `--json` is passed. Agent output is forwarded to the monitor via a streaming callback.
511
- * **Accepts:** `--profile [full|fast|secure]`, `--agent <name>`, `--json`, `--quiet`,
512
- `--dry-run` (prints all resolved pending tasks and exits without dispatching).
587
+ > **Note on the `last_command` field:** When the orchestrator hands off to
588
+ > `micro run --all`, the session's `last_command` is rewritten to
589
+ > `micro run [task-id] --all` (i.e. the micro subcommand path, not the
590
+ > top-level `deviate run`), so the session always records the most
591
+ > specific command that last touched it.
513
592
 
514
593
  #### `deviate meso run` (Automated Meso Pipeline)
515
594
 
@@ -548,6 +627,15 @@ accepts `--json` and `--quiet`. `pre` emits a JSON contract describing the envir
548
627
  aborts with `<PHASE>_FAILED`. Re-running the pipeline re-processes plan.md and tasks.md
549
628
  (no phase-skip logic); commits are skipped when there are no changes. The
550
629
  `UPSTREAM_MISSING` token is **not** emitted by the current implementation.
630
+ * **Output:** The pipeline prints a `PipelineBanner` (`src/deviate/ui/pipeline.py`)
631
+ framed opening panel showing `MESO <issue_id> <issue_title>`, the epic / issue
632
+ slugs, and a horizontal step indicator (`SPECIFY ▶ PLAN ▶ TASKS`). On
633
+ completion it prints a `PipelineSummary` (totals + duration + `Status` row)
634
+ followed by a footer line `MESO pipeline complete - session at IDLE`. The
635
+ literal tokens `MESO`, `IDLE`, `DISCOVERED`, `INVOKE_AGENT`, `DRY_RUN`,
636
+ `NO_CLAIMABLE_ISSUES`, `ISSUE_COMPLETED`, `INVALID_ISSUE_ID`, `BLOCKED`,
637
+ `PROGRESS_RESET`, and `<PHASE>_FAILED` are all preserved in the output
638
+ for backwards-compat with existing tooling and the test suite.
551
639
 
552
640
  #### `deviate macro run` (Automated Macro Pipeline)
553
641
 
@@ -615,6 +703,36 @@ accepts `--json` and `--quiet`. `pre` emits a JSON contract describing the envir
615
703
 
616
704
  ---
617
705
 
706
+ #### `deviate walkthrough pre [--base <branch>] [--branch <branch>]`
707
+
708
+ * **Source:** `src/deviate/cli/walkthrough.py`
709
+ * **Description:** Gathers git state and governance context for a human-guided
710
+ architectural walkthrough at HITL Gate 3, complementing `deviate review pre`.
711
+ Computes the unified diff and file list (via `git diff --name-only`) between
712
+ the merge-base of `--base` (default: `main`) and `--branch` (default: `HEAD`),
713
+ resolves governance paths, and collects commit messages for decision traceability.
714
+ Emits a JSON contract for consumption by the walkthrough skill.
715
+ * **Input Parameters:**
716
+ * `--base <branch>` (Base branch for merge-base computation; default: `main`)
717
+ * `--branch <branch>` (Target branch for self-contained walkthrough; default: `HEAD`)
718
+ * **Output Artifacts:** JSON contract with `diff`, `constitution_path`, `prd_path`,
719
+ `constitution_warning`, `prd_warning`, `base_branch`, `commit_messages`,
720
+ `changed_files`, `changed_files_count`, `timestamp`.
721
+ * **Token Budget:** Contract is lighter than review's — no per-file AST parsing.
722
+ The skill reads the raw diff and file list; structured diff is available via
723
+ `deviate review pre` if deeper analysis is needed.
724
+
725
+ ---
726
+
727
+ #### `deviate walkthrough post <status>`
728
+
729
+ * **Source:** `src/deviate/cli/walkthrough.py`
730
+ * **Description:** Placeholder for future walkthrough summary persistence.
731
+ Currently records the outcome (CLEAN or FLAGGED) with a timestamp.
732
+ * **Input Parameters:**
733
+ * `status` (Positional: CLEAN or FLAGGED)
734
+ * **Output Artifacts:** JSON contract with `status`, `phase`, `timestamp`.
735
+
618
736
  ### 8. (Removed — Context Sync)
619
737
 
620
738
  The `deviate context` concept was evaluated and removed. Reasoning:
@@ -769,6 +887,7 @@ and are installed to `.{agent}/commands/<name>.md` per workspace (or `.pi/prompt
769
887
  | `/deviate-plan` **← NEW** | Localized Researcher | `specs/{FEATURE_SLUG}/issues/{ISS-NNN}/plan.md` | `deviate plan pre/post` (planned) | 4 steps: read spec-enriched issue, scan current codebase, analyze prior issues, produce plan.md with implementation strategy |
770
888
  | `/deviate-tasks` | Technical Lead | `specs/{FEATURE_SLUG}/issues/{ISS-NNN}/tasks.md` | `deviate tasks pre/post` | 6 steps: consume spec-enriched issue + plan.md, decompose into tasks, assign execution modes, encode DAG deps, append terminal E2E task, validate granularity + commit |
771
889
  | `/deviate-pr` | Release Engineer | GitHub PR | `deviate pr pre/run` | 3 steps: gather git state, derive PR metadata, create PR via `gh pr create` |
890
+ | `/deviate-walkthrough` | Architectural Walkthrough Guide | (none — conversation only) | `deviate walkthrough pre/post` | 5 steps: gather, sweep, curate, walk (conversational), synthesize |
772
891
 
773
892
  > **Deprecation Notice:** `/deviate-specify` is deprecated as a standalone step. Shard
774
893
  > now produces issues with full spec-level detail (Gherkin AC, user stories, edge cases).
@@ -847,6 +966,7 @@ The architecture defines a model routing strategy in `specs/constitution.md` see
847
966
  | `/deviate-shard` | Qwen 3.7+ | Single invocation | One-shot |
848
967
  | `/deviate-plan` (new) | V4 Pro | Single invocation | One-shot — fresh localized research per issue |
849
968
  | `/deviate-tasks` | V4 Pro | Single invocation (issue-scoped) | 90%+ cache hit after turn 1 when paired with `/deviate-plan` |
969
+ | `/deviate-walkthrough` | V4 Flash | Single invocation | One-shot |
850
970
  | `/deviate-adhoc` | V4 Flash | Single invocation | One-shot |
851
971
  | EXECUTE / E2E / HOTFIX | V4 Flash | Single invocation | One-shot |
852
972