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