devflow-cli 2.3.0__tar.gz → 2.9.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/.githooks/post-checkout +26 -0
- devflow_cli-2.9.0/.githooks/post-merge +15 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.github/workflows/ci.yml +3 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.gitignore +1 -0
- devflow_cli-2.9.0/.idea/.gitignore +10 -0
- devflow_cli-2.9.0/.idea/devflow.iml +9 -0
- devflow_cli-2.9.0/.idea/misc.xml +5 -0
- devflow_cli-2.9.0/.idea/modules.xml +8 -0
- devflow_cli-2.9.0/.idea/vcs.xml +6 -0
- devflow_cli-2.9.0/.idea/workspace.xml +224 -0
- devflow_cli-2.9.0/.specify/specs/027-pipeline-auto-execution/checklists/requirements.md +35 -0
- devflow_cli-2.9.0/.specify/specs/027-pipeline-auto-execution/contracts/orchestrator-contract.md +77 -0
- devflow_cli-2.9.0/.specify/specs/027-pipeline-auto-execution/data-model.md +54 -0
- devflow_cli-2.9.0/.specify/specs/027-pipeline-auto-execution/plan.md +187 -0
- devflow_cli-2.9.0/.specify/specs/027-pipeline-auto-execution/quickstart.md +49 -0
- devflow_cli-2.9.0/.specify/specs/027-pipeline-auto-execution/research.md +41 -0
- devflow_cli-2.9.0/.specify/specs/027-pipeline-auto-execution/spec.md +211 -0
- devflow_cli-2.9.0/.specify/specs/027-pipeline-auto-execution/tasks.md +187 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/CHANGELOG.md +41 -1
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/CLAUDE.md +28 -9
- devflow_cli-2.9.0/PKG-INFO +223 -0
- devflow_cli-2.9.0/README.md +197 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/agents/devflow-review.md +2 -1
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.clarify.md +5 -9
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.contracts.md +3 -8
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.docs.md +4 -9
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.implement.md +6 -24
- devflow_cli-2.9.0/commands/devflow.md +351 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.plan.md +3 -8
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.research.md +3 -8
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.review-impl.md +15 -12
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.review-spec.md +4 -7
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.review-tasks.md +4 -7
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.spec.md +3 -8
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.tasks.md +4 -16
- devflow_cli-2.9.0/docs/activity-contracts.md +255 -0
- devflow_cli-2.9.0/docs/cli-reference.md +836 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/docs/commands-reference.md +1 -1
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/docs/index.md +3 -1
- devflow_cli-2.9.0/docs/pipeline-reference.generated.md +23 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/docs/pipeline.md +6 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/pyproject.toml +2 -2
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/__init__.py +27 -2
- devflow_cli-2.9.0/src/devflow_cli/adapters/__init__.py +19 -0
- devflow_cli-2.9.0/src/devflow_cli/adapters/agents.py +220 -0
- devflow_cli-2.9.0/src/devflow_cli/adapters/linear.py +79 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/cli.py +20 -0
- devflow_cli-2.9.0/src/devflow_cli/commands/adaptive.py +357 -0
- devflow_cli-2.9.0/src/devflow_cli/commands/assess.py +115 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/commands/check.py +44 -1
- devflow_cli-2.9.0/src/devflow_cli/commands/docs_sync.py +33 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/commands/extension.py +3 -1
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/commands/feature.py +4 -4
- devflow_cli-2.9.0/src/devflow_cli/commands/hooks_cmd.py +193 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/commands/init_cmd.py +16 -10
- devflow_cli-2.9.0/src/devflow_cli/commands/linear.py +30 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/commands/migrate_speckit.py +139 -22
- devflow_cli-2.9.0/src/devflow_cli/commands/review.py +54 -0
- devflow_cli-2.9.0/src/devflow_cli/commands/run.py +123 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/commands/status.py +24 -29
- devflow_cli-2.9.0/src/devflow_cli/commands/step.py +118 -0
- devflow_cli-2.9.0/src/devflow_cli/commands/traceability.py +47 -0
- devflow_cli-2.9.0/src/devflow_cli/commands/verify.py +78 -0
- devflow_cli-2.9.0/src/devflow_cli/core/activity_contracts.py +735 -0
- devflow_cli-2.9.0/src/devflow_cli/core/adaptive_runner.py +332 -0
- devflow_cli-2.9.0/src/devflow_cli/core/adaptive_workflow.py +303 -0
- devflow_cli-2.9.0/src/devflow_cli/core/assessment.py +161 -0
- devflow_cli-2.9.0/src/devflow_cli/core/automatic_evidence.py +717 -0
- devflow_cli-2.9.0/src/devflow_cli/core/docgen.py +93 -0
- devflow_cli-2.9.0/src/devflow_cli/core/hooks.py +235 -0
- devflow_cli-2.9.0/src/devflow_cli/core/orchestrator.py +170 -0
- devflow_cli-2.9.0/src/devflow_cli/core/remediation.py +155 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/core/state.py +207 -6
- devflow_cli-2.9.0/src/devflow_cli/core/state_store.py +45 -0
- devflow_cli-2.9.0/src/devflow_cli/core/traceability.py +81 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/core/validators.py +49 -5
- devflow_cli-2.9.0/src/devflow_cli/core/verification.py +339 -0
- devflow_cli-2.9.0/src/devflow_cli/core/waivers.py +285 -0
- devflow_cli-2.9.0/src/devflow_cli/core/worklog.py +304 -0
- devflow_cli-2.9.0/src/devflow_cli/core/worktree_snapshot.py +91 -0
- devflow_cli-2.9.0/src/devflow_cli/schemas/state.schema.json +39 -0
- devflow_cli-2.9.0/src/devflow_cli/utils/__init__.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/utils/paths.py +78 -8
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/devflow-hooks-template.yml +4 -3
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/plan-template.md +8 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/review-impl-template.md +6 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/run-tests.sh +27 -8
- devflow_cli-2.9.0/tests/test_activity_contracts.py +424 -0
- devflow_cli-2.9.0/tests/test_adaptive_runner.py +495 -0
- devflow_cli-2.9.0/tests/test_adaptive_workflow.py +185 -0
- devflow_cli-2.9.0/tests/test_agent_adapters.py +126 -0
- devflow_cli-2.9.0/tests/test_assessment.py +77 -0
- devflow_cli-2.9.0/tests/test_automatic_evidence.py +735 -0
- devflow_cli-2.9.0/tests/test_bash_runner.py +63 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_catalog.py +52 -0
- devflow_cli-2.9.0/tests/test_cmd_adaptive.py +588 -0
- devflow_cli-2.9.0/tests/test_cmd_assess.py +98 -0
- devflow_cli-2.9.0/tests/test_cmd_check.py +112 -0
- devflow_cli-2.9.0/tests/test_cmd_docs_sync.py +35 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_cmd_extension.py +31 -0
- devflow_cli-2.9.0/tests/test_cmd_hooks.py +178 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_cmd_init.py +19 -0
- devflow_cli-2.9.0/tests/test_cmd_linear.py +18 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_cmd_migrate_speckit.py +191 -2
- devflow_cli-2.9.0/tests/test_cmd_review.py +95 -0
- devflow_cli-2.9.0/tests/test_cmd_run.py +39 -0
- devflow_cli-2.9.0/tests/test_cmd_step.py +141 -0
- devflow_cli-2.9.0/tests/test_cmd_traceability.py +45 -0
- devflow_cli-2.9.0/tests/test_cmd_verify.py +86 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_constants.py +9 -0
- devflow_cli-2.9.0/tests/test_docgen.py +41 -0
- devflow_cli-2.9.0/tests/test_hooks.py +160 -0
- devflow_cli-2.9.0/tests/test_linear_adapter.py +55 -0
- devflow_cli-2.9.0/tests/test_linear_order.py +70 -0
- devflow_cli-2.9.0/tests/test_orchestrator.py +105 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_paths.py +32 -4
- devflow_cli-2.9.0/tests/test_paths_project_root.py +30 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_state.py +98 -0
- devflow_cli-2.9.0/tests/test_state_schema.py +14 -0
- devflow_cli-2.9.0/tests/test_traceability.py +63 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_validators.py +110 -0
- devflow_cli-2.9.0/tests/test_verification.py +259 -0
- devflow_cli-2.9.0/tests/test_version.py +28 -0
- devflow_cli-2.9.0/tests/test_waivers.py +182 -0
- devflow_cli-2.9.0/tests/test_worklog.py +228 -0
- devflow_cli-2.9.0/tests/test_worktree_snapshot.py +59 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/uv.lock +1 -1
- devflow_cli-2.3.0/PKG-INFO +0 -141
- devflow_cli-2.3.0/README.md +0 -115
- devflow_cli-2.3.0/commands/devflow.md +0 -140
- devflow_cli-2.3.0/docs/cli-reference.md +0 -506
- devflow_cli-2.3.0/src/devflow_cli/core/hooks.py +0 -94
- devflow_cli-2.3.0/tests/test-community-catalog.sh +0 -150
- devflow_cli-2.3.0/tests/test_cmd_check.py +0 -53
- devflow_cli-2.3.0/tests/test_hooks.py +0 -67
- /devflow_cli-2.3.0/src/devflow_cli/commands/__init__.py → /devflow_cli-2.9.0/.ai/mcp/mcp.json +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.claude/commands/speckit.analyze.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.claude/commands/speckit.checklist.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.claude/commands/speckit.clarify.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.claude/commands/speckit.constitution.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.claude/commands/speckit.implement.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.claude/commands/speckit.plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.claude/commands/speckit.specify.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.claude/commands/speckit.tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.claude/commands/speckit.taskstoissues.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.github/workflows/release.yml +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/init-options.json +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/memory/constitution.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/scripts/bash/common.sh +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/scripts/bash/setup-plan.sh +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/scripts/bash/update-agent-context.sh +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/001-cli-init-options/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/001-cli-init-options/contracts/cli-init.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/001-cli-init-options/data-model.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/001-cli-init-options/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/001-cli-init-options/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/001-cli-init-options/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/001-cli-init-options/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/002-cascade-regen/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/002-cascade-regen/contracts/cli-regen.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/002-cascade-regen/contracts/cli-status-staleness.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/002-cascade-regen/data-model.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/002-cascade-regen/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/002-cascade-regen/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/002-cascade-regen/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/002-cascade-regen/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/003-usecase-guides/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/003-usecase-guides/data-model.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/003-usecase-guides/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/003-usecase-guides/quickstart.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/003-usecase-guides/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/003-usecase-guides/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/003-usecase-guides/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/004-specify-central-directory/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/004-specify-central-directory/contracts/cli-commands.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/004-specify-central-directory/data-model.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/004-specify-central-directory/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/004-specify-central-directory/quickstart.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/004-specify-central-directory/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/004-specify-central-directory/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/004-specify-central-directory/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/005-implement-subphases/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/005-implement-subphases/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/005-implement-subphases/quickstart.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/005-implement-subphases/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/005-implement-subphases/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/005-implement-subphases/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/006-template-upgrade/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/006-template-upgrade/contracts/cli-upgrade.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/006-template-upgrade/data-model.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/006-template-upgrade/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/006-template-upgrade/quickstart.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/006-template-upgrade/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/006-template-upgrade/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/006-template-upgrade/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/007-project-documentation/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/007-project-documentation/data-model.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/007-project-documentation/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/007-project-documentation/quickstart.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/007-project-documentation/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/007-project-documentation/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/007-project-documentation/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/008-hardening-bugs/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/008-hardening-bugs/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/008-hardening-bugs/quickstart.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/008-hardening-bugs/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/008-hardening-bugs/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/008-hardening-bugs/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/009-ci-pypi/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/009-ci-pypi/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/009-ci-pypi/quickstart.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/009-ci-pypi/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/009-ci-pypi/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/009-ci-pypi/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/010-flexible-pipeline/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/010-flexible-pipeline/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/010-flexible-pipeline/quickstart.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/010-flexible-pipeline/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/010-flexible-pipeline/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/010-flexible-pipeline/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/011-cursor-support/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/011-cursor-support/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/011-cursor-support/quickstart.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/011-cursor-support/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/011-cursor-support/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/011-cursor-support/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/012-fix-critical-bugs/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/012-fix-critical-bugs/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/012-fix-critical-bugs/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/012-fix-critical-bugs/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/012-fix-critical-bugs/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/013-align-truth-sources/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/013-align-truth-sources/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/013-align-truth-sources/quickstart.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/013-align-truth-sources/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/013-align-truth-sources/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/014-enforce-state-machine/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/014-enforce-state-machine/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/014-enforce-state-machine/quickstart.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/014-enforce-state-machine/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/014-enforce-state-machine/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/015-fix-review-contradiction/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/015-fix-review-contradiction/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/015-fix-review-contradiction/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/015-fix-review-contradiction/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/015-fix-review-contradiction/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/016-harden-state-machine/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/016-harden-state-machine/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/016-harden-state-machine/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/016-harden-state-machine/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/016-harden-state-machine/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/017-fix-robustness-issues/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/017-fix-robustness-issues/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/017-fix-robustness-issues/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/017-fix-robustness-issues/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/017-fix-robustness-issues/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/018-fix-final-robustness/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/019-quality-hardening/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/019-quality-hardening/data-model.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/019-quality-hardening/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/019-quality-hardening/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/019-quality-hardening/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/019-quality-hardening/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/020-migrate-speckit/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/020-migrate-speckit/data-model.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/020-migrate-speckit/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/020-migrate-speckit/quickstart.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/020-migrate-speckit/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/020-migrate-speckit/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/020-migrate-speckit/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/021-review-iterations/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/021-review-iterations/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/021-review-iterations/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/021-review-iterations/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/021-review-iterations/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/022-fix-regen-command/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/022-fix-regen-command/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/022-fix-regen-command/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/022-fix-regen-command/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/022-fix-regen-command/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/023-add-logging/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/023-add-logging/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/023-add-logging/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/023-add-logging/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/023-add-logging/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/024-validate-constants/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/024-validate-constants/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/024-validate-constants/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/024-validate-constants/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/024-validate-constants/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/025-harden-tests/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/025-harden-tests/plan.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/025-harden-tests/research.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/025-harden-tests/spec.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/specs/025-harden-tests/tasks.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/templates/agent-file-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/templates/checklist-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/templates/constitution-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/templates/plan-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/templates/spec-template-brownfield.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/templates/spec-template-greenfield.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/templates/spec-template-microservices.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/templates/spec-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/.specify/templates/tasks-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/CONTRIBUTING.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/LICENSE +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/agents/devflow-autofix.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.analyze.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.checklist.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.constitution.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.context.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.extension.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.init.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.metrics.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.regen.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.status.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.sync-linear.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/commands/devflow.tasks-to-issues.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/docs/cursor-guide.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/docs/guides/brownfield.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/docs/guides/greenfield.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/docs/guides/microservices.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/docs/spec-driven.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/extensions/EXTENSION-API-REFERENCE.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/extensions/README.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/extensions/catalog.community.json +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/extensions/catalog.json +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/extensions/template/example-command.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/extensions/template/example-extension.json +0 -0
- {devflow_cli-2.3.0/src/devflow_cli/core → devflow_cli-2.9.0/src/devflow_cli/commands}/__init__.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/commands/context.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/commands/export_cmd.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/commands/migrate_cmd.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/commands/rollback.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/commands/stale.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/commands/upgrade_cmd.py +0 -0
- {devflow_cli-2.3.0/src/devflow_cli/utils → devflow_cli-2.9.0/src/devflow_cli/core}/__init__.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/core/catalog.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/core/git.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/core/installer.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/core/manifest.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/core/scanner.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/core/staleness.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/utils/console.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/utils/logging.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/src/devflow_cli/utils/strings.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/agent-context-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/analyze-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/checklist-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/checklists/api.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/checklists/requirements.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/checklists/security.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/checklists/ux.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/clarify-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/constitution-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/contracts/README-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/contracts/api-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/contracts/components-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/contracts/interfaces-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/contracts/services-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/contracts-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/data-model-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/docs-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/export/copilot-instructions-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/export/cursor-rules-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/extension-manifest-template.json +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/quickstart-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/research-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/review-spec-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/review-tasks-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/spec-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/templates/tasks-template.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/conftest.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/fixtures/agents/mock-agent.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/fixtures/commands/mock-command.md +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/fixtures/mock-catalog.json +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/fixtures/mock-state.json +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test-helpers.sh +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test-template-variants.sh +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_cmd_context.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_cmd_feature.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_cmd_migrate.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_cmd_stale.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_cmd_status.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_cmd_upgrade.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_context.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_e2e_pipeline.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_git.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_installer.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_integration.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_logging.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_manifest.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_rollback.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_scanner.py +0 -0
- {devflow_cli-2.3.0 → devflow_cli-2.9.0}/tests/test_staleness.py +0 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Hook devflow — promotion automatique vers ~/.claude/ sur checkout develop.
|
|
3
|
+
# Déclenché uniquement pour un checkout de branche (flag $3 = 1).
|
|
4
|
+
|
|
5
|
+
set -u
|
|
6
|
+
|
|
7
|
+
prev_ref=$1
|
|
8
|
+
new_ref=$2
|
|
9
|
+
branch_checkout=$3
|
|
10
|
+
|
|
11
|
+
# Ignore les checkout de fichiers (ex: git checkout -- file)
|
|
12
|
+
[ "$branch_checkout" = "1" ] || exit 0
|
|
13
|
+
|
|
14
|
+
# Ignore si la HEAD n'a pas changé (no-op rebase steps)
|
|
15
|
+
[ "$prev_ref" != "$new_ref" ] || exit 0
|
|
16
|
+
|
|
17
|
+
branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
|
|
18
|
+
[ "$branch" = "develop" ] || exit 0
|
|
19
|
+
|
|
20
|
+
if ! command -v devflow >/dev/null 2>&1; then
|
|
21
|
+
echo "[devflow hooks] devflow CLI introuvable dans le PATH — promotion ignorée." >&2
|
|
22
|
+
exit 0
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
echo "[devflow hooks] checkout develop → devflow init --here --force"
|
|
26
|
+
devflow init --here --force
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Hook devflow — promotion automatique vers ~/.claude/ sur merge develop.
|
|
3
|
+
|
|
4
|
+
set -u
|
|
5
|
+
|
|
6
|
+
branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
|
|
7
|
+
[ "$branch" = "develop" ] || exit 0
|
|
8
|
+
|
|
9
|
+
if ! command -v devflow >/dev/null 2>&1; then
|
|
10
|
+
echo "[devflow hooks] devflow CLI introuvable dans le PATH — promotion ignorée." >&2
|
|
11
|
+
exit 0
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
echo "[devflow hooks] merge sur develop → devflow init --here --force"
|
|
15
|
+
devflow init --here --force
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<module type="JAVA_MODULE" version="4">
|
|
3
|
+
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
|
4
|
+
<exclude-output />
|
|
5
|
+
<content url="file://$MODULE_DIR$" />
|
|
6
|
+
<orderEntry type="inheritedJdk" />
|
|
7
|
+
<orderEntry type="sourceFolder" forTests="false" />
|
|
8
|
+
</component>
|
|
9
|
+
</module>
|
|
@@ -0,0 +1,224 @@
|
|
|
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
|
+
<option name="SHOW_DIALOG" value="false" />
|
|
9
|
+
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
|
10
|
+
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
|
11
|
+
<option name="LAST_RESOLUTION" value="IGNORE" />
|
|
12
|
+
</component>
|
|
13
|
+
<component name="EmbeddingIndexingInfo">
|
|
14
|
+
<option name="cachedIndexableFilesCount" value="1409" />
|
|
15
|
+
<option name="fileBasedEmbeddingIndicesEnabled" value="true" />
|
|
16
|
+
</component>
|
|
17
|
+
<component name="Git.Settings">
|
|
18
|
+
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
|
19
|
+
</component>
|
|
20
|
+
<component name="GitHubPullRequestSearchHistory"><![CDATA[{
|
|
21
|
+
"lastFilter": {
|
|
22
|
+
"state": "OPEN",
|
|
23
|
+
"assignee": "sopequenoteck"
|
|
24
|
+
}
|
|
25
|
+
}]]></component>
|
|
26
|
+
<component name="GitToolBoxStore">
|
|
27
|
+
<option name="branchesCleanupHistory">
|
|
28
|
+
<BranchesCleanupHistory>
|
|
29
|
+
<option name="history">
|
|
30
|
+
<list>
|
|
31
|
+
<BranchCleanupEntry>
|
|
32
|
+
<option name="deletions">
|
|
33
|
+
<list>
|
|
34
|
+
<BranchDeletion>
|
|
35
|
+
<option name="hash" value="861fc6362be269bb7f402d7760f3bf7b565d7460" />
|
|
36
|
+
<option name="name" value="017-fix-robustness-issues" />
|
|
37
|
+
</BranchDeletion>
|
|
38
|
+
<BranchDeletion>
|
|
39
|
+
<option name="hash" value="608c9bc52be63c110d9d2a9a5b4fe919f90c8154" />
|
|
40
|
+
<option name="name" value="026-fix-command-ambiguities" />
|
|
41
|
+
</BranchDeletion>
|
|
42
|
+
<BranchDeletion>
|
|
43
|
+
<option name="hash" value="c9d97356f42487cc635e82f35068c632449e7459" />
|
|
44
|
+
<option name="name" value="016-harden-state-machine" />
|
|
45
|
+
</BranchDeletion>
|
|
46
|
+
<BranchDeletion>
|
|
47
|
+
<option name="hash" value="f6ef9c69dcc416b37b0d7b15cc2bc418adb94445" />
|
|
48
|
+
<option name="name" value="008-hardening-bugs" />
|
|
49
|
+
</BranchDeletion>
|
|
50
|
+
<BranchDeletion>
|
|
51
|
+
<option name="hash" value="cf559e1c5ab82ad66ad5a6ba9ca8bf3c612a8dbe" />
|
|
52
|
+
<option name="name" value="001-cli-init-options" />
|
|
53
|
+
</BranchDeletion>
|
|
54
|
+
<BranchDeletion>
|
|
55
|
+
<option name="hash" value="9c9ac6ba6122577894e95900414ad21c94117675" />
|
|
56
|
+
<option name="name" value="003-usecase-guides" />
|
|
57
|
+
</BranchDeletion>
|
|
58
|
+
<BranchDeletion>
|
|
59
|
+
<option name="hash" value="7fbc2c734b62139eac11b05a5fc51f31bdb482e8" />
|
|
60
|
+
<option name="name" value="007-project-documentation" />
|
|
61
|
+
</BranchDeletion>
|
|
62
|
+
<BranchDeletion>
|
|
63
|
+
<option name="hash" value="a9402192387c3130a0550834b187d4cd022fc28d" />
|
|
64
|
+
<option name="name" value="009-ci-pypi" />
|
|
65
|
+
</BranchDeletion>
|
|
66
|
+
<BranchDeletion>
|
|
67
|
+
<option name="hash" value="babf269c6d664519da2db7d800ff964e24b29765" />
|
|
68
|
+
<option name="name" value="022-fix-regen-command" />
|
|
69
|
+
</BranchDeletion>
|
|
70
|
+
<BranchDeletion>
|
|
71
|
+
<option name="hash" value="1bc969c678242c64fbdd16339cb2569d555b48ea" />
|
|
72
|
+
<option name="name" value="014-enforce-state-machine" />
|
|
73
|
+
</BranchDeletion>
|
|
74
|
+
<BranchDeletion>
|
|
75
|
+
<option name="hash" value="cf559e1c5ab82ad66ad5a6ba9ca8bf3c612a8dbe" />
|
|
76
|
+
<option name="name" value="002-cascade-regen" />
|
|
77
|
+
</BranchDeletion>
|
|
78
|
+
<BranchDeletion>
|
|
79
|
+
<option name="hash" value="711a399e63592a4650e63f53299603b02b19a8e7" />
|
|
80
|
+
<option name="name" value="020-migrate-speckit" />
|
|
81
|
+
</BranchDeletion>
|
|
82
|
+
<BranchDeletion>
|
|
83
|
+
<option name="hash" value="f83a06b13183c09aa274c9713480da13ba690419" />
|
|
84
|
+
<option name="name" value="010-flexible-pipeline" />
|
|
85
|
+
</BranchDeletion>
|
|
86
|
+
<BranchDeletion>
|
|
87
|
+
<option name="hash" value="9ba410df0892ce61400945b739b28df87b2670d5" />
|
|
88
|
+
<option name="name" value="004-specify-central-directory" />
|
|
89
|
+
</BranchDeletion>
|
|
90
|
+
<BranchDeletion>
|
|
91
|
+
<option name="hash" value="b7141bc1dae8a40dbaf8d2440b2cbd7b7fe3650b" />
|
|
92
|
+
<option name="name" value="006-template-upgrade" />
|
|
93
|
+
</BranchDeletion>
|
|
94
|
+
<BranchDeletion>
|
|
95
|
+
<option name="hash" value="449d3673848e3ceabfe85596c7ce8ec7f69e35b5" />
|
|
96
|
+
<option name="name" value="005-implement-subphases" />
|
|
97
|
+
</BranchDeletion>
|
|
98
|
+
<BranchDeletion>
|
|
99
|
+
<option name="hash" value="bd6a5e9b3463a8330f1a4b033c32437498baa909" />
|
|
100
|
+
<option name="name" value="027-pipeline-auto-execution" />
|
|
101
|
+
</BranchDeletion>
|
|
102
|
+
<BranchDeletion>
|
|
103
|
+
<option name="hash" value="b79001ec8e632e99c5337f66fdd9ecfcdca38810" />
|
|
104
|
+
<option name="name" value="021-review-iterations" />
|
|
105
|
+
</BranchDeletion>
|
|
106
|
+
<BranchDeletion>
|
|
107
|
+
<option name="hash" value="e01363f1ba914e75a33565e598ea3c0c83654a6f" />
|
|
108
|
+
<option name="name" value="019-quality-hardening" />
|
|
109
|
+
</BranchDeletion>
|
|
110
|
+
<BranchDeletion>
|
|
111
|
+
<option name="hash" value="86a6c0fcca1d4c5eb6ed1591f5b43d8dc1fd2e46" />
|
|
112
|
+
<option name="name" value="013-align-truth-sources" />
|
|
113
|
+
</BranchDeletion>
|
|
114
|
+
<BranchDeletion>
|
|
115
|
+
<option name="hash" value="5a987e7e2f7f890c3206247b171fa1c36e2fd108" />
|
|
116
|
+
<option name="name" value="018-fix-final-robustness" />
|
|
117
|
+
</BranchDeletion>
|
|
118
|
+
<BranchDeletion>
|
|
119
|
+
<option name="hash" value="4d3bc84a3b655b019e7f3a55569b6fa2681a3e95" />
|
|
120
|
+
<option name="name" value="015-fix-review-contradiction" />
|
|
121
|
+
</BranchDeletion>
|
|
122
|
+
<BranchDeletion>
|
|
123
|
+
<option name="hash" value="661d72db714f24d86b4d8e8895198d3eabb2450e" />
|
|
124
|
+
<option name="name" value="feature/git-hooks-auto-promote" />
|
|
125
|
+
</BranchDeletion>
|
|
126
|
+
<BranchDeletion>
|
|
127
|
+
<option name="hash" value="db082c4529f8cee67b9f82e702e3928f8ba9adcc" />
|
|
128
|
+
<option name="name" value="011-cursor-support" />
|
|
129
|
+
</BranchDeletion>
|
|
130
|
+
<BranchDeletion>
|
|
131
|
+
<option name="hash" value="83a3817a3e6a87553b17065990c842702309c87b" />
|
|
132
|
+
<option name="name" value="025-harden-tests" />
|
|
133
|
+
</BranchDeletion>
|
|
134
|
+
<BranchDeletion>
|
|
135
|
+
<option name="hash" value="7bf297d86fcb2cd560e2a48e13e037c68f80197d" />
|
|
136
|
+
<option name="name" value="012-fix-critical-bugs" />
|
|
137
|
+
</BranchDeletion>
|
|
138
|
+
<BranchDeletion>
|
|
139
|
+
<option name="hash" value="573bfc9a8fb73e4211493a905fb2a5f3aede7ff5" />
|
|
140
|
+
<option name="name" value="023-add-logging" />
|
|
141
|
+
</BranchDeletion>
|
|
142
|
+
<BranchDeletion>
|
|
143
|
+
<option name="hash" value="5fc33e862e6736b67d94690db1117493528cbe85" />
|
|
144
|
+
<option name="name" value="024-validate-constants" />
|
|
145
|
+
</BranchDeletion>
|
|
146
|
+
</list>
|
|
147
|
+
</option>
|
|
148
|
+
<option name="timestamp" value="1787005388911" />
|
|
149
|
+
</BranchCleanupEntry>
|
|
150
|
+
</list>
|
|
151
|
+
</option>
|
|
152
|
+
</BranchesCleanupHistory>
|
|
153
|
+
</option>
|
|
154
|
+
</component>
|
|
155
|
+
<component name="GithubPullRequestsUISettings"><![CDATA[{
|
|
156
|
+
"selectedUrlAndAccountId": {
|
|
157
|
+
"url": "https://github.com/sopequenoteck/devflow.git",
|
|
158
|
+
"accountId": "8169ef0d-6593-43b8-9a77-2780a60dc5ac"
|
|
159
|
+
}
|
|
160
|
+
}]]></component>
|
|
161
|
+
<component name="McpProjectServerCommands">
|
|
162
|
+
<commands />
|
|
163
|
+
<urls />
|
|
164
|
+
</component>
|
|
165
|
+
<component name="ProjectColorInfo"><![CDATA[{
|
|
166
|
+
"associatedIndex": 7,
|
|
167
|
+
"fromUser": false
|
|
168
|
+
}]]></component>
|
|
169
|
+
<component name="ProjectId" id="3I2KWolJpZcPmEOGT7J0Rsp6K3n" />
|
|
170
|
+
<component name="ProjectViewState">
|
|
171
|
+
<option name="hideEmptyMiddlePackages" value="true" />
|
|
172
|
+
<option name="showLibraryContents" value="true" />
|
|
173
|
+
</component>
|
|
174
|
+
<component name="PropertiesComponent"><![CDATA[{
|
|
175
|
+
"keyToString": {
|
|
176
|
+
"ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
|
177
|
+
"ModuleVcsDetector.initialDetectionPerformed": "true",
|
|
178
|
+
"RunOnceActivity.MCP Project settings loaded": "true",
|
|
179
|
+
"RunOnceActivity.ShowReadmeOnStart": "true",
|
|
180
|
+
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
|
181
|
+
"RunOnceActivity.git.unshallow": "true",
|
|
182
|
+
"RunOnceActivity.typescript.service.memoryLimit.init": "true",
|
|
183
|
+
"SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
|
184
|
+
"codeWithMe.voiceChat.enabledByDefault": "false",
|
|
185
|
+
"com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true",
|
|
186
|
+
"dart.analysis.tool.window.visible": "false",
|
|
187
|
+
"git-widget-placeholder": "develop",
|
|
188
|
+
"junie.onboarding.icon.badge.shown": "true",
|
|
189
|
+
"kotlin-language-version-configured": "true",
|
|
190
|
+
"last_opened_file_path": "/Users/kellysossoe/Code/Apps/devflow",
|
|
191
|
+
"node.js.detected.package.eslint": "true",
|
|
192
|
+
"node.js.detected.package.tslint": "true",
|
|
193
|
+
"node.js.selected.package.eslint": "(autodetect)",
|
|
194
|
+
"node.js.selected.package.tslint": "(autodetect)",
|
|
195
|
+
"nodejs_package_manager_path": "npm",
|
|
196
|
+
"settings.editor.selected.configurable": "settings.sync",
|
|
197
|
+
"show.migrate.to.gradle.popup": "false",
|
|
198
|
+
"to.speed.mode.migration.done": "true",
|
|
199
|
+
"vue.rearranger.settings.migration": "true"
|
|
200
|
+
}
|
|
201
|
+
}]]></component>
|
|
202
|
+
<component name="SharedIndexes">
|
|
203
|
+
<attachedChunks>
|
|
204
|
+
<set>
|
|
205
|
+
<option value="bundled-jdk-30f59d01ecdd-37e91769500f-intellij.indexing.shared.core-IU-261.26222.65" />
|
|
206
|
+
<option value="bundled-js-predefined-d6986cc7102b-31caf2ab9e3c-JavaScript-IU-261.26222.65" />
|
|
207
|
+
</set>
|
|
208
|
+
</attachedChunks>
|
|
209
|
+
</component>
|
|
210
|
+
<component name="TaskManager">
|
|
211
|
+
<task active="true" id="Default" summary="Default task">
|
|
212
|
+
<changelist id="4d5164b1-14ff-40b3-8f55-b6f2c3abff01" name="Changes" comment="" />
|
|
213
|
+
<created>1786957258019</created>
|
|
214
|
+
<option name="number" value="Default" />
|
|
215
|
+
<option name="presentableId" value="Default" />
|
|
216
|
+
<updated>1786957258019</updated>
|
|
217
|
+
<workItem from="1786957259143" duration="1286000" />
|
|
218
|
+
</task>
|
|
219
|
+
<servers />
|
|
220
|
+
</component>
|
|
221
|
+
<component name="TypeScriptGeneratedFilesManager">
|
|
222
|
+
<option name="version" value="3" />
|
|
223
|
+
</component>
|
|
224
|
+
</project>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Specification Quality Checklist: Pipeline Auto-Execution
|
|
2
|
+
|
|
3
|
+
**Purpose**: Validate specification completeness and quality before proceeding to planning
|
|
4
|
+
**Created**: 2026-03-24
|
|
5
|
+
**Feature**: [spec.md](../spec.md)
|
|
6
|
+
|
|
7
|
+
## Content Quality
|
|
8
|
+
|
|
9
|
+
- [x] No implementation details (languages, frameworks, APIs)
|
|
10
|
+
- [x] Focused on user value and business needs
|
|
11
|
+
- [x] Written for non-technical stakeholders
|
|
12
|
+
- [x] All mandatory sections completed
|
|
13
|
+
|
|
14
|
+
## Requirement Completeness
|
|
15
|
+
|
|
16
|
+
- [x] No [NEEDS CLARIFICATION] markers remain
|
|
17
|
+
- [x] Requirements are testable and unambiguous
|
|
18
|
+
- [x] Success criteria are measurable
|
|
19
|
+
- [x] Success criteria are technology-agnostic (no implementation details)
|
|
20
|
+
- [x] All acceptance scenarios are defined
|
|
21
|
+
- [x] Edge cases are identified
|
|
22
|
+
- [x] Scope is clearly bounded
|
|
23
|
+
- [x] Dependencies and assumptions identified
|
|
24
|
+
|
|
25
|
+
## Feature Readiness
|
|
26
|
+
|
|
27
|
+
- [x] All functional requirements have clear acceptance criteria
|
|
28
|
+
- [x] User scenarios cover primary flows
|
|
29
|
+
- [x] Feature meets measurable outcomes defined in Success Criteria
|
|
30
|
+
- [x] No implementation details leak into specification
|
|
31
|
+
|
|
32
|
+
## Notes
|
|
33
|
+
|
|
34
|
+
- All items pass validation. Spec is ready for `/speckit.clarify` or `/speckit.plan`.
|
|
35
|
+
- La spec fait reference a des composants existants (fichiers, constantes) dans la section "Comportement existant" et "Impact sur l'existant" car c'est un projet brownfield — ceci est attendu pour documenter le delta, pas pour prescrire l'implementation.
|
devflow_cli-2.9.0/.specify/specs/027-pipeline-auto-execution/contracts/orchestrator-contract.md
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Contract: Orchestrateur /devflow
|
|
2
|
+
|
|
3
|
+
**Feature**: 027-pipeline-auto-execution
|
|
4
|
+
**Date**: 2026-03-25
|
|
5
|
+
|
|
6
|
+
## Interface — commande `/devflow`
|
|
7
|
+
|
|
8
|
+
### Arguments (mis a jour)
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
/devflow <ISSUE_ID> [STEP] [--step] [--recover]
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Argument | Type | Requis | Description |
|
|
15
|
+
|----------|------|--------|-------------|
|
|
16
|
+
| ISSUE_ID | string | oui | Identifiant de l'issue (ex: KS-123) |
|
|
17
|
+
| STEP | string | non | Force la reprise a une etape specifique |
|
|
18
|
+
| --step | flag | non | Mode une-etape-a-la-fois (desactive le chainage) |
|
|
19
|
+
| --recover | flag | non | Reconstruit state.json depuis les artefacts |
|
|
20
|
+
|
|
21
|
+
### Comportement par defaut (chainage)
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
ENTREE: ISSUE_ID
|
|
25
|
+
SORTIE: Pipeline execute jusqu'a un point d'arret naturel
|
|
26
|
+
|
|
27
|
+
1. Creer/checkout branche git (si necessaire)
|
|
28
|
+
2. Lire state.json → currentStep
|
|
29
|
+
3. BOUCLE (max 15 iterations):
|
|
30
|
+
a. Si currentStep == "done" → afficher resume, SORTIE
|
|
31
|
+
b. Si etape optionnelle:
|
|
32
|
+
- mode fast → skip automatique
|
|
33
|
+
- mode full → demander a l'utilisateur
|
|
34
|
+
c. Executer /devflow.{currentStep} ISSUE_ID
|
|
35
|
+
d. Relire state.json
|
|
36
|
+
e. Verifier progression (anti-boucle)
|
|
37
|
+
f. Si review gate:
|
|
38
|
+
- PASS → continuer
|
|
39
|
+
- WARNING → afficher, demander confirmation
|
|
40
|
+
- BLOQUANT → ARRET
|
|
41
|
+
g. Si --step → ARRET
|
|
42
|
+
4. SORTIE
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Points d'arret du chainage
|
|
46
|
+
|
|
47
|
+
| Condition | Action |
|
|
48
|
+
|-----------|--------|
|
|
49
|
+
| `currentStep == "done"` | Afficher resume final |
|
|
50
|
+
| Review gate BLOQUANT | Arreter, afficher les blockers |
|
|
51
|
+
| Review gate WARNING | Pause, demander confirmation |
|
|
52
|
+
| Etape optionnelle (mode full) | Pause, demander skip/execute |
|
|
53
|
+
| Flag `--step` | Arreter apres 1 etape |
|
|
54
|
+
| Compteur >= 15 | Arreter avec avertissement de securite |
|
|
55
|
+
| currentStep n'a pas progresse | Arreter avec erreur (anti-boucle) |
|
|
56
|
+
|
|
57
|
+
## Interface — sync Linear (toutes commandes)
|
|
58
|
+
|
|
59
|
+
### Protocole de non-regression
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
ENTREE: issue_id, statut_cible (depuis STEP_LINEAR_MAPPING)
|
|
63
|
+
SORTIE: statut Linear mis a jour ou conserve
|
|
64
|
+
|
|
65
|
+
1. get_issue(issue_id) → statut_actuel
|
|
66
|
+
2. Si erreur (API down, issue inexistante) → warning, SORTIE sans modification
|
|
67
|
+
3. index_actuel = STEP_LINEAR_ORDER.index(statut_actuel) ou -1 si inconnu
|
|
68
|
+
4. index_cible = STEP_LINEAR_ORDER.index(statut_cible)
|
|
69
|
+
5. Si index_actuel >= index_cible → log "conserve", SORTIE sans modification
|
|
70
|
+
6. save_issue(issue_id, statut_cible)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Cas limites
|
|
74
|
+
|
|
75
|
+
- Statut Linear inconnu (custom/non-mappe) : traiter index comme -1 → toujours mettre a jour
|
|
76
|
+
- API Linear indisponible : continuer sans sync, logger warning
|
|
77
|
+
- Issue inexistante : continuer sans sync, logger warning
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Data Model: Pipeline Auto-Execution
|
|
2
|
+
|
|
3
|
+
**Feature**: 027-pipeline-auto-execution
|
|
4
|
+
**Date**: 2026-03-25
|
|
5
|
+
|
|
6
|
+
## Entites existantes (inchangees)
|
|
7
|
+
|
|
8
|
+
### FeatureState (state.json)
|
|
9
|
+
|
|
10
|
+
Aucun changement de schema. Les champs existants suffisent :
|
|
11
|
+
- `currentStep` : etape courante (utilise par la boucle de chainage)
|
|
12
|
+
- `completedSteps` : etapes terminees (utilise pour detecter la progression)
|
|
13
|
+
- `skippedSteps` : etapes sautees (utilise pour l'auto-skip)
|
|
14
|
+
- `mode` : "full" ou "fast" (determine le comportement des etapes optionnelles)
|
|
15
|
+
- `reviewIterations` : compteur par gate (utilise pour les verdicts)
|
|
16
|
+
|
|
17
|
+
### STEP_LINEAR_MAPPING (existant)
|
|
18
|
+
|
|
19
|
+
Inchange. Mapping complet etape → statut Linear.
|
|
20
|
+
|
|
21
|
+
## Nouvelle constante
|
|
22
|
+
|
|
23
|
+
### STEP_LINEAR_ORDER
|
|
24
|
+
|
|
25
|
+
**Fichier**: `src/devflow_cli/__init__.py`
|
|
26
|
+
|
|
27
|
+
Liste ordonnee des statuts Linear par progression croissante :
|
|
28
|
+
|
|
29
|
+
```python
|
|
30
|
+
STEP_LINEAR_ORDER = [
|
|
31
|
+
"Backlog",
|
|
32
|
+
"Spec",
|
|
33
|
+
"Research",
|
|
34
|
+
"Plan",
|
|
35
|
+
"Tasks",
|
|
36
|
+
"Review",
|
|
37
|
+
"In Progress",
|
|
38
|
+
"Doc",
|
|
39
|
+
"Done",
|
|
40
|
+
]
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Usage**: Permet de comparer deux statuts Linear pour determiner si une mise a jour constituerait une regression.
|
|
44
|
+
|
|
45
|
+
**Regle**: `statut_actuel_index >= statut_cible_index` → ne pas mettre a jour.
|
|
46
|
+
|
|
47
|
+
**Coherence**: Doit etre maintenu en parallele avec `STEP_LINEAR_MAPPING`. Un assert de coherence sera ajoute (meme pattern que les asserts existants dans `__init__.py`).
|
|
48
|
+
|
|
49
|
+
## Relations
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
STEP_LINEAR_MAPPING --mappe vers--> STEP_LINEAR_ORDER (statuts)
|
|
53
|
+
FeatureState.currentStep --determine--> STEP_LINEAR_MAPPING[currentStep] --compare avec--> statut actuel Linear
|
|
54
|
+
```
|