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.
- {deviatdd-2.24.1 → deviatdd-2.24.2}/CHANGELOG.md +5 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/PKG-INFO +1 -1
- {deviatdd-2.24.1 → deviatdd-2.24.2}/pyproject.toml +1 -1
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/prd.md +7 -7
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/DeviaTDD-api.md +3 -3
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/DeviaTDD-architecture.md +3 -3
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/explore.md +28 -11
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/plan.md +0 -6
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/prd.md +35 -11
- deviatdd-2.24.2/src/deviate/prompts/auto/research.md +237 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/shard.md +20 -25
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/tasks.md +0 -6
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-research.md +1 -1
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/core/macro-shared.md +1 -1
- deviatdd-2.24.2/tests/fixtures/scope_gates/floor_bracket_items.yaml +121 -0
- deviatdd-2.24.2/tests/fixtures/scope_gates/sibling_withdrawal_inventory.md +14 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_commands.py +11 -0
- deviatdd-2.24.2/tests/test_macro/test_scope_gates.py +263 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_meso/test_auto_prompt_templates.py +157 -12
- {deviatdd-2.24.1 → deviatdd-2.24.2}/uv.lock +1 -1
- deviatdd-2.24.1/src/deviate/prompts/auto/research.md +0 -210
- {deviatdd-2.24.1 → deviatdd-2.24.2}/.env.example +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/.gitattributes +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/.githooks/pre-commit +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/.githooks/pre-push +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/.github/ISSUE_TEMPLATE/bug.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/.github/ISSUE_TEMPLATE/feature.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/.github/workflows/ci.yml +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/.github/workflows/release.yml +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/.gitignore +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/AGENTS.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/CLAUDE.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/CODE_OF_CONDUCT.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/CONTRIBUTING.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/LICENSE +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/README.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/SECURITY.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/deviatdd.png +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/docs/rationale.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/mise.toml +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat/001-deviate-cli-python/008-meso-macro-automated-orchestration.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat/adhoc/006-context-cli-integration.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat/adhoc/017-optional-push-as-lock.md +0 -0
- {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
- {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-001-deviate-cli-python-003-meso-layer-specification-task-decomposition.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-001-deviate-cli-python-004-micro-layer-tdd-sandbox-execution.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-001-deviate-cli-python-005-cli-architecture-realignment-skill-integration.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-001-deviate-cli-python-007-macro-meso-parity-backward-compatibility.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-002-deviatdd-gap-analysis-001-foundation-cli-infrastructure.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-002-deviatdd-gap-analysis-003-fast-path-commands.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-002-deviatdd-gap-analysis-004-governance-inspection.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-adhoc-001-streaming-pipeline-monitor.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-adhoc-008-ast-phase-prioritization.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat-adhoc-017-two-counter-tdd-retry.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/pr_descriptions/feat_002-deviatdd-gap-analysis_001-foundation-cli-infrastructure.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/scripts/benchmark_lmstudio.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/scripts/next_version.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/scripts/verify_install.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/001-cli-initialization-governance-provisioning/manifest-t001.json +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/001-cli-initialization-governance-provisioning/manifest-t002.json +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/001-cli-initialization-governance-provisioning/manifest-t004.json +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/001-cli-initialization-governance-provisioning/spec.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/001-cli-initialization-governance-provisioning/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/002-macro-layer-state-ledger-management/spec.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/002-macro-layer-state-ledger-management/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/003-meso-layer-specification-task-decomposition/spec.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/003-meso-layer-specification-task-decomposition/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/004-micro-layer-tdd-sandbox-execution/spec.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/004-micro-layer-tdd-sandbox-execution/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/004-micro-layer-tdd-sandbox-execution/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/005-cli-architecture-realignment-skill-integration/spec.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/005-cli-architecture-realignment-skill-integration/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/007-macro-meso-parity-backward-compatibility/spec.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/007-macro-meso-parity-backward-compatibility/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/008-meso-macro-automated-orchestration/spec.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/008-meso-macro-automated-orchestration/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/008-meso-macro-automated-orchestration/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/data-model.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/design.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/explore.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/001-cli-initialization-governance-provisioning.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/002-macro-layer-state-ledger-management.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/003-meso-layer-specification-task-decomposition.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/004-micro-layer-tdd-sandbox-execution.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/005-cli-architecture-realignment-skill-integration.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/006-state-persistence-concurrency-safety.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/007-macro-meso-parity-backward-compatibility.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/issues/008-meso-macro-automated-orchestration.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/001-deviate-cli-python/prd.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/001-foundation-cli-infrastructure/spec.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/001-foundation-cli-infrastructure/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/001-foundation-cli-infrastructure/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/003-fast-path-commands/spec.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/003-fast-path-commands/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/003-fast-path-commands/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/004-governance-inspection/spec.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/004-governance-inspection/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/004-governance-inspection/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/005-micro-layer-integrity/spec.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/005-micro-layer-integrity/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/005-micro-layer-integrity/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/data-model.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/design.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/explore.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/issues/001-foundation-cli-infrastructure.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/issues/002-context-pipeline.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/issues/003-fast-path-commands.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/issues/004-governance-inspection.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/issues/005-micro-layer-integrity.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/plan-tdd-integration-gap.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/002-deviatdd-gap-analysis/prd.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/003-graphite-cli-integration/explore.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/004-per-task-security-profile/issues/001-security-profile-and-judge-checks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/001-verification-mode-metadata/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/001-verification-mode-metadata/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/001-verification-mode-metadata/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/002-task-acceptance-traceability/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/002-task-acceptance-traceability/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/002-task-acceptance-traceability/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/data-model.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/design.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/explore.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/issues/001-verification-mode-metadata.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/issues/002-task-acceptance-traceability.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/issues/003-micro-phase-gates-red-green.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/issues/004-refactor-regression-gate.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/005-acceptance-gates/issues/005-prompt-spec-alignment.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/006-setup-interactive-config/data-model.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/006-setup-interactive-config/design.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/006-setup-interactive-config/explore.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/architecture.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/domain-model.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/flows/flows-product.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/flows/flows-streaming.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/flows/index.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/flows.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/guildwright-current-system.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/guildwright-gap-register.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/guildwright-git-state-model.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/guildwright-rewrite.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/guildwright-rust-tui-requirements.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/_product/release-next.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/001-streaming-pipeline-monitor/spec.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/001-streaming-pipeline-monitor/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/001-streaming-pipeline-monitor/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/003-meso-layer-restructuring/spec.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/003-meso-layer-restructuring/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/003-meso-layer-restructuring/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/004-deviate-review-skill/spec.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/004-deviate-review-skill/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/004-deviate-review-skill/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/005-per-phase-model-configuration/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/005-per-phase-model-configuration/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/005-per-phase-model-configuration/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/006-context-cli-integration/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/006-context-cli-integration/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/006-context-cli-integration/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/007-graphite-cli/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/007-graphite-cli/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/007-graphite-cli/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/008-ast-phase-prioritization/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/008-ast-phase-prioritization/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/008-ast-phase-prioritization/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/009-pi-agent-backend-integration/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/009-pi-agent-backend-integration/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/009-pi-agent-backend-integration/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/010-deviate-setup-product-layer/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/010-deviate-setup-product-layer/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/010-deviate-setup-product-layer/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/013-flow-ledger-canonical-source-of-truth/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/013-flow-ledger-canonical-source-of-truth/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/013-flow-ledger-canonical-source-of-truth/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/015-narrow-product-flow-scope/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/015-narrow-product-flow-scope/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/016-single-source-prompt-templates/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/016-single-source-prompt-templates/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/016-single-source-prompt-templates/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/017-optional-push-as-lock/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/017-optional-push-as-lock/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/017-optional-push-as-lock/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/017-two-counter-tdd-retry/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/017-two-counter-tdd-retry/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/017-two-counter-tdd-retry/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/018-one-behavior-rgr-granularity/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/018-one-behavior-rgr-granularity/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/019-remote-aware-ordinal-allocation/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/019-remote-aware-ordinal-allocation/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/019-remote-aware-ordinal-allocation/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/020-judge-compliance-pass-evidence/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/020-judge-compliance-pass-evidence/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/020-judge-compliance-pass-evidence/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/021-no-failing-test-escalate-invokes-green/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/021-no-failing-test-escalate-invokes-green/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/021-no-failing-test-escalate-invokes-green/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/022-already-satisfied-red-requires-tests/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/022-already-satisfied-red-requires-tests/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/022-already-satisfied-red-requires-tests/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/023-pinned-micro-run-issue-scoped/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/023-pinned-micro-run-issue-scoped/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/023-pinned-micro-run-issue-scoped/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/024-worktree-session-stale-issue-id/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/024-worktree-session-stale-issue-id/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/024-worktree-session-stale-issue-id/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/025-green-stderr-noise-stall-detector/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/025-green-stderr-noise-stall-detector/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/025-green-stderr-noise-stall-detector/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/026-pi-spawn-lean-tool-schema/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/026-pi-spawn-lean-tool-schema/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/026-pi-spawn-lean-tool-schema/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/027-red-hang-timeout-rollback/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/027-red-hang-timeout-rollback/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/027-red-hang-timeout-rollback/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/028-task-scoped-judge-review-coverage/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/028-task-scoped-judge-review-coverage/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/028-task-scoped-judge-review-coverage/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/030-config-rework/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/030-config-rework/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/030-config-rework/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/031-judge-revert-boundary-no-failing-test/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/031-judge-revert-boundary-no-failing-test/tasks.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/031-judge-revert-boundary-no-failing-test/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/034-setup-interactive-config/plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/034-setup-interactive-config/tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/001-streaming-pipeline-monitor.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/002-aider-agent-backend-integration.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/003-meso-layer-restructuring.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/004-deviate-review-skill.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/005-per-phase-model-configuration.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/006-context-cli-integration.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/007-graphite-cli.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/008-ast-phase-prioritization.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/009-pi-agent-backend-integration.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/010-deviate-setup-product-layer.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/012-rpc-streaming-tui-renderer.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/013-flow-ledger-canonical-source-of-truth.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/014-cwe-mapping-security-findings.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/015-narrow-product-flow-scope.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/016-single-source-prompt-templates.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/017-optional-push-as-lock.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/017-two-counter-tdd-retry.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/018-one-behavior-rgr-granularity.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/019-remote-aware-ordinal-allocation.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/020-judge-compliance-pass-evidence.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/021-no-failing-test-escalate-invokes-green.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/022-already-satisfied-red-requires-tests.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/023-pinned-micro-run-issue-scoped.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/024-worktree-session-stale-issue-id.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/025-green-stderr-noise-stall-detector.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/026-pi-spawn-lean-tool-schema.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/027-red-hang-timeout-rollback.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/028-task-scoped-judge-review-coverage.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/029-ponytail-pruning-in-review.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/030-config-rework.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/031-judge-revert-boundary-no-failing-test.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/032-judge-feedback-injection-fail-close.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/033-prune-post-completed.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/034-setup-interactive-config.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/035-gate3-walkthrough-map-and-review-comments.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/036-cli-help-readme-transparency.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/issues/037-setup-pack-tui-multiselect.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc/prd.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/adhoc.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/constitution.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/explore/ast-tree-sitter.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/explore/config-rework.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/explore/flow-ledger.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/explore/graphite-cli.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/explore/pi-agent-backend.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/explore/ponytail-pruning.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/explore/product-layer.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/explore/rpc-streaming-tui.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/explore/rpc-streaming.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/explore/security-hardening-cwe.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/implementation-gap.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/specs/issues.jsonl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/__init__.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/__init__.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/_common.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/_html.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/_safe_commands.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/adhoc.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/constitution.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/feature.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/flow_commands.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/init.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/inspect.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/macro.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/meso.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/micro.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/prune.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/review.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/cli/walkthrough.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/__init__.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/_shared.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/agent.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/cache_discipline.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/commands.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/commit.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/complexity.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/constitution.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/contract.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/convention.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/epic.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/issues.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/judge_evidence.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/prd.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/profile.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/prune.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/repo.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/review_coverage.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/run_logger.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/tasks_ledger.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/validation.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/core/worktree.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/html_templates/__init__.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/html_templates/architecture.html.tmpl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/html_templates/domain-model.html.tmpl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/html_templates/flows.html.tmpl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/html_templates/plan.html.tmpl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/html_templates/prd.html.tmpl +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/main.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/__init__.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/assembly.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/__init__.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/execute.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/green.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/judge.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/red.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/auto/refactor.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-adhoc.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-architecture.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-constitution.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-e2e.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-execute.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-explore.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-flows.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-green.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-hotfix.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-html.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-init.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-judge.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-merge.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-plan.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-pr.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-prd.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-prune.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-red.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-refactor.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-release.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-review.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-shard.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-tasks.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-triage.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/commands/deviate-walkthrough.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/constitution_seed.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/core/core.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/core/lifecycle-auto.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/core/lifecycle-manual.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/core/meso-shared.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/core/micro-shared.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/core/product-shared.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/core/style-ste.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/governance/__init__.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/governance/agents_seed.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/governance/claudemd_seed.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/governance/libref_seed.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/prompts/skills/deviatdd/SKILL.md +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/state/__init__.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/state/config.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/state/ledger.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/ui/__init__.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/ui/checkbox.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/ui/monitor.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/ui/pipeline.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/ui/render.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/src/deviate/visual/__init__.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/__init__.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/conftest.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/core/__init__.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/core/test_agent.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/core/test_smart_stall.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/e2e/test_derived_command_install.bats +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/e2e/test_green_stderr_stall.bats +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/e2e/test_macro_workflow.bats +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/e2e/test_optional_push_as_lock.bats +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/e2e/test_pi_spawn_lean_tool_schema.bats +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/e2e/test_red_hang_timeout_rollback.bats +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/e2e/test_review_plan_ac_coverage.bats +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/e2e/test_setup_config_rework.bats +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/e2e/test_worktree_session_stale_issue.bats +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/__init__.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_adhoc.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_common.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_constitution.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_feature.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_flows_sync.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_help.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_html.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_init.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_inspect.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_macro_contracts.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_main_entrypoint.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_merge.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_meso.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_meso_contracts.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_micro.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_prune.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_real_descendant_kill.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_review.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_safe_commands.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_setup.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_test_command_resolution.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_timeout_safe_command.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_top_level_run.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_cli/test_walkthrough.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_agent.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_cache_discipline.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_commit.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_complexity.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_constitution.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_contract.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_convention.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_epic.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_flow_confirmation.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_issues.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_judge_evidence.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_ledger.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_prd.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_profile.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_prune.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_repo.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_run_logger.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_tasks_ledger.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_validation.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_core/test_worktree.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_init.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/__init__.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/conftest.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/test_command_installation.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/test_init_export_cycle.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/test_macro_full_cycle.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/test_macro_layer.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/test_macro_orchestration.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/test_meso_layer.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/test_meso_orchestration.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/test_meso_task_ledger.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/test_parity.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_integration/test_skill_installation.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_macro/__init__.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_macro/test_explore.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_macro/test_macro_model_routing.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_macro/test_macro_orchestration.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_macro/test_prd.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_macro/test_research.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_macro/test_shard.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_meso/__init__.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_meso/test_meso_model_routing.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_meso/test_meso_orchestration.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_meso/test_meso_resume.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_meso/test_plan_structure_injection.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_meso/test_pr_platform.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_meso/test_prompt_assembly.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_meso/test_specify.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_meso/test_tasks.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/__init__.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/conftest.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_commit_failure.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_completed_evidence.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_e2e.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_execute.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_green.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_hotfix.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_judge.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_orchestration.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_output_filter.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_red.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_refactor.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_review_pause.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_rollback_safety.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_run.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_task_label.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_micro/test_two_counter_retry.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_release/test_next_version.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_state/__init__.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_state/test_config.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_state/test_ledger.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_state/test_security_profile.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_state/test_session.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_ui/__init__.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_ui/test_checkbox.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_ui/test_monitor.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_ui/test_pipeline.py +0 -0
- {deviatdd-2.24.1 → deviatdd-2.24.2}/tests/test_ui/test_render.py +0 -0
- {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.
|
|
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
|
|
@@ -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**:
|
|
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**:
|
|
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**:
|
|
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**:
|
|
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**:
|
|
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**:
|
|
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
|
-
|
|
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,
|
|
1584
|
-
| `/deviate-prd` | Product Owner Proxy | `specs/{FEATURE_SLUG}/prd.md` | `deviate prd pre/post` | 4 steps: read design.md, synthesize
|
|
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
|
|
92
|
-
* **PRD:** Translates
|
|
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 `##
|
|
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 `##
|
|
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. **
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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>
|