devflow-cli 2.9.0__tar.gz → 3.0.0__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.
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.github/workflows/ci.yml +4 -1
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.github/workflows/release.yml +4 -1
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.idea/workspace.xml +44 -17
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/CHANGELOG.md +16 -0
- devflow_cli-3.0.0/CLAUDE.md +20 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/CONTRIBUTING.md +1 -1
- devflow_cli-3.0.0/PKG-INFO +113 -0
- devflow_cli-3.0.0/README.md +85 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/commands/devflow.init.md +5 -7
- devflow_cli-3.0.0/commands/devflow.md +25 -0
- devflow_cli-3.0.0/commands/devflow.regen.md +34 -0
- devflow_cli-3.0.0/commands/devflow.status.md +11 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/docs/activity-contracts.md +30 -4
- devflow_cli-3.0.0/docs/cli-reference.md +105 -0
- devflow_cli-3.0.0/docs/commands-reference.md +13 -0
- devflow_cli-3.0.0/docs/cursor-guide.md +12 -0
- devflow_cli-3.0.0/docs/guides/brownfield.md +11 -0
- devflow_cli-3.0.0/docs/guides/greenfield.md +10 -0
- devflow_cli-3.0.0/docs/guides/microservices.md +12 -0
- devflow_cli-3.0.0/docs/index.md +16 -0
- devflow_cli-3.0.0/docs/pipeline-reference.generated.md +30 -0
- devflow_cli-3.0.0/docs/pipeline.md +28 -0
- devflow_cli-3.0.0/docs/spec-driven.md +11 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/extensions/EXTENSION-API-REFERENCE.md +1 -1
- devflow_cli-3.0.0/extensions/catalog.json +19 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/pyproject.toml +15 -2
- devflow_cli-3.0.0/src/devflow_cli/__init__.py +47 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/adapters/agents.py +109 -1
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/adapters/linear.py +18 -14
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/cli.py +0 -10
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/adaptive.py +285 -48
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/assess.py +39 -37
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/check.py +1 -15
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/docs_sync.py +2 -2
- devflow_cli-3.0.0/src/devflow_cli/commands/export_cmd.py +91 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/feature.py +32 -47
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/init_cmd.py +12 -2
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/linear.py +2 -2
- devflow_cli-3.0.0/src/devflow_cli/commands/migrate_cmd.py +200 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/stale.py +9 -9
- devflow_cli-3.0.0/src/devflow_cli/commands/status.py +194 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/upgrade_cmd.py +9 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/core/activity_contracts.py +16 -95
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/core/adaptive_runner.py +17 -6
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/core/adaptive_workflow.py +16 -30
- devflow_cli-3.0.0/src/devflow_cli/core/assessment.py +273 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/core/automatic_evidence.py +10 -8
- devflow_cli-3.0.0/src/devflow_cli/core/contract_schemas.py +110 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/core/docgen.py +29 -32
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/core/installer.py +62 -4
- devflow_cli-3.0.0/src/devflow_cli/core/operational.py +37 -0
- devflow_cli-3.0.0/src/devflow_cli/core/redaction.py +68 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/core/remediation.py +6 -3
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/core/staleness.py +22 -35
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/core/verification.py +5 -3
- devflow_cli-3.0.0/src/devflow_cli/schemas/activity-contract-v1.schema.json +76 -0
- devflow_cli-3.0.0/src/devflow_cli/schemas/activity-result-v1.schema.json +85 -0
- devflow_cli-3.0.0/src/devflow_cli/schemas/assessment-v1.schema.json +60 -0
- devflow_cli-3.0.0/src/devflow_cli/schemas/workflow-state-v2.schema.json +66 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/utils/paths.py +23 -12
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/templates/constitution-template.md +1 -1
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/templates/devflow-hooks-template.yml +4 -4
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/conftest.py +0 -30
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_activity_contracts.py +19 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_adaptive_runner.py +125 -44
- devflow_cli-3.0.0/tests/test_agent_adapters.py +209 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_assessment.py +35 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_automatic_evidence.py +33 -13
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_cmd_adaptive.py +244 -41
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_cmd_assess.py +17 -5
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_cmd_feature.py +19 -12
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_cmd_init.py +19 -0
- devflow_cli-3.0.0/tests/test_cmd_migrate.py +185 -0
- devflow_cli-3.0.0/tests/test_cmd_status.py +141 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_cmd_traceability.py +6 -4
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_cmd_upgrade.py +14 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_cmd_verify.py +6 -4
- devflow_cli-3.0.0/tests/test_constants.py +33 -0
- devflow_cli-3.0.0/tests/test_contract_schemas.py +123 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_docgen.py +6 -5
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_hooks.py +1 -1
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_installer.py +36 -1
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_integration.py +64 -48
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_linear_adapter.py +4 -4
- devflow_cli-3.0.0/tests/test_linear_order.py +52 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_logging.py +0 -19
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_paths.py +29 -0
- devflow_cli-3.0.0/tests/test_staleness.py +85 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_validators.py +3 -89
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_verification.py +35 -0
- devflow_cli-3.0.0/tests/test_wheel_adaptive_acceptance.py +420 -0
- devflow_cli-3.0.0/tests/test_wheel_install.py +99 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/uv.lock +229 -0
- devflow_cli-2.9.0/CLAUDE.md +0 -142
- devflow_cli-2.9.0/PKG-INFO +0 -223
- devflow_cli-2.9.0/README.md +0 -197
- devflow_cli-2.9.0/agents/devflow-autofix.md +0 -111
- devflow_cli-2.9.0/agents/devflow-review.md +0 -119
- devflow_cli-2.9.0/commands/devflow.analyze.md +0 -75
- devflow_cli-2.9.0/commands/devflow.checklist.md +0 -75
- devflow_cli-2.9.0/commands/devflow.clarify.md +0 -93
- devflow_cli-2.9.0/commands/devflow.constitution.md +0 -63
- devflow_cli-2.9.0/commands/devflow.contracts.md +0 -65
- devflow_cli-2.9.0/commands/devflow.docs.md +0 -59
- devflow_cli-2.9.0/commands/devflow.implement.md +0 -123
- devflow_cli-2.9.0/commands/devflow.md +0 -351
- devflow_cli-2.9.0/commands/devflow.metrics.md +0 -61
- devflow_cli-2.9.0/commands/devflow.plan.md +0 -70
- devflow_cli-2.9.0/commands/devflow.regen.md +0 -40
- devflow_cli-2.9.0/commands/devflow.research.md +0 -59
- devflow_cli-2.9.0/commands/devflow.review-impl.md +0 -58
- devflow_cli-2.9.0/commands/devflow.review-spec.md +0 -53
- devflow_cli-2.9.0/commands/devflow.review-tasks.md +0 -52
- devflow_cli-2.9.0/commands/devflow.spec.md +0 -60
- devflow_cli-2.9.0/commands/devflow.status.md +0 -92
- devflow_cli-2.9.0/commands/devflow.sync-linear.md +0 -44
- devflow_cli-2.9.0/commands/devflow.tasks-to-issues.md +0 -44
- devflow_cli-2.9.0/commands/devflow.tasks.md +0 -59
- devflow_cli-2.9.0/docs/cli-reference.md +0 -836
- devflow_cli-2.9.0/docs/commands-reference.md +0 -557
- devflow_cli-2.9.0/docs/cursor-guide.md +0 -75
- devflow_cli-2.9.0/docs/guides/brownfield.md +0 -213
- devflow_cli-2.9.0/docs/guides/greenfield.md +0 -197
- devflow_cli-2.9.0/docs/guides/microservices.md +0 -199
- devflow_cli-2.9.0/docs/index.md +0 -27
- devflow_cli-2.9.0/docs/pipeline-reference.generated.md +0 -23
- devflow_cli-2.9.0/docs/pipeline.md +0 -306
- devflow_cli-2.9.0/docs/spec-driven.md +0 -306
- devflow_cli-2.9.0/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +0 -196
- devflow_cli-2.9.0/extensions/README.md +0 -138
- devflow_cli-2.9.0/extensions/catalog.json +0 -77
- devflow_cli-2.9.0/src/devflow_cli/__init__.py +0 -113
- devflow_cli-2.9.0/src/devflow_cli/commands/export_cmd.py +0 -149
- devflow_cli-2.9.0/src/devflow_cli/commands/migrate_cmd.py +0 -105
- devflow_cli-2.9.0/src/devflow_cli/commands/migrate_speckit.py +0 -344
- devflow_cli-2.9.0/src/devflow_cli/commands/review.py +0 -54
- devflow_cli-2.9.0/src/devflow_cli/commands/rollback.py +0 -53
- devflow_cli-2.9.0/src/devflow_cli/commands/run.py +0 -123
- devflow_cli-2.9.0/src/devflow_cli/commands/status.py +0 -131
- devflow_cli-2.9.0/src/devflow_cli/commands/step.py +0 -118
- devflow_cli-2.9.0/src/devflow_cli/core/assessment.py +0 -161
- devflow_cli-2.9.0/src/devflow_cli/core/orchestrator.py +0 -170
- devflow_cli-2.9.0/src/devflow_cli/core/state.py +0 -576
- devflow_cli-2.9.0/src/devflow_cli/core/state_store.py +0 -45
- devflow_cli-2.9.0/src/devflow_cli/schemas/state.schema.json +0 -39
- devflow_cli-2.9.0/templates/analyze-template.md +0 -115
- devflow_cli-2.9.0/templates/checklist-template.md +0 -64
- devflow_cli-2.9.0/templates/checklists/api.md +0 -25
- devflow_cli-2.9.0/templates/checklists/requirements.md +0 -25
- devflow_cli-2.9.0/templates/checklists/security.md +0 -25
- devflow_cli-2.9.0/templates/checklists/ux.md +0 -25
- devflow_cli-2.9.0/templates/clarify-template.md +0 -43
- devflow_cli-2.9.0/templates/docs-template.md +0 -74
- devflow_cli-2.9.0/templates/export/copilot-instructions-template.md +0 -33
- devflow_cli-2.9.0/templates/export/cursor-rules-template.md +0 -38
- devflow_cli-2.9.0/templates/review-impl-template.md +0 -71
- devflow_cli-2.9.0/templates/review-spec-template.md +0 -59
- devflow_cli-2.9.0/templates/review-tasks-template.md +0 -49
- devflow_cli-2.9.0/tests/fixtures/mock-state.json +0 -9
- devflow_cli-2.9.0/tests/test_agent_adapters.py +0 -126
- devflow_cli-2.9.0/tests/test_cmd_migrate.py +0 -100
- devflow_cli-2.9.0/tests/test_cmd_migrate_speckit.py +0 -471
- devflow_cli-2.9.0/tests/test_cmd_review.py +0 -95
- devflow_cli-2.9.0/tests/test_cmd_run.py +0 -39
- devflow_cli-2.9.0/tests/test_cmd_status.py +0 -123
- devflow_cli-2.9.0/tests/test_cmd_step.py +0 -141
- devflow_cli-2.9.0/tests/test_constants.py +0 -57
- devflow_cli-2.9.0/tests/test_e2e_pipeline.py +0 -295
- devflow_cli-2.9.0/tests/test_linear_order.py +0 -70
- devflow_cli-2.9.0/tests/test_orchestrator.py +0 -105
- devflow_cli-2.9.0/tests/test_rollback.py +0 -497
- devflow_cli-2.9.0/tests/test_staleness.py +0 -258
- devflow_cli-2.9.0/tests/test_state.py +0 -1024
- devflow_cli-2.9.0/tests/test_state_schema.py +0 -14
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.ai/mcp/mcp.json +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.claude/commands/speckit.analyze.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.claude/commands/speckit.checklist.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.claude/commands/speckit.clarify.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.claude/commands/speckit.constitution.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.claude/commands/speckit.implement.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.claude/commands/speckit.plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.claude/commands/speckit.specify.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.claude/commands/speckit.tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.claude/commands/speckit.taskstoissues.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.githooks/post-checkout +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.githooks/post-merge +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.gitignore +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.idea/.gitignore +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.idea/devflow.iml +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.idea/misc.xml +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.idea/modules.xml +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.idea/vcs.xml +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/init-options.json +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/memory/constitution.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/scripts/bash/common.sh +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/scripts/bash/setup-plan.sh +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/scripts/bash/update-agent-context.sh +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/001-cli-init-options/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/001-cli-init-options/contracts/cli-init.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/001-cli-init-options/data-model.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/001-cli-init-options/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/001-cli-init-options/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/001-cli-init-options/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/001-cli-init-options/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/002-cascade-regen/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/002-cascade-regen/contracts/cli-regen.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/002-cascade-regen/contracts/cli-status-staleness.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/002-cascade-regen/data-model.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/002-cascade-regen/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/002-cascade-regen/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/002-cascade-regen/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/002-cascade-regen/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/003-usecase-guides/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/003-usecase-guides/data-model.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/003-usecase-guides/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/003-usecase-guides/quickstart.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/003-usecase-guides/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/003-usecase-guides/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/003-usecase-guides/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/004-specify-central-directory/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/004-specify-central-directory/contracts/cli-commands.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/004-specify-central-directory/data-model.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/004-specify-central-directory/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/004-specify-central-directory/quickstart.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/004-specify-central-directory/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/004-specify-central-directory/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/004-specify-central-directory/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/005-implement-subphases/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/005-implement-subphases/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/005-implement-subphases/quickstart.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/005-implement-subphases/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/005-implement-subphases/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/005-implement-subphases/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/006-template-upgrade/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/006-template-upgrade/contracts/cli-upgrade.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/006-template-upgrade/data-model.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/006-template-upgrade/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/006-template-upgrade/quickstart.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/006-template-upgrade/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/006-template-upgrade/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/006-template-upgrade/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/007-project-documentation/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/007-project-documentation/data-model.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/007-project-documentation/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/007-project-documentation/quickstart.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/007-project-documentation/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/007-project-documentation/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/007-project-documentation/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/008-hardening-bugs/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/008-hardening-bugs/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/008-hardening-bugs/quickstart.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/008-hardening-bugs/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/008-hardening-bugs/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/008-hardening-bugs/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/009-ci-pypi/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/009-ci-pypi/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/009-ci-pypi/quickstart.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/009-ci-pypi/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/009-ci-pypi/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/009-ci-pypi/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/010-flexible-pipeline/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/010-flexible-pipeline/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/010-flexible-pipeline/quickstart.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/010-flexible-pipeline/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/010-flexible-pipeline/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/010-flexible-pipeline/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/011-cursor-support/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/011-cursor-support/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/011-cursor-support/quickstart.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/011-cursor-support/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/011-cursor-support/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/011-cursor-support/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/012-fix-critical-bugs/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/012-fix-critical-bugs/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/012-fix-critical-bugs/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/012-fix-critical-bugs/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/012-fix-critical-bugs/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/013-align-truth-sources/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/013-align-truth-sources/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/013-align-truth-sources/quickstart.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/013-align-truth-sources/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/013-align-truth-sources/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/014-enforce-state-machine/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/014-enforce-state-machine/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/014-enforce-state-machine/quickstart.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/014-enforce-state-machine/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/014-enforce-state-machine/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/015-fix-review-contradiction/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/015-fix-review-contradiction/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/015-fix-review-contradiction/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/015-fix-review-contradiction/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/015-fix-review-contradiction/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/016-harden-state-machine/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/016-harden-state-machine/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/016-harden-state-machine/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/016-harden-state-machine/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/016-harden-state-machine/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/017-fix-robustness-issues/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/017-fix-robustness-issues/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/017-fix-robustness-issues/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/017-fix-robustness-issues/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/017-fix-robustness-issues/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/018-fix-final-robustness/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/019-quality-hardening/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/019-quality-hardening/data-model.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/019-quality-hardening/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/019-quality-hardening/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/019-quality-hardening/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/019-quality-hardening/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/020-migrate-speckit/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/020-migrate-speckit/data-model.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/020-migrate-speckit/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/020-migrate-speckit/quickstart.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/020-migrate-speckit/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/020-migrate-speckit/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/020-migrate-speckit/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/021-review-iterations/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/021-review-iterations/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/021-review-iterations/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/021-review-iterations/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/021-review-iterations/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/022-fix-regen-command/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/022-fix-regen-command/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/022-fix-regen-command/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/022-fix-regen-command/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/022-fix-regen-command/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/023-add-logging/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/023-add-logging/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/023-add-logging/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/023-add-logging/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/023-add-logging/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/024-validate-constants/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/024-validate-constants/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/024-validate-constants/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/024-validate-constants/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/024-validate-constants/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/025-harden-tests/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/025-harden-tests/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/025-harden-tests/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/025-harden-tests/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/025-harden-tests/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/027-pipeline-auto-execution/checklists/requirements.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/027-pipeline-auto-execution/contracts/orchestrator-contract.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/027-pipeline-auto-execution/data-model.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/027-pipeline-auto-execution/plan.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/027-pipeline-auto-execution/quickstart.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/027-pipeline-auto-execution/research.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/027-pipeline-auto-execution/spec.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/specs/027-pipeline-auto-execution/tasks.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/templates/agent-file-template.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/templates/checklist-template.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/templates/constitution-template.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/templates/plan-template.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/templates/spec-template-brownfield.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/templates/spec-template-greenfield.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/templates/spec-template-microservices.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/templates/spec-template.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/.specify/templates/tasks-template.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/LICENSE +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/commands/devflow.context.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/commands/devflow.extension.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/extensions/catalog.community.json +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/extensions/template/example-command.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/extensions/template/example-extension.json +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/adapters/__init__.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/__init__.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/context.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/extension.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/hooks_cmd.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/traceability.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/verify.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/core/__init__.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/core/catalog.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/core/git.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/core/hooks.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/core/manifest.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/core/scanner.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/core/traceability.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/core/validators.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/core/waivers.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/core/worklog.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/core/worktree_snapshot.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/utils/__init__.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/utils/console.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/utils/logging.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/src/devflow_cli/utils/strings.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/templates/agent-context-template.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/templates/contracts/README-template.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/templates/contracts/api-template.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/templates/contracts/components-template.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/templates/contracts/interfaces-template.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/templates/contracts/services-template.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/templates/contracts-template.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/templates/data-model-template.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/templates/extension-manifest-template.json +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/templates/plan-template.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/templates/quickstart-template.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/templates/research-template.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/templates/spec-template.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/templates/tasks-template.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/fixtures/agents/mock-agent.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/fixtures/commands/mock-command.md +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/fixtures/mock-catalog.json +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/run-tests.sh +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test-helpers.sh +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test-template-variants.sh +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_adaptive_workflow.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_bash_runner.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_catalog.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_cmd_check.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_cmd_context.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_cmd_docs_sync.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_cmd_extension.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_cmd_hooks.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_cmd_linear.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_cmd_stale.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_context.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_git.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_manifest.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_paths_project_root.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_scanner.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_traceability.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_version.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_waivers.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_worklog.py +0 -0
- {devflow_cli-2.9.0 → devflow_cli-3.0.0}/tests/test_worktree_snapshot.py +0 -0
|
@@ -30,7 +30,10 @@ jobs:
|
|
|
30
30
|
uv pip install -e ".[dev]"
|
|
31
31
|
|
|
32
32
|
- name: Run pytest
|
|
33
|
-
run: uv run pytest tests/ -v
|
|
33
|
+
run: uv run pytest tests/ -v --ignore=tests/test_wheel_adaptive_acceptance.py
|
|
34
|
+
|
|
35
|
+
- name: Run installed-wheel adaptive acceptance
|
|
36
|
+
run: uv run pytest tests/test_wheel_adaptive_acceptance.py -v
|
|
34
37
|
|
|
35
38
|
- name: Check generated documentation
|
|
36
39
|
run: uv run devflow docs-sync --check
|
|
@@ -24,7 +24,10 @@ jobs:
|
|
|
24
24
|
uv pip install -e ".[dev]"
|
|
25
25
|
|
|
26
26
|
- name: Run tests
|
|
27
|
-
run: uv run pytest tests/ -v
|
|
27
|
+
run: uv run pytest tests/ -v --ignore=tests/test_wheel_adaptive_acceptance.py
|
|
28
|
+
|
|
29
|
+
- name: Run installed-wheel adaptive acceptance
|
|
30
|
+
run: uv run pytest tests/test_wheel_adaptive_acceptance.py -v
|
|
28
31
|
|
|
29
32
|
publish:
|
|
30
33
|
needs: test
|
|
@@ -4,25 +4,28 @@
|
|
|
4
4
|
<option name="autoReloadType" value="SELECTIVE" />
|
|
5
5
|
</component>
|
|
6
6
|
<component name="ChangeListManager">
|
|
7
|
-
<list default="true" id="4d5164b1-14ff-40b3-8f55-b6f2c3abff01" name="Changes" comment=""
|
|
7
|
+
<list default="true" id="4d5164b1-14ff-40b3-8f55-b6f2c3abff01" name="Changes" comment="">
|
|
8
|
+
<change beforePath="$PROJECT_DIR$/pyproject.toml" beforeDir="false" afterPath="$PROJECT_DIR$/pyproject.toml" afterDir="false" />
|
|
9
|
+
<change beforePath="$PROJECT_DIR$/src/devflow_cli/utils/paths.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/devflow_cli/utils/paths.py" afterDir="false" />
|
|
10
|
+
</list>
|
|
8
11
|
<option name="SHOW_DIALOG" value="false" />
|
|
9
12
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
|
10
13
|
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
|
11
14
|
<option name="LAST_RESOLUTION" value="IGNORE" />
|
|
12
15
|
</component>
|
|
13
16
|
<component name="EmbeddingIndexingInfo">
|
|
14
|
-
<option name="cachedIndexableFilesCount" value="
|
|
17
|
+
<option name="cachedIndexableFilesCount" value="1457" />
|
|
15
18
|
<option name="fileBasedEmbeddingIndicesEnabled" value="true" />
|
|
16
19
|
</component>
|
|
17
20
|
<component name="Git.Settings">
|
|
18
21
|
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
|
19
22
|
</component>
|
|
20
|
-
<component name="GitHubPullRequestSearchHistory"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
<component name="GitHubPullRequestSearchHistory">{
|
|
24
|
+
"lastFilter": {
|
|
25
|
+
"state": "OPEN",
|
|
26
|
+
"assignee": "sopequenoteck"
|
|
24
27
|
}
|
|
25
|
-
}
|
|
28
|
+
}</component>
|
|
26
29
|
<component name="GitToolBoxStore">
|
|
27
30
|
<option name="branchesCleanupHistory">
|
|
28
31
|
<BranchesCleanupHistory>
|
|
@@ -151,21 +154,44 @@
|
|
|
151
154
|
</option>
|
|
152
155
|
</BranchesCleanupHistory>
|
|
153
156
|
</option>
|
|
157
|
+
<option name="recentBranches">
|
|
158
|
+
<RecentBranches>
|
|
159
|
+
<option name="branchesForRepo">
|
|
160
|
+
<list>
|
|
161
|
+
<RecentBranchesForRepo>
|
|
162
|
+
<option name="branches">
|
|
163
|
+
<list>
|
|
164
|
+
<RecentBranch>
|
|
165
|
+
<option name="branchName" value="main" />
|
|
166
|
+
<option name="lastUsedInstant" value="1787262556" />
|
|
167
|
+
</RecentBranch>
|
|
168
|
+
<RecentBranch>
|
|
169
|
+
<option name="branchName" value="develop" />
|
|
170
|
+
<option name="lastUsedInstant" value="1787262555" />
|
|
171
|
+
</RecentBranch>
|
|
172
|
+
</list>
|
|
173
|
+
</option>
|
|
174
|
+
<option name="repositoryRootUrl" value="file://$PROJECT_DIR$" />
|
|
175
|
+
</RecentBranchesForRepo>
|
|
176
|
+
</list>
|
|
177
|
+
</option>
|
|
178
|
+
</RecentBranches>
|
|
179
|
+
</option>
|
|
154
180
|
</component>
|
|
155
|
-
<component name="GithubPullRequestsUISettings"
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
181
|
+
<component name="GithubPullRequestsUISettings">{
|
|
182
|
+
"selectedUrlAndAccountId": {
|
|
183
|
+
"url": "https://github.com/sopequenoteck/devflow.git",
|
|
184
|
+
"accountId": "8169ef0d-6593-43b8-9a77-2780a60dc5ac"
|
|
159
185
|
}
|
|
160
|
-
}
|
|
186
|
+
}</component>
|
|
161
187
|
<component name="McpProjectServerCommands">
|
|
162
188
|
<commands />
|
|
163
189
|
<urls />
|
|
164
190
|
</component>
|
|
165
|
-
<component name="ProjectColorInfo"
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
}
|
|
191
|
+
<component name="ProjectColorInfo">{
|
|
192
|
+
"associatedIndex": 7,
|
|
193
|
+
"fromUser": false
|
|
194
|
+
}</component>
|
|
169
195
|
<component name="ProjectId" id="3I2KWolJpZcPmEOGT7J0Rsp6K3n" />
|
|
170
196
|
<component name="ProjectViewState">
|
|
171
197
|
<option name="hideEmptyMiddlePackages" value="true" />
|
|
@@ -184,7 +210,7 @@
|
|
|
184
210
|
"codeWithMe.voiceChat.enabledByDefault": "false",
|
|
185
211
|
"com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true",
|
|
186
212
|
"dart.analysis.tool.window.visible": "false",
|
|
187
|
-
"git-widget-placeholder": "
|
|
213
|
+
"git-widget-placeholder": "main",
|
|
188
214
|
"junie.onboarding.icon.badge.shown": "true",
|
|
189
215
|
"kotlin-language-version-configured": "true",
|
|
190
216
|
"last_opened_file_path": "/Users/kellysossoe/Code/Apps/devflow",
|
|
@@ -215,6 +241,7 @@
|
|
|
215
241
|
<option name="presentableId" value="Default" />
|
|
216
242
|
<updated>1786957258019</updated>
|
|
217
243
|
<workItem from="1786957259143" duration="1286000" />
|
|
244
|
+
<workItem from="1787262300781" duration="880000" />
|
|
218
245
|
</task>
|
|
219
246
|
<servers />
|
|
220
247
|
</component>
|
|
@@ -5,6 +5,22 @@ Tous les changements notables de ce projet sont documentés dans ce fichier.
|
|
|
5
5
|
Le format est basé sur [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/),
|
|
6
6
|
et ce projet adhère au [Semantic Versioning](https://semver.org/lang/fr/).
|
|
7
7
|
|
|
8
|
+
## [3.0.0] - 2026-08-25
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- Le moteur de workflow historique est remplacé par le workflow adaptatif, fondé sur des activités vérifiables, des contrats structurés et des preuves locales.
|
|
13
|
+
- Le parcours quotidien passe par `devflow assess` puis `devflow adaptive start`, `run` et `status`.
|
|
14
|
+
- Les adaptateurs Codex, Claude Code et Cursor utilisent désormais le même contrat d'activité portable.
|
|
15
|
+
|
|
16
|
+
### Removed
|
|
17
|
+
|
|
18
|
+
- Les commandes, états et artefacts du moteur de workflow historique sont supprimés.
|
|
19
|
+
|
|
20
|
+
### Migration
|
|
21
|
+
|
|
22
|
+
- Pour reprendre une feature existante, exécuter `devflow migrate <ISSUE_ID> --dry-run`, puis `devflow migrate <ISSUE_ID>` après vérification. L'ancien état est conservé sous `legacy-state.json`.
|
|
23
|
+
|
|
8
24
|
## [2.9.0] - 2026-08-20
|
|
9
25
|
|
|
10
26
|
### Added
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Devflow
|
|
2
|
+
|
|
3
|
+
Ce dépôt implémente exclusivement un workflow adaptatif. Les changements de
|
|
4
|
+
politique passent par `assessment.json`; les transitions passent par la CLI et
|
|
5
|
+
ne doivent jamais être réalisées en éditant les fichiers d’état.
|
|
6
|
+
|
|
7
|
+
<!-- devflow:pipeline:start -->
|
|
8
|
+
Workflow adaptatif à quatre profils, sélectionné par `devflow assess` : quick: assess → implement → verify → done; standard: assess → prepare → implement → verify → done; deep: assess → spec → plan → tasks → implement → verify → review → done; critical: assess → risk-assessment → spec → research → contracts → plan → tasks → implement → verify → review → rollback-check → done. `assessment.json` porte la politique et `workflow-state.json` porte uniquement la progression et les preuves.
|
|
9
|
+
<!-- devflow:pipeline:end -->
|
|
10
|
+
|
|
11
|
+
## Commandes de développement
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
uv run pytest -q
|
|
15
|
+
./tests/run-tests.sh
|
|
16
|
+
uv run devflow docs-sync --check
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Pour un essai réel : `feature`, `assess`, `adaptive start`, puis une activité à
|
|
20
|
+
la fois avec `adaptive run`.
|
|
@@ -92,7 +92,7 @@ Les tests bash couvrent les scripts legacy (`devflow-cli.sh`, `setup-feature.sh`
|
|
|
92
92
|
|
|
93
93
|
## Développer une extension
|
|
94
94
|
|
|
95
|
-
Voir
|
|
95
|
+
Voir la référence : [extensions/EXTENSION-API-REFERENCE.md](./extensions/EXTENSION-API-REFERENCE.md).
|
|
96
96
|
|
|
97
97
|
En résumé :
|
|
98
98
|
1. Créer un manifest JSON suivant le schéma dans [EXTENSION-API-REFERENCE.md](./extensions/EXTENSION-API-REFERENCE.md)
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: devflow-cli
|
|
3
|
+
Version: 3.0.0
|
|
4
|
+
Summary: Spec-Driven Development workflow CLI
|
|
5
|
+
Project-URL: Homepage, https://github.com/sopequenoteck/devflow
|
|
6
|
+
Project-URL: Repository, https://github.com/sopequenoteck/devflow
|
|
7
|
+
Author-email: sopequenoteck <sopequeno.tech@gmail.com>
|
|
8
|
+
License: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Keywords: claude-code,cli,codex,development,spec-driven,workflow
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
18
|
+
Requires-Python: >=3.11
|
|
19
|
+
Requires-Dist: jsonschema>=4.23
|
|
20
|
+
Requires-Dist: pyyaml>=6
|
|
21
|
+
Requires-Dist: rich>=13
|
|
22
|
+
Requires-Dist: typer>=0.12
|
|
23
|
+
Provides-Extra: dev
|
|
24
|
+
Requires-Dist: hatchling>=1.27; extra == 'dev'
|
|
25
|
+
Requires-Dist: pytest-cov>=5; extra == 'dev'
|
|
26
|
+
Requires-Dist: pytest>=8; extra == 'dev'
|
|
27
|
+
Description-Content-Type: text/markdown
|
|
28
|
+
|
|
29
|
+
# devflow
|
|
30
|
+
|
|
31
|
+
Devflow est un moteur de développement adaptatif pour Codex, Claude Code et
|
|
32
|
+
Cursor. Il choisit un niveau de rigueur à partir de signaux explicites, produit
|
|
33
|
+
des contrats d’activité portables et bloque les transitions tant que les
|
|
34
|
+
preuves attendues ne sont pas présentes.
|
|
35
|
+
|
|
36
|
+
## Profils
|
|
37
|
+
|
|
38
|
+
- `quick` : changement local, clair et peu risqué.
|
|
39
|
+
- `standard` : plusieurs composants ou risque modéré.
|
|
40
|
+
- `deep` : changement transversal, ambigu ou contractuel.
|
|
41
|
+
- `critical` : sécurité, données, migration ou risque élevé.
|
|
42
|
+
|
|
43
|
+
Les routes exactes et leurs preuves sont générées dans
|
|
44
|
+
[docs/pipeline-reference.generated.md](docs/pipeline-reference.generated.md).
|
|
45
|
+
|
|
46
|
+
## Installation
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
uv tool install devflow-cli
|
|
50
|
+
devflow init --ai codex
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Python 3.11+ et Git sont requis. `--ai` accepte `codex`, `claude-code` ou
|
|
54
|
+
`cursor`.
|
|
55
|
+
|
|
56
|
+
## Parcours quotidien
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
devflow feature KS-123 --short-name user-auth
|
|
60
|
+
devflow assess KS-123 --scope multiple --ambiguity medium --risk medium
|
|
61
|
+
devflow adaptive start KS-123
|
|
62
|
+
devflow adaptive run KS-123 --agent codex
|
|
63
|
+
devflow adaptive status KS-123
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
`adaptive status --json` fournit un état exploitable par la CI. Les échecs
|
|
67
|
+
distinguent explicitement blocage métier, contrat invalide, panne agent,
|
|
68
|
+
validation échouée et conflit concurrent ; chaque refus affiche la commande de
|
|
69
|
+
reprise recommandée.
|
|
70
|
+
|
|
71
|
+
Chaque invocation de `adaptive run` traite une activité. La politique est dans
|
|
72
|
+
`assessment.json`; la progression et les preuves sont dans
|
|
73
|
+
`workflow-state.json`. Les résultats agent sont validés par schéma et les
|
|
74
|
+
preuves d’exécution sensibles sont produites localement par Devflow.
|
|
75
|
+
|
|
76
|
+
Les trois adaptateurs acceptent les mêmes contrats structurés :
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
devflow adaptive run KS-123 --agent codex
|
|
80
|
+
devflow adaptive run KS-123 --agent claude
|
|
81
|
+
devflow adaptive run KS-123 --agent cursor
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Migrer une ancienne feature
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
devflow migrate KS-123 --dry-run
|
|
88
|
+
devflow migrate KS-123 --profile deep
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
La migration conserve les artefacts, archive `state.json` sous
|
|
92
|
+
`legacy-state.json`, puis redémarre à la première activité vérifiable du profil.
|
|
93
|
+
Sans identifiant, `devflow migrate` traite toutes les anciennes features.
|
|
94
|
+
`devflow init` et `devflow upgrade` déplacent également les anciennes commandes
|
|
95
|
+
Claude connues vers `~/.claude/.devflow-legacy-backup/` sans toucher aux
|
|
96
|
+
commandes personnalisées.
|
|
97
|
+
|
|
98
|
+
## Documentation
|
|
99
|
+
|
|
100
|
+
- [Workflow adaptatif](docs/pipeline.md)
|
|
101
|
+
- [Référence CLI](docs/cli-reference.md)
|
|
102
|
+
- [Contrats d’activité](docs/activity-contracts.md)
|
|
103
|
+
- [Façade Claude Code](docs/commands-reference.md)
|
|
104
|
+
- [Guide Cursor](docs/cursor-guide.md)
|
|
105
|
+
|
|
106
|
+
## Développement
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
uv sync --extra dev
|
|
110
|
+
uv run pytest -q
|
|
111
|
+
./tests/run-tests.sh
|
|
112
|
+
uv run devflow docs-sync --check
|
|
113
|
+
```
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# devflow
|
|
2
|
+
|
|
3
|
+
Devflow est un moteur de développement adaptatif pour Codex, Claude Code et
|
|
4
|
+
Cursor. Il choisit un niveau de rigueur à partir de signaux explicites, produit
|
|
5
|
+
des contrats d’activité portables et bloque les transitions tant que les
|
|
6
|
+
preuves attendues ne sont pas présentes.
|
|
7
|
+
|
|
8
|
+
## Profils
|
|
9
|
+
|
|
10
|
+
- `quick` : changement local, clair et peu risqué.
|
|
11
|
+
- `standard` : plusieurs composants ou risque modéré.
|
|
12
|
+
- `deep` : changement transversal, ambigu ou contractuel.
|
|
13
|
+
- `critical` : sécurité, données, migration ou risque élevé.
|
|
14
|
+
|
|
15
|
+
Les routes exactes et leurs preuves sont générées dans
|
|
16
|
+
[docs/pipeline-reference.generated.md](docs/pipeline-reference.generated.md).
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
uv tool install devflow-cli
|
|
22
|
+
devflow init --ai codex
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Python 3.11+ et Git sont requis. `--ai` accepte `codex`, `claude-code` ou
|
|
26
|
+
`cursor`.
|
|
27
|
+
|
|
28
|
+
## Parcours quotidien
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
devflow feature KS-123 --short-name user-auth
|
|
32
|
+
devflow assess KS-123 --scope multiple --ambiguity medium --risk medium
|
|
33
|
+
devflow adaptive start KS-123
|
|
34
|
+
devflow adaptive run KS-123 --agent codex
|
|
35
|
+
devflow adaptive status KS-123
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
`adaptive status --json` fournit un état exploitable par la CI. Les échecs
|
|
39
|
+
distinguent explicitement blocage métier, contrat invalide, panne agent,
|
|
40
|
+
validation échouée et conflit concurrent ; chaque refus affiche la commande de
|
|
41
|
+
reprise recommandée.
|
|
42
|
+
|
|
43
|
+
Chaque invocation de `adaptive run` traite une activité. La politique est dans
|
|
44
|
+
`assessment.json`; la progression et les preuves sont dans
|
|
45
|
+
`workflow-state.json`. Les résultats agent sont validés par schéma et les
|
|
46
|
+
preuves d’exécution sensibles sont produites localement par Devflow.
|
|
47
|
+
|
|
48
|
+
Les trois adaptateurs acceptent les mêmes contrats structurés :
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
devflow adaptive run KS-123 --agent codex
|
|
52
|
+
devflow adaptive run KS-123 --agent claude
|
|
53
|
+
devflow adaptive run KS-123 --agent cursor
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Migrer une ancienne feature
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
devflow migrate KS-123 --dry-run
|
|
60
|
+
devflow migrate KS-123 --profile deep
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
La migration conserve les artefacts, archive `state.json` sous
|
|
64
|
+
`legacy-state.json`, puis redémarre à la première activité vérifiable du profil.
|
|
65
|
+
Sans identifiant, `devflow migrate` traite toutes les anciennes features.
|
|
66
|
+
`devflow init` et `devflow upgrade` déplacent également les anciennes commandes
|
|
67
|
+
Claude connues vers `~/.claude/.devflow-legacy-backup/` sans toucher aux
|
|
68
|
+
commandes personnalisées.
|
|
69
|
+
|
|
70
|
+
## Documentation
|
|
71
|
+
|
|
72
|
+
- [Workflow adaptatif](docs/pipeline.md)
|
|
73
|
+
- [Référence CLI](docs/cli-reference.md)
|
|
74
|
+
- [Contrats d’activité](docs/activity-contracts.md)
|
|
75
|
+
- [Façade Claude Code](docs/commands-reference.md)
|
|
76
|
+
- [Guide Cursor](docs/cursor-guide.md)
|
|
77
|
+
|
|
78
|
+
## Développement
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
uv sync --extra dev
|
|
82
|
+
uv run pytest -q
|
|
83
|
+
./tests/run-tests.sh
|
|
84
|
+
uv run devflow docs-sync --check
|
|
85
|
+
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# /devflow.init
|
|
2
2
|
|
|
3
|
-
Initialise devflow dans un projet : copie
|
|
3
|
+
Initialise devflow dans un projet : copie la façade adaptative, les templates et les scripts vers ~/.claude/ et prépare la structure projet.
|
|
4
4
|
|
|
5
5
|
## Objectif
|
|
6
6
|
|
|
@@ -19,12 +19,10 @@ Installer ou réinstaller devflow de manière propre avec validation post-instal
|
|
|
19
19
|
2. **Vérifier** que le projet cible est un dépôt git (sinon → erreur)
|
|
20
20
|
3. **Créer `.specify/specs/`** dans le projet cible si absent
|
|
21
21
|
4. **Copier les commandes** devflow vers `~/.claude/commands/`
|
|
22
|
-
5. **Copier les
|
|
23
|
-
6. **Copier les
|
|
24
|
-
7.
|
|
25
|
-
8.
|
|
26
|
-
9. **Appeler `check-prerequisites.sh`** pour valider l'installation
|
|
27
|
-
10. **Afficher le rapport** : X fichiers copiés, Y ignorés (existants)
|
|
22
|
+
5. **Copier les templates** vers `~/.claude/templates/`
|
|
23
|
+
6. **Copier les scripts** vers `~/.claude/scripts/` et ajouter +x
|
|
24
|
+
7. Si `--with-constitution` : copier le template constitution vers `.specify/memory/constitution.md` du projet cible (ne pas écraser si existant, sauf --force)
|
|
25
|
+
8. **Afficher le rapport** : X fichiers copiés, Y ignorés (existants)
|
|
28
26
|
|
|
29
27
|
## Contraintes
|
|
30
28
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Pilote le workflow adaptatif Devflow depuis Claude Code
|
|
3
|
+
argument-hint: ISSUE_ID [--agent claude|codex|cursor]
|
|
4
|
+
allowed-tools: Bash(devflow:*)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Devflow adaptatif
|
|
8
|
+
|
|
9
|
+
Utiliser exclusivement la machine adaptative de la CLI. Ne jamais créer ni
|
|
10
|
+
interpréter de `state.json`.
|
|
11
|
+
|
|
12
|
+
1. Lire `$ARGUMENTS` et extraire l'identifiant de feature.
|
|
13
|
+
2. Exécuter `devflow status ISSUE_ID`.
|
|
14
|
+
3. Si la feature n'existe pas, demander à l'utilisateur de lancer
|
|
15
|
+
`devflow feature ISSUE_ID`.
|
|
16
|
+
4. Si elle n'est pas évaluée, demander les signaux nécessaires puis lancer
|
|
17
|
+
`devflow assess ISSUE_ID` avec des options explicites.
|
|
18
|
+
5. Si elle est évaluée mais non démarrée, lancer
|
|
19
|
+
`devflow adaptive start ISSUE_ID`.
|
|
20
|
+
6. Lancer une seule activité avec
|
|
21
|
+
`devflow adaptive run ISSUE_ID --agent AGENT`.
|
|
22
|
+
7. Afficher ensuite `devflow adaptive status ISSUE_ID`.
|
|
23
|
+
|
|
24
|
+
Le contrat produit par Devflow est la seule autorité sur les actions,
|
|
25
|
+
artefacts, validations et preuves de l'activité.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# /devflow.regen
|
|
2
|
+
|
|
3
|
+
Détecte les artefacts désuets et rouvre la première activité concernée.
|
|
4
|
+
|
|
5
|
+
## Objectif
|
|
6
|
+
|
|
7
|
+
Revenir au premier artefact désuet afin que le workflow adaptatif régénère ensuite la chaîne sous contrôle de ses contrats.
|
|
8
|
+
|
|
9
|
+
## Workflow
|
|
10
|
+
|
|
11
|
+
1. **Detecter** les artefacts desuets :
|
|
12
|
+
```bash
|
|
13
|
+
devflow stale --json
|
|
14
|
+
```
|
|
15
|
+
Parse le JSON retourne. Si `stale` est vide, afficher "Tout est synchronise" et terminer.
|
|
16
|
+
|
|
17
|
+
2. **Afficher la prévisualisation** :
|
|
18
|
+
- Lister chaque artefact stale avec sa raison
|
|
19
|
+
- Afficher la commande `adaptive reopen` du premier artefact désuet
|
|
20
|
+
|
|
21
|
+
3. **Demander confirmation** a l'utilisateur.
|
|
22
|
+
- Si refuse → terminer sans action.
|
|
23
|
+
|
|
24
|
+
4. **Exécuter uniquement la première commande** `adaptive reopen`.
|
|
25
|
+
5. Afficher `devflow adaptive status ISSUE_ID` et proposer de reprendre avec
|
|
26
|
+
`devflow adaptive run ISSUE_ID --agent AGENT`.
|
|
27
|
+
|
|
28
|
+
6. **Rapporter** l’activité rouverte et les artefacts qui seront régénérés.
|
|
29
|
+
|
|
30
|
+
## Contraintes
|
|
31
|
+
|
|
32
|
+
- Utiliser `devflow stale --json` pour la detection (ne pas reimplementer la logique mtime)
|
|
33
|
+
- Ne jamais exécuter plusieurs `reopen` successifs
|
|
34
|
+
- Ne jamais regenerer sans confirmation explicite
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Affiche le statut adaptatif d'une feature Devflow
|
|
3
|
+
argument-hint: ISSUE_ID
|
|
4
|
+
allowed-tools: Bash(devflow status:*)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Statut Devflow
|
|
8
|
+
|
|
9
|
+
Exécuter `devflow status $ARGUMENTS` et restituer fidèlement le profil,
|
|
10
|
+
l'activité courante, la progression et les preuves restantes. Cette commande
|
|
11
|
+
est strictement en lecture seule.
|
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# Contrats d'activités adaptatifs
|
|
2
2
|
|
|
3
|
+
## Schémas publics versionnés
|
|
4
|
+
|
|
5
|
+
Les quatre frontières centrales sont décrites par des JSON Schemas Draft
|
|
6
|
+
2020-12 embarqués dans le wheel :
|
|
7
|
+
|
|
8
|
+
- `assessment-v1.schema.json` pour la sélection de politique ;
|
|
9
|
+
- `workflow-state-v2.schema.json` pour la progression et les preuves ;
|
|
10
|
+
- `activity-contract-v1.schema.json` pour l'instruction portable envoyée à
|
|
11
|
+
l'adaptateur ;
|
|
12
|
+
- `activity-result-v1.schema.json` pour la réponse structurée de l'agent.
|
|
13
|
+
|
|
14
|
+
Le schéma vérifie la structure, les types, les champs obligatoires et refuse les
|
|
15
|
+
champs inconnus. Les validations Python restent responsables des invariants
|
|
16
|
+
métier qui dépendent du profil ou de l'activité : ordre de progression, source
|
|
17
|
+
des preuves, traçabilité et gates de fin.
|
|
18
|
+
|
|
19
|
+
Une version publiée est immuable. Comme les champs inconnus sont refusés,
|
|
20
|
+
l'ajout, le retrait ou le changement de sens d'un champ exige une nouvelle
|
|
21
|
+
version de schéma et, pour les formats persistés, une voie de migration
|
|
22
|
+
explicite. Devflow ne réinterprète jamais silencieusement un contrat d'une
|
|
23
|
+
version inconnue.
|
|
24
|
+
|
|
3
25
|
Les contrats d'activités constituent la frontière entre le moteur devflow et
|
|
4
26
|
les agents d'exécution. Ils ne contiennent aucune commande propre à Claude
|
|
5
27
|
Code, Codex ou Cursor.
|
|
@@ -84,17 +106,21 @@ Le validateur refuse notamment :
|
|
|
84
106
|
Cette validation est partagée par tous les futurs adaptateurs. Aucun backend
|
|
85
107
|
ne pourra définir ses propres critères de réussite.
|
|
86
108
|
|
|
87
|
-
## Exécution
|
|
109
|
+
## Exécution multi-agent
|
|
88
110
|
|
|
89
|
-
|
|
111
|
+
Les trois adaptateurs peuvent exécuter le même contrat :
|
|
90
112
|
|
|
91
113
|
```bash
|
|
92
114
|
devflow adaptive run KS-123 --agent codex
|
|
115
|
+
devflow adaptive run KS-123 --agent claude-code
|
|
116
|
+
devflow adaptive run KS-123 --agent cursor
|
|
93
117
|
```
|
|
94
118
|
|
|
95
119
|
Une invocation exécute uniquement l'activité courante. Devflow transmet le
|
|
96
|
-
schéma avec
|
|
97
|
-
|
|
120
|
+
schéma avec les options natives de Codex ou Claude Code. Cursor produit une
|
|
121
|
+
enveloppe JSON dont le résultat est extrait puis validé localement contre le
|
|
122
|
+
même schéma. Dans les trois cas, seul le payload normalisé est transmis au
|
|
123
|
+
validateur commun.
|
|
98
124
|
|
|
99
125
|
Pour `prepare`, toute mutation du working tree est refusée. Son résultat est
|
|
100
126
|
ajouté aux entrées du contrat `implement` standard.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Référence CLI
|
|
2
|
+
|
|
3
|
+
## Initialisation
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
devflow init --ai codex
|
|
7
|
+
devflow feature ISSUE_ID [--short-name NAME]
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
## Évaluation
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
devflow assess ISSUE_ID \
|
|
14
|
+
--scope local|multiple|transversal \
|
|
15
|
+
--ambiguity low|medium|high \
|
|
16
|
+
--risk low|medium|high \
|
|
17
|
+
[--contract-change] [--data-security] \
|
|
18
|
+
[--profile quick|standard|deep|critical]
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Un profil forcé peut augmenter mais jamais réduire la recommandation.
|
|
22
|
+
|
|
23
|
+
## Exécution adaptative
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
devflow adaptive start ISSUE_ID
|
|
27
|
+
devflow adaptive status ISSUE_ID [--json]
|
|
28
|
+
devflow adaptive contract ISSUE_ID [--json|--prompt]
|
|
29
|
+
devflow adaptive run ISSUE_ID --agent codex|claude|cursor
|
|
30
|
+
devflow adaptive complete ISSUE_ID ACTIVITY
|
|
31
|
+
devflow adaptive evidence ISSUE_ID EVIDENCE_ID --report TEXT
|
|
32
|
+
devflow adaptive verify ISSUE_ID
|
|
33
|
+
devflow adaptive reopen ISSUE_ID ACTIVITY --reason TEXT
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
`complete` et `evidence` restent utiles aux automatisations; le parcours normal
|
|
37
|
+
utilise `run`, qui valide le contrat et les mutations observées.
|
|
38
|
+
|
|
39
|
+
### Statut opérationnel et reprise
|
|
40
|
+
|
|
41
|
+
`adaptive status` affiche la progression, chaque preuve avec sa provenance, les
|
|
42
|
+
blocages, les risques restants, le dernier résultat et la prochaine commande à
|
|
43
|
+
exécuter. `--json` expose les mêmes informations sous une forme stable pour les
|
|
44
|
+
automatisations.
|
|
45
|
+
|
|
46
|
+
Après un échec, `adaptive run` et `adaptive verify` impriment une reprise guidée :
|
|
47
|
+
inspection du statut, diagnostic de l'agent, contrôle des changements partiels
|
|
48
|
+
ou réouverture auditée de `implement`. Un workflow terminé affiche un résumé des
|
|
49
|
+
activités, des preuves, des risques et le chemin du worklog.
|
|
50
|
+
|
|
51
|
+
Les erreurs de contrat indiquent le fichier et le chemin JSON fautif. Un JSON
|
|
52
|
+
mal formé indique également la ligne et la colonne.
|
|
53
|
+
|
|
54
|
+
### Codes de sortie adaptatifs
|
|
55
|
+
|
|
56
|
+
Les commandes sous `devflow adaptive` utilisent les codes stables suivants :
|
|
57
|
+
|
|
58
|
+
| Code | Signification |
|
|
59
|
+
|---:|---|
|
|
60
|
+
| 0 | succès |
|
|
61
|
+
| 2 | usage ou options incompatibles |
|
|
62
|
+
| 3 | activité bloquée ou gate non satisfaite |
|
|
63
|
+
| 4 | assessment, état ou contrat invalide |
|
|
64
|
+
| 5 | échec ou indisponibilité de l'agent |
|
|
65
|
+
| 6 | vérification locale échouée |
|
|
66
|
+
| 7 | conflit de progression ou modification concurrente |
|
|
67
|
+
|
|
68
|
+
Un code non nul ne signifie donc plus seulement « erreur » : la CI peut décider
|
|
69
|
+
si elle doit demander une intervention fonctionnelle (`3`), réparer
|
|
70
|
+
l'environnement agent (`5`) ou traiter une régression de validation (`6`).
|
|
71
|
+
|
|
72
|
+
## Inspection et outils
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
devflow status [ISSUE_ID]
|
|
76
|
+
devflow traceability ISSUE_ID
|
|
77
|
+
devflow verify ISSUE_ID
|
|
78
|
+
devflow stale ISSUE_ID
|
|
79
|
+
devflow context ISSUE_ID
|
|
80
|
+
devflow linear decision ACTIVITY CURRENT_STATUS
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Migration
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
devflow migrate [ISSUE_ID] [--profile deep] [--dry-run]
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
La migration archive l’ancien fichier sous `legacy-state.json`; elle ne tente
|
|
90
|
+
pas de déclarer comme terminée une activité dont les preuves adaptatives
|
|
91
|
+
n’existent pas.
|
|
92
|
+
|
|
93
|
+
Lors d’un `init` ou d’un `upgrade`, les anciennes commandes Claude officielles
|
|
94
|
+
sont retirées des dossiers actifs et sauvegardées dans
|
|
95
|
+
`~/.claude/.devflow-legacy-backup/`.
|
|
96
|
+
|
|
97
|
+
## Maintenance
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
devflow check --ai codex|claude-code|cursor
|
|
101
|
+
devflow upgrade
|
|
102
|
+
devflow docs-sync --check
|
|
103
|
+
devflow extension list
|
|
104
|
+
devflow hooks run EVENT
|
|
105
|
+
```
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Façade Claude Code
|
|
2
|
+
|
|
3
|
+
L’installation Claude Code publie une façade adaptative minimale :
|
|
4
|
+
|
|
5
|
+
- `/devflow ISSUE_ID [--agent ...]` inspecte la feature et exécute au plus une
|
|
6
|
+
activité via la CLI.
|
|
7
|
+
- `/devflow.status ISSUE_ID` affiche le statut en lecture seule.
|
|
8
|
+
- `/devflow.context`, `/devflow.init`, `/devflow.extension` et
|
|
9
|
+
`/devflow.regen` restent des utilitaires non séquentiels.
|
|
10
|
+
|
|
11
|
+
Les anciennes commandes slash par étape n’existent plus. Le contrat généré par
|
|
12
|
+
`devflow adaptive run` détermine désormais l’activité, les artefacts et les
|
|
13
|
+
preuves, quel que soit l’agent choisi.
|