devflow-cli 2.8.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.8.0 → devflow_cli-3.0.0}/.github/workflows/ci.yml +4 -1
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.github/workflows/release.yml +4 -1
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.idea/misc.xml +0 -1
- devflow_cli-3.0.0/.idea/workspace.xml +251 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/CHANGELOG.md +35 -0
- devflow_cli-3.0.0/CLAUDE.md +20 -0
- {devflow_cli-2.8.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.8.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-3.0.0/docs/activity-contracts.md +281 -0
- 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.8.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.8.0 → devflow_cli-3.0.0}/pyproject.toml +16 -3
- devflow_cli-3.0.0/src/devflow_cli/__init__.py +47 -0
- devflow_cli-3.0.0/src/devflow_cli/adapters/agents.py +328 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/adapters/linear.py +18 -14
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/cli.py +4 -10
- devflow_cli-3.0.0/src/devflow_cli/commands/adaptive.py +594 -0
- devflow_cli-3.0.0/src/devflow_cli/commands/assess.py +117 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/check.py +45 -16
- {devflow_cli-2.8.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.8.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/feature.py +32 -47
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/init_cmd.py +28 -12
- {devflow_cli-2.8.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.8.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.8.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/upgrade_cmd.py +9 -0
- devflow_cli-3.0.0/src/devflow_cli/core/activity_contracts.py +656 -0
- devflow_cli-3.0.0/src/devflow_cli/core/adaptive_runner.py +343 -0
- devflow_cli-3.0.0/src/devflow_cli/core/adaptive_workflow.py +289 -0
- devflow_cli-3.0.0/src/devflow_cli/core/assessment.py +273 -0
- devflow_cli-3.0.0/src/devflow_cli/core/automatic_evidence.py +719 -0
- devflow_cli-3.0.0/src/devflow_cli/core/contract_schemas.py +110 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/core/docgen.py +29 -32
- {devflow_cli-2.8.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-3.0.0/src/devflow_cli/core/remediation.py +158 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/core/staleness.py +22 -35
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/core/validators.py +24 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/core/verification.py +52 -7
- devflow_cli-3.0.0/src/devflow_cli/core/waivers.py +285 -0
- devflow_cli-3.0.0/src/devflow_cli/core/worklog.py +304 -0
- devflow_cli-3.0.0/src/devflow_cli/core/worktree_snapshot.py +91 -0
- 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-3.0.0/src/devflow_cli/utils/__init__.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/utils/paths.py +23 -12
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/templates/constitution-template.md +1 -1
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/templates/devflow-hooks-template.yml +4 -4
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/conftest.py +0 -30
- devflow_cli-3.0.0/tests/test_activity_contracts.py +443 -0
- devflow_cli-3.0.0/tests/test_adaptive_runner.py +576 -0
- devflow_cli-3.0.0/tests/test_adaptive_workflow.py +185 -0
- devflow_cli-3.0.0/tests/test_agent_adapters.py +209 -0
- devflow_cli-3.0.0/tests/test_assessment.py +112 -0
- devflow_cli-3.0.0/tests/test_automatic_evidence.py +755 -0
- devflow_cli-3.0.0/tests/test_cmd_adaptive.py +791 -0
- devflow_cli-3.0.0/tests/test_cmd_assess.py +110 -0
- devflow_cli-3.0.0/tests/test_cmd_check.py +112 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_cmd_feature.py +19 -12
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_cmd_init.py +38 -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.8.0 → devflow_cli-3.0.0}/tests/test_cmd_traceability.py +6 -4
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_cmd_upgrade.py +14 -0
- {devflow_cli-2.8.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.8.0 → devflow_cli-3.0.0}/tests/test_docgen.py +6 -5
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_hooks.py +1 -1
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_installer.py +36 -1
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_integration.py +64 -48
- {devflow_cli-2.8.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.8.0 → devflow_cli-3.0.0}/tests/test_logging.py +0 -19
- {devflow_cli-2.8.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.8.0 → devflow_cli-3.0.0}/tests/test_validators.py +63 -89
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_verification.py +87 -0
- devflow_cli-3.0.0/tests/test_waivers.py +182 -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-3.0.0/tests/test_worklog.py +228 -0
- devflow_cli-3.0.0/tests/test_worktree_snapshot.py +59 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/uv.lock +230 -1
- devflow_cli-2.8.0/CLAUDE.md +0 -142
- devflow_cli-2.8.0/PKG-INFO +0 -149
- devflow_cli-2.8.0/README.md +0 -123
- devflow_cli-2.8.0/agents/devflow-autofix.md +0 -111
- devflow_cli-2.8.0/agents/devflow-review.md +0 -119
- devflow_cli-2.8.0/commands/devflow.analyze.md +0 -75
- devflow_cli-2.8.0/commands/devflow.checklist.md +0 -75
- devflow_cli-2.8.0/commands/devflow.clarify.md +0 -93
- devflow_cli-2.8.0/commands/devflow.constitution.md +0 -63
- devflow_cli-2.8.0/commands/devflow.contracts.md +0 -65
- devflow_cli-2.8.0/commands/devflow.docs.md +0 -59
- devflow_cli-2.8.0/commands/devflow.implement.md +0 -123
- devflow_cli-2.8.0/commands/devflow.md +0 -351
- devflow_cli-2.8.0/commands/devflow.metrics.md +0 -61
- devflow_cli-2.8.0/commands/devflow.plan.md +0 -70
- devflow_cli-2.8.0/commands/devflow.regen.md +0 -40
- devflow_cli-2.8.0/commands/devflow.research.md +0 -59
- devflow_cli-2.8.0/commands/devflow.review-impl.md +0 -58
- devflow_cli-2.8.0/commands/devflow.review-spec.md +0 -53
- devflow_cli-2.8.0/commands/devflow.review-tasks.md +0 -52
- devflow_cli-2.8.0/commands/devflow.spec.md +0 -60
- devflow_cli-2.8.0/commands/devflow.status.md +0 -92
- devflow_cli-2.8.0/commands/devflow.sync-linear.md +0 -44
- devflow_cli-2.8.0/commands/devflow.tasks-to-issues.md +0 -44
- devflow_cli-2.8.0/commands/devflow.tasks.md +0 -59
- devflow_cli-2.8.0/docs/cli-reference.md +0 -660
- devflow_cli-2.8.0/docs/commands-reference.md +0 -557
- devflow_cli-2.8.0/docs/cursor-guide.md +0 -75
- devflow_cli-2.8.0/docs/guides/brownfield.md +0 -213
- devflow_cli-2.8.0/docs/guides/greenfield.md +0 -197
- devflow_cli-2.8.0/docs/guides/microservices.md +0 -199
- devflow_cli-2.8.0/docs/index.md +0 -26
- devflow_cli-2.8.0/docs/pipeline-reference.generated.md +0 -23
- devflow_cli-2.8.0/docs/pipeline.md +0 -306
- devflow_cli-2.8.0/docs/spec-driven.md +0 -306
- devflow_cli-2.8.0/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +0 -196
- devflow_cli-2.8.0/extensions/README.md +0 -138
- devflow_cli-2.8.0/extensions/catalog.json +0 -77
- devflow_cli-2.8.0/src/devflow_cli/__init__.py +0 -113
- devflow_cli-2.8.0/src/devflow_cli/adapters/agents.py +0 -148
- devflow_cli-2.8.0/src/devflow_cli/commands/export_cmd.py +0 -149
- devflow_cli-2.8.0/src/devflow_cli/commands/migrate_cmd.py +0 -105
- devflow_cli-2.8.0/src/devflow_cli/commands/migrate_speckit.py +0 -344
- devflow_cli-2.8.0/src/devflow_cli/commands/review.py +0 -54
- devflow_cli-2.8.0/src/devflow_cli/commands/rollback.py +0 -53
- devflow_cli-2.8.0/src/devflow_cli/commands/run.py +0 -123
- devflow_cli-2.8.0/src/devflow_cli/commands/status.py +0 -131
- devflow_cli-2.8.0/src/devflow_cli/commands/step.py +0 -118
- devflow_cli-2.8.0/src/devflow_cli/core/orchestrator.py +0 -170
- devflow_cli-2.8.0/src/devflow_cli/core/state.py +0 -576
- devflow_cli-2.8.0/src/devflow_cli/core/state_store.py +0 -45
- devflow_cli-2.8.0/src/devflow_cli/schemas/state.schema.json +0 -39
- devflow_cli-2.8.0/templates/analyze-template.md +0 -115
- devflow_cli-2.8.0/templates/checklist-template.md +0 -64
- devflow_cli-2.8.0/templates/checklists/api.md +0 -25
- devflow_cli-2.8.0/templates/checklists/requirements.md +0 -25
- devflow_cli-2.8.0/templates/checklists/security.md +0 -25
- devflow_cli-2.8.0/templates/checklists/ux.md +0 -25
- devflow_cli-2.8.0/templates/clarify-template.md +0 -43
- devflow_cli-2.8.0/templates/docs-template.md +0 -74
- devflow_cli-2.8.0/templates/export/copilot-instructions-template.md +0 -33
- devflow_cli-2.8.0/templates/export/cursor-rules-template.md +0 -38
- devflow_cli-2.8.0/templates/review-impl-template.md +0 -71
- devflow_cli-2.8.0/templates/review-spec-template.md +0 -59
- devflow_cli-2.8.0/templates/review-tasks-template.md +0 -49
- devflow_cli-2.8.0/tests/fixtures/mock-state.json +0 -9
- devflow_cli-2.8.0/tests/test_agent_adapters.py +0 -76
- devflow_cli-2.8.0/tests/test_cmd_check.py +0 -53
- devflow_cli-2.8.0/tests/test_cmd_migrate.py +0 -100
- devflow_cli-2.8.0/tests/test_cmd_migrate_speckit.py +0 -471
- devflow_cli-2.8.0/tests/test_cmd_review.py +0 -95
- devflow_cli-2.8.0/tests/test_cmd_run.py +0 -39
- devflow_cli-2.8.0/tests/test_cmd_status.py +0 -123
- devflow_cli-2.8.0/tests/test_cmd_step.py +0 -141
- devflow_cli-2.8.0/tests/test_constants.py +0 -57
- devflow_cli-2.8.0/tests/test_e2e_pipeline.py +0 -295
- devflow_cli-2.8.0/tests/test_linear_order.py +0 -70
- devflow_cli-2.8.0/tests/test_orchestrator.py +0 -105
- devflow_cli-2.8.0/tests/test_rollback.py +0 -497
- devflow_cli-2.8.0/tests/test_staleness.py +0 -258
- devflow_cli-2.8.0/tests/test_state.py +0 -1024
- devflow_cli-2.8.0/tests/test_state_schema.py +0 -14
- /devflow_cli-2.8.0/src/devflow_cli/commands/__init__.py → /devflow_cli-3.0.0/.ai/mcp/mcp.json +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.claude/commands/speckit.analyze.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.claude/commands/speckit.checklist.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.claude/commands/speckit.clarify.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.claude/commands/speckit.constitution.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.claude/commands/speckit.implement.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.claude/commands/speckit.plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.claude/commands/speckit.specify.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.claude/commands/speckit.tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.claude/commands/speckit.taskstoissues.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.githooks/post-checkout +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.githooks/post-merge +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.gitignore +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.idea/.gitignore +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.idea/devflow.iml +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.idea/modules.xml +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.idea/vcs.xml +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/init-options.json +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/memory/constitution.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/scripts/bash/common.sh +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/scripts/bash/setup-plan.sh +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/scripts/bash/update-agent-context.sh +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/001-cli-init-options/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/001-cli-init-options/contracts/cli-init.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/001-cli-init-options/data-model.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/001-cli-init-options/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/001-cli-init-options/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/001-cli-init-options/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/001-cli-init-options/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/002-cascade-regen/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/002-cascade-regen/contracts/cli-regen.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/002-cascade-regen/contracts/cli-status-staleness.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/002-cascade-regen/data-model.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/002-cascade-regen/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/002-cascade-regen/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/002-cascade-regen/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/002-cascade-regen/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/003-usecase-guides/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/003-usecase-guides/data-model.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/003-usecase-guides/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/003-usecase-guides/quickstart.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/003-usecase-guides/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/003-usecase-guides/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/003-usecase-guides/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/004-specify-central-directory/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/004-specify-central-directory/contracts/cli-commands.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/004-specify-central-directory/data-model.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/004-specify-central-directory/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/004-specify-central-directory/quickstart.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/004-specify-central-directory/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/004-specify-central-directory/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/004-specify-central-directory/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/005-implement-subphases/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/005-implement-subphases/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/005-implement-subphases/quickstart.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/005-implement-subphases/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/005-implement-subphases/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/005-implement-subphases/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/006-template-upgrade/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/006-template-upgrade/contracts/cli-upgrade.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/006-template-upgrade/data-model.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/006-template-upgrade/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/006-template-upgrade/quickstart.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/006-template-upgrade/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/006-template-upgrade/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/006-template-upgrade/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/007-project-documentation/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/007-project-documentation/data-model.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/007-project-documentation/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/007-project-documentation/quickstart.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/007-project-documentation/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/007-project-documentation/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/007-project-documentation/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/008-hardening-bugs/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/008-hardening-bugs/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/008-hardening-bugs/quickstart.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/008-hardening-bugs/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/008-hardening-bugs/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/008-hardening-bugs/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/009-ci-pypi/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/009-ci-pypi/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/009-ci-pypi/quickstart.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/009-ci-pypi/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/009-ci-pypi/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/009-ci-pypi/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/010-flexible-pipeline/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/010-flexible-pipeline/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/010-flexible-pipeline/quickstart.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/010-flexible-pipeline/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/010-flexible-pipeline/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/010-flexible-pipeline/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/011-cursor-support/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/011-cursor-support/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/011-cursor-support/quickstart.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/011-cursor-support/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/011-cursor-support/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/011-cursor-support/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/012-fix-critical-bugs/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/012-fix-critical-bugs/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/012-fix-critical-bugs/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/012-fix-critical-bugs/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/012-fix-critical-bugs/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/013-align-truth-sources/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/013-align-truth-sources/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/013-align-truth-sources/quickstart.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/013-align-truth-sources/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/013-align-truth-sources/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/014-enforce-state-machine/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/014-enforce-state-machine/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/014-enforce-state-machine/quickstart.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/014-enforce-state-machine/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/014-enforce-state-machine/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/015-fix-review-contradiction/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/015-fix-review-contradiction/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/015-fix-review-contradiction/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/015-fix-review-contradiction/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/015-fix-review-contradiction/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/016-harden-state-machine/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/016-harden-state-machine/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/016-harden-state-machine/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/016-harden-state-machine/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/016-harden-state-machine/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/017-fix-robustness-issues/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/017-fix-robustness-issues/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/017-fix-robustness-issues/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/017-fix-robustness-issues/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/017-fix-robustness-issues/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/018-fix-final-robustness/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/019-quality-hardening/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/019-quality-hardening/data-model.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/019-quality-hardening/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/019-quality-hardening/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/019-quality-hardening/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/019-quality-hardening/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/020-migrate-speckit/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/020-migrate-speckit/data-model.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/020-migrate-speckit/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/020-migrate-speckit/quickstart.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/020-migrate-speckit/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/020-migrate-speckit/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/020-migrate-speckit/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/021-review-iterations/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/021-review-iterations/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/021-review-iterations/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/021-review-iterations/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/021-review-iterations/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/022-fix-regen-command/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/022-fix-regen-command/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/022-fix-regen-command/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/022-fix-regen-command/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/022-fix-regen-command/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/023-add-logging/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/023-add-logging/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/023-add-logging/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/023-add-logging/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/023-add-logging/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/024-validate-constants/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/024-validate-constants/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/024-validate-constants/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/024-validate-constants/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/024-validate-constants/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/025-harden-tests/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/025-harden-tests/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/025-harden-tests/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/025-harden-tests/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/025-harden-tests/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/027-pipeline-auto-execution/checklists/requirements.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/027-pipeline-auto-execution/contracts/orchestrator-contract.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/027-pipeline-auto-execution/data-model.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/027-pipeline-auto-execution/plan.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/027-pipeline-auto-execution/quickstart.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/027-pipeline-auto-execution/research.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/027-pipeline-auto-execution/spec.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/specs/027-pipeline-auto-execution/tasks.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/templates/agent-file-template.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/templates/checklist-template.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/templates/constitution-template.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/templates/plan-template.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/templates/spec-template-brownfield.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/templates/spec-template-greenfield.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/templates/spec-template-microservices.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/templates/spec-template.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/.specify/templates/tasks-template.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/LICENSE +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/commands/devflow.context.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/commands/devflow.extension.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/extensions/catalog.community.json +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/extensions/template/example-command.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/extensions/template/example-extension.json +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/adapters/__init__.py +0 -0
- {devflow_cli-2.8.0/src/devflow_cli/core → devflow_cli-3.0.0/src/devflow_cli/commands}/__init__.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/context.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/extension.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/hooks_cmd.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/traceability.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/commands/verify.py +0 -0
- {devflow_cli-2.8.0/src/devflow_cli/utils → devflow_cli-3.0.0/src/devflow_cli/core}/__init__.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/core/catalog.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/core/git.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/core/hooks.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/core/manifest.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/core/scanner.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/core/traceability.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/utils/console.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/utils/logging.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/src/devflow_cli/utils/strings.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/templates/agent-context-template.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/templates/contracts/README-template.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/templates/contracts/api-template.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/templates/contracts/components-template.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/templates/contracts/interfaces-template.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/templates/contracts/services-template.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/templates/contracts-template.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/templates/data-model-template.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/templates/extension-manifest-template.json +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/templates/plan-template.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/templates/quickstart-template.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/templates/research-template.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/templates/spec-template.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/templates/tasks-template.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/fixtures/agents/mock-agent.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/fixtures/commands/mock-command.md +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/fixtures/mock-catalog.json +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/run-tests.sh +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test-helpers.sh +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test-template-variants.sh +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_bash_runner.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_catalog.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_cmd_context.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_cmd_docs_sync.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_cmd_extension.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_cmd_hooks.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_cmd_linear.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_cmd_stale.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_context.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_git.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_manifest.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_paths_project_root.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_scanner.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_traceability.py +0 -0
- {devflow_cli-2.8.0 → devflow_cli-3.0.0}/tests/test_version.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
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="AutoImportSettings">
|
|
4
|
+
<option name="autoReloadType" value="SELECTIVE" />
|
|
5
|
+
</component>
|
|
6
|
+
<component name="ChangeListManager">
|
|
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>
|
|
11
|
+
<option name="SHOW_DIALOG" value="false" />
|
|
12
|
+
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
|
13
|
+
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
|
14
|
+
<option name="LAST_RESOLUTION" value="IGNORE" />
|
|
15
|
+
</component>
|
|
16
|
+
<component name="EmbeddingIndexingInfo">
|
|
17
|
+
<option name="cachedIndexableFilesCount" value="1457" />
|
|
18
|
+
<option name="fileBasedEmbeddingIndicesEnabled" value="true" />
|
|
19
|
+
</component>
|
|
20
|
+
<component name="Git.Settings">
|
|
21
|
+
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
|
22
|
+
</component>
|
|
23
|
+
<component name="GitHubPullRequestSearchHistory">{
|
|
24
|
+
"lastFilter": {
|
|
25
|
+
"state": "OPEN",
|
|
26
|
+
"assignee": "sopequenoteck"
|
|
27
|
+
}
|
|
28
|
+
}</component>
|
|
29
|
+
<component name="GitToolBoxStore">
|
|
30
|
+
<option name="branchesCleanupHistory">
|
|
31
|
+
<BranchesCleanupHistory>
|
|
32
|
+
<option name="history">
|
|
33
|
+
<list>
|
|
34
|
+
<BranchCleanupEntry>
|
|
35
|
+
<option name="deletions">
|
|
36
|
+
<list>
|
|
37
|
+
<BranchDeletion>
|
|
38
|
+
<option name="hash" value="861fc6362be269bb7f402d7760f3bf7b565d7460" />
|
|
39
|
+
<option name="name" value="017-fix-robustness-issues" />
|
|
40
|
+
</BranchDeletion>
|
|
41
|
+
<BranchDeletion>
|
|
42
|
+
<option name="hash" value="608c9bc52be63c110d9d2a9a5b4fe919f90c8154" />
|
|
43
|
+
<option name="name" value="026-fix-command-ambiguities" />
|
|
44
|
+
</BranchDeletion>
|
|
45
|
+
<BranchDeletion>
|
|
46
|
+
<option name="hash" value="c9d97356f42487cc635e82f35068c632449e7459" />
|
|
47
|
+
<option name="name" value="016-harden-state-machine" />
|
|
48
|
+
</BranchDeletion>
|
|
49
|
+
<BranchDeletion>
|
|
50
|
+
<option name="hash" value="f6ef9c69dcc416b37b0d7b15cc2bc418adb94445" />
|
|
51
|
+
<option name="name" value="008-hardening-bugs" />
|
|
52
|
+
</BranchDeletion>
|
|
53
|
+
<BranchDeletion>
|
|
54
|
+
<option name="hash" value="cf559e1c5ab82ad66ad5a6ba9ca8bf3c612a8dbe" />
|
|
55
|
+
<option name="name" value="001-cli-init-options" />
|
|
56
|
+
</BranchDeletion>
|
|
57
|
+
<BranchDeletion>
|
|
58
|
+
<option name="hash" value="9c9ac6ba6122577894e95900414ad21c94117675" />
|
|
59
|
+
<option name="name" value="003-usecase-guides" />
|
|
60
|
+
</BranchDeletion>
|
|
61
|
+
<BranchDeletion>
|
|
62
|
+
<option name="hash" value="7fbc2c734b62139eac11b05a5fc51f31bdb482e8" />
|
|
63
|
+
<option name="name" value="007-project-documentation" />
|
|
64
|
+
</BranchDeletion>
|
|
65
|
+
<BranchDeletion>
|
|
66
|
+
<option name="hash" value="a9402192387c3130a0550834b187d4cd022fc28d" />
|
|
67
|
+
<option name="name" value="009-ci-pypi" />
|
|
68
|
+
</BranchDeletion>
|
|
69
|
+
<BranchDeletion>
|
|
70
|
+
<option name="hash" value="babf269c6d664519da2db7d800ff964e24b29765" />
|
|
71
|
+
<option name="name" value="022-fix-regen-command" />
|
|
72
|
+
</BranchDeletion>
|
|
73
|
+
<BranchDeletion>
|
|
74
|
+
<option name="hash" value="1bc969c678242c64fbdd16339cb2569d555b48ea" />
|
|
75
|
+
<option name="name" value="014-enforce-state-machine" />
|
|
76
|
+
</BranchDeletion>
|
|
77
|
+
<BranchDeletion>
|
|
78
|
+
<option name="hash" value="cf559e1c5ab82ad66ad5a6ba9ca8bf3c612a8dbe" />
|
|
79
|
+
<option name="name" value="002-cascade-regen" />
|
|
80
|
+
</BranchDeletion>
|
|
81
|
+
<BranchDeletion>
|
|
82
|
+
<option name="hash" value="711a399e63592a4650e63f53299603b02b19a8e7" />
|
|
83
|
+
<option name="name" value="020-migrate-speckit" />
|
|
84
|
+
</BranchDeletion>
|
|
85
|
+
<BranchDeletion>
|
|
86
|
+
<option name="hash" value="f83a06b13183c09aa274c9713480da13ba690419" />
|
|
87
|
+
<option name="name" value="010-flexible-pipeline" />
|
|
88
|
+
</BranchDeletion>
|
|
89
|
+
<BranchDeletion>
|
|
90
|
+
<option name="hash" value="9ba410df0892ce61400945b739b28df87b2670d5" />
|
|
91
|
+
<option name="name" value="004-specify-central-directory" />
|
|
92
|
+
</BranchDeletion>
|
|
93
|
+
<BranchDeletion>
|
|
94
|
+
<option name="hash" value="b7141bc1dae8a40dbaf8d2440b2cbd7b7fe3650b" />
|
|
95
|
+
<option name="name" value="006-template-upgrade" />
|
|
96
|
+
</BranchDeletion>
|
|
97
|
+
<BranchDeletion>
|
|
98
|
+
<option name="hash" value="449d3673848e3ceabfe85596c7ce8ec7f69e35b5" />
|
|
99
|
+
<option name="name" value="005-implement-subphases" />
|
|
100
|
+
</BranchDeletion>
|
|
101
|
+
<BranchDeletion>
|
|
102
|
+
<option name="hash" value="bd6a5e9b3463a8330f1a4b033c32437498baa909" />
|
|
103
|
+
<option name="name" value="027-pipeline-auto-execution" />
|
|
104
|
+
</BranchDeletion>
|
|
105
|
+
<BranchDeletion>
|
|
106
|
+
<option name="hash" value="b79001ec8e632e99c5337f66fdd9ecfcdca38810" />
|
|
107
|
+
<option name="name" value="021-review-iterations" />
|
|
108
|
+
</BranchDeletion>
|
|
109
|
+
<BranchDeletion>
|
|
110
|
+
<option name="hash" value="e01363f1ba914e75a33565e598ea3c0c83654a6f" />
|
|
111
|
+
<option name="name" value="019-quality-hardening" />
|
|
112
|
+
</BranchDeletion>
|
|
113
|
+
<BranchDeletion>
|
|
114
|
+
<option name="hash" value="86a6c0fcca1d4c5eb6ed1591f5b43d8dc1fd2e46" />
|
|
115
|
+
<option name="name" value="013-align-truth-sources" />
|
|
116
|
+
</BranchDeletion>
|
|
117
|
+
<BranchDeletion>
|
|
118
|
+
<option name="hash" value="5a987e7e2f7f890c3206247b171fa1c36e2fd108" />
|
|
119
|
+
<option name="name" value="018-fix-final-robustness" />
|
|
120
|
+
</BranchDeletion>
|
|
121
|
+
<BranchDeletion>
|
|
122
|
+
<option name="hash" value="4d3bc84a3b655b019e7f3a55569b6fa2681a3e95" />
|
|
123
|
+
<option name="name" value="015-fix-review-contradiction" />
|
|
124
|
+
</BranchDeletion>
|
|
125
|
+
<BranchDeletion>
|
|
126
|
+
<option name="hash" value="661d72db714f24d86b4d8e8895198d3eabb2450e" />
|
|
127
|
+
<option name="name" value="feature/git-hooks-auto-promote" />
|
|
128
|
+
</BranchDeletion>
|
|
129
|
+
<BranchDeletion>
|
|
130
|
+
<option name="hash" value="db082c4529f8cee67b9f82e702e3928f8ba9adcc" />
|
|
131
|
+
<option name="name" value="011-cursor-support" />
|
|
132
|
+
</BranchDeletion>
|
|
133
|
+
<BranchDeletion>
|
|
134
|
+
<option name="hash" value="83a3817a3e6a87553b17065990c842702309c87b" />
|
|
135
|
+
<option name="name" value="025-harden-tests" />
|
|
136
|
+
</BranchDeletion>
|
|
137
|
+
<BranchDeletion>
|
|
138
|
+
<option name="hash" value="7bf297d86fcb2cd560e2a48e13e037c68f80197d" />
|
|
139
|
+
<option name="name" value="012-fix-critical-bugs" />
|
|
140
|
+
</BranchDeletion>
|
|
141
|
+
<BranchDeletion>
|
|
142
|
+
<option name="hash" value="573bfc9a8fb73e4211493a905fb2a5f3aede7ff5" />
|
|
143
|
+
<option name="name" value="023-add-logging" />
|
|
144
|
+
</BranchDeletion>
|
|
145
|
+
<BranchDeletion>
|
|
146
|
+
<option name="hash" value="5fc33e862e6736b67d94690db1117493528cbe85" />
|
|
147
|
+
<option name="name" value="024-validate-constants" />
|
|
148
|
+
</BranchDeletion>
|
|
149
|
+
</list>
|
|
150
|
+
</option>
|
|
151
|
+
<option name="timestamp" value="1787005388911" />
|
|
152
|
+
</BranchCleanupEntry>
|
|
153
|
+
</list>
|
|
154
|
+
</option>
|
|
155
|
+
</BranchesCleanupHistory>
|
|
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>
|
|
180
|
+
</component>
|
|
181
|
+
<component name="GithubPullRequestsUISettings">{
|
|
182
|
+
"selectedUrlAndAccountId": {
|
|
183
|
+
"url": "https://github.com/sopequenoteck/devflow.git",
|
|
184
|
+
"accountId": "8169ef0d-6593-43b8-9a77-2780a60dc5ac"
|
|
185
|
+
}
|
|
186
|
+
}</component>
|
|
187
|
+
<component name="McpProjectServerCommands">
|
|
188
|
+
<commands />
|
|
189
|
+
<urls />
|
|
190
|
+
</component>
|
|
191
|
+
<component name="ProjectColorInfo">{
|
|
192
|
+
"associatedIndex": 7,
|
|
193
|
+
"fromUser": false
|
|
194
|
+
}</component>
|
|
195
|
+
<component name="ProjectId" id="3I2KWolJpZcPmEOGT7J0Rsp6K3n" />
|
|
196
|
+
<component name="ProjectViewState">
|
|
197
|
+
<option name="hideEmptyMiddlePackages" value="true" />
|
|
198
|
+
<option name="showLibraryContents" value="true" />
|
|
199
|
+
</component>
|
|
200
|
+
<component name="PropertiesComponent"><![CDATA[{
|
|
201
|
+
"keyToString": {
|
|
202
|
+
"ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
|
203
|
+
"ModuleVcsDetector.initialDetectionPerformed": "true",
|
|
204
|
+
"RunOnceActivity.MCP Project settings loaded": "true",
|
|
205
|
+
"RunOnceActivity.ShowReadmeOnStart": "true",
|
|
206
|
+
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
|
207
|
+
"RunOnceActivity.git.unshallow": "true",
|
|
208
|
+
"RunOnceActivity.typescript.service.memoryLimit.init": "true",
|
|
209
|
+
"SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
|
210
|
+
"codeWithMe.voiceChat.enabledByDefault": "false",
|
|
211
|
+
"com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true",
|
|
212
|
+
"dart.analysis.tool.window.visible": "false",
|
|
213
|
+
"git-widget-placeholder": "main",
|
|
214
|
+
"junie.onboarding.icon.badge.shown": "true",
|
|
215
|
+
"kotlin-language-version-configured": "true",
|
|
216
|
+
"last_opened_file_path": "/Users/kellysossoe/Code/Apps/devflow",
|
|
217
|
+
"node.js.detected.package.eslint": "true",
|
|
218
|
+
"node.js.detected.package.tslint": "true",
|
|
219
|
+
"node.js.selected.package.eslint": "(autodetect)",
|
|
220
|
+
"node.js.selected.package.tslint": "(autodetect)",
|
|
221
|
+
"nodejs_package_manager_path": "npm",
|
|
222
|
+
"settings.editor.selected.configurable": "settings.sync",
|
|
223
|
+
"show.migrate.to.gradle.popup": "false",
|
|
224
|
+
"to.speed.mode.migration.done": "true",
|
|
225
|
+
"vue.rearranger.settings.migration": "true"
|
|
226
|
+
}
|
|
227
|
+
}]]></component>
|
|
228
|
+
<component name="SharedIndexes">
|
|
229
|
+
<attachedChunks>
|
|
230
|
+
<set>
|
|
231
|
+
<option value="bundled-jdk-30f59d01ecdd-37e91769500f-intellij.indexing.shared.core-IU-261.26222.65" />
|
|
232
|
+
<option value="bundled-js-predefined-d6986cc7102b-31caf2ab9e3c-JavaScript-IU-261.26222.65" />
|
|
233
|
+
</set>
|
|
234
|
+
</attachedChunks>
|
|
235
|
+
</component>
|
|
236
|
+
<component name="TaskManager">
|
|
237
|
+
<task active="true" id="Default" summary="Default task">
|
|
238
|
+
<changelist id="4d5164b1-14ff-40b3-8f55-b6f2c3abff01" name="Changes" comment="" />
|
|
239
|
+
<created>1786957258019</created>
|
|
240
|
+
<option name="number" value="Default" />
|
|
241
|
+
<option name="presentableId" value="Default" />
|
|
242
|
+
<updated>1786957258019</updated>
|
|
243
|
+
<workItem from="1786957259143" duration="1286000" />
|
|
244
|
+
<workItem from="1787262300781" duration="880000" />
|
|
245
|
+
</task>
|
|
246
|
+
<servers />
|
|
247
|
+
</component>
|
|
248
|
+
<component name="TypeScriptGeneratedFilesManager">
|
|
249
|
+
<option name="version" value="3" />
|
|
250
|
+
</component>
|
|
251
|
+
</project>
|
|
@@ -5,6 +5,41 @@ 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
|
+
|
|
24
|
+
## [2.9.0] - 2026-08-20
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
|
|
28
|
+
- Workflows adaptatifs exécutables `quick`, `standard`, `deep` et `critical`, avec contrats d'activités structurés pour Codex.
|
|
29
|
+
- Preuves automatiques, worklog régénérable, dérogations contrôlées et réouverture auditée des activités en remédiation.
|
|
30
|
+
- Gates Critical distinctes pour sécurité/données, review indépendante et rollback, avec rejet des suites sensibles sans test réellement exécuté.
|
|
31
|
+
- Cible officielle `devflow init --ai codex` et diagnostic `devflow check --ai codex` sans dépendance à `~/.claude/`.
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
|
|
35
|
+
- Les validations nécessitant Docker ou un service externe sont exécutées par la gate locale `verify` plutôt que dans le sandbox de l'agent.
|
|
36
|
+
- La review consomme les preuves Devflow actuelles et réserve ses propres commandes aux inspections compatibles avec la lecture seule.
|
|
37
|
+
|
|
38
|
+
### Fixed
|
|
39
|
+
|
|
40
|
+
- Conservation cumulative du périmètre de fichiers lors des reprises d'implémentation.
|
|
41
|
+
- Rejet explicite des résultats Maven sensibles où tous les tests sont ignorés ou aucun bilan de test n'est détectable.
|
|
42
|
+
|
|
8
43
|
## [2.8.0] - 2026-08-17
|
|
9
44
|
|
|
10
45
|
### 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.
|