deviatdd 2.24.0__tar.gz → 2.24.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 (496) hide show
  1. {deviatdd-2.24.0 → deviatdd-2.24.2}/CHANGELOG.md +7 -1
  2. deviatdd-2.24.2/PKG-INFO +353 -0
  3. deviatdd-2.24.2/README.md +320 -0
  4. deviatdd-2.24.0/README.md → deviatdd-2.24.2/docs/rationale.md +7 -297
  5. {deviatdd-2.24.0 → deviatdd-2.24.2}/pyproject.toml +1 -1
  6. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/005-acceptance-gates/prd.md +7 -7
  7. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/DeviaTDD-api.md +9 -3
  8. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/DeviaTDD-architecture.md +4 -4
  9. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/cli/__init__.py +35 -13
  10. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/cli/micro.py +1 -1
  11. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/auto/explore.md +28 -11
  12. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/auto/plan.md +0 -6
  13. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/auto/prd.md +35 -11
  14. deviatdd-2.24.2/src/deviate/prompts/auto/research.md +237 -0
  15. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/auto/shard.md +20 -25
  16. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/auto/tasks.md +0 -6
  17. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-research.md +1 -1
  18. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/core/macro-shared.md +1 -1
  19. deviatdd-2.24.2/tests/fixtures/scope_gates/floor_bracket_items.yaml +121 -0
  20. deviatdd-2.24.2/tests/fixtures/scope_gates/sibling_withdrawal_inventory.md +14 -0
  21. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_commands.py +11 -0
  22. deviatdd-2.24.2/tests/test_macro/test_scope_gates.py +263 -0
  23. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_meso/test_auto_prompt_templates.py +157 -12
  24. {deviatdd-2.24.0 → deviatdd-2.24.2}/uv.lock +1 -1
  25. deviatdd-2.24.0/PKG-INFO +0 -468
  26. deviatdd-2.24.0/src/deviate/prompts/auto/research.md +0 -210
  27. {deviatdd-2.24.0 → deviatdd-2.24.2}/.env.example +0 -0
  28. {deviatdd-2.24.0 → deviatdd-2.24.2}/.gitattributes +0 -0
  29. {deviatdd-2.24.0 → deviatdd-2.24.2}/.githooks/pre-commit +0 -0
  30. {deviatdd-2.24.0 → deviatdd-2.24.2}/.githooks/pre-push +0 -0
  31. {deviatdd-2.24.0 → deviatdd-2.24.2}/.github/ISSUE_TEMPLATE/bug.md +0 -0
  32. {deviatdd-2.24.0 → deviatdd-2.24.2}/.github/ISSUE_TEMPLATE/feature.md +0 -0
  33. {deviatdd-2.24.0 → deviatdd-2.24.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  34. {deviatdd-2.24.0 → deviatdd-2.24.2}/.github/workflows/ci.yml +0 -0
  35. {deviatdd-2.24.0 → deviatdd-2.24.2}/.github/workflows/release.yml +0 -0
  36. {deviatdd-2.24.0 → deviatdd-2.24.2}/.gitignore +0 -0
  37. {deviatdd-2.24.0 → deviatdd-2.24.2}/AGENTS.md +0 -0
  38. {deviatdd-2.24.0 → deviatdd-2.24.2}/CLAUDE.md +0 -0
  39. {deviatdd-2.24.0 → deviatdd-2.24.2}/CODE_OF_CONDUCT.md +0 -0
  40. {deviatdd-2.24.0 → deviatdd-2.24.2}/CONTRIBUTING.md +0 -0
  41. {deviatdd-2.24.0 → deviatdd-2.24.2}/LICENSE +0 -0
  42. {deviatdd-2.24.0 → deviatdd-2.24.2}/SECURITY.md +0 -0
  43. {deviatdd-2.24.0 → deviatdd-2.24.2}/deviatdd.png +0 -0
  44. {deviatdd-2.24.0 → deviatdd-2.24.2}/mise.toml +0 -0
  45. {deviatdd-2.24.0 → deviatdd-2.24.2}/pr_descriptions/feat/001-deviate-cli-python/008-meso-macro-automated-orchestration.md +0 -0
  46. {deviatdd-2.24.0 → deviatdd-2.24.2}/pr_descriptions/feat/adhoc/006-context-cli-integration.md +0 -0
  47. {deviatdd-2.24.0 → deviatdd-2.24.2}/pr_descriptions/feat/adhoc/017-optional-push-as-lock.md +0 -0
  48. {deviatdd-2.24.0 → deviatdd-2.24.2}/pr_descriptions/feat-001-deviate-cli-python-001-cli-initialization-governance-provisioning-pr-11.md +0 -0
  49. {deviatdd-2.24.0 → deviatdd-2.24.2}/pr_descriptions/feat-001-deviate-cli-python-003-meso-layer-specification-task-decomposition.md +0 -0
  50. {deviatdd-2.24.0 → deviatdd-2.24.2}/pr_descriptions/feat-001-deviate-cli-python-004-micro-layer-tdd-sandbox-execution.md +0 -0
  51. {deviatdd-2.24.0 → deviatdd-2.24.2}/pr_descriptions/feat-001-deviate-cli-python-005-cli-architecture-realignment-skill-integration.md +0 -0
  52. {deviatdd-2.24.0 → deviatdd-2.24.2}/pr_descriptions/feat-001-deviate-cli-python-007-macro-meso-parity-backward-compatibility.md +0 -0
  53. {deviatdd-2.24.0 → deviatdd-2.24.2}/pr_descriptions/feat-002-deviatdd-gap-analysis-001-foundation-cli-infrastructure.md +0 -0
  54. {deviatdd-2.24.0 → deviatdd-2.24.2}/pr_descriptions/feat-002-deviatdd-gap-analysis-003-fast-path-commands.md +0 -0
  55. {deviatdd-2.24.0 → deviatdd-2.24.2}/pr_descriptions/feat-002-deviatdd-gap-analysis-004-governance-inspection.md +0 -0
  56. {deviatdd-2.24.0 → deviatdd-2.24.2}/pr_descriptions/feat-adhoc-001-streaming-pipeline-monitor.md +0 -0
  57. {deviatdd-2.24.0 → deviatdd-2.24.2}/pr_descriptions/feat-adhoc-008-ast-phase-prioritization.md +0 -0
  58. {deviatdd-2.24.0 → deviatdd-2.24.2}/pr_descriptions/feat-adhoc-017-two-counter-tdd-retry.md +0 -0
  59. {deviatdd-2.24.0 → deviatdd-2.24.2}/pr_descriptions/feat_002-deviatdd-gap-analysis_001-foundation-cli-infrastructure.md +0 -0
  60. {deviatdd-2.24.0 → deviatdd-2.24.2}/scripts/benchmark_lmstudio.py +0 -0
  61. {deviatdd-2.24.0 → deviatdd-2.24.2}/scripts/next_version.py +0 -0
  62. {deviatdd-2.24.0 → deviatdd-2.24.2}/scripts/verify_install.py +0 -0
  63. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/001-cli-initialization-governance-provisioning/manifest-t001.json +0 -0
  64. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/001-cli-initialization-governance-provisioning/manifest-t002.json +0 -0
  65. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/001-cli-initialization-governance-provisioning/manifest-t004.json +0 -0
  66. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/001-cli-initialization-governance-provisioning/spec.md +0 -0
  67. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/001-cli-initialization-governance-provisioning/tasks.md +0 -0
  68. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/002-macro-layer-state-ledger-management/spec.md +0 -0
  69. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/002-macro-layer-state-ledger-management/tasks.md +0 -0
  70. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/003-meso-layer-specification-task-decomposition/spec.md +0 -0
  71. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/003-meso-layer-specification-task-decomposition/tasks.md +0 -0
  72. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/004-micro-layer-tdd-sandbox-execution/spec.md +0 -0
  73. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/004-micro-layer-tdd-sandbox-execution/tasks.jsonl +0 -0
  74. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/004-micro-layer-tdd-sandbox-execution/tasks.md +0 -0
  75. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/005-cli-architecture-realignment-skill-integration/spec.md +0 -0
  76. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/005-cli-architecture-realignment-skill-integration/tasks.md +0 -0
  77. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/007-macro-meso-parity-backward-compatibility/spec.md +0 -0
  78. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/007-macro-meso-parity-backward-compatibility/tasks.md +0 -0
  79. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/008-meso-macro-automated-orchestration/spec.md +0 -0
  80. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/008-meso-macro-automated-orchestration/tasks.jsonl +0 -0
  81. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/008-meso-macro-automated-orchestration/tasks.md +0 -0
  82. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/data-model.md +0 -0
  83. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/design.md +0 -0
  84. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/explore.md +0 -0
  85. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/001-cli-initialization-governance-provisioning.md +0 -0
  86. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/002-macro-layer-state-ledger-management.md +0 -0
  87. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/003-meso-layer-specification-task-decomposition.md +0 -0
  88. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/004-micro-layer-tdd-sandbox-execution.md +0 -0
  89. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/005-cli-architecture-realignment-skill-integration.md +0 -0
  90. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/006-state-persistence-concurrency-safety.md +0 -0
  91. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/007-macro-meso-parity-backward-compatibility.md +0 -0
  92. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/008-meso-macro-automated-orchestration.md +0 -0
  93. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/001-deviate-cli-python/prd.md +0 -0
  94. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/001-foundation-cli-infrastructure/spec.md +0 -0
  95. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/001-foundation-cli-infrastructure/tasks.jsonl +0 -0
  96. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/001-foundation-cli-infrastructure/tasks.md +0 -0
  97. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/003-fast-path-commands/spec.md +0 -0
  98. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/003-fast-path-commands/tasks.jsonl +0 -0
  99. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/003-fast-path-commands/tasks.md +0 -0
  100. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/004-governance-inspection/spec.md +0 -0
  101. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/004-governance-inspection/tasks.jsonl +0 -0
  102. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/004-governance-inspection/tasks.md +0 -0
  103. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/005-micro-layer-integrity/spec.md +0 -0
  104. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/005-micro-layer-integrity/tasks.jsonl +0 -0
  105. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/005-micro-layer-integrity/tasks.md +0 -0
  106. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/data-model.md +0 -0
  107. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/design.md +0 -0
  108. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/explore.md +0 -0
  109. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/issues/001-foundation-cli-infrastructure.md +0 -0
  110. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/issues/002-context-pipeline.md +0 -0
  111. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/issues/003-fast-path-commands.md +0 -0
  112. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/issues/004-governance-inspection.md +0 -0
  113. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/issues/005-micro-layer-integrity.md +0 -0
  114. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/plan-tdd-integration-gap.md +0 -0
  115. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/prd.md +0 -0
  116. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/003-graphite-cli-integration/explore.md +0 -0
  117. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/004-per-task-security-profile/issues/001-security-profile-and-judge-checks.md +0 -0
  118. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/005-acceptance-gates/001-verification-mode-metadata/plan.md +0 -0
  119. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/005-acceptance-gates/001-verification-mode-metadata/tasks.jsonl +0 -0
  120. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/005-acceptance-gates/001-verification-mode-metadata/tasks.md +0 -0
  121. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/005-acceptance-gates/002-task-acceptance-traceability/plan.md +0 -0
  122. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/005-acceptance-gates/002-task-acceptance-traceability/tasks.jsonl +0 -0
  123. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/005-acceptance-gates/002-task-acceptance-traceability/tasks.md +0 -0
  124. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/005-acceptance-gates/data-model.md +0 -0
  125. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/005-acceptance-gates/design.md +0 -0
  126. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/005-acceptance-gates/explore.md +0 -0
  127. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/005-acceptance-gates/issues/001-verification-mode-metadata.md +0 -0
  128. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/005-acceptance-gates/issues/002-task-acceptance-traceability.md +0 -0
  129. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/005-acceptance-gates/issues/003-micro-phase-gates-red-green.md +0 -0
  130. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/005-acceptance-gates/issues/004-refactor-regression-gate.md +0 -0
  131. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/005-acceptance-gates/issues/005-prompt-spec-alignment.md +0 -0
  132. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/006-setup-interactive-config/data-model.md +0 -0
  133. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/006-setup-interactive-config/design.md +0 -0
  134. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/006-setup-interactive-config/explore.md +0 -0
  135. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/_product/architecture.md +0 -0
  136. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/_product/domain-model.md +0 -0
  137. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/_product/flows/flows-product.md +0 -0
  138. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/_product/flows/flows-streaming.md +0 -0
  139. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/_product/flows/index.md +0 -0
  140. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/_product/flows.jsonl +0 -0
  141. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/_product/guildwright-current-system.md +0 -0
  142. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/_product/guildwright-gap-register.md +0 -0
  143. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/_product/guildwright-git-state-model.md +0 -0
  144. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/_product/guildwright-rewrite.md +0 -0
  145. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/_product/guildwright-rust-tui-requirements.md +0 -0
  146. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/_product/release-next.md +0 -0
  147. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/001-streaming-pipeline-monitor/spec.md +0 -0
  148. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/001-streaming-pipeline-monitor/tasks.jsonl +0 -0
  149. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/001-streaming-pipeline-monitor/tasks.md +0 -0
  150. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/003-meso-layer-restructuring/spec.md +0 -0
  151. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/003-meso-layer-restructuring/tasks.jsonl +0 -0
  152. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/003-meso-layer-restructuring/tasks.md +0 -0
  153. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/004-deviate-review-skill/spec.md +0 -0
  154. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/004-deviate-review-skill/tasks.jsonl +0 -0
  155. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/004-deviate-review-skill/tasks.md +0 -0
  156. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/005-per-phase-model-configuration/plan.md +0 -0
  157. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/005-per-phase-model-configuration/tasks.jsonl +0 -0
  158. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/005-per-phase-model-configuration/tasks.md +0 -0
  159. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/006-context-cli-integration/plan.md +0 -0
  160. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/006-context-cli-integration/tasks.jsonl +0 -0
  161. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/006-context-cli-integration/tasks.md +0 -0
  162. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/007-graphite-cli/plan.md +0 -0
  163. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/007-graphite-cli/tasks.jsonl +0 -0
  164. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/007-graphite-cli/tasks.md +0 -0
  165. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/008-ast-phase-prioritization/plan.md +0 -0
  166. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/008-ast-phase-prioritization/tasks.jsonl +0 -0
  167. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/008-ast-phase-prioritization/tasks.md +0 -0
  168. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/009-pi-agent-backend-integration/plan.md +0 -0
  169. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/009-pi-agent-backend-integration/tasks.jsonl +0 -0
  170. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/009-pi-agent-backend-integration/tasks.md +0 -0
  171. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/010-deviate-setup-product-layer/plan.md +0 -0
  172. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/010-deviate-setup-product-layer/tasks.jsonl +0 -0
  173. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/010-deviate-setup-product-layer/tasks.md +0 -0
  174. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/013-flow-ledger-canonical-source-of-truth/plan.md +0 -0
  175. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/013-flow-ledger-canonical-source-of-truth/tasks.jsonl +0 -0
  176. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/013-flow-ledger-canonical-source-of-truth/tasks.md +0 -0
  177. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/015-narrow-product-flow-scope/plan.md +0 -0
  178. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/015-narrow-product-flow-scope/tasks.md +0 -0
  179. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/016-single-source-prompt-templates/plan.md +0 -0
  180. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/016-single-source-prompt-templates/tasks.jsonl +0 -0
  181. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/016-single-source-prompt-templates/tasks.md +0 -0
  182. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/017-optional-push-as-lock/plan.md +0 -0
  183. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/017-optional-push-as-lock/tasks.jsonl +0 -0
  184. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/017-optional-push-as-lock/tasks.md +0 -0
  185. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/017-two-counter-tdd-retry/plan.md +0 -0
  186. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/017-two-counter-tdd-retry/tasks.jsonl +0 -0
  187. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/017-two-counter-tdd-retry/tasks.md +0 -0
  188. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/018-one-behavior-rgr-granularity/plan.md +0 -0
  189. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/018-one-behavior-rgr-granularity/tasks.md +0 -0
  190. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/019-remote-aware-ordinal-allocation/plan.md +0 -0
  191. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/019-remote-aware-ordinal-allocation/tasks.jsonl +0 -0
  192. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/019-remote-aware-ordinal-allocation/tasks.md +0 -0
  193. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/020-judge-compliance-pass-evidence/plan.md +0 -0
  194. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/020-judge-compliance-pass-evidence/tasks.jsonl +0 -0
  195. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/020-judge-compliance-pass-evidence/tasks.md +0 -0
  196. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/021-no-failing-test-escalate-invokes-green/plan.md +0 -0
  197. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/021-no-failing-test-escalate-invokes-green/tasks.jsonl +0 -0
  198. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/021-no-failing-test-escalate-invokes-green/tasks.md +0 -0
  199. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/022-already-satisfied-red-requires-tests/plan.md +0 -0
  200. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/022-already-satisfied-red-requires-tests/tasks.jsonl +0 -0
  201. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/022-already-satisfied-red-requires-tests/tasks.md +0 -0
  202. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/023-pinned-micro-run-issue-scoped/plan.md +0 -0
  203. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/023-pinned-micro-run-issue-scoped/tasks.jsonl +0 -0
  204. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/023-pinned-micro-run-issue-scoped/tasks.md +0 -0
  205. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/024-worktree-session-stale-issue-id/plan.md +0 -0
  206. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/024-worktree-session-stale-issue-id/tasks.jsonl +0 -0
  207. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/024-worktree-session-stale-issue-id/tasks.md +0 -0
  208. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/025-green-stderr-noise-stall-detector/plan.md +0 -0
  209. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/025-green-stderr-noise-stall-detector/tasks.jsonl +0 -0
  210. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/025-green-stderr-noise-stall-detector/tasks.md +0 -0
  211. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/026-pi-spawn-lean-tool-schema/plan.md +0 -0
  212. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/026-pi-spawn-lean-tool-schema/tasks.jsonl +0 -0
  213. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/026-pi-spawn-lean-tool-schema/tasks.md +0 -0
  214. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/027-red-hang-timeout-rollback/plan.md +0 -0
  215. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/027-red-hang-timeout-rollback/tasks.jsonl +0 -0
  216. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/027-red-hang-timeout-rollback/tasks.md +0 -0
  217. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/028-task-scoped-judge-review-coverage/plan.md +0 -0
  218. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/028-task-scoped-judge-review-coverage/tasks.jsonl +0 -0
  219. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/028-task-scoped-judge-review-coverage/tasks.md +0 -0
  220. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/030-config-rework/plan.md +0 -0
  221. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/030-config-rework/tasks.jsonl +0 -0
  222. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/030-config-rework/tasks.md +0 -0
  223. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/031-judge-revert-boundary-no-failing-test/plan.md +0 -0
  224. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/031-judge-revert-boundary-no-failing-test/tasks.jsonl +0 -0
  225. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/031-judge-revert-boundary-no-failing-test/tasks.md +0 -0
  226. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/034-setup-interactive-config/plan.md +0 -0
  227. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/034-setup-interactive-config/tasks.md +0 -0
  228. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/001-streaming-pipeline-monitor.md +0 -0
  229. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/002-aider-agent-backend-integration.md +0 -0
  230. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/003-meso-layer-restructuring.md +0 -0
  231. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/004-deviate-review-skill.md +0 -0
  232. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/005-per-phase-model-configuration.md +0 -0
  233. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/006-context-cli-integration.md +0 -0
  234. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/007-graphite-cli.md +0 -0
  235. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/008-ast-phase-prioritization.md +0 -0
  236. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/009-pi-agent-backend-integration.md +0 -0
  237. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/010-deviate-setup-product-layer.md +0 -0
  238. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/012-rpc-streaming-tui-renderer.md +0 -0
  239. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/013-flow-ledger-canonical-source-of-truth.md +0 -0
  240. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/014-cwe-mapping-security-findings.md +0 -0
  241. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/015-narrow-product-flow-scope.md +0 -0
  242. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/016-single-source-prompt-templates.md +0 -0
  243. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/017-optional-push-as-lock.md +0 -0
  244. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/017-two-counter-tdd-retry.md +0 -0
  245. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/018-one-behavior-rgr-granularity.md +0 -0
  246. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/019-remote-aware-ordinal-allocation.md +0 -0
  247. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/020-judge-compliance-pass-evidence.md +0 -0
  248. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/021-no-failing-test-escalate-invokes-green.md +0 -0
  249. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/022-already-satisfied-red-requires-tests.md +0 -0
  250. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/023-pinned-micro-run-issue-scoped.md +0 -0
  251. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/024-worktree-session-stale-issue-id.md +0 -0
  252. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/025-green-stderr-noise-stall-detector.md +0 -0
  253. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/026-pi-spawn-lean-tool-schema.md +0 -0
  254. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/027-red-hang-timeout-rollback.md +0 -0
  255. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/028-task-scoped-judge-review-coverage.md +0 -0
  256. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/029-ponytail-pruning-in-review.md +0 -0
  257. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/030-config-rework.md +0 -0
  258. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/031-judge-revert-boundary-no-failing-test.md +0 -0
  259. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/032-judge-feedback-injection-fail-close.md +0 -0
  260. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/033-prune-post-completed.md +0 -0
  261. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/034-setup-interactive-config.md +0 -0
  262. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/035-gate3-walkthrough-map-and-review-comments.md +0 -0
  263. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/036-cli-help-readme-transparency.md +0 -0
  264. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/issues/037-setup-pack-tui-multiselect.md +0 -0
  265. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc/prd.md +0 -0
  266. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/adhoc.jsonl +0 -0
  267. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/constitution.md +0 -0
  268. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/explore/ast-tree-sitter.md +0 -0
  269. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/explore/config-rework.md +0 -0
  270. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/explore/flow-ledger.md +0 -0
  271. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/explore/graphite-cli.md +0 -0
  272. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/explore/pi-agent-backend.md +0 -0
  273. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/explore/ponytail-pruning.md +0 -0
  274. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/explore/product-layer.md +0 -0
  275. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/explore/rpc-streaming-tui.md +0 -0
  276. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/explore/rpc-streaming.md +0 -0
  277. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/explore/security-hardening-cwe.md +0 -0
  278. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/implementation-gap.md +0 -0
  279. {deviatdd-2.24.0 → deviatdd-2.24.2}/specs/issues.jsonl +0 -0
  280. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/__init__.py +0 -0
  281. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/cli/_common.py +0 -0
  282. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/cli/_html.py +0 -0
  283. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/cli/_safe_commands.py +0 -0
  284. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/cli/adhoc.py +0 -0
  285. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/cli/constitution.py +0 -0
  286. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/cli/feature.py +0 -0
  287. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/cli/flow_commands.py +0 -0
  288. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/cli/init.py +0 -0
  289. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/cli/inspect.py +0 -0
  290. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/cli/macro.py +0 -0
  291. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/cli/meso.py +0 -0
  292. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/cli/prune.py +0 -0
  293. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/cli/review.py +0 -0
  294. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/cli/walkthrough.py +0 -0
  295. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/__init__.py +0 -0
  296. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/_shared.py +0 -0
  297. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/agent.py +0 -0
  298. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/cache_discipline.py +0 -0
  299. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/commands.py +0 -0
  300. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/commit.py +0 -0
  301. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/complexity.py +0 -0
  302. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/constitution.py +0 -0
  303. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/contract.py +0 -0
  304. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/convention.py +0 -0
  305. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/epic.py +0 -0
  306. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/issues.py +0 -0
  307. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/judge_evidence.py +0 -0
  308. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/prd.py +0 -0
  309. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/profile.py +0 -0
  310. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/prune.py +0 -0
  311. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/repo.py +0 -0
  312. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/review_coverage.py +0 -0
  313. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/run_logger.py +0 -0
  314. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/tasks_ledger.py +0 -0
  315. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/validation.py +0 -0
  316. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/core/worktree.py +0 -0
  317. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/html_templates/__init__.py +0 -0
  318. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/html_templates/architecture.html.tmpl +0 -0
  319. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/html_templates/domain-model.html.tmpl +0 -0
  320. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/html_templates/flows.html.tmpl +0 -0
  321. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/html_templates/plan.html.tmpl +0 -0
  322. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/html_templates/prd.html.tmpl +0 -0
  323. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/main.py +0 -0
  324. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/__init__.py +0 -0
  325. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/assembly.py +0 -0
  326. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/auto/__init__.py +0 -0
  327. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/auto/execute.md +0 -0
  328. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/auto/green.md +0 -0
  329. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/auto/judge.md +0 -0
  330. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/auto/red.md +0 -0
  331. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/auto/refactor.md +0 -0
  332. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-adhoc.md +0 -0
  333. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-architecture.md +0 -0
  334. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-constitution.md +0 -0
  335. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-e2e.md +0 -0
  336. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-execute.md +0 -0
  337. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-explore.md +0 -0
  338. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-flows.md +0 -0
  339. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-green.md +0 -0
  340. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-hotfix.md +0 -0
  341. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-html.md +0 -0
  342. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-init.md +0 -0
  343. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-judge.md +0 -0
  344. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-merge.md +0 -0
  345. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-plan.md +0 -0
  346. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-pr.md +0 -0
  347. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-prd.md +0 -0
  348. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-prune.md +0 -0
  349. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-red.md +0 -0
  350. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-refactor.md +0 -0
  351. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-release.md +0 -0
  352. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-review.md +0 -0
  353. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-shard.md +0 -0
  354. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-tasks.md +0 -0
  355. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-triage.md +0 -0
  356. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-walkthrough.md +0 -0
  357. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/constitution_seed.md +0 -0
  358. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/core/core.md +0 -0
  359. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/core/lifecycle-auto.md +0 -0
  360. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/core/lifecycle-manual.md +0 -0
  361. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/core/meso-shared.md +0 -0
  362. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/core/micro-shared.md +0 -0
  363. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/core/product-shared.md +0 -0
  364. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/core/style-ste.md +0 -0
  365. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/governance/__init__.py +0 -0
  366. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/governance/agents_seed.md +0 -0
  367. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/governance/claudemd_seed.md +0 -0
  368. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/governance/libref_seed.md +0 -0
  369. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/prompts/skills/deviatdd/SKILL.md +0 -0
  370. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/state/__init__.py +0 -0
  371. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/state/config.py +0 -0
  372. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/state/ledger.py +0 -0
  373. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/ui/__init__.py +0 -0
  374. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/ui/checkbox.py +0 -0
  375. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/ui/monitor.py +0 -0
  376. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/ui/pipeline.py +0 -0
  377. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/ui/render.py +0 -0
  378. {deviatdd-2.24.0 → deviatdd-2.24.2}/src/deviate/visual/__init__.py +0 -0
  379. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/__init__.py +0 -0
  380. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/conftest.py +0 -0
  381. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/core/__init__.py +0 -0
  382. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/core/test_agent.py +0 -0
  383. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/core/test_smart_stall.py +0 -0
  384. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/e2e/test_derived_command_install.bats +0 -0
  385. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/e2e/test_green_stderr_stall.bats +0 -0
  386. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/e2e/test_macro_workflow.bats +0 -0
  387. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/e2e/test_optional_push_as_lock.bats +0 -0
  388. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/e2e/test_pi_spawn_lean_tool_schema.bats +0 -0
  389. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/e2e/test_red_hang_timeout_rollback.bats +0 -0
  390. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/e2e/test_review_plan_ac_coverage.bats +0 -0
  391. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/e2e/test_setup_config_rework.bats +0 -0
  392. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/e2e/test_worktree_session_stale_issue.bats +0 -0
  393. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/__init__.py +0 -0
  394. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_adhoc.py +0 -0
  395. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_common.py +0 -0
  396. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_constitution.py +0 -0
  397. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_feature.py +0 -0
  398. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_flows_sync.py +0 -0
  399. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_help.py +0 -0
  400. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_html.py +0 -0
  401. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_init.py +0 -0
  402. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_inspect.py +0 -0
  403. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_macro_contracts.py +0 -0
  404. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_main_entrypoint.py +0 -0
  405. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_merge.py +0 -0
  406. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_meso.py +0 -0
  407. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_meso_contracts.py +0 -0
  408. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_micro.py +0 -0
  409. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_prune.py +0 -0
  410. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_real_descendant_kill.py +0 -0
  411. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_review.py +0 -0
  412. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_safe_commands.py +0 -0
  413. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_setup.py +0 -0
  414. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_test_command_resolution.py +0 -0
  415. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_timeout_safe_command.py +0 -0
  416. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_top_level_run.py +0 -0
  417. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_cli/test_walkthrough.py +0 -0
  418. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_agent.py +0 -0
  419. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_cache_discipline.py +0 -0
  420. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_commit.py +0 -0
  421. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_complexity.py +0 -0
  422. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_constitution.py +0 -0
  423. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_contract.py +0 -0
  424. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_convention.py +0 -0
  425. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_epic.py +0 -0
  426. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_flow_confirmation.py +0 -0
  427. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_issues.py +0 -0
  428. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_judge_evidence.py +0 -0
  429. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_ledger.py +0 -0
  430. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_prd.py +0 -0
  431. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_profile.py +0 -0
  432. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_prune.py +0 -0
  433. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_repo.py +0 -0
  434. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_run_logger.py +0 -0
  435. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_tasks_ledger.py +0 -0
  436. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_validation.py +0 -0
  437. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_core/test_worktree.py +0 -0
  438. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_init.py +0 -0
  439. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_integration/__init__.py +0 -0
  440. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_integration/conftest.py +0 -0
  441. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_integration/test_command_installation.py +0 -0
  442. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_integration/test_init_export_cycle.py +0 -0
  443. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_integration/test_macro_full_cycle.py +0 -0
  444. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_integration/test_macro_layer.py +0 -0
  445. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_integration/test_macro_orchestration.py +0 -0
  446. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_integration/test_meso_layer.py +0 -0
  447. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_integration/test_meso_orchestration.py +0 -0
  448. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_integration/test_meso_task_ledger.py +0 -0
  449. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_integration/test_parity.py +0 -0
  450. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_integration/test_skill_installation.py +0 -0
  451. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_macro/__init__.py +0 -0
  452. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_macro/test_explore.py +0 -0
  453. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_macro/test_macro_model_routing.py +0 -0
  454. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_macro/test_macro_orchestration.py +0 -0
  455. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_macro/test_prd.py +0 -0
  456. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_macro/test_research.py +0 -0
  457. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_macro/test_shard.py +0 -0
  458. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_meso/__init__.py +0 -0
  459. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_meso/test_meso_model_routing.py +0 -0
  460. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_meso/test_meso_orchestration.py +0 -0
  461. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_meso/test_meso_resume.py +0 -0
  462. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_meso/test_plan_structure_injection.py +0 -0
  463. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_meso/test_pr_platform.py +0 -0
  464. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_meso/test_prompt_assembly.py +0 -0
  465. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_meso/test_specify.py +0 -0
  466. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_meso/test_tasks.py +0 -0
  467. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_micro/__init__.py +0 -0
  468. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_micro/conftest.py +0 -0
  469. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_micro/test_commit_failure.py +0 -0
  470. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_micro/test_completed_evidence.py +0 -0
  471. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_micro/test_e2e.py +0 -0
  472. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_micro/test_execute.py +0 -0
  473. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_micro/test_green.py +0 -0
  474. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_micro/test_hotfix.py +0 -0
  475. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_micro/test_judge.py +0 -0
  476. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_micro/test_orchestration.py +0 -0
  477. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_micro/test_output_filter.py +0 -0
  478. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_micro/test_red.py +0 -0
  479. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_micro/test_refactor.py +0 -0
  480. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_micro/test_review_pause.py +0 -0
  481. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_micro/test_rollback_safety.py +0 -0
  482. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_micro/test_run.py +0 -0
  483. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_micro/test_task_label.py +0 -0
  484. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_micro/test_two_counter_retry.py +0 -0
  485. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_release/test_next_version.py +0 -0
  486. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_state/__init__.py +0 -0
  487. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_state/test_config.py +0 -0
  488. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_state/test_ledger.py +0 -0
  489. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_state/test_security_profile.py +0 -0
  490. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_state/test_session.py +0 -0
  491. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_ui/__init__.py +0 -0
  492. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_ui/test_checkbox.py +0 -0
  493. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_ui/test_monitor.py +0 -0
  494. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_ui/test_pipeline.py +0 -0
  495. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_ui/test_render.py +0 -0
  496. {deviatdd-2.24.0 → deviatdd-2.24.2}/tests/test_visual_demo/test_tsk_001_01.py +0 -0
@@ -43,8 +43,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
43
43
  - **`deviate html prd --bucket <slug>` targets a specific epic when more than one owns a `prd.md`.** Previously the command hard-failed with `HTML_AMBIGUOUS_PRD` whenever multiple numbered epics had a `prd.md` and offered no flag to disambiguate — the agent was told to "run from within the epic's worktree", which silently yielded `HTML_NO_PRD` because the resolver reads `specs/` from the repo root. The new option resolves `specs/<bucket>/prd.md` directly and bypasses ambiguity detection; the plain form keeps its existing behavior but its ambiguity banner now points at the flag. An unknown/absent bucket exits `PRD_NOT_FOUND`. The `/deviate-html` prompt (`src/deviate/prompts/commands/deviate-html.md`) and spec docs now reference `--bucket` instead of the broken cwd fallback. Pinned by `tests/test_cli/test_html.py::test_html_prd_bucket_targets_specific_epic`, `::test_html_prd_bucket_targets_unnumbered_dir`, and `::test_html_prd_bucket_missing_file_exits_cleanly`.
44
44
  - **Optional push-as-lock: `claim_remote` config plus `--local` on `meso run` and `run`.** Standing `.deviate/config.toml` key `claim_remote` plus `--local` on `meso run` and `run`. `deviate setup --no-claim-remote` writes `claim_remote = false` without dropping `[models]`, `timeout_seconds`, or `[agent]`. Effective local mode is `--local` OR `claim_remote = false`; explicit `--local` always wins. Local mode still creates `.worktrees/feat/{epic}/{issue}/`, writes SPECIFIED, and commits the claim, and skips `branch_exists_on_remote` plus `git push`. `deviate specify --local` stays; omitted `--local` honors config. `deviate meso run --local` and `deviate run --local` share that meaning. `--no-setup` remains a distinct skip of worktree plus claim. Local discovery does not treat an origin branch as claimed-elsewhere. Specs: `specs/DeviaTDD-api.md`, `specs/DeviaTDD-architecture.md`. Pinned by `tests/test_state/test_config.py`, `tests/test_cli/test_meso.py`, `tests/test_meso/test_specify.py`, `tests/test_meso/test_meso_orchestration.py`, `tests/test_cli/test_init.py`, and `tests/test_cli/test_top_level_run.py`.
45
45
  ### Changed
46
+ - **PRD and shard ownership split for flexible vertical issue slicing (GH-141).** PRD owns behavior, constraints, acceptance criteria, and FR traceability and must not prescribe issue count, issue IDs, or shard topology. Shard owns issue count, grouping, boundaries, and the dependency DAG. Issues are independently testable vertical slices cut by observable behavior first — not partitioned or bounded by FR id. FRs are coverage attached after the slice exists (a set property: every PRD FR must appear in at least one issue; it does not matter which). One issue may cover multiple related FRs; one FR may span multiple issues when each owns a distinct observable behavior. No fixed min/max issue count (hard ten-slice ceiling and `SLICE_CAP_EXCEEDED` removed). Horizontal layer splits remain rejected by default; a persistence-only vertical is valid when the database invariant or migration is the behavior under test. Zero-FR setup/tooling/governance shards stay invalid. Pinned by `tests/test_meso/test_auto_prompt_templates.py::TestPrdShardOwnership`.
47
+ - **Research is one agent / two ordered jobs; explore inventories siblings; PRD selects on the floor/bracket (GH-139).** Auto `research.md` no longer dispatches sequential AlphaBeta/Gamma sub-agents or forwards context between two processes — the same agent writes the floor (constitution + sibling parity + authorization/money safety/provider correctness/data integrity) then attacks it. Schema tables are floor only; named extras live in a Deferred / maximal bracket list and carry Scope Status `Required` | `Recommended` | `Deferred` | `Open Decision`. Explore stays factual and adds a short sibling-flow inventory (amount vs fee, lock vs reserve, vendor call, idempotency, destination shape). PRD in-scope is floor + promoted extras; unused Recommended/Deferred extras stay under Out-of-Scope Boundaries. Auto prompts remain canonical; derived slash commands pick up the gates via `_derive_manual_body`. Specs: `specs/DeviaTDD-architecture.md`, `specs/DeviaTDD-api.md`. Pinned by `tests/test_macro/test_scope_gates.py`.
48
+ - **README first-hour path and `deviate setup --help` match shipped 2.24.0 setup.** Quickstart names the TTY extras `--agent` does not skip (`[l]ocal/[g]lobal`, claim-remote, pack checklist), the Pi local vs `~/.pi/agent/` paths, `/deviate-init` vs `/skill:deviatdd`, and empty `CLAUDE.md` after setup. Phase rationale moved to `docs/rationale.md`. `setup --help` documents those TTY extras, omitted `--packs` off-TTY = default layers, and `--agent-export-mode` as this-run only. Global command install prints the dest path the way the skill path is printed. Help copy is documentation, not a pytest contract.
46
49
  - **`deviate setup` no longer asks or writes `base_branch`.** Trunk is resolved at runtime by `resolve_base_branch`: hand-set `config.toml` `base_branch` if present, else `origin/HEAD`, else `main`. `--base-branch` is a script-only write-override. Pinned by `tests/test_state/test_config.py` and `tests/test_cli/test_setup.py::TestSetupConfigAllowlist`.
47
- - **`deviate setup` TTY asks prompt/skill install `[l]ocal/[g]lobal`; generated `config.toml` is runner config only.** After the agent picker: export mode (default `l`, this run only — not persisted), then claim-remote, then the pack checkbox. Prompt copy uses ``rich.markup.escape`` so ``[y]es/[n]o`` and ``[l]ocal/[g]lobal`` render as literals. `--agent-export-mode` omitted on a TTY prompts (option default is `None`; non-TTY omitted installs local). `--base-branch` is a script-only write-override (omitted = do not write `base_branch`). `global` installs under `~/.{agent}/…` (Codex: `~/.agents/skills`). Fresh dump has inline comments and no `base_branch`, `agent_export_mode`, or `[agent].timeout` (`timeout_seconds` is the only timeout key). TTY/flag re-runs strip leftover `agent_export_mode` / `[agent].timeout` and leave a hand-set `base_branch` alone. Still no `~/.pi/agent/` writes. Pinned by `tests/test_cli/test_setup.py::TestSetupConfigAllowlist` / `::TestSetupExportModeAndBaseBranch` and `tests/test_cli/test_init.py::test_prompt_claim_remote_escapes_rich_brackets`.
50
+ - **`deviate setup` TTY asks prompt/skill install `[l]ocal/[g]lobal`; generated `config.toml` is runner config only.** After the agent picker: export mode (default `l`, this run only — not persisted), then claim-remote, then the pack checkbox. Prompt copy uses ``rich.markup.escape`` so ``[y]es/[n]o`` and ``[l]ocal/[g]lobal`` render as literals. `--agent-export-mode` omitted on a TTY prompts (option default is `None`; non-TTY omitted installs local). `--base-branch` is a script-only write-override (omitted = do not write `base_branch`). `global` installs under `~/.{agent}/…` (Codex: `~/.agents/skills`). Fresh dump has inline comments and no `base_branch`, `agent_export_mode`, or `[agent].timeout` (`timeout_seconds` is the only timeout key). TTY/flag re-runs strip leftover `agent_export_mode` / `[agent].timeout` and leave a hand-set `base_branch` alone. Pi `global` writes `~/.pi/agent/prompts` + `~/.pi/agent/skills` (see Added); setup still does not generate `settings.json`. Pinned by `tests/test_cli/test_setup.py::TestSetupConfigAllowlist` / `::TestSetupExportModeAndBaseBranch` and `tests/test_cli/test_init.py::test_prompt_claim_remote_escapes_rich_brackets`.
48
51
  - **`deviate setup` TTY optional-pack picker is a checkbox list (one pack per row).** Space toggles, Enter confirms, default nothing selected (macro+meso+micro only). Replaces the Rich `Prompt.ask` slash-separated list that wrapped mid-name (`pr` / `une`). `--packs` for scripts is unchanged. Non-TTY still default-only. Selection is not persisted in `config.toml`. Arrow keys stay in the list: CSI (`\\x1b[A`/`[B`) and SS3 (`\\x1bOA`/`OB`) are read with VMIN=0 VTIME=1 (no select race); lone ESC is ignored, not confirm. Pending stdin is flushed before the checklist so a leftover Enter from the agent/`claim_remote` `Prompt.ask` cannot auto-confirm empty. On a TTY re-run, the claim-remote `[y]es/[n]o` prompt always appears (default = current `claim_remote` in `config.toml`; accepts `y`/`n`/`yes`/`no`) and the answer is upserted; flags still skip it. Pinned by `tests/test_cli/test_setup.py::TestSetupPacks` (TTY helper invoked; mocked `product`+`pr` installs those two only), `tests/test_ui/test_checkbox.py`, and `tests/test_cli/test_init.py` claim-remote TTY re-run cases.
49
52
  - **Gate 3 `/deviate-walkthrough` is a four-look map; `/deviate-review` is the PR review (comments by default, `--apply` CRITICAL-only).** Walkthrough maps THIS issue/PR: (a) brief path + this issue's plan AC lines if `plan.md` exists; (b) test hunks; (c) which production hunks claim which named check; (d) the command to run those checks. It must not reimplement, approve, hide hunks, tell the human to skip a look, or auto-edit. `deviate walkthrough pre` emits `issue_brief_path`, `plan_path` (null if absent), and classified `test_files` / `production_files`; it no longer sends constitution/prd as default inputs unless this brief names those paths. `/deviate-review` is comments-only by default (stdout and/or GitHub PR review event `COMMENT`); no edits, no `git add`/`git commit`, no `REQUEST_CHANGES`, not a merge gate. There is no always-on STEP 4. `deviate review --apply` (or `pre --apply`) may apply CRITICAL findings only (security / data loss / broken build / named-check fail with a concrete FIX) and commit only when such a fix landed; never auto-apply SUGGESTION or OPPORTUNITY. Same inputs → same comments, keyed by named-check tokens + test-weakening + this-issue cross-task drift. A brief with no named checks emits exactly `brief incomplete` (do not hunt Explore). Do not assume JUDGE already ran (`--profile fast` coworker path). `review_coverage.py` uncovered plan-AC tokens stay as comment input; `coverage_complete` is not an apply gate. Both remain optional packs (`walkthrough`, `review`); no `pr-review` pack. Pinned by CLI contracts in `tests/test_cli/test_review.py` and `tests/test_cli/test_walkthrough.py` (JSON fields, `brief incomplete`, default no-apply, `--apply` CRITICAL-only) — not by prompt-body substring tests.
50
53
  - **`deviate --help` and the README now say which phases commit, spawn, or fail closed.** A short per-phase transparency table covers setup, adhoc, meso, micro, review, and walkthrough (does / commits / debug a fail): RED `git commit --no-verify`, Codex `codex exec --sandbox workspace-write --ask-for-approval never`, nested spawn inside `meso run` / `micro run`, `pre`/`post`, `--profile fast` skips JUDGE **and** REFACTOR, `deviate micro run --review` is a TTY pause (not `/deviate-review`; skill argument `review` is a loop policy), default packs on current main (#134) vs optional packs, `--no-setup --local` Path A, `claim_remote` default false, `/deviate-review` comments-only (not a merge gate; opt-in `--apply` CRITICAL-only), and `/deviate-walkthrough` as the four-look map. Typer help on `setup`, `meso run`, `micro run` (`--profile` / `--review` / `--all`) names the same contract. Help copy is documentation, not a pytest contract.
@@ -80,6 +83,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
80
83
  - **`/deviate-merge` no longer auto-pushes after the squash-merge commit; the push gate runs inline and the network push is opt-in.** The slash command previously ran `git push` as its final step. As of v2.4.0 the squash-merge commit lands on `main`, then a new `push_gate` step inlines the body of `.githooks/pre-push` (lint + format-check + testmon-driven affected tests with the warm-cache / full-suite fallback — bash 3.2 portable, `GIT_DIR` reset + trap preserved) so the safety net fires even though no `git push` happens yet. After the gate passes the skill asks the operator whether to `git push` (which fires the real `pre-push` hook and re-runs the same gate) or stop and push manually. The squash-merge commit and the ledger transition inside it are durable on `main` regardless of the push outcome — only the network push is deferred. New failure states: `Push_Gate_Failed` (inline gate non-zero), `Push_Failed` (`git push` non-zero, raw stderr surfaced), `Push_Deferred` (user chose "Stop — I'll push manually"). Inline gate body and `.githooks/pre-push` body must stay byte-equivalent; divergence is pinned by `tests/test_meso/test_auto_prompt_templates.py::TestMergePromptPushGate::test_hook_and_prompt_agree_on_gate_body` (which compares non-blank non-comment lines in both bodies and fails on drift in either direction) plus 3 supporting assertions on the upstream-first logic, the testmon fallback, and the prompt structure. Prompt: `src/deviate/prompts/commands/deviate-merge.md` (v2.3.0 → v2.4.0). Spec mirrors updated: `specs/DeviaTDD-architecture.md` (Merge bullet, new `**Push gate + opt-in push (v2.4.0)**` sub-bullet) and `specs/DeviaTDD-api.md` (new `**/deviate-merge push behavior (v2.4.0)**` entry under the `deviate merge` reference).
81
84
 
82
85
  ### Fixed
86
+ - **Research and PRD no longer inflate scope or paper over artifact disagreement (GH-139).** `populate_constitution` is gated on greenfield / placeholder TBD seed and must not rewrite a real constitution. PRD halts with `UPSTREAM_INCONSISTENT` when `design.md` and `data-model.md` disagree on a field, state, or storage type, and `SCOPE_DRIFT` when a required item has no approved upstream Required source. Recommended/Deferred mitigations are not promoted into FRs/NFRs/ACs. Authorization/ownership, amount + fee, reserve/consume/release, skip_locked, one vendor create, UNKNOWN vs fail-open, and typed destination snapshot stay Required. Pinned by `tests/test_macro/test_scope_gates.py` and the parallel-withdrawal fixture under `tests/fixtures/scope_gates/`.
87
+ - **Derived manual slash commands no longer duplicate `$ARGUMENTS`.** The six overlapping auto cores (`explore`, `research`, `prd`, `shard`, `plan`, `tasks`) dropped the trailing `<user_input>$ARGUMENTS</user_input>` block. That seam belongs only on the per-phase overlay, so install no longer expands the operator input twice. Pinned by `tests/test_core/test_commands.py::TestManualDerivationFromAutoCore::test_derived_overlapping_phases_have_one_arguments_seam`.
88
+
83
89
  - **Pi spawn no longer passes `--no-extensions` (ISS-ADH-033 fallout, regression from ISS-ADH-026).** Extension-registered providers (such as `pi-commandcode-provider`) must load so pi resolves a saved default model from that provider. With `--no-extensions`, headless `deviate meso/micro` runs silently fell back to the first model the operator's env keys authenticate (observed: `deepseek/deepseek-v4-pro` → HTTP 402 `Insufficient Balance`). Lean tool policy is unchanged: `--tools read,bash,edit,write`, `--no-skills`, optional `--skill`. Specs: `specs/DeviaTDD-api.md` (7), `specs/DeviaTDD-architecture.md` §10. Pinned by `tests/test_core/test_agent.py`, `tests/core/test_agent.py`, and `tests/e2e/test_pi_spawn_lean_tool_schema.bats`.
84
90
  - **`deviate setup` on a TTY always picks exactly one agent and lists every optional pack.** Bare `setup` no longer fans out to every leftover `.claude/` / `.opencode/` / … directory via `detect_agents`, and no longer silently uses `detected[0]`. `--agent <name>` pins that one target without prompting (including when leftover dirs exist). On a TTY, omitted `--agent` always shows the Rich agent menu (`AGENT_CHOICES`; existing `[agent].backend` is the default highlight, not an auto-skip). Non-TTY without `--agent` reuses a persisted backend or fail-closes with `NO_AGENT_SELECTED`. The optional-pack prompt is a Rich selector that names every pack (`merge`, `pr`, `review`, `walkthrough`, `html`, `hotfix`, `triage`, `prune`, `e2e`) plus `none` / `all-optional` (default `none`); `--packs` stays for scripts. `_resolve_install_agents` always returns a one-element list. Pinned by `tests/test_cli/test_setup.py::TestSetupPacks` / `::TestSetupPerAgentInstall` and `tests/e2e/test_setup_config_rework.bats`.
85
91
  - **`deviate setup --agent X` now installs slash commands and the packaged `deviatdd` skill only for X.** Previously setup wrote into all five of `.claude/`, `.opencode/`, `.factory/`, `.pi/`, and `.omp/` regardless of `--agent`; the flag only persisted `[agent].backend`. `droid` still writes `.factory/` only. Unknown `--agent` values stay fail-closed. Pinned by `tests/test_cli/test_setup.py::TestSetupSelectedAgentIsolation`.
@@ -0,0 +1,353 @@
1
+ Metadata-Version: 2.5
2
+ Name: deviatdd
3
+ Version: 2.24.2
4
+ Summary: DeviaTDD CLI — agent orchestration framework
5
+ Project-URL: Homepage, https://github.com/wernerbisschoff/deviatdd
6
+ Project-URL: Repository, https://github.com/wernerbisschoff/deviatdd
7
+ Project-URL: Issues, https://github.com/wernerbisschoff/deviatdd/issues
8
+ Project-URL: Changelog, https://github.com/wernerbisschoff/deviatdd/blob/main/CHANGELOG.md
9
+ Author: Werner Bisschoff
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Keywords: agent-orchestration,ai-coding-agents,spec-driven-development,tdd,test-driven-development
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3 :: Only
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Topic :: Software Development :: Testing
22
+ Classifier: Typing :: Typed
23
+ Requires-Python: >=3.13
24
+ Requires-Dist: pydantic>=2.0
25
+ Requires-Dist: pyyaml>=6.0.3
26
+ Requires-Dist: rich>=13.0
27
+ Requires-Dist: typer>=0.12
28
+ Provides-Extra: dev
29
+ Requires-Dist: pytest-testmon>=2.2; extra == 'dev'
30
+ Requires-Dist: pytest>=8.0; extra == 'dev'
31
+ Requires-Dist: ruff>=0.4; extra == 'dev'
32
+ Description-Content-Type: text/markdown
33
+
34
+ <p align="center">
35
+ <img src="deviatdd.png" alt="DeviaTDD logo" width="435"/>
36
+ </p>
37
+
38
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
39
+ [![Python 3.13+](https://img.shields.io/badge/python-3.13+-blue.svg)](https://www.python.org/downloads/)
40
+ [![uv](https://img.shields.io/badge/managed%20with-uv-purple.svg)](https://docs.astral.sh/uv/)
41
+ [![PyPI](https://img.shields.io/pypi/v/deviatdd)](https://pypi.org/project/deviatdd/)
42
+
43
+ # DeviaTDD
44
+
45
+ > **An agent-orchestration framework that runs your entire TDD loop — explore, spec, red, green, refactor — with two hard human-in-the-loop gates (design/contract review and merge review); shard is a soft review.**
46
+
47
+ DeviaTDD is a CLI that coordinates AI coding agents across the full Test-Driven Development lifecycle, from problem framing through documentation. It ships with a four-layer architecture (Product · Macro · Meso · Micro), append-only ledgers, worktree isolation, and path-scoped GREEN writes. The system is **agent-agnostic** — Claude Code, OpenCode, Pi, Droid, the Factory Droid IDE, and Oh-My-Pi are first-class backends today.
48
+
49
+ ---
50
+
51
+ ## Why DeviaTDD?
52
+
53
+ Most AI coding agents stop at "write code that passes." DeviaTDD goes further — it runs the entire engineering loop with verification, not just generation:
54
+
55
+ | Without DeviaTDD | With DeviaTDD |
56
+ |------------------|---------------|
57
+ | Agent writes code, you review after | Two hard human gates (design/contract review, merge); shard is a soft review |
58
+ | Test edits slip in silently during "GREEN" | JUDGE flags out-of-scope writes to `tests/`, `specs/`, or protected modules as `COMPLIANCE_VIOLATION` |
59
+ | Lost track of which task is in which state | Append-only JSONL ledgers derive canonical state |
60
+ | Branch drift between parallel features | Worktree isolation + append-only ledger merge driver |
61
+ | Locked to one agent vendor | First-class support for Claude, OpenCode, Pi, Droid, Factory, and OMP |
62
+ | Specs drift from implementation | Spec-enriched issue files with FR traceability |
63
+
64
+ ---
65
+
66
+ ## Quickstart
67
+
68
+ ```bash
69
+ # Install (requires Python 3.13+ and uv).
70
+ # The PyPI package is `deviatdd`; the CLI binary it installs is `deviate`.
71
+
72
+ uv tool install deviatdd
73
+ deviate --version
74
+
75
+ # Writes .deviate/, persists the agent, installs default packs
76
+ # (including deviate-init) and the shared deviatdd skill.
77
+ # Does not write specs/constitution.md, mise.toml, or specs/issues.jsonl.
78
+ deviate setup --agent pi # or: claude | opencode | droid | factory | omp | codex
79
+ ```
80
+
81
+ `--agent` skips **only** the agent picker. A TTY still asks `[l]ocal/[g]lobal`, then claim-remote `[y]es/[n]o` (default `n`), then a pack checklist (Enter = none). Skip those with `--agent-export-mode local|global --packs none --no-claim-remote`.
82
+
83
+ ### Where files go (Pi)
84
+
85
+ | Mode | Prompt templates | Skill |
86
+ |------|------------------|-------|
87
+ | **local** | `<repo>/.pi/prompts` | `<repo>/.pi/skills/deviatdd` |
88
+ | **global** | `~/.pi/agent/prompts` | `~/.pi/agent/skills/deviatdd` |
89
+
90
+ Global still writes **cwd** `.deviate/`. Other agents: local is `<repo>/.<agent>/…`; global is `~/.<agent>/…` (Codex: `~/.agents/skills`).
91
+
92
+ ### First hour
93
+
94
+ Open the agent and run **`/deviate-init` as the first prompt**. That scaffolds `specs/constitution.md`, `mise.toml`, and `specs/issues.jsonl`, skipping anything already present.
95
+
96
+ - **Pi:** `/deviate-init` is a prompt template from `deviate-init.md`, **not** the `deviatdd` skill. The skill is `/skill:deviatdd` (micro loop).
97
+ - **Codex:** the same prompt, installed as the `deviate-init` skill.
98
+ - **No agent:** `deviate init pre && deviate init post` stages constitution / mise / `issues.jsonl`; it does **not** commit.
99
+
100
+ Empty `CLAUDE.md` / `AGENTS.md` after setup is expected.
101
+
102
+ Then drive the rest of the lifecycle from inside your agent. Each phase emits a single artifact; **`post` often commits it** (you did not type `git commit`). At the two gates the workflow pauses for human review. See [Phase transparency](#phase-transparency) for which commands commit, spawn, or fail closed.
103
+
104
+ **Product layer** *(optional, for cross-product framing — skip if your repo only ships single features):*
105
+
106
+ ```
107
+ /deviate-flows "Onboard a new tenant" # FLOW-01 customer flow → specs/_product/flows/
108
+ /deviate-architecture # FLOW-02 cross-epic architecture → specs/_product/architecture.md
109
+ /deviate-release "Ship the v2 onboarding" # FLOW-03 release plan → specs/_product/release-next.md
110
+ ```
111
+
112
+ **Macro** — pick one of two paths. Full path for new features, the `adhoc` shortcut for low/medium-complexity tasks:
113
+
114
+ ```
115
+ # Full path: feature scoping with a Gate 1 design review
116
+ /deviate-explore "Add user authentication via OAuth2"
117
+ /deviate-research # ← Gate 1: review design.md + data-model.md
118
+ /deviate-prd
119
+ /deviate-shard # ← review every ISS-NNN spec-enriched issue (soft review — system auto-advances to Meso; not a hard HITL gate)
120
+
121
+ # — or — Adhoc shortcut for low/medium-complexity work
122
+ /deviate-adhoc "Add a /healthz endpoint" # condenses explore+research+prd+shard into one issue
123
+ ```
124
+
125
+ **Meso — claim the issue and enter its worktree.** Default meso uses a worktree. `claim_remote` defaults **false** (local claim only; no push lock). Path A coworker flow stays in this clone: `deviate meso run --no-setup --local`. Meso slash commands run inside the per-issue worktree; claim first, then `cd` in:
126
+
127
+ ```
128
+ # From the main checkout (NOT inside a worktree):
129
+ deviate specify # auto-claim the next unblocked BACKLOG issue, create .worktrees/<branch>/, print the path
130
+ # or, to claim a specific issue by ID:
131
+ deviate specify ISS-001-007 # claim that exact issue; same worktree creation
132
+ cd $(deviate specify ISS-001-007 2>&1 | grep '^WORKTREE' | awk '{print $2}')
133
+ # then re-open the agent inside the worktree
134
+
135
+ # Path A (this clone, no worktree, no remote lock):
136
+ deviate meso run --no-setup --local --issue ISS-001-007
137
+ ```
138
+
139
+ **Meso** — with the worktree active, decompose into tasks. `tasks.md` is the human's execution blueprint:
140
+
141
+ ```
142
+ # Now INSIDE the worktree:
143
+ /deviate-plan # per-issue localized research → plan.md
144
+ /deviate-tasks # → tasks.md: 4-8 tasks, each with Verification CLI
145
+ # TDD tasks flow to the Red→Green→Judge→Refactor loop;
146
+ # IMMEDIATE tasks flow to /deviate-execute
147
+ ```
148
+
149
+ **Micro** — for each task, pick the loop that fits:
150
+
151
+ ```
152
+ # TDD cycle (default for TDD-typed tasks)
153
+ /deviate-red T001 # write a failing test
154
+ /deviate-green T001 # implement it; GREEN is bounded to src/ + permitted paths
155
+ /deviate-judge T001 # Gate decision; on rejection, the
156
+ # Green → Judge → Green loop kicks in
157
+ # (revert + <train_feedback> → re-GREEN, up to 3x)
158
+ /deviate-refactor T001 # only on JUDGE_PASS
159
+
160
+ # — or — Direct path for low-complexity tasks (boilerplate, config, trivial fixes)
161
+ /deviate-execute T002 # skips the TDD cycle; still has its own JUDGE pass
162
+ ```
163
+
164
+ **Release** — close the loop. `/deviate-pr`, `/deviate-review`, and `/deviate-walkthrough` are **optional packs** (not in default setup):
165
+
166
+ ```
167
+ /deviate-pr T001 # conventional-commit PR; merge appends COMPLETED
168
+ /deviate-review # ← Gate 3: comments-only PR scan (not a merge gate)
169
+ /deviate-walkthrough # four-look map (brief, tests, production vs checks, command)
170
+ ```
171
+
172
+ **Or, run the unattended one-shot pipeline** — the top-level
173
+ `deviate run` is the unattended drain that *replaces* the Meso · Claim,
174
+ Meso · Plan, Meso · Tasks, and Micro steps above with a single command.
175
+ It discovers the next BACKLOG issue, claims it (creating the per-issue
176
+ worktree), runs SPECIFY → PLAN → TASKS in the worktree, then drains
177
+ every PENDING task through the TDD cycle. Under the hood it chains
178
+ `deviate meso run` with `deviate micro run --all` inside the created
179
+ worktree. Use it when you trust the agent to run end-to-end; use the
180
+ manual Meso + Micro blocks above when you want to review plan.md and
181
+ tasks.md between phases:
182
+
183
+ ```
184
+ deviate run # full pipeline (meso + micro --all)
185
+ deviate run --issue ISS-001-007 # target a specific BACKLOG issue
186
+ deviate run --profile fast # skip JUDGE + REFACTOR in the micro drain
187
+ deviate run --no-judge --no-refactor # same, via boolean overrides
188
+ ```
189
+
190
+ For per-task or `deviate micro run --all` invocations inside an
191
+ already-claimed worktree, see [`deviate micro run`](https://github.com/wernerbisschoff/deviatdd):
192
+ top-level `run` does both meso and micro for you; the per-task
193
+ dispatcher is `deviate micro run <task-id>` and the queue drain is
194
+ `deviate micro run --all`.
195
+
196
+ The full lifecycle takes you from a problem statement to merged, tested code with a documented audit trail.
197
+ ---
198
+
199
+ ## Architecture: Four Layers, Two Gates
200
+
201
+ ```mermaid
202
+ flowchart TB
203
+ subgraph Product["Product Layer — Customer & Release Framing (optional)"]
204
+ F[flows] --> A[architecture]
205
+ A --> R[release]
206
+ end
207
+
208
+ subgraph Macro["Macro Layer — Feature Scoping"]
209
+ E[explore] --> Re[research]
210
+ Re --> P[prd]
211
+ P --> S[shard]
212
+ E -.->|low/medium complexity| Ad[adhoc]
213
+ end
214
+
215
+ subgraph Meso["Meso Layer — Issue Engineering"]
216
+ Pl[plan] --> T[tasks]
217
+ end
218
+
219
+ subgraph Micro["Micro Layer — Per-Task Loop"]
220
+ T --> Re1[red]
221
+ Re1 --> G1[green]
222
+ G1 --> J{judge}
223
+ J -->|violation| G1
224
+ J -->|pass| Rf[refactor]
225
+ Rf -.->|HITL Gate 3| Done[merged]
226
+ end
227
+
228
+ subgraph MicroAlt["Micro Layer — Direct Path (low-complexity tasks)"]
229
+ T -.->|complexity ≤ 3| Ex[execute]
230
+ end
231
+
232
+ style F fill:#f5e1f5
233
+ style A fill:#f5e1f5
234
+ style R fill:#f5e1f5
235
+ style E fill:#e1f5e1
236
+ style Re fill:#e1f5e1
237
+ style P fill:#e1f5e1
238
+ style S fill:#e1f5e1
239
+ style Ad fill:#e1f5e1
240
+ style Pl fill:#e1e7f5
241
+ style T fill:#e1e7f5
242
+ style Re1 fill:#f5e1e1
243
+ style G1 fill:#f5e1e1
244
+ style J fill:#f5e1e1
245
+ style Rf fill:#f5e1e1
246
+ style Ex fill:#f5e1e1
247
+ ```
248
+
249
+ ### Workflow at a Glance
250
+
251
+ | Phase | Slash command | Artifact committed | What the human reviews / decides |
252
+ |-------|---------------|--------------------|----------------------------------|
253
+ | **Bootstrap · Setup** | `deviate setup [--agent <name>]` | `.deviate/config.toml`, default execution-layer packs (macro + meso + micro, including `deviate-init`), shared `deviatdd` skill, selected-agent `/deviate-*` commands | Confirm the one agent install. `--agent` skips only the agent picker. TTY still asks `[l]ocal/[g]lobal`, claim-remote `[y]es/[n]o` (default `n`), then a pack checklist (Enter = none). |
254
+ | **Bootstrap · Init** | `/deviate-init` | `specs/constitution.md`, `mise.toml`, `specs/issues.jsonl` (skips files already present) | **First prompt after setup.** Pi: prompt template from `deviate-init.md` (not the `deviatdd` skill). Codex: the `deviate-init` skill. Optional no-agent path: `deviate init pre && deviate init post` (stages; does not commit). Empty `CLAUDE.md` / `AGENTS.md` after setup is expected. |
255
+ | **Product · Flows** | `/deviate-flows` | `specs/_product/flows/flows-<domain>.md` + updated `specs/_product/flows/index.md` | Confirm the actor, job-to-be-done, and trigger are right; commit the flow file when asked. |
256
+ | **Product · Architecture** | `/deviate-architecture` | `specs/_product/architecture.md`, `specs/_product/domain-model.md` | Reads existing flows; classify the change as Local / Context-Bridging / Context-Creating; commit when satisfied. |
257
+ | **Product · Release** | `/deviate-release` | `specs/_product/release-next.md` (overrides previous) | Supply a release-goal sentence; confirm the Included Flows / Included Work / Acceptance tables reflect that goal; commit. |
258
+ | **Macro · Explore** | `/deviate-explore` | `specs/{epic}/explore.md` (raw codebase scan — what exists, not what to do) | Does the scan cover the right subsystems? Commit to advance. |
259
+ | **Macro · Research** *(Gate 1)* | `/deviate-research` | `specs/{epic}/design.md`, `specs/{epic}/data-model.md` | **Gate 1**: approve the design + data-model before PRD synthesis. |
260
+ | **Macro · PRD** | `/deviate-prd` | `specs/{epic}/prd.md` (FR list + acceptance criteria) | Verify each FR is testable; commit. |
261
+ | **Macro · Shard** | `/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 | Review every sharded issue for completeness, edge cases, and scope (soft review — the system auto-advances to Meso and does not block). Issues are born as full specs — the user-facing *spec content* is embedded here, but **claiming and worktree creation is a separate CLI step (`deviate specify`)** that runs after `/deviate-shard` and before the meso slash commands below. |
262
+ | **Meso · Specify** | `deviate specify [ISS-NNN-NNN]` | A git worktree at `.worktrees/<branch>/` and a claim entry appended to `specs/issues.jsonl`. `claim_remote` defaults **false** (local only). Push-as-lock is opt-in (`--claim-remote` / `claim_remote = true`). | The setup step before plan/tasks. With no argument, auto-claims the next unblocked BACKLOG issue; with an explicit ID, claims that issue. Stops after the worktree is created — does NOT advance session state and does NOT run plan or tasks. `cd` into the printed worktree path before running any other meso slash command. Path A: `deviate meso run --no-setup --local` stays in this clone. |
263
+ | **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. |
264
+ | **Meso · Plan** | `/deviate-plan` | `specs/{epic}/issues/ISS-NNN/plan.md` (per-issue localized research, workstation file structure) | **Must be invoked inside the worktree that `deviate specify` created.** Review the workstation mapping and the integration surface listed; commit. Optional when shard already embedded spec sections. |
265
+ | **Meso · Tasks** | `/deviate-tasks` | `specs/{epic}/issues/ISS-NNN/tasks.md` + `specs/{epic}/tasks.jsonl` (append-only ledger) | **Must be invoked inside the same worktree.** 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`. |
266
+ | **Micro · Red** | `/deviate-red <task-id>` | A failing test (no production code) | Agent-internal; you see the test on commit. |
267
+ | **Micro · Green** | `/deviate-green <task-id>` | Production code that passes the test | Agent-internal; GREEN is constrained to `src/` + permitted paths, and JUDGE checks scope before advancing. |
268
+ | **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. |
269
+ | **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. |
270
+ | **Micro · Execute** | `/deviate-execute <task-id>` | A targeted change for `direct` / `e2e` tasks | Skips the TDD cycle; still has its own JUDGE pass. |
271
+ | **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`. |
272
+ | **Release** | `/deviate-pr <task-id>` | A conventional-commit PR | Optional pack. Open the PR; on merge, the issue ledger is appended with `COMPLETED`. |
273
+ | **Release** *(Gate 3)* | `/deviate-review` | Comments-only PR scan (optional pack) | **Gate 3**: comments only by default (stdout / GitHub COMMENT). Not a merge gate. Opt-in `--apply` is CRITICAL-only. |
274
+ | **Walkthrough** | `/deviate-walkthrough` | Four-look map (optional pack; no commit) | Brief location, test hunks, production hunks vs named checks, command to run those checks. Does not approve or auto-edit. |
275
+ | **Cleanup** | `/deviate-prune` | Spy/impl tests thinned; `plan.md` / `tasks.md` and JSONL ledgers unchanged | Manual honeycomb pass for **one** issue. Drops `spy` / `impl` (marks, name tags, or untagged internal probes); keeps `behavioral` / `ac` and public input-to-output. Never deletes `plan.md`, `tasks.md`, `explore.md`, `prd.md`, or `issues/*.md`. Never touches `issues.jsonl`, `tasks.jsonl`, or `flows.jsonl`. Manual invoke only — not hooked into COMPLETED, `--all`, or the skill success loop. |
276
+
277
+ Operational tools (no gate): `/deviate-triage`, `/deviate-constitution`, `/deviate-hotfix`. `/deviate-prune` is the manual honeycomb test-thinning surface (thin CLI `deviate prune pre` / `post`; the slash command commits the cleanup).
278
+
279
+ ---
280
+
281
+ ## Phase transparency
282
+
283
+ `--help` and this table say which phases **commit**, **spawn an agent**, or **fail closed**. `pre` injects a JSON contract to the agent; `post` validates, writes, and often commits (you did not type `git commit`). Slash prompts tell the agent to run `pre`/`post`; auto prompts tell the agent not to — the orchestrator does. Codex spawn is `codex exec --sandbox workspace-write --ask-for-approval never` (`src/deviate/core/agent.py`). `meso run` and `micro run` nest that spawn.
284
+
285
+ Default setup installs **macro + meso + micro** plus the shared `deviatdd` skill. Optional packs stay off until selected: `product` (bundle), `merge`, `pr`, `review`, `walkthrough`, `html`, `hotfix`, `triage`, `prune`, `e2e`.
286
+
287
+ | Phase | Does | Commits | Debug a fail |
288
+ |-------|------|---------|--------------|
289
+ | **setup** | Writes `.deviate/`, persists one agent, installs default packs + `deviatdd`. `claim_remote` defaults **false**. `--agent` skips only the agent picker. | No. | Non-TTY without `--agent` → `NO_AGENT_SELECTED`. Unknown `--packs` → fail closed. Named agent missing → `AGENT_NOT_INSTALLED`. |
290
+ | **adhoc** | One spec-enriched issue + `FR-ADHOC-NNN` + a BACKLOG ledger row. | Yes — `post` commits artifacts. Record stays BACKLOG. | Missing problem statement; complexity HIGH without `--force`. |
291
+ | **meso** | Default: worktree + claim, then PLAN → TASKS (spawns the agent). Path A: `deviate meso run --no-setup --local` stays in this clone and skips the remote lock. | Yes — claim, `plan post`, `tasks post`. | `MESO_PLAN_INVALID`, `MESO_TASKS_INVALID`, `NO_CLAIMABLE_ISSUES`. |
292
+ | **micro** | RED → GREEN → JUDGE → REFACTOR (or EXECUTE). Spawns the agent each phase. `--profile fast` skips **JUDGE and REFACTOR**. `deviate micro run --review` is a **TTY pause before the phase commit**, not `/deviate-review`. Skill argument `review` is an agent loop policy — never pass `--review` from the skill. | Yes — each phase. RED uses `git commit --no-verify`. | `REVIEW_REQUIRES_TTY`, `TRAIN_EXHAUSTED`, `COMMIT_FAILED`. `NO_PENDING_TASKS` (exit 1) means the queue is empty. |
293
+ | **review** | Optional pack. `/deviate-review` is **comments-only** by default. Not a merge gate. | No (unless opt-in `--apply` landed a CRITICAL fix). | Missing named checks → `brief incomplete`. Unclaimed plan ACs stay comment input (`uncovered`); not a fail-close. |
294
+ | **walkthrough** | Optional pack. Four-look map: brief location, test hunks, production hunks vs named checks, command to run those checks. | No. | Missing brief / named checks: stop. |
295
+
296
+ Why each phase exists — and the research citations — live in [`docs/rationale.md`](docs/rationale.md).
297
+
298
+ ---
299
+
300
+ ## Troubleshooting
301
+
302
+ **`uv: command not found`** — Install [uv](https://docs.astral.sh/uv/) first
303
+ (it's the project's mandated package manager per
304
+ [`specs/constitution.md`](specs/constitution.md)). macOS / Linux:
305
+ `curl -LsSf https://astral.sh/uv/install.sh | sh`.
306
+
307
+ **`deviate: command not found` after `uv tool install deviatdd`** — Verify
308
+ the install landed: `uv tool list | grep deviatdd`. Reinstall if missing:
309
+ `uv tool install --reinstall deviatdd`. The PyPI package name and the CLI
310
+ binary name differ — that's intentional (see [Quickstart](#quickstart)).
311
+
312
+ **`deviate setup` runs but `/deviate-*` commands don't appear in the
313
+ agent** — Slash commands are installed to `<workdir>/.claude/commands/`,
314
+ `.opencode/commands/`, `.omp/commands/`, `.factory/commands/`,
315
+ `.pi/prompts/`, and (Pi global) `~/.pi/agent/prompts/`. Verify the
316
+ directory exists and is readable, then restart the agent so it picks up
317
+ the new commands.
318
+
319
+ **Empty `CLAUDE.md` / `AGENTS.md` after setup** — Expected. Setup creates
320
+ the files (and the symlink) but does not seed project guidance. Init
321
+ scaffolds `specs/constitution.md`, `mise.toml`, and `specs/issues.jsonl`.
322
+
323
+ **`--agent` did not skip the local/global, lock, or pack prompts** —
324
+ `--agent` skips **only** the agent picker. Use
325
+ `--agent-export-mode local|global --packs none --no-claim-remote` to skip
326
+ the TTY extras.
327
+
328
+ **`/deviate-plan` (or `/deviate-tasks`) picks up the wrong issue, claims
329
+ "no active issue", or shows stale context** — Meso slash commands must be
330
+ invoked from inside the per-issue worktree that `deviate specify` (or
331
+ `deviate run`) created. From the main checkout, run `deviate specify`
332
+ (or `deviate specify ISS-NNN-NNN` for a specific issue), `cd` into the
333
+ `.worktrees/<branch>/` path it prints, and re-open the agent there
334
+ before running `/deviate-plan` or `/deviate-tasks`.
335
+
336
+ **`mise run publish` fails with `PYPI_API_TOKEN is not set`** — The task
337
+ loads `.env` from the project root. `.env` must contain
338
+ `PYPI_API_TOKEN=pypi-...`. `.env.example` documents the variable name;
339
+ `.env` itself is gitignored.
340
+
341
+ **Agent backend not installed** — `deviate setup --agent <name>` scaffolds
342
+ the project without the agent present, but invoking `/deviate-*` slash
343
+ commands requires the agent to be installed. Install Claude Code / OpenCode
344
+ / Pi / Droid / Factory / OMP first per their respective install
345
+ instructions.
346
+
347
+ For development-setup details, see
348
+ [`CONTRIBUTING.md`](CONTRIBUTING.md#development-setup) and
349
+ [`specs/constitution.md`](specs/constitution.md).
350
+
351
+ ## License
352
+
353
+ [MIT](LICENSE) © 2026 Werner Bisschoff