deviatdd 2.24.1__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 (495) hide show
  1. {deviatdd-2.24.1 → deviatdd-2.24.2}/CHANGELOG.md +5 -0
  2. {deviatdd-2.24.1 → deviatdd-2.24.2}/PKG-INFO +1 -1
  3. {deviatdd-2.24.1 → deviatdd-2.24.2}/pyproject.toml +1 -1
  4. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/prd.md +7 -7
  5. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/DeviaTDD-api.md +3 -3
  6. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/DeviaTDD-architecture.md +3 -3
  7. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/explore.md +28 -11
  8. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/plan.md +0 -6
  9. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/prd.md +35 -11
  10. deviatdd-2.24.2/src/deviate/prompts/auto/research.md +237 -0
  11. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/shard.md +20 -25
  12. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/tasks.md +0 -6
  13. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-research.md +1 -1
  14. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/core/macro-shared.md +1 -1
  15. deviatdd-2.24.2/tests/fixtures/scope_gates/floor_bracket_items.yaml +121 -0
  16. deviatdd-2.24.2/tests/fixtures/scope_gates/sibling_withdrawal_inventory.md +14 -0
  17. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_commands.py +11 -0
  18. deviatdd-2.24.2/tests/test_macro/test_scope_gates.py +263 -0
  19. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_meso/test_auto_prompt_templates.py +157 -12
  20. {deviatdd-2.24.1 → deviatdd-2.24.2}/uv.lock +1 -1
  21. deviatdd-2.24.1/src/deviate/prompts/auto/research.md +0 -210
  22. {deviatdd-2.24.1 → deviatdd-2.24.2}/.env.example +0 -0
  23. {deviatdd-2.24.1 → deviatdd-2.24.2}/.gitattributes +0 -0
  24. {deviatdd-2.24.1 → deviatdd-2.24.2}/.githooks/pre-commit +0 -0
  25. {deviatdd-2.24.1 → deviatdd-2.24.2}/.githooks/pre-push +0 -0
  26. {deviatdd-2.24.1 → deviatdd-2.24.2}/.github/ISSUE_TEMPLATE/bug.md +0 -0
  27. {deviatdd-2.24.1 → deviatdd-2.24.2}/.github/ISSUE_TEMPLATE/feature.md +0 -0
  28. {deviatdd-2.24.1 → deviatdd-2.24.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  29. {deviatdd-2.24.1 → deviatdd-2.24.2}/.github/workflows/ci.yml +0 -0
  30. {deviatdd-2.24.1 → deviatdd-2.24.2}/.github/workflows/release.yml +0 -0
  31. {deviatdd-2.24.1 → deviatdd-2.24.2}/.gitignore +0 -0
  32. {deviatdd-2.24.1 → deviatdd-2.24.2}/AGENTS.md +0 -0
  33. {deviatdd-2.24.1 → deviatdd-2.24.2}/CLAUDE.md +0 -0
  34. {deviatdd-2.24.1 → deviatdd-2.24.2}/CODE_OF_CONDUCT.md +0 -0
  35. {deviatdd-2.24.1 → deviatdd-2.24.2}/CONTRIBUTING.md +0 -0
  36. {deviatdd-2.24.1 → deviatdd-2.24.2}/LICENSE +0 -0
  37. {deviatdd-2.24.1 → deviatdd-2.24.2}/README.md +0 -0
  38. {deviatdd-2.24.1 → deviatdd-2.24.2}/SECURITY.md +0 -0
  39. {deviatdd-2.24.1 → deviatdd-2.24.2}/deviatdd.png +0 -0
  40. {deviatdd-2.24.1 → deviatdd-2.24.2}/docs/rationale.md +0 -0
  41. {deviatdd-2.24.1 → deviatdd-2.24.2}/mise.toml +0 -0
  42. {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat/001-deviate-cli-python/008-meso-macro-automated-orchestration.md +0 -0
  43. {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat/adhoc/006-context-cli-integration.md +0 -0
  44. {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat/adhoc/017-optional-push-as-lock.md +0 -0
  45. {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-001-deviate-cli-python-001-cli-initialization-governance-provisioning-pr-11.md +0 -0
  46. {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-001-deviate-cli-python-003-meso-layer-specification-task-decomposition.md +0 -0
  47. {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-001-deviate-cli-python-004-micro-layer-tdd-sandbox-execution.md +0 -0
  48. {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-001-deviate-cli-python-005-cli-architecture-realignment-skill-integration.md +0 -0
  49. {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-001-deviate-cli-python-007-macro-meso-parity-backward-compatibility.md +0 -0
  50. {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-002-deviatdd-gap-analysis-001-foundation-cli-infrastructure.md +0 -0
  51. {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-002-deviatdd-gap-analysis-003-fast-path-commands.md +0 -0
  52. {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-002-deviatdd-gap-analysis-004-governance-inspection.md +0 -0
  53. {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-adhoc-001-streaming-pipeline-monitor.md +0 -0
  54. {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-adhoc-008-ast-phase-prioritization.md +0 -0
  55. {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-adhoc-017-two-counter-tdd-retry.md +0 -0
  56. {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat_002-deviatdd-gap-analysis_001-foundation-cli-infrastructure.md +0 -0
  57. {deviatdd-2.24.1 → deviatdd-2.24.2}/scripts/benchmark_lmstudio.py +0 -0
  58. {deviatdd-2.24.1 → deviatdd-2.24.2}/scripts/next_version.py +0 -0
  59. {deviatdd-2.24.1 → deviatdd-2.24.2}/scripts/verify_install.py +0 -0
  60. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/001-cli-initialization-governance-provisioning/manifest-t001.json +0 -0
  61. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/001-cli-initialization-governance-provisioning/manifest-t002.json +0 -0
  62. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/001-cli-initialization-governance-provisioning/manifest-t004.json +0 -0
  63. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/001-cli-initialization-governance-provisioning/spec.md +0 -0
  64. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/001-cli-initialization-governance-provisioning/tasks.md +0 -0
  65. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/002-macro-layer-state-ledger-management/spec.md +0 -0
  66. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/002-macro-layer-state-ledger-management/tasks.md +0 -0
  67. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/003-meso-layer-specification-task-decomposition/spec.md +0 -0
  68. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/003-meso-layer-specification-task-decomposition/tasks.md +0 -0
  69. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/004-micro-layer-tdd-sandbox-execution/spec.md +0 -0
  70. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/004-micro-layer-tdd-sandbox-execution/tasks.jsonl +0 -0
  71. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/004-micro-layer-tdd-sandbox-execution/tasks.md +0 -0
  72. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/005-cli-architecture-realignment-skill-integration/spec.md +0 -0
  73. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/005-cli-architecture-realignment-skill-integration/tasks.md +0 -0
  74. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/007-macro-meso-parity-backward-compatibility/spec.md +0 -0
  75. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/007-macro-meso-parity-backward-compatibility/tasks.md +0 -0
  76. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/008-meso-macro-automated-orchestration/spec.md +0 -0
  77. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/008-meso-macro-automated-orchestration/tasks.jsonl +0 -0
  78. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/008-meso-macro-automated-orchestration/tasks.md +0 -0
  79. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/data-model.md +0 -0
  80. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/design.md +0 -0
  81. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/explore.md +0 -0
  82. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/001-cli-initialization-governance-provisioning.md +0 -0
  83. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/002-macro-layer-state-ledger-management.md +0 -0
  84. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/003-meso-layer-specification-task-decomposition.md +0 -0
  85. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/004-micro-layer-tdd-sandbox-execution.md +0 -0
  86. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/005-cli-architecture-realignment-skill-integration.md +0 -0
  87. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/006-state-persistence-concurrency-safety.md +0 -0
  88. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/007-macro-meso-parity-backward-compatibility.md +0 -0
  89. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/008-meso-macro-automated-orchestration.md +0 -0
  90. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/prd.md +0 -0
  91. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/001-foundation-cli-infrastructure/spec.md +0 -0
  92. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/001-foundation-cli-infrastructure/tasks.jsonl +0 -0
  93. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/001-foundation-cli-infrastructure/tasks.md +0 -0
  94. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/003-fast-path-commands/spec.md +0 -0
  95. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/003-fast-path-commands/tasks.jsonl +0 -0
  96. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/003-fast-path-commands/tasks.md +0 -0
  97. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/004-governance-inspection/spec.md +0 -0
  98. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/004-governance-inspection/tasks.jsonl +0 -0
  99. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/004-governance-inspection/tasks.md +0 -0
  100. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/005-micro-layer-integrity/spec.md +0 -0
  101. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/005-micro-layer-integrity/tasks.jsonl +0 -0
  102. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/005-micro-layer-integrity/tasks.md +0 -0
  103. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/data-model.md +0 -0
  104. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/design.md +0 -0
  105. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/explore.md +0 -0
  106. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/issues/001-foundation-cli-infrastructure.md +0 -0
  107. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/issues/002-context-pipeline.md +0 -0
  108. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/issues/003-fast-path-commands.md +0 -0
  109. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/issues/004-governance-inspection.md +0 -0
  110. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/issues/005-micro-layer-integrity.md +0 -0
  111. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/plan-tdd-integration-gap.md +0 -0
  112. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/prd.md +0 -0
  113. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/003-graphite-cli-integration/explore.md +0 -0
  114. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/004-per-task-security-profile/issues/001-security-profile-and-judge-checks.md +0 -0
  115. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/001-verification-mode-metadata/plan.md +0 -0
  116. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/001-verification-mode-metadata/tasks.jsonl +0 -0
  117. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/001-verification-mode-metadata/tasks.md +0 -0
  118. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/002-task-acceptance-traceability/plan.md +0 -0
  119. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/002-task-acceptance-traceability/tasks.jsonl +0 -0
  120. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/002-task-acceptance-traceability/tasks.md +0 -0
  121. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/data-model.md +0 -0
  122. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/design.md +0 -0
  123. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/explore.md +0 -0
  124. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/issues/001-verification-mode-metadata.md +0 -0
  125. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/issues/002-task-acceptance-traceability.md +0 -0
  126. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/issues/003-micro-phase-gates-red-green.md +0 -0
  127. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/issues/004-refactor-regression-gate.md +0 -0
  128. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/issues/005-prompt-spec-alignment.md +0 -0
  129. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/006-setup-interactive-config/data-model.md +0 -0
  130. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/006-setup-interactive-config/design.md +0 -0
  131. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/006-setup-interactive-config/explore.md +0 -0
  132. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/architecture.md +0 -0
  133. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/domain-model.md +0 -0
  134. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/flows/flows-product.md +0 -0
  135. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/flows/flows-streaming.md +0 -0
  136. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/flows/index.md +0 -0
  137. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/flows.jsonl +0 -0
  138. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/guildwright-current-system.md +0 -0
  139. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/guildwright-gap-register.md +0 -0
  140. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/guildwright-git-state-model.md +0 -0
  141. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/guildwright-rewrite.md +0 -0
  142. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/guildwright-rust-tui-requirements.md +0 -0
  143. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/release-next.md +0 -0
  144. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/001-streaming-pipeline-monitor/spec.md +0 -0
  145. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/001-streaming-pipeline-monitor/tasks.jsonl +0 -0
  146. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/001-streaming-pipeline-monitor/tasks.md +0 -0
  147. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/003-meso-layer-restructuring/spec.md +0 -0
  148. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/003-meso-layer-restructuring/tasks.jsonl +0 -0
  149. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/003-meso-layer-restructuring/tasks.md +0 -0
  150. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/004-deviate-review-skill/spec.md +0 -0
  151. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/004-deviate-review-skill/tasks.jsonl +0 -0
  152. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/004-deviate-review-skill/tasks.md +0 -0
  153. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/005-per-phase-model-configuration/plan.md +0 -0
  154. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/005-per-phase-model-configuration/tasks.jsonl +0 -0
  155. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/005-per-phase-model-configuration/tasks.md +0 -0
  156. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/006-context-cli-integration/plan.md +0 -0
  157. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/006-context-cli-integration/tasks.jsonl +0 -0
  158. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/006-context-cli-integration/tasks.md +0 -0
  159. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/007-graphite-cli/plan.md +0 -0
  160. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/007-graphite-cli/tasks.jsonl +0 -0
  161. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/007-graphite-cli/tasks.md +0 -0
  162. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/008-ast-phase-prioritization/plan.md +0 -0
  163. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/008-ast-phase-prioritization/tasks.jsonl +0 -0
  164. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/008-ast-phase-prioritization/tasks.md +0 -0
  165. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/009-pi-agent-backend-integration/plan.md +0 -0
  166. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/009-pi-agent-backend-integration/tasks.jsonl +0 -0
  167. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/009-pi-agent-backend-integration/tasks.md +0 -0
  168. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/010-deviate-setup-product-layer/plan.md +0 -0
  169. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/010-deviate-setup-product-layer/tasks.jsonl +0 -0
  170. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/010-deviate-setup-product-layer/tasks.md +0 -0
  171. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/013-flow-ledger-canonical-source-of-truth/plan.md +0 -0
  172. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/013-flow-ledger-canonical-source-of-truth/tasks.jsonl +0 -0
  173. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/013-flow-ledger-canonical-source-of-truth/tasks.md +0 -0
  174. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/015-narrow-product-flow-scope/plan.md +0 -0
  175. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/015-narrow-product-flow-scope/tasks.md +0 -0
  176. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/016-single-source-prompt-templates/plan.md +0 -0
  177. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/016-single-source-prompt-templates/tasks.jsonl +0 -0
  178. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/016-single-source-prompt-templates/tasks.md +0 -0
  179. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/017-optional-push-as-lock/plan.md +0 -0
  180. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/017-optional-push-as-lock/tasks.jsonl +0 -0
  181. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/017-optional-push-as-lock/tasks.md +0 -0
  182. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/017-two-counter-tdd-retry/plan.md +0 -0
  183. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/017-two-counter-tdd-retry/tasks.jsonl +0 -0
  184. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/017-two-counter-tdd-retry/tasks.md +0 -0
  185. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/018-one-behavior-rgr-granularity/plan.md +0 -0
  186. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/018-one-behavior-rgr-granularity/tasks.md +0 -0
  187. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/019-remote-aware-ordinal-allocation/plan.md +0 -0
  188. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/019-remote-aware-ordinal-allocation/tasks.jsonl +0 -0
  189. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/019-remote-aware-ordinal-allocation/tasks.md +0 -0
  190. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/020-judge-compliance-pass-evidence/plan.md +0 -0
  191. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/020-judge-compliance-pass-evidence/tasks.jsonl +0 -0
  192. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/020-judge-compliance-pass-evidence/tasks.md +0 -0
  193. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/021-no-failing-test-escalate-invokes-green/plan.md +0 -0
  194. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/021-no-failing-test-escalate-invokes-green/tasks.jsonl +0 -0
  195. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/021-no-failing-test-escalate-invokes-green/tasks.md +0 -0
  196. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/022-already-satisfied-red-requires-tests/plan.md +0 -0
  197. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/022-already-satisfied-red-requires-tests/tasks.jsonl +0 -0
  198. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/022-already-satisfied-red-requires-tests/tasks.md +0 -0
  199. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/023-pinned-micro-run-issue-scoped/plan.md +0 -0
  200. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/023-pinned-micro-run-issue-scoped/tasks.jsonl +0 -0
  201. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/023-pinned-micro-run-issue-scoped/tasks.md +0 -0
  202. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/024-worktree-session-stale-issue-id/plan.md +0 -0
  203. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/024-worktree-session-stale-issue-id/tasks.jsonl +0 -0
  204. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/024-worktree-session-stale-issue-id/tasks.md +0 -0
  205. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/025-green-stderr-noise-stall-detector/plan.md +0 -0
  206. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/025-green-stderr-noise-stall-detector/tasks.jsonl +0 -0
  207. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/025-green-stderr-noise-stall-detector/tasks.md +0 -0
  208. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/026-pi-spawn-lean-tool-schema/plan.md +0 -0
  209. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/026-pi-spawn-lean-tool-schema/tasks.jsonl +0 -0
  210. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/026-pi-spawn-lean-tool-schema/tasks.md +0 -0
  211. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/027-red-hang-timeout-rollback/plan.md +0 -0
  212. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/027-red-hang-timeout-rollback/tasks.jsonl +0 -0
  213. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/027-red-hang-timeout-rollback/tasks.md +0 -0
  214. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/028-task-scoped-judge-review-coverage/plan.md +0 -0
  215. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/028-task-scoped-judge-review-coverage/tasks.jsonl +0 -0
  216. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/028-task-scoped-judge-review-coverage/tasks.md +0 -0
  217. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/030-config-rework/plan.md +0 -0
  218. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/030-config-rework/tasks.jsonl +0 -0
  219. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/030-config-rework/tasks.md +0 -0
  220. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/031-judge-revert-boundary-no-failing-test/plan.md +0 -0
  221. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/031-judge-revert-boundary-no-failing-test/tasks.jsonl +0 -0
  222. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/031-judge-revert-boundary-no-failing-test/tasks.md +0 -0
  223. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/034-setup-interactive-config/plan.md +0 -0
  224. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/034-setup-interactive-config/tasks.md +0 -0
  225. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/001-streaming-pipeline-monitor.md +0 -0
  226. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/002-aider-agent-backend-integration.md +0 -0
  227. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/003-meso-layer-restructuring.md +0 -0
  228. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/004-deviate-review-skill.md +0 -0
  229. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/005-per-phase-model-configuration.md +0 -0
  230. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/006-context-cli-integration.md +0 -0
  231. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/007-graphite-cli.md +0 -0
  232. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/008-ast-phase-prioritization.md +0 -0
  233. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/009-pi-agent-backend-integration.md +0 -0
  234. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/010-deviate-setup-product-layer.md +0 -0
  235. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/012-rpc-streaming-tui-renderer.md +0 -0
  236. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/013-flow-ledger-canonical-source-of-truth.md +0 -0
  237. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/014-cwe-mapping-security-findings.md +0 -0
  238. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/015-narrow-product-flow-scope.md +0 -0
  239. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/016-single-source-prompt-templates.md +0 -0
  240. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/017-optional-push-as-lock.md +0 -0
  241. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/017-two-counter-tdd-retry.md +0 -0
  242. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/018-one-behavior-rgr-granularity.md +0 -0
  243. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/019-remote-aware-ordinal-allocation.md +0 -0
  244. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/020-judge-compliance-pass-evidence.md +0 -0
  245. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/021-no-failing-test-escalate-invokes-green.md +0 -0
  246. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/022-already-satisfied-red-requires-tests.md +0 -0
  247. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/023-pinned-micro-run-issue-scoped.md +0 -0
  248. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/024-worktree-session-stale-issue-id.md +0 -0
  249. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/025-green-stderr-noise-stall-detector.md +0 -0
  250. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/026-pi-spawn-lean-tool-schema.md +0 -0
  251. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/027-red-hang-timeout-rollback.md +0 -0
  252. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/028-task-scoped-judge-review-coverage.md +0 -0
  253. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/029-ponytail-pruning-in-review.md +0 -0
  254. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/030-config-rework.md +0 -0
  255. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/031-judge-revert-boundary-no-failing-test.md +0 -0
  256. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/032-judge-feedback-injection-fail-close.md +0 -0
  257. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/033-prune-post-completed.md +0 -0
  258. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/034-setup-interactive-config.md +0 -0
  259. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/035-gate3-walkthrough-map-and-review-comments.md +0 -0
  260. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/036-cli-help-readme-transparency.md +0 -0
  261. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/037-setup-pack-tui-multiselect.md +0 -0
  262. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/prd.md +0 -0
  263. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc.jsonl +0 -0
  264. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/constitution.md +0 -0
  265. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/explore/ast-tree-sitter.md +0 -0
  266. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/explore/config-rework.md +0 -0
  267. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/explore/flow-ledger.md +0 -0
  268. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/explore/graphite-cli.md +0 -0
  269. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/explore/pi-agent-backend.md +0 -0
  270. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/explore/ponytail-pruning.md +0 -0
  271. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/explore/product-layer.md +0 -0
  272. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/explore/rpc-streaming-tui.md +0 -0
  273. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/explore/rpc-streaming.md +0 -0
  274. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/explore/security-hardening-cwe.md +0 -0
  275. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/implementation-gap.md +0 -0
  276. {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/issues.jsonl +0 -0
  277. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/__init__.py +0 -0
  278. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/__init__.py +0 -0
  279. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/_common.py +0 -0
  280. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/_html.py +0 -0
  281. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/_safe_commands.py +0 -0
  282. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/adhoc.py +0 -0
  283. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/constitution.py +0 -0
  284. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/feature.py +0 -0
  285. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/flow_commands.py +0 -0
  286. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/init.py +0 -0
  287. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/inspect.py +0 -0
  288. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/macro.py +0 -0
  289. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/meso.py +0 -0
  290. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/micro.py +0 -0
  291. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/prune.py +0 -0
  292. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/review.py +0 -0
  293. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/walkthrough.py +0 -0
  294. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/__init__.py +0 -0
  295. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/_shared.py +0 -0
  296. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/agent.py +0 -0
  297. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/cache_discipline.py +0 -0
  298. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/commands.py +0 -0
  299. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/commit.py +0 -0
  300. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/complexity.py +0 -0
  301. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/constitution.py +0 -0
  302. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/contract.py +0 -0
  303. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/convention.py +0 -0
  304. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/epic.py +0 -0
  305. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/issues.py +0 -0
  306. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/judge_evidence.py +0 -0
  307. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/prd.py +0 -0
  308. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/profile.py +0 -0
  309. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/prune.py +0 -0
  310. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/repo.py +0 -0
  311. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/review_coverage.py +0 -0
  312. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/run_logger.py +0 -0
  313. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/tasks_ledger.py +0 -0
  314. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/validation.py +0 -0
  315. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/worktree.py +0 -0
  316. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/html_templates/__init__.py +0 -0
  317. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/html_templates/architecture.html.tmpl +0 -0
  318. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/html_templates/domain-model.html.tmpl +0 -0
  319. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/html_templates/flows.html.tmpl +0 -0
  320. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/html_templates/plan.html.tmpl +0 -0
  321. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/html_templates/prd.html.tmpl +0 -0
  322. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/main.py +0 -0
  323. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/__init__.py +0 -0
  324. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/assembly.py +0 -0
  325. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/__init__.py +0 -0
  326. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/execute.md +0 -0
  327. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/green.md +0 -0
  328. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/judge.md +0 -0
  329. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/red.md +0 -0
  330. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/refactor.md +0 -0
  331. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-adhoc.md +0 -0
  332. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-architecture.md +0 -0
  333. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-constitution.md +0 -0
  334. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-e2e.md +0 -0
  335. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-execute.md +0 -0
  336. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-explore.md +0 -0
  337. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-flows.md +0 -0
  338. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-green.md +0 -0
  339. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-hotfix.md +0 -0
  340. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-html.md +0 -0
  341. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-init.md +0 -0
  342. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-judge.md +0 -0
  343. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-merge.md +0 -0
  344. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-plan.md +0 -0
  345. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-pr.md +0 -0
  346. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-prd.md +0 -0
  347. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-prune.md +0 -0
  348. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-red.md +0 -0
  349. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-refactor.md +0 -0
  350. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-release.md +0 -0
  351. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-review.md +0 -0
  352. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-shard.md +0 -0
  353. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-tasks.md +0 -0
  354. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-triage.md +0 -0
  355. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-walkthrough.md +0 -0
  356. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/constitution_seed.md +0 -0
  357. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/core/core.md +0 -0
  358. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/core/lifecycle-auto.md +0 -0
  359. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/core/lifecycle-manual.md +0 -0
  360. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/core/meso-shared.md +0 -0
  361. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/core/micro-shared.md +0 -0
  362. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/core/product-shared.md +0 -0
  363. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/core/style-ste.md +0 -0
  364. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/governance/__init__.py +0 -0
  365. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/governance/agents_seed.md +0 -0
  366. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/governance/claudemd_seed.md +0 -0
  367. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/governance/libref_seed.md +0 -0
  368. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/skills/deviatdd/SKILL.md +0 -0
  369. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/state/__init__.py +0 -0
  370. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/state/config.py +0 -0
  371. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/state/ledger.py +0 -0
  372. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/ui/__init__.py +0 -0
  373. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/ui/checkbox.py +0 -0
  374. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/ui/monitor.py +0 -0
  375. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/ui/pipeline.py +0 -0
  376. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/ui/render.py +0 -0
  377. {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/visual/__init__.py +0 -0
  378. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/__init__.py +0 -0
  379. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/conftest.py +0 -0
  380. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/core/__init__.py +0 -0
  381. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/core/test_agent.py +0 -0
  382. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/core/test_smart_stall.py +0 -0
  383. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/e2e/test_derived_command_install.bats +0 -0
  384. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/e2e/test_green_stderr_stall.bats +0 -0
  385. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/e2e/test_macro_workflow.bats +0 -0
  386. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/e2e/test_optional_push_as_lock.bats +0 -0
  387. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/e2e/test_pi_spawn_lean_tool_schema.bats +0 -0
  388. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/e2e/test_red_hang_timeout_rollback.bats +0 -0
  389. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/e2e/test_review_plan_ac_coverage.bats +0 -0
  390. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/e2e/test_setup_config_rework.bats +0 -0
  391. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/e2e/test_worktree_session_stale_issue.bats +0 -0
  392. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/__init__.py +0 -0
  393. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_adhoc.py +0 -0
  394. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_common.py +0 -0
  395. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_constitution.py +0 -0
  396. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_feature.py +0 -0
  397. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_flows_sync.py +0 -0
  398. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_help.py +0 -0
  399. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_html.py +0 -0
  400. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_init.py +0 -0
  401. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_inspect.py +0 -0
  402. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_macro_contracts.py +0 -0
  403. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_main_entrypoint.py +0 -0
  404. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_merge.py +0 -0
  405. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_meso.py +0 -0
  406. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_meso_contracts.py +0 -0
  407. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_micro.py +0 -0
  408. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_prune.py +0 -0
  409. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_real_descendant_kill.py +0 -0
  410. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_review.py +0 -0
  411. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_safe_commands.py +0 -0
  412. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_setup.py +0 -0
  413. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_test_command_resolution.py +0 -0
  414. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_timeout_safe_command.py +0 -0
  415. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_top_level_run.py +0 -0
  416. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_walkthrough.py +0 -0
  417. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_agent.py +0 -0
  418. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_cache_discipline.py +0 -0
  419. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_commit.py +0 -0
  420. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_complexity.py +0 -0
  421. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_constitution.py +0 -0
  422. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_contract.py +0 -0
  423. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_convention.py +0 -0
  424. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_epic.py +0 -0
  425. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_flow_confirmation.py +0 -0
  426. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_issues.py +0 -0
  427. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_judge_evidence.py +0 -0
  428. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_ledger.py +0 -0
  429. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_prd.py +0 -0
  430. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_profile.py +0 -0
  431. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_prune.py +0 -0
  432. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_repo.py +0 -0
  433. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_run_logger.py +0 -0
  434. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_tasks_ledger.py +0 -0
  435. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_validation.py +0 -0
  436. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_worktree.py +0 -0
  437. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_init.py +0 -0
  438. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/__init__.py +0 -0
  439. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/conftest.py +0 -0
  440. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/test_command_installation.py +0 -0
  441. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/test_init_export_cycle.py +0 -0
  442. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/test_macro_full_cycle.py +0 -0
  443. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/test_macro_layer.py +0 -0
  444. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/test_macro_orchestration.py +0 -0
  445. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/test_meso_layer.py +0 -0
  446. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/test_meso_orchestration.py +0 -0
  447. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/test_meso_task_ledger.py +0 -0
  448. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/test_parity.py +0 -0
  449. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/test_skill_installation.py +0 -0
  450. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_macro/__init__.py +0 -0
  451. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_macro/test_explore.py +0 -0
  452. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_macro/test_macro_model_routing.py +0 -0
  453. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_macro/test_macro_orchestration.py +0 -0
  454. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_macro/test_prd.py +0 -0
  455. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_macro/test_research.py +0 -0
  456. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_macro/test_shard.py +0 -0
  457. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_meso/__init__.py +0 -0
  458. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_meso/test_meso_model_routing.py +0 -0
  459. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_meso/test_meso_orchestration.py +0 -0
  460. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_meso/test_meso_resume.py +0 -0
  461. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_meso/test_plan_structure_injection.py +0 -0
  462. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_meso/test_pr_platform.py +0 -0
  463. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_meso/test_prompt_assembly.py +0 -0
  464. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_meso/test_specify.py +0 -0
  465. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_meso/test_tasks.py +0 -0
  466. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/__init__.py +0 -0
  467. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/conftest.py +0 -0
  468. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_commit_failure.py +0 -0
  469. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_completed_evidence.py +0 -0
  470. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_e2e.py +0 -0
  471. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_execute.py +0 -0
  472. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_green.py +0 -0
  473. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_hotfix.py +0 -0
  474. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_judge.py +0 -0
  475. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_orchestration.py +0 -0
  476. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_output_filter.py +0 -0
  477. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_red.py +0 -0
  478. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_refactor.py +0 -0
  479. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_review_pause.py +0 -0
  480. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_rollback_safety.py +0 -0
  481. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_run.py +0 -0
  482. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_task_label.py +0 -0
  483. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_two_counter_retry.py +0 -0
  484. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_release/test_next_version.py +0 -0
  485. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_state/__init__.py +0 -0
  486. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_state/test_config.py +0 -0
  487. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_state/test_ledger.py +0 -0
  488. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_state/test_security_profile.py +0 -0
  489. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_state/test_session.py +0 -0
  490. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_ui/__init__.py +0 -0
  491. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_ui/test_checkbox.py +0 -0
  492. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_ui/test_monitor.py +0 -0
  493. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_ui/test_pipeline.py +0 -0
  494. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_ui/test_render.py +0 -0
  495. {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_visual_demo/test_tsk_001_01.py +0 -0
@@ -43,6 +43,8 @@ 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`.
46
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.
47
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`.
48
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`.
@@ -81,6 +83,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
81
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).
82
84
 
83
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
+
84
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`.
85
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`.
86
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`.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: deviatdd
3
- Version: 2.24.1
3
+ Version: 2.24.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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "deviatdd"
3
- version = "2.24.1"
3
+ version = "2.24.2"
4
4
  description = "DeviaTDD CLI — agent orchestration framework"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -105,7 +105,7 @@ sequenceDiagram
105
105
  - **Boundary Category**: A `manual` or `deferred` mode validates but requires no `test_ref` in the contract body.
106
106
  2. `AC-005-01-02` / `AO-001`: Validation keeps requiring Source Outline, Upstream Traceability, Current-Code Evidence, and Given/When/Then.
107
107
  - **Observable Result**: Removing any existing clause still fails validation.
108
- - **Downstream Shard Mapping**: Epic `005-acceptance-gates`, first issue.
108
+ - **Downstream Shard Mapping**: FR traceability unit only; shard owns grouping.
109
109
 
110
110
  ### FR-005-02: Task Acceptance Traceability
111
111
  - **Description**: `TaskRecord` gains an optional `acceptance_criteria: list[CriterionLink] | None` field. `generate_jsonl_from_md` in `src/deviate/core/tasks_ledger.py` propagates task-to-criterion and criterion-to-test links into each generated task row. The field parses as absent for JSONL rows written by older CLI versions.
@@ -118,7 +118,7 @@ sequenceDiagram
118
118
  - **Happy Path**: `deviate meso tasks pre` emits rows with valid links.
119
119
  - **Error Category**: Malformed criterion id or missing `test_ref` on an automated link fails generation.
120
120
  - **Boundary Category**: Legacy JSONL rows without the field still parse under `extra="forbid"`.
121
- - **Downstream Shard Mapping**: Epic `005-acceptance-gates`, second issue.
121
+ - **Downstream Shard Mapping**: FR traceability unit only; shard owns grouping.
122
122
 
123
123
  ### FR-005-03: Non-Blocking RED Checkpoint
124
124
  - **Description**: `_run_red_phase` in `src/deviate/cli/micro.py` stops raising `PhaseFailedError` on test returncode 0. It builds a `RedHandoffAdvisory` (`passes`, `severity`) and passes it in-memory to the GREEN runner. The RED phase always completes and appends its `RED` transition row. No persistent record is written.
@@ -133,7 +133,7 @@ sequenceDiagram
133
133
  - **Boundary Category**: No test file detected — the checkpoint is skipped.
134
134
  2. `AC-005-03-02` / `AO-003`: A RED run whose test suite fails completes with an `ok` advisory.
135
135
  - **Observable Result**: RED transition row appended; GREEN starts.
136
- - **Downstream Shard Mapping**: Epic `005-acceptance-gates`, third issue.
136
+ - **Downstream Shard Mapping**: FR traceability unit only; shard owns grouping.
137
137
 
138
138
  ### FR-005-04: Blocking GREEN Gate with JUDGE Routing
139
139
  - **Description**: `_run_green_phase` requires `_run_test_cmd` returncode 0. On failure it sets `train_feedback` and routes to JUDGE, which decides retry GREEN or revert to RED, bounded by `_MAX_JUDGE_FEEDBACK = 3`. Verification mode never exempts the automated suite.
@@ -146,7 +146,7 @@ sequenceDiagram
146
146
  - **Happy Path**: Format cmd runs; GREEN result commits.
147
147
  - **Error Category**: Non-zero returncode routes to JUDGE via `train_feedback`.
148
148
  - **Boundary Category**: A `warning` RED advisory does not block GREEN start.
149
- - **Downstream Shard Mapping**: Epic `005-acceptance-gates`, fourth issue (may merge with FR-005-03).
149
+ - **Downstream Shard Mapping**: FR traceability unit only; shard owns grouping.
150
150
 
151
151
  ### FR-005-05: Blocking REFACTOR Regression Gate
152
152
  - **Description**: `_run_refactor_phase` inspects the `_run_test_cmd` returncode. Non-zero raises `PhaseFailedError` and the task fails. Zero proceeds to format cmd, appends the `COMPLETED` transition, commits, and transitions the session to `IDLE`.
@@ -159,7 +159,7 @@ sequenceDiagram
159
159
  - **Happy Path**: All tests pass after polish; `COMPLETED` row appended.
160
160
  - **Error Category**: Non-zero returncode raises and records failure.
161
161
  - **Boundary Category**: Tests unchanged and passing — gate passes without side effects.
162
- - **Downstream Shard Mapping**: Epic `005-acceptance-gates`, fifth issue.
162
+ - **Downstream Shard Mapping**: FR traceability unit only; shard owns grouping.
163
163
 
164
164
  ### FR-005-06: Prompt Template and Specification Alignment
165
165
  - **Description**: Update `src/deviate/prompts/commands/deviate-red.md`, `src/deviate/prompts/auto/red.md`, `green.md`, and `refactor.md` to describe the checkpoint and gates. Update `specs/DeviaTDD-api.md` and `specs/DeviaTDD-architecture.md` gate semantics in the same commit. Append a `CHANGELOG.md` entry under `[Unreleased]`.
@@ -172,7 +172,7 @@ sequenceDiagram
172
172
  - **Happy Path**: Templates and specs match runner behavior.
173
173
  - **Error Category**: A stale rejection statement in any template fails review.
174
174
  - **Boundary Category**: CHANGELOG entry present under `[Unreleased]`.
175
- - **Downstream Shard Mapping**: Epic `005-acceptance-gates`, final issue.
175
+ - **Downstream Shard Mapping**: FR traceability unit only; shard owns grouping.
176
176
 
177
177
  ## Acceptance Outline
178
178
  - `AO-001` / `AC-005-01-*`: Verification-mode metadata on `AC-PLAN-NNN` scenarios validates in `validate_acceptance_contract`.
@@ -188,7 +188,7 @@ sequenceDiagram
188
188
  - **Type Safety & Modularity**: Pydantic models enforce the schemas above. `ruff check` and `ruff format --check` pass. Coverage stays at or above 80%. Tests mock `deviate.cli.micro._run_pytest` where CLI commands reach it.
189
189
 
190
190
  ## Issue Sharding Strategy
191
- Shard the epic into 5-6 issues, one per FR: contract metadata (`FR-005-01`), task traceability (`FR-005-02`), RED checkpoint (`FR-005-03`), GREEN gate (`FR-005-04`), REFACTOR gate (`FR-005-05`), and template/spec alignment (`FR-005-06`). `FR-005-04` may merge with `FR-005-03` into one slice. Each issue keeps its own `plan.md` `AC-PLAN-NNN` acceptance contract with verification-mode metadata.
191
+ This PRD lists FRs as traceability units only. It does not prescribe issue count, issue IDs, or shard topology. Related FRs may share one independently testable vertical (for example FR-005-03 and FR-005-04 as one RED/GREEN gate behavior), and a single FR may split across issues when each issue owns a distinct observable behavior. Shard owns grouping, boundaries, and the dependency DAG.
192
192
 
193
193
  ## Ambiguity Resolution and Stakeholder Decisions
194
194
  - `RESOLVED-Q-001` (HITL-001): RED checkpoint storage ➔ **Resolution Requirement Invariant**: The checkpoint is an in-memory phase-handoff advisory; the system writes no persistent record, no ledger field, and no `.deviate/` store.
@@ -1579,9 +1579,9 @@ and are installed to `.{agent}/commands/<name>.md` per workspace (or `.pi/prompt
1579
1579
 
1580
1580
  | Client Command Trigger | Responsible Persona Role | Targets Created / Mutated | Internal CLI Endpoints | Action Logic Steps |
1581
1581
  | --- | --- | --- | --- | --- |
1582
- | `/deviate-explore` | Context Scanner (Cheap) | `specs/{FEATURE_SLUG}/explore.md` | `deviate feature create`, `deviate explore pre/post` | 6 steps: feature create, constitution validate, bucket allocate, codebase scan, write explore.md, commit |
1583
- | `/deviate-research` | Architect (Expensive) | `specs/{FEATURE_SLUG}/design.md`, `data-model.md` | `deviate research pre/post` | 5 steps: read explore.md, analyze options, produce design.md, produce data-model.md, commit |
1584
- | `/deviate-prd` | Product Owner Proxy | `specs/{FEATURE_SLUG}/prd.md` | `deviate prd pre/post` | 4 steps: read design.md, synthesize requirements, write prd.md, commit |
1582
+ | `/deviate-explore` | Context Scanner (Cheap) | `specs/{FEATURE_SLUG}/explore.md` | `deviate feature create`, `deviate explore pre/post` | 6 steps: feature create, constitution validate, bucket allocate, codebase scan (plus sibling-flow inventory when a nearest user flow exists), write explore.md, commit |
1583
+ | `/deviate-research` | Architect (Expensive) | `specs/{FEATURE_SLUG}/design.md`, `data-model.md` | `deviate research pre/post` | 5 steps: read explore.md, write the floor then attack it in one agent / two ordered jobs (no sequential sub-agent spawn), produce design.md + data-model.md (schema = floor only), commit. Existing constitutions stay read-only except greenfield bootstrap. |
1584
+ | `/deviate-prd` | Product Owner Proxy | `specs/{FEATURE_SLUG}/prd.md` | `deviate prd pre/post` | 4 steps: read design.md + data-model.md, halt on `UPSTREAM_INCONSISTENT` / `SCOPE_DRIFT`, synthesize floor + promoted extras (unused Recommended/Deferred stay out of scope), write prd.md, commit |
1585
1585
  | `/deviate-shard` | Decomposition Engine | `specs/{FEATURE_SLUG}/issues/{ORDINAL}-{slug}.md` (filenames use the per-epic ordinal; the ledger id is `{epic-prefix}-{ORDINAL}`, e.g. `002-001`) | `deviate shard pre/post` | 5 steps: read prd.md, identify vertical slices, validate granularity, create issue stubs with `AO-NNN` acceptance outlines (no Gherkin), register in ledger. PRD/Shard/Adhoc halt with `GHERKIN_LEAK_DETECTED` on bold `**Given**`/`**When**`/`**Then**`; final Gherkin belongs to Plan. New issues emit `{epic-prefix}-{ordinal}` ids; legacy `ISS-NNN` ids still resolve. |
1586
1586
  | `/deviate-adhoc` | Condensed Scoper | `specs/adhoc/` | `deviate adhoc pre/post` | 8 steps: complexity gate, codebase scan, PRD append, issue generation with remote-aware `NNN` (`max(origin ledger, current ledger, remote feat/adhoc/<NNN>-*) + 1`; `ISS-ADH-NNN` and `ISS-NNN` are one series; local-only branches do not reserve), ledger registration, commit, Gherkin-leak guard |
1587
1587
  | **[REMOVED]** | --- | --- | --- | HITL Gate 2 (post-Tasks `deviate meso approve` approval) was removed. The system never blocks on human approval; `deviate run` chains meso into micro end-to-end. Plan and Tasks still commit authored artifacts to the worktree, but the human can review them on their own schedule without gating execution. |
@@ -87,9 +87,9 @@ To maintain strict operational focus and establish explicit boundaries of respon
87
87
 
88
88
  ### 2.1 The Macro Layer: Feature Scoping
89
89
  Breaks a business goal down into standard development project containers.
90
- * **Explore (Cheap Context Gathering):** Fast, inexpensive scan of codebase structure, dependencies, existing patterns, and tech stack. Runs on a cheap model (V4 Flash). Outputs raw factual context to `explore.md` — what exists, not what to do. Initial output lands in `specs/explore/<slug>.md`; `deviate research pre` **moves** that file into the numbered epic directory at `specs/{NNN}-<slug>/explore.md` so every artifact for one feature lives under a single directory. `allocate_feature_bucket()` numbers an unnumbered slug from `max(local numbered specs dirs ∪ remote feat/<NNN>-* prefixes) + 1`; a numbered slug stays idempotent. The move is recorded as a tracked rename (usually rendered as `R100` in `git show`) inside the same atomic commit that `deviate research post` produces for `design.md` + `data-model.md` — the source path `specs/explore/<slug>.md` is `git rm`-ed and the destination `specs/{NNN}-<slug>/explore.md` is `git add`-ed, so the working tree never carries a tracked-but-deleted or untracked residue from the move. The source path is persisted on `SessionState.research_explore_source` at pre time so the post-script can `git rm` the right path even when `allocate_feature_bucket` short-circuits on an already-numbered slug.
91
- * **Research (Architectural Design):** Consumes `explore.md` (at `specs/{NNN}-<slug>/explore.md` after the research pre move) and performs high-level architectural analysis: trade-offs, options matrix, design decisions, and data modeling. Runs on a reasoning model (Qwen thinking or V4 Pro). Outputs `design.md` (architecture and decisions) and `data-model.md` (entity relationships, schemas), both inside the same numbered epic directory.
92
- * **PRD:** Translates `design.md` into immutable FR/AC tokens plus implementation-independent `AO-NNN` acceptance outlines. Given/When/Then is forbidden here; Plan owns final Gherkin.
90
+ * **Explore (Cheap Context Gathering):** Fast, inexpensive scan of codebase structure, dependencies, existing patterns, and tech stack. Runs on a cheap model (V4 Flash). Outputs raw factual context to `explore.md` — what exists, not what to do. When a nearest existing user flow exists, catalog a short sibling-flow inventory (amount vs fee, lock vs reserve, vendor call in HTTP vs job, idempotency, destination shape) with quoted paths and no recommendations. Ecosystem research stays catalog only. Initial output lands in `specs/explore/<slug>.md`; `deviate research pre` **moves** that file into the numbered epic directory at `specs/{NNN}-<slug>/explore.md` so every artifact for one feature lives under a single directory. `allocate_feature_bucket()` numbers an unnumbered slug from `max(local numbered specs dirs ∪ remote feat/<NNN>-* prefixes) + 1`; a numbered slug stays idempotent. The move is recorded as a tracked rename (usually rendered as `R100` in `git show`) inside the same atomic commit that `deviate research post` produces for `design.md` + `data-model.md` — the source path `specs/explore/<slug>.md` is `git rm`-ed and the destination `specs/{NNN}-<slug>/explore.md` is `git add`-ed, so the working tree never carries a tracked-but-deleted or untracked residue from the move. The source path is persisted on `SessionState.research_explore_source` at pre time so the post-script can `git rm` the right path even when `allocate_feature_bucket` short-circuits on an already-numbered slug.
91
+ * **Research (Architectural Design):** Consumes `explore.md` (at `specs/{NNN}-<slug>/explore.md` after the research pre move) and performs high-level architectural analysis as a **range**, not a maxed design. One agent writes the floor (constitution + sibling parity + authorization/money safety/provider correctness/data integrity) then attacks it in the same prompt — no sequential AlphaBeta/Gamma sub-agent spawns. Schema tables are floor only; named extras live in a Deferred / maximal bracket list. Existing constitutions stay read-only except greenfield bootstrap or an explicit HITL amendment. Runs on a reasoning model (Qwen thinking or V4 Pro). Outputs `design.md` (architecture and decisions) and `data-model.md` (entity relationships, schemas), both inside the same numbered epic directory.
92
+ * **PRD:** Translates the human-selected point on the research bracket into immutable FR/AC tokens plus implementation-independent `AO-NNN` acceptance outlines. In-scope is the floor plus promoted extras; unused Recommended/Deferred extras stay in Out-of-Scope Boundaries. Halt 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. Given/When/Then is forbidden here; Plan owns final Gherkin.
93
93
  * **Shard:** Breaks down the PRD into standalone technical issue files (GitHub Issues). Each issue must be a **vertical slice** — a complete, testable behavior end-to-end (not a horizontal layer like "add database"). Emit as few independently shippable user-visible verticals as the PRD needs. Enforce bounds: minimum 1 issue, maximum 10 issues. A single-issue shard is valid (the option to have used `/deviate-adhoc` has passed by the time shard runs). Each issue must be independently implementable and testable, with clear acceptance criteria. **Slicing rules live entirely in the `deviate-shard` prompt** (Pass 1 flow-anchored clustering, Pass 1.5 hard cap with `SLICE_CAP_EXCEEDED`, Pass 3.5 horizontal-slice merging); the PRD prompt only shapes FRs via flow-segment authoring guidance, never pre-decides groupings.
94
94
  * **Adhoc (Fast-Path):** A condensed single-command shortcut (`/deviate-adhoc`) that compresses Explore + Research + PRD + Shard into one operation for low-to-medium complexity tasks. Performs proportional exploration (lightweight file scanning, dependency mapping), synthesizes a condensed PRD entry, and emits a single vertical-slice issue directly into `specs/adhoc/`. Appends to the aggregated `specs/adhoc/prd.md` and registers the issue in the global `specs/issues.jsonl` append-only ledger with an `ISS-NNN` / `ISS-ADH-NNN` identifier (one adhoc series). The compiler allocates `NNN` as `max(origin ledger, current ledger, remote feat/adhoc/<NNN>-*) + 1`. Local-only unpushed feat branches do not reserve. A **Complexity Gate** evaluates the task description before proceeding: high-complexity tasks (multi-module coordination, state management, new architecture) are rejected with a directive to run `/deviate-explore` to initiate a full epic workflow instead. This gate prevents scope-creep and ensures adhoc remains a true fast-path, not a bypass for complex engineering.
95
95
  * **Greenfield bootstrap:** `deviate explore pre` and `deviate research pre` are the two
@@ -13,6 +13,8 @@ Your job is to ingest a JSON contract emitted by `deviate explore pre`, perform
13
13
  ### Phase-Specific Invariants
14
14
 
15
15
  1. **Factual-Only Discipline**: Emit only what EXISTS. Trade-off analysis, recommendations, design decisions, and risk evaluations are explicitly deferred to `/research`. Prefer observational language ("the project contains", "the manifest declares") over prescriptive language ("we should", "we recommend").
16
+ 2. **Sibling-Flow Inventory**: When a nearest existing user flow exists, catalog it as fact before `explore.md` is complete. Cover amount vs fee, lock vs reserve, vendor call in HTTP vs job, idempotency, and destination shape. Quote paths. Do not recommend.
17
+ 3. **Ecosystem Catalog Only**: `## Ecosystem Research` is a catalog. Later phases must not treat those rows as Required unless a local flow, constitution clause, or money/auth/provider integrity test applies.
16
18
 
17
19
  </system_instructions>
18
20
 
@@ -23,7 +25,7 @@ Persona: Senior Codebase Forensics Engineer & Structural Discovery Subagent.
23
25
  ABSOLUTE RULE: This agent is DISCOVERY ONLY. It reads files and catalogs what exists. It does NOT write, edit, create, or modify ANY file. It does NOT generate code, tests, configs, or scripts. It returns ONLY text fragments to the orchestrator.
24
26
 
25
27
  Objective: Walk the local file tree under `repo_root` and produce a factual inventory of observed artifacts. NO analysis, NO recommendations, NO trade-off evaluation, NO failure-mode speculation, NO code generation.
26
- Output Scope: Populate fragments for `## Discovery Audit Results`, `## File Registry`, and `## Constitution Quotes`. Return these as text fragments only — do NOT write any files.
28
+ Output Scope: Populate fragments for `## Discovery Audit Results`, `## File Registry`, `## Constitution Quotes`, and `## Sibling Flow Inventory`. Return these as text fragments only — do NOT write any files.
27
29
  Instructions:
28
30
  - Run only read-only structural searches and file listings. Use the codebase-index tools as the primary discovery path: verify the index is current via `index_status`; use `codebase_peek` for symbol and file existence lookups, `codebase_search` for semantic discovery, `implementation_lookup` for symbol definitions, and `call_graph` for call relationships. Supplement with `find`, `tree -L 3`, glob expansions, and `cat`/`head` for last-mile regex patterns, raw text reads, and dotfiles gitignored from the index.
29
31
  - Never use tools that modify files (Create, Edit, Write, ApplyPatch, etc.). If only such tools are available, terminate and report the limitation.
@@ -34,6 +36,7 @@ Instructions:
34
36
  - For every entry captured for the FILE_REGISTRY, capture a verbatim snippet (≤ 10 lines) at the moment of tool extraction.
35
37
  - NEVER run test, lint, type-check, build, or formatting commands. These are implementation-phase operations.
36
38
  - NEVER create, write, modify, or patch any source file, test file, configuration, or script.
39
+ - When a nearest existing user flow exists (a parallel path the new feature would sit beside), catalog it under `## Sibling Flow Inventory`: amount vs fee, lock vs reserve, vendor call in HTTP vs job, idempotency, destination shape. Quote paths. Do not recommend. If none exists, return `None observed`.
37
40
 
38
41
  **Targeted Architectural Baselines (Hunt for these 5 categories):**
39
42
  1. **Existing Architectural Patterns**: Routing/entry points, domain models, error handling patterns (e.g., Railway pattern, global handlers).
@@ -60,7 +63,8 @@ Instructions:
60
63
  - Use `libref list` to check what documentation sources are already available. Use `libref query <lib> "<topic>"` for offline, version-pinned documentation. If the library is not in libref, use web search or web fetch tools directly to query documentation, authoritative blogs, and standard library references.
61
64
  - Focus on: (1) Best practices for the specific problem domain, (2) Common use cases and pitfalls, (3) Standard tools/libraries that solve this problem in the language/framework identified in the constitution.
62
65
  - For every finding, capture the source URL and a brief verbatim snippet (≤ 10 lines) or a precise summary of the finding.
63
- - Do NOT make architectural recommendations or trade-off evaluations. Simply catalog what the ecosystem says.
66
+ - Do NOT make architectural recommendations or trade-off evaluations. Simply catalog what the ecosystem says. This section is catalog only.
67
+ - Later phases must not treat these rows as Required unless a local flow, constitution clause, or money/auth/provider integrity test applies.
64
68
  - If web search tools are unavailable, report `WEB_SEARCH_UNAVAILABLE` and skip this subagent; the orchestrator will proceed with local findings only.
65
69
  </subagent_ecosystem_prompt>
66
70
  </subagent_blueprint_directory>
@@ -70,6 +74,7 @@ Instructions:
70
74
  2. **Structural Audit Mandate**: Catalog every manifest, dependency declaration, test entry point, and architectural baseline observed in the repo. No interpretation — only observation.
71
75
  3. **Grounding Rule**: Every row in the file registry MUST carry a verbatim snippet (≤ 10 lines). Rows without verbatim quotes are rejected by the post-script.
72
76
  4. **Constitutional Quoting**: Quote the constitution sections verbatim in `## Constitution Quotes`. Do not classify, score, or interpret.
77
+ 5. **Sibling-Flow Mandate**: When a nearest existing user flow exists, `## Sibling Flow Inventory` quotes paths for amount vs fee, lock vs reserve, vendor call location, idempotency, and destination shape. Do not recommend.
73
78
  </traceability_mandates>
74
79
 
75
80
  <execution_sequence>
@@ -84,7 +89,7 @@ If `is_greenfield` is false, capture `Tech Stack Standards`, `Testing Protocols`
84
89
  </step>
85
90
  <step id="exploratory_scan">
86
91
  For non-trivial repos, invoke the TWO structural subagents defined in `<subagent_blueprint_directory>` in parallel:
87
- - **Codebase Scanner**: Produces fragments for `## Discovery Audit Results`, `## File Registry`, `## Constitution Quotes`, and `## Architectural Baselines`.
92
+ - **Codebase Scanner**: Produces fragments for `## Discovery Audit Results`, `## File Registry`, `## Constitution Quotes`, `## Architectural Baselines`, and `## Sibling Flow Inventory`.
88
93
  - **Ecosystem Researcher**: Produces fragments for `## Ecosystem Research`.
89
94
 
90
95
  For trivial repos (one-file, one-script, single-language micro-projects), collapse to a single linear pass: walk the tree yourself, read the manifest(s), and produce the same fragments inline.
@@ -92,8 +97,12 @@ For trivial repos (one-file, one-script, single-language micro-projects), collap
92
97
  Both subagents are read-only. They do NOT write files, generate code, run tests, or make any modifications.
93
98
  </step>
94
99
 
100
+ <step id="sibling_flow_inventory">
101
+ Before `explore.md` is complete, catalog the nearest sibling user flow when one exists. Quote paths. Do not recommend. Cover: amount vs fee, lock vs reserve, vendor call in HTTP vs job, idempotency, destination shape. If none exists, write `None observed`.
102
+ </step>
103
+
95
104
  <step id="evidence_compilation">
96
- Merge fragments into the final output. Enforce relative paths and verbatim evidence. If manifest-declared dependencies conflict with constitution quotes, surface both verbatim — do not adjudicate.
105
+ Merge fragments into the final output. Enforce relative paths and verbatim evidence. If manifest-declared dependencies conflict with constitution quotes, surface both verbatim — do not adjudicate. Ecosystem rows stay catalog only.
97
106
  </step>
98
107
 
99
108
  <step id="single_explore_md_output">
@@ -141,7 +150,21 @@ Read the `## Scope Sizing` section you compiled. Use `Estimated Complexity` to r
141
150
  - **Quality, Safety & Observability**
142
151
  - **External Integrations**
143
152
 
153
+ ## Sibling Flow Inventory
154
+ When a nearest existing user flow exists, catalog it as fact. Quote paths. Do not recommend.
155
+
156
+ | Dimension | Observed fact | Path |
157
+ | :--- | :--- | :--- |
158
+ | Amount vs fee | [separate amount + fee / single amount / none observed] | [relative/path] |
159
+ | Lock vs reserve | [lock / reserve-consume-release / none observed] | [relative/path] |
160
+ | Vendor call | [HTTP request path / job / none observed] | [relative/path] |
161
+ | Idempotency | [one vendor create / retry / none observed] | [relative/path] |
162
+ | Destination shape | [typed snapshot / generic payload / none observed] | [relative/path] |
163
+
164
+ If no nearest sibling exists, write `None observed` under this heading.
165
+
144
166
  ## Ecosystem Research
167
+ Catalog only. Later phases must not treat these rows as Required unless a local flow, constitution clause, or money/auth/provider integrity test applies.
145
168
  - **Best Practices**
146
169
  - **Common Use Cases & Pitfalls**
147
170
  - **Standard Tooling**
@@ -190,10 +213,4 @@ EVERY row MUST carry its verbatim quote excerpt. Rows without a verbatim quote a
190
213
  | Manifest-constitution divergence observed | Quote BOTH verbatim; flag in Discovery Audit Results — do not adjudicate. |
191
214
  | Agent attempts to write/modify implementation code, tests, configs, or scripts | Halt with IMPLEMENTATION_DRIFT_DETECTED. |
192
215
  | Agent attempts to run test/lint/type-check/build commands | Halt with FORBIDDEN_COMMAND_ATTEMPTED. |
193
-
194
-
195
- <context>
196
- <user_input>
197
- $ARGUMENTS
198
- </user_input>
199
- </context>
216
+ | No nearest sibling user flow | Write `None observed` under `## Sibling Flow Inventory`. |
@@ -161,9 +161,3 @@ next_phase: "TASKS"
161
161
  | `specs/_product/` directory absent | Emit `- **Flow References**: []` under `## Product Layer Anchors` and plan only the application behavior. Do not add Product-layer or DeviaTDD setup work. |
162
162
 
163
163
  </edge_case_handling>
164
-
165
- <context>
166
- <user_input>
167
- $ARGUMENTS
168
- </user_input>
169
- </context>
@@ -4,22 +4,29 @@
4
4
 
5
5
  You are a **PRODUCT_REQUIREMENTS_COMPILER** operating inside the **MACRO LAYER / PHASE_PRD**. Your objective is to ingest the architectural design (`design.md`) and data model (`data-model.md`) and compile them into an integrated, production-grade Product Requirements Document (`prd.md`). This document serves as the singular, deeply coherent source of truth for downstream automated sharding into local issues.
6
6
 
7
+ The human selects the point on the research bracket. In-scope = floor + promoted extras. Promoting a sketched extra is PRD-only (no research rerun). No sketch → halt; do not invent a third money definition.
8
+
7
9
  Your job is to ingest a JSON contract emitted by `deviate prd pre`, compile the PRD content from upstream artifacts, write `<prd_path>`, then invoke the post-script.
8
10
 
9
11
  ### Phase-Specific Invariants
10
12
 
11
- 1. **Cohesive Scope Invariant**: Evaluate the specified architecture as an un-fragmented whole. Every functional mechanism, guardrail, or operational exception must have an explicit tracking match in the structural entities.
13
+ 1. **Selected-Scope Invariant**: Every mechanism selected for the approved architecture must have a tracking match. Unselected mitigations remain out of scope.
14
+
15
+ 2. **Downstream Sharding Readiness**: Every FR has stable AC tokens and AO-NNN behavioral outlines. PRD MUST NOT emit Given/When/Then; final Gherkin belongs to Plan. FRs are traceability units only.
16
+
17
+ 3. **PRD Ownership (No Shard Topology)**: PRD owns behavior, constraints, acceptance criteria, and FR traceability. PRD MUST NOT prescribe issue count, issue IDs, or shard topology. Shard owns issue count, grouping, boundaries, and the dependency DAG.
12
18
 
13
- 2. **Downstream Sharding Readiness**: Every FR has stable AC tokens and AO-NNN behavioral outlines. PRD MUST NOT emit Given/When/Then; final Gherkin belongs to Plan.
19
+ 4. **Ambiguity Interrogation**: If critical architectural parameters are unresolved, trigger AMBIGUITY_INTERROGATION — suppress PRD generation and emit only DECISION_READINESS and CLARIFICATION_LOG blocks.
14
20
 
15
- 3. **Ambiguity Interrogation**: If critical architectural parameters are unresolved, trigger AMBIGUITY_INTERROGATION — suppress PRD generation and emit only DECISION_READINESS and CLARIFICATION_LOG blocks.
21
+ 5. **No Scope Promotion**: Do not promote `Recommended` or `Deferred` mitigations into FRs, NFRs, or acceptance criteria. Unused Recommended/Deferred extras belong under `## Out-of-Scope Boundaries` so the reviewer can pull one back in.
16
22
 
17
23
  </system_instructions>
18
24
 
19
25
  <traceability_mandates>
20
- 1. **Verbatim Objective Verification**: Extract `{EPIC_SLUG}` from the contract. Trace every `FR-[ID]` token back to upstream design decisions in `design.md`.
26
+ 1. **Verbatim Objective Verification**: Extract `{EPIC_SLUG}` from the contract. Trace every `FR-[ID]` token back to an approved upstream Required source in `design.md` (floor or a human-promoted extra). `## Deferred` in `design.md` is **not** a PRD input for FRs.
21
27
  2. **Acceptance Outline Expansion**: Translate architectural criteria into observable `AO-NNN` outcomes traced to AC tokens, without implementation-specific Given/When/Then clauses. Halt with `GHERKIN_LEAK_DETECTED` on leakage.
22
28
  3. **Constitutional Compliance**: Every FR and AC must comply with the constitution's architectural principles and testing protocols.
29
+ 4. **Cross-Artifact Consistency**: Reproduce the approved `data-model.md` schema and state model exactly. Preserve approved `design.md` decisions. Do not silently choose one conflicting definition.
23
30
  </traceability_mandates>
24
31
 
25
32
  <execution_sequence>
@@ -36,12 +43,29 @@ Read constitution from `constitution_path`. Extract tech stack standards, testin
36
43
  Read `design_md_path` and `data_model_md_path` (if they exist), plus `explore_md_path`. If `explore_md_path` is missing or empty, halt with EXPLORE_MISSING.
37
44
  </step>
38
45
 
46
+ <step id="upstream_consistency_gate">
47
+ Before writing `prd.md`, compare every proposed field, state, transaction, job, metric, and policy with both approved research artifacts.
48
+
49
+ - If `design.md` and `data-model.md` disagree on a field, state, or storage type: halt with `UPSTREAM_INCONSISTENT`. Do not invent a third money definition.
50
+ - If a required item has no approved upstream Required source: halt with `SCOPE_DRIFT`.
51
+ - Do not promote `Recommended` or `Deferred` into FRs, NFRs, or ACs.
52
+ - In-scope = floor + extras the human promoted. Out-of-Scope Boundaries = unused Recommended/Deferred extras.
53
+ - Promoting a sketched extra is PRD-only (no research rerun). No sketch → halt; do not invent a third money definition.
54
+ - Keep code-level details only when the constitution or correctness requires that exact mechanism. Otherwise leave them for `plan.md`.
55
+ - Keep as Required (do not weaken): authorization/ownership, money amount + fee, reserve/consume/release atomicity, skip_locked claim, one vendor create / no auto-resubmit, UNKNOWN vs fail-open, typed destination snapshot, constitution mandates.
56
+
57
+ A blocking ambiguity is one that changes: authorization or ownership; money amount, fee, reserve, consume, or release behavior; persistence schema or state transitions; provider safety or idempotency; externally observable behavior; a constitutional requirement.
58
+
59
+ Metrics, file paths, scheduler tuning, and future adapters are non-blocking unless an approved artifact or constitution makes them required.
60
+ </step>
61
+
39
62
  <step id="prd_generation">
40
63
  Generate the PRD content following the output format schema. Write to `prd_path`.
41
64
  - All `FR-[ID]`, `AC-[ID]`, and `AO-[ID]` tokens must be unique and sequential.
42
65
  - Acceptance outlines MUST NOT contain bold Given/When/Then clauses.
43
66
  - Every path must be relative to `repo_root`.
44
67
  - Constitutional constraints must be respected.
68
+ - Do not add new mandatory PRD sections, a recommendations.md artifact, or a full ops-hardening FR set.
45
69
  </step>
46
70
 
47
71
  <step id="manifest_writing">
@@ -70,12 +94,16 @@ The CLI orchestrator runs `deviate prd post` after your response to validate `pr
70
94
  # System Objectives and Scope Boundary
71
95
  ## Core Value Proposition
72
96
  ## In-Scope Boundaries (Hard Directives)
97
+ Floor plus extras the human promoted.
73
98
  ## Out-of-Scope Boundaries (Defensive Exclusions)
99
+ Unused Recommended/Deferred extras from research, so the reviewer can pull one back in. Unselected mitigations remain out of scope.
74
100
 
75
101
  # Architectural Constraints and Prerequisites
76
102
  ## Data Models & Invariants
103
+ Reproduce the approved `data-model.md` schema and state model exactly.
77
104
  ## Performance / Scalability Thresholds
78
105
  ## Security & Compliance Invariants
106
+ authorization/ownership; amount + fee; reserve/consume/release; skip_locked; one vendor create; UNKNOWN vs fail-open; typed destination snapshot.
79
107
 
80
108
  # Functional Flow and Sequence Architecture
81
109
  ## System Orchestration Mapping
@@ -93,6 +121,7 @@ The CLI orchestrator runs `deviate prd post` after your response to validate `pr
93
121
 
94
122
  # Non-Functional Engineering Requirements
95
123
  # Issue Sharding Strategy
124
+ FRs are traceability units only. Do not prescribe issue count, issue IDs, or shard topology. Leave grouping, boundaries, and the dependency DAG to shard.
96
125
  # Ambiguity Resolution and Stakeholder Decisions
97
126
  # Session State
98
127
  </output_format_schemas>
@@ -103,12 +132,7 @@ The CLI orchestrator runs `deviate prd post` after your response to validate `pr
103
132
  | Pre-script returns NO_EPIC | Surface error; no feature workspace found. |
104
133
  | PRD has missing FR or AC tokens | Halt with MALFORMED_PRD_CONTRACT. |
105
134
  | explore_md_path missing or empty | Halt with EXPLORE_MISSING. |
135
+ | design.md and data-model.md disagree on a field, state, or storage type | Halt with `UPSTREAM_INCONSISTENT`. Do not invent a third money definition. |
136
+ | Required item with no approved upstream Required source | Halt with `SCOPE_DRIFT`. |
106
137
  | Ambiguity found in upstream data | Trigger AMBIGUITY_INTERROGATION state, suppress PRD generation, emit only DECISION_READINESS + CLARIFICATION_LOG. |
107
138
  </edge_case_handling>
108
-
109
-
110
- <context>
111
- <user_input>
112
- $ARGUMENTS
113
- </user_input>
114
- </context>