devflow-cli 7.1.0__tar.gz → 7.2.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-7.2.0/.specify/specs/037-kks-432-linear-sync/.gitignore +2 -0
- devflow_cli-7.2.0/.specify/specs/037-kks-432-linear-sync/activity-contract.json +163 -0
- devflow_cli-7.2.0/.specify/specs/037-kks-432-linear-sync/agent-execution.json +15 -0
- devflow_cli-7.2.0/.specify/specs/037-kks-432-linear-sync/assessment.json +45 -0
- devflow_cli-7.2.0/.specify/specs/037-kks-432-linear-sync/evidence/diff-inspection.json +47 -0
- devflow_cli-7.2.0/.specify/specs/037-kks-432-linear-sync/evidence/regression-check.json +137 -0
- devflow_cli-7.2.0/.specify/specs/037-kks-432-linear-sync/evidence/security-or-data-check.json +49 -0
- devflow_cli-7.2.0/.specify/specs/037-kks-432-linear-sync/evidence/targeted-tests.json +37 -0
- devflow_cli-7.2.0/.specify/specs/037-kks-432-linear-sync/implement-result.json +99 -0
- devflow_cli-7.2.0/.specify/specs/037-kks-432-linear-sync/need.md +108 -0
- devflow_cli-7.2.0/.specify/specs/037-kks-432-linear-sync/preflight-evidence-result.json +92 -0
- devflow_cli-7.2.0/.specify/specs/037-kks-432-linear-sync/preflight-evidence.md +191 -0
- devflow_cli-7.2.0/.specify/specs/037-kks-432-linear-sync/prepare-result.json +153 -0
- devflow_cli-7.2.0/.specify/specs/037-kks-432-linear-sync/risk-assessment-result.json +25 -0
- devflow_cli-7.2.0/.specify/specs/037-kks-432-linear-sync/risk-assessment.md +145 -0
- devflow_cli-7.2.0/.specify/specs/037-kks-432-linear-sync/workflow-state.json +38 -0
- devflow_cli-7.2.0/.specify/specs/037-kks-432-linear-sync/worklog.md +133 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/CHANGELOG.md +25 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/PKG-INFO +17 -1
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/README.md +16 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/commands/devflow.md +10 -2
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/cli-reference.md +40 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/commands-reference.md +3 -1
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/pipeline-reference.generated.md +7 -7
- devflow_cli-7.2.0/docs/releases/7.1.1.md +34 -0
- devflow_cli-7.2.0/docs/releases/7.2.0.md +88 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/pyproject.toml +1 -1
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/__init__.py +9 -12
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/adapters/agents.py +4 -0
- devflow_cli-7.2.0/src/devflow_cli/adapters/linear.py +243 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/commands/adaptive.py +10 -2
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/commands/check.py +11 -2
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/commands/hooks_cmd.py +4 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/feedback.py +2 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/git.py +8 -1
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/hooks.py +2 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/verification.py +2 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/worktree_snapshot.py +4 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/utils/paths.py +2 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/conftest.py +13 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_agent_adapters.py +25 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_cmd_adaptive.py +336 -1
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_cmd_linear.py +8 -1
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_constants.py +17 -3
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_git.py +24 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_guardrails.py +0 -2
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_hooks.py +42 -0
- devflow_cli-7.2.0/tests/test_linear_adapter.py +326 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_linear_order.py +20 -4
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_verification.py +19 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_worktree_snapshot.py +24 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/uv.lock +1 -1
- devflow_cli-7.1.0/src/devflow_cli/adapters/linear.py +0 -83
- devflow_cli-7.1.0/tests/test_linear_adapter.py +0 -56
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.ai/mcp/mcp.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.claude/commands/speckit.analyze.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.claude/commands/speckit.checklist.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.claude/commands/speckit.clarify.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.claude/commands/speckit.constitution.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.claude/commands/speckit.implement.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.claude/commands/speckit.plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.claude/commands/speckit.specify.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.claude/commands/speckit.tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.claude/commands/speckit.taskstoissues.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.githooks/post-checkout +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.githooks/post-merge +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.github/workflows/ci.yml +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.github/workflows/release.yml +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.github/workflows/version-check.yml +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.gitignore +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/init-options.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/memory/constitution.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/scripts/bash/common.sh +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/scripts/bash/setup-plan.sh +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/scripts/bash/update-agent-context.sh +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/001-cli-init-options/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/001-cli-init-options/contracts/cli-init.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/001-cli-init-options/data-model.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/001-cli-init-options/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/001-cli-init-options/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/001-cli-init-options/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/001-cli-init-options/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/002-cascade-regen/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/002-cascade-regen/contracts/cli-regen.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/002-cascade-regen/contracts/cli-status-staleness.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/002-cascade-regen/data-model.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/002-cascade-regen/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/002-cascade-regen/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/002-cascade-regen/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/002-cascade-regen/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/003-usecase-guides/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/003-usecase-guides/data-model.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/003-usecase-guides/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/003-usecase-guides/quickstart.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/003-usecase-guides/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/003-usecase-guides/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/003-usecase-guides/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/004-specify-central-directory/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/004-specify-central-directory/contracts/cli-commands.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/004-specify-central-directory/data-model.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/004-specify-central-directory/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/004-specify-central-directory/quickstart.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/004-specify-central-directory/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/004-specify-central-directory/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/004-specify-central-directory/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/005-implement-subphases/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/005-implement-subphases/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/005-implement-subphases/quickstart.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/005-implement-subphases/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/005-implement-subphases/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/005-implement-subphases/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/006-template-upgrade/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/006-template-upgrade/contracts/cli-upgrade.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/006-template-upgrade/data-model.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/006-template-upgrade/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/006-template-upgrade/quickstart.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/006-template-upgrade/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/006-template-upgrade/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/006-template-upgrade/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/007-project-documentation/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/007-project-documentation/data-model.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/007-project-documentation/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/007-project-documentation/quickstart.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/007-project-documentation/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/007-project-documentation/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/007-project-documentation/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/008-hardening-bugs/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/008-hardening-bugs/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/008-hardening-bugs/quickstart.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/008-hardening-bugs/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/008-hardening-bugs/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/008-hardening-bugs/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/009-ci-pypi/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/009-ci-pypi/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/009-ci-pypi/quickstart.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/009-ci-pypi/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/009-ci-pypi/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/009-ci-pypi/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/010-flexible-pipeline/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/010-flexible-pipeline/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/010-flexible-pipeline/quickstart.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/010-flexible-pipeline/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/010-flexible-pipeline/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/010-flexible-pipeline/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/011-cursor-support/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/011-cursor-support/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/011-cursor-support/quickstart.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/011-cursor-support/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/011-cursor-support/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/011-cursor-support/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/012-fix-critical-bugs/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/012-fix-critical-bugs/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/012-fix-critical-bugs/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/012-fix-critical-bugs/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/012-fix-critical-bugs/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/013-align-truth-sources/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/013-align-truth-sources/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/013-align-truth-sources/quickstart.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/013-align-truth-sources/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/013-align-truth-sources/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/014-enforce-state-machine/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/014-enforce-state-machine/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/014-enforce-state-machine/quickstart.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/014-enforce-state-machine/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/014-enforce-state-machine/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/015-fix-review-contradiction/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/015-fix-review-contradiction/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/015-fix-review-contradiction/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/015-fix-review-contradiction/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/015-fix-review-contradiction/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/016-harden-state-machine/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/016-harden-state-machine/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/016-harden-state-machine/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/016-harden-state-machine/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/016-harden-state-machine/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/017-fix-robustness-issues/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/017-fix-robustness-issues/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/017-fix-robustness-issues/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/017-fix-robustness-issues/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/017-fix-robustness-issues/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/018-fix-final-robustness/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/019-quality-hardening/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/019-quality-hardening/data-model.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/019-quality-hardening/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/019-quality-hardening/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/019-quality-hardening/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/019-quality-hardening/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/020-migrate-speckit/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/020-migrate-speckit/data-model.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/020-migrate-speckit/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/020-migrate-speckit/quickstart.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/020-migrate-speckit/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/020-migrate-speckit/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/020-migrate-speckit/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/021-review-iterations/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/021-review-iterations/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/021-review-iterations/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/021-review-iterations/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/021-review-iterations/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/022-fix-regen-command/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/022-fix-regen-command/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/022-fix-regen-command/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/022-fix-regen-command/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/022-fix-regen-command/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/023-add-logging/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/023-add-logging/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/023-add-logging/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/023-add-logging/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/023-add-logging/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/024-validate-constants/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/024-validate-constants/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/024-validate-constants/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/024-validate-constants/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/024-validate-constants/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/025-harden-tests/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/025-harden-tests/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/025-harden-tests/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/025-harden-tests/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/025-harden-tests/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/027-pipeline-auto-execution/checklists/requirements.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/027-pipeline-auto-execution/contracts/orchestrator-contract.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/027-pipeline-auto-execution/data-model.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/027-pipeline-auto-execution/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/027-pipeline-auto-execution/quickstart.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/027-pipeline-auto-execution/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/027-pipeline-auto-execution/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/027-pipeline-auto-execution/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/028-kks-411-feature-dir-ignored/.gitignore +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/028-kks-411-feature-dir-ignored/activity-contract.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/028-kks-411-feature-dir-ignored/agent-execution.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/028-kks-411-feature-dir-ignored/assessment.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/028-kks-411-feature-dir-ignored/evidence/diff-inspection.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/028-kks-411-feature-dir-ignored/evidence/regression-check.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/028-kks-411-feature-dir-ignored/evidence/targeted-tests.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/028-kks-411-feature-dir-ignored/implement-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/028-kks-411-feature-dir-ignored/need.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/028-kks-411-feature-dir-ignored/preflight-evidence-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/028-kks-411-feature-dir-ignored/preflight-evidence.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/028-kks-411-feature-dir-ignored/prepare-attempt.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/028-kks-411-feature-dir-ignored/prepare-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/028-kks-411-feature-dir-ignored/workflow-state.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/028-kks-411-feature-dir-ignored/worklog.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/029-kks-413/.gitignore +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/029-kks-413/activity-contract.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/029-kks-413/agent-execution.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/029-kks-413/assessment.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/029-kks-413/evidence/diff-inspection.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/029-kks-413/evidence/regression-check.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/029-kks-413/evidence/targeted-tests.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/029-kks-413/implement-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/029-kks-413/need.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/029-kks-413/preflight-evidence-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/029-kks-413/preflight-evidence.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/029-kks-413/prepare-attempt.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/029-kks-413/prepare-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/029-kks-413/workflow-state.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/029-kks-413/worklog.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/.gitignore +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/activity-contract.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/agent-execution.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/assessment.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/evidence/diff-inspection.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/evidence/requirements-coverage.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/evidence/security-or-data-check.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/evidence/test-suite.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/implement-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/need.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/omission-log.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/plan-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/preflight-evidence-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/preflight-evidence.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/research-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/research.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/review-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/risk-assessment-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/risk-assessment.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/rollback-check-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/spec-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/tasks-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/workflow-state.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/030-kks-416/worklog.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/.gitignore +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/activity-contract.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/agent-execution.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/assessment.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-001/activity-contract.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-001/contracts-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-001/evidence/diff-inspection.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-001/evidence/requirements-coverage.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-001/evidence/security-or-data-check.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-001/evidence/test-suite.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-001/implement-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-001/plan-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-001/preflight-evidence-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-001/preflight-evidence.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-001/review-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-001/risk-assessment-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-001/spec-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-001/tasks-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-002/activity-contract.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-002/contracts-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-002/evidence/diff-inspection.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-002/evidence/requirements-coverage.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-002/evidence/security-or-data-check.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-002/evidence/test-suite.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-002/implement-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-002/plan-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-002/preflight-evidence-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-002/preflight-evidence.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-002/review-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-002/risk-assessment-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-002/rollback-check-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-002/spec-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/attempts/reopen-002/tasks-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/contracts-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/contracts.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/evidence/diff-inspection.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/evidence/requirements-coverage.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/evidence/security-or-data-check.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/evidence/test-suite.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/implement-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/issue-precommit-review.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/need.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/omission-log.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/plan-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/preflight-evidence-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/preflight-evidence.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/reopen-log.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/review-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/risk-assessment-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/risk-assessment.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/rollback-check-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/spec-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/tasks-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/workflow-state.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/031-kks-414/worklog.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/032-kks-419/.gitignore +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/032-kks-419/activity-contract.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/032-kks-419/agent-execution.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/032-kks-419/assessment.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/032-kks-419/evidence/diff-inspection.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/032-kks-419/evidence/regression-check.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/032-kks-419/evidence/targeted-tests.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/032-kks-419/implement-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/032-kks-419/need.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/032-kks-419/preflight-evidence-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/032-kks-419/preflight-evidence.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/032-kks-419/prepare-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/032-kks-419/workflow-state.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/032-kks-419/worklog.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/033-kks-420-stale-commands-warning/.gitignore +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/033-kks-420-stale-commands-warning/activity-contract.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/033-kks-420-stale-commands-warning/agent-execution.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/033-kks-420-stale-commands-warning/assessment.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/033-kks-420-stale-commands-warning/evidence/diff-inspection.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/033-kks-420-stale-commands-warning/evidence/regression-check.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/033-kks-420-stale-commands-warning/evidence/targeted-tests.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/033-kks-420-stale-commands-warning/implement-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/033-kks-420-stale-commands-warning/need.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/033-kks-420-stale-commands-warning/preflight-evidence-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/033-kks-420-stale-commands-warning/preflight-evidence.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/033-kks-420-stale-commands-warning/prepare-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/033-kks-420-stale-commands-warning/workflow-state.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/033-kks-420-stale-commands-warning/worklog.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/.gitignore +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/activity-contract.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/agent-execution.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/assessment.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/contracts-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/contracts.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/evidence/diff-inspection.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/evidence/requirements-coverage.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/evidence/security-or-data-check.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/evidence/test-suite.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/implement-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/need.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/omission-log.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/plan-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/plan.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/preflight-evidence-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/preflight-evidence.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/review-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/risk-assessment-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/risk-assessment.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/rollback-check-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/spec-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/spec.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/tasks-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/tasks.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/validation-approvals.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/workflow-state.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/034-kks-421-decouple-guardrails/worklog.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/035-kks-428-constitution-v2/.gitignore +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/035-kks-428-constitution-v2/activity-contract.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/035-kks-428-constitution-v2/agent-execution.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/035-kks-428-constitution-v2/assessment.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/035-kks-428-constitution-v2/evidence/diff-inspection.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/035-kks-428-constitution-v2/evidence/targeted-check.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/035-kks-428-constitution-v2/implement-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/035-kks-428-constitution-v2/need.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/035-kks-428-constitution-v2/preflight-evidence-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/035-kks-428-constitution-v2/preflight-evidence.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/035-kks-428-constitution-v2/workflow-state.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/035-kks-428-constitution-v2/worklog.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/036-kks-433-run-progress/.gitignore +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/036-kks-433-run-progress/activity-contract.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/036-kks-433-run-progress/agent-execution.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/036-kks-433-run-progress/assessment.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/036-kks-433-run-progress/evidence/diff-inspection.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/036-kks-433-run-progress/evidence/regression-check.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/036-kks-433-run-progress/evidence/targeted-tests.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/036-kks-433-run-progress/implement-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/036-kks-433-run-progress/need.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/036-kks-433-run-progress/preflight-evidence-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/036-kks-433-run-progress/preflight-evidence.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/036-kks-433-run-progress/prepare-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/036-kks-433-run-progress/review-result.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/036-kks-433-run-progress/workflow-state.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/specs/036-kks-433-run-progress/worklog.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/templates/agent-file-template.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/templates/checklist-template.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/templates/constitution-template.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/templates/plan-template.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/templates/spec-template-brownfield.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/templates/spec-template-greenfield.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/templates/spec-template-microservices.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/templates/spec-template.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/.specify/templates/tasks-template.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/CLAUDE.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/CONTRIBUTING.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/FEEDBACK.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/LICENSE +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/commands/devflow.context.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/commands/devflow.extension.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/commands/devflow.init.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/commands/devflow.regen.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/commands/devflow.status.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/activity-contracts.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/adr/0001-v4-workflow-compatibility.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/adr/0002-v5-rupture-and-provenance.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/adr/0003-v7-guardrails-rupture.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/cursor-guide.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/guides/brownfield.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/guides/greenfield.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/guides/microservices.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/index.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/pipeline.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/releases/4.0.0.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/releases/4.0.1.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/releases/4.0.3.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/releases/4.0.4.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/releases/4.0.5.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/releases/4.0.6.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/releases/5.0.0.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/releases/6.0.0.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/releases/6.1.0.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/releases/6.1.1.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/releases/6.1.2.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/releases/6.2.0.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/releases/6.3.0.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/releases/6.3.1.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/releases/6.4.0.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/releases/7.0.0.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/releases/7.0.1.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/releases/7.1.0.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/spec-driven.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/v5-decisions.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/v6-decisions.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/docs/v7-decisions.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/extensions/EXTENSION-API-REFERENCE.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/extensions/catalog.community.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/extensions/catalog.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/extensions/template/example-command.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/extensions/template/example-extension.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/scripts/check_release.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/adapters/__init__.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/cli.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/commands/__init__.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/commands/assess.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/commands/context.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/commands/docs_sync.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/commands/export_cmd.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/commands/extension.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/commands/feature.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/commands/feedback.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/commands/init_cmd.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/commands/linear.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/commands/stale.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/commands/status.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/commands/traceability.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/commands/upgrade_cmd.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/commands/usage.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/commands/verify.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/__init__.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/activity_contracts.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/adaptive_runner.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/adaptive_workflow.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/agent_failure.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/assessment.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/automatic_evidence.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/catalog.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/contract_schemas.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/docgen.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/installer.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/manifest.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/operational.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/redaction.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/remediation.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/run_progress.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/scanner.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/staleness.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/telemetry.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/traceability.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/validation_approvals.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/validators.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/waivers.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/core/worklog.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/schemas/activity-contract-v4.schema.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/schemas/activity-result-v1.schema.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/schemas/assessment-v4.schema.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/schemas/workflow-state-v5.schema.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/utils/__init__.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/utils/console.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/utils/logging.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/src/devflow_cli/utils/strings.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/templates/agent-context-template.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/templates/constitution-template.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/templates/contracts/README-template.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/templates/contracts/api-template.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/templates/contracts/components-template.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/templates/contracts/interfaces-template.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/templates/contracts/services-template.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/templates/contracts-template.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/templates/data-model-template.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/templates/devflow-hooks-template.yml +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/templates/extension-manifest-template.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/templates/plan-template.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/templates/quickstart-template.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/templates/spec-template.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/templates/tasks-template.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/fixtures/agents/mock-agent.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/fixtures/commands/mock-command.md +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/fixtures/mock-catalog.json +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/run-tests.sh +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test-helpers.sh +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test-template-variants.sh +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_activity_contracts.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_adaptive_runner.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_adaptive_workflow.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_agent_failure.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_assessment.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_automatic_evidence.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_bash_runner.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_catalog.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_cmd_assess.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_cmd_check.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_cmd_context.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_cmd_docs_sync.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_cmd_extension.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_cmd_feature.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_cmd_feedback.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_cmd_hooks.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_cmd_init.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_cmd_stale.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_cmd_status.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_cmd_traceability.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_cmd_upgrade.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_cmd_verify.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_context.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_contract_schemas.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_docgen.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_feedback.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_installer.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_integration.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_legacy_schema.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_logging.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_manifest.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_paths.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_paths_project_root.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_release.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_remediation.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_run_progress.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_scanner.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_staleness.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_telemetry.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_traceability.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_validators.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_version.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_waivers.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_wheel_adaptive_acceptance.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_wheel_install.py +0 -0
- {devflow_cli-7.1.0 → devflow_cli-7.2.0}/tests/test_worklog.py +0 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 4,
|
|
3
|
+
"contractId": "KKS-432:standard:implement:v4",
|
|
4
|
+
"issueId": "KKS-432",
|
|
5
|
+
"profile": "standard",
|
|
6
|
+
"guardrails": true,
|
|
7
|
+
"activity": "implement",
|
|
8
|
+
"objective": "Synchroniser les statuts Linear depuis la CLI a chaque transition, cle LINEAR_API_KEY retiree de l'environnement de l'agent, statuts compacts ; version 7.2.0",
|
|
9
|
+
"featurePath": ".specify/specs/037-kks-432-linear-sync",
|
|
10
|
+
"inputs": [
|
|
11
|
+
".specify/specs/037-kks-432-linear-sync/need.md",
|
|
12
|
+
".specify/specs/037-kks-432-linear-sync/assessment.json",
|
|
13
|
+
".specify/specs/037-kks-432-linear-sync/workflow-state.json",
|
|
14
|
+
".specify/specs/037-kks-432-linear-sync/risk-assessment.md",
|
|
15
|
+
".specify/specs/037-kks-432-linear-sync/prepare-result.json",
|
|
16
|
+
".specify/specs/037-kks-432-linear-sync/preflight-evidence.md"
|
|
17
|
+
],
|
|
18
|
+
"allowedActions": [
|
|
19
|
+
"read",
|
|
20
|
+
"write",
|
|
21
|
+
"execute"
|
|
22
|
+
],
|
|
23
|
+
"constraints": [
|
|
24
|
+
"Respecter strictement l'objectif et le perimetre du contrat.",
|
|
25
|
+
"Le besoin de reference est .specify/specs/037-kks-432-linear-sync/need.md ; en cas d'ecart avec objective, il fait foi.",
|
|
26
|
+
"Preserver les changements utilisateur sans rapport avec cette activite.",
|
|
27
|
+
"Ne pas modifier state.json, workflow-state.json ou assessment.json.",
|
|
28
|
+
"Ne pas creer de commit et ne pas changer de branche.",
|
|
29
|
+
"Signaler tout blocage au lieu de contourner une validation.",
|
|
30
|
+
"Dans checks, status vaut passed si et seulement si exitCode vaut 0. Une commande dont l'absence de resultat constitue le succes attendu doit etre declaree failed, ou remplacee par une commande qui renvoie 0 en cas de succes.",
|
|
31
|
+
"Donner un id stable a chaque objectif de check. Si un check echoue puis est corrige et relance pour le meme objectif, reutiliser cet id : seule la derniere tentative fait foi ; signaler dans remainingRisks toute instabilite encore pertinente.",
|
|
32
|
+
"Limiter les modifications source au changement demande.",
|
|
33
|
+
"Suivre les conventions et les tests existants du depot.",
|
|
34
|
+
"Les preuves de gate sont produites par l'activite locale verify, pas par implement.",
|
|
35
|
+
"Ne pas retourner blocked uniquement parce qu'une validation d'integration exige un service externe inaccessible depuis le sandbox de l'agent (Docker, base de donnees ou reseau) : executer les autres controles, declarer le check echoue et le risque restant, puis retourner completed si le code est coherent et verifiable par verify.",
|
|
36
|
+
"Prendre en compte la preuve de pre-vol archivee et ne pas la presenter comme absente."
|
|
37
|
+
],
|
|
38
|
+
"completionCriteria": [
|
|
39
|
+
"Le changement demande est implemente dans le depot.",
|
|
40
|
+
"Les fichiers modifies sont listes dans le resultat.",
|
|
41
|
+
"Les risques ou blocages restants sont explicites."
|
|
42
|
+
],
|
|
43
|
+
"requiredEvidence": [],
|
|
44
|
+
"expectedOutput": {
|
|
45
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
46
|
+
"$id": "https://devflow.dev/schemas/activity-result/v1",
|
|
47
|
+
"title": "Devflow Activity Result v1",
|
|
48
|
+
"type": "object",
|
|
49
|
+
"required": [
|
|
50
|
+
"schemaVersion",
|
|
51
|
+
"contractId",
|
|
52
|
+
"status",
|
|
53
|
+
"summary",
|
|
54
|
+
"changedFiles",
|
|
55
|
+
"checks",
|
|
56
|
+
"evidence",
|
|
57
|
+
"remainingRisks",
|
|
58
|
+
"blockers"
|
|
59
|
+
],
|
|
60
|
+
"properties": {
|
|
61
|
+
"schemaVersion": {
|
|
62
|
+
"type": "integer",
|
|
63
|
+
"const": 1
|
|
64
|
+
},
|
|
65
|
+
"contractId": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"minLength": 1
|
|
68
|
+
},
|
|
69
|
+
"status": {
|
|
70
|
+
"type": "string",
|
|
71
|
+
"enum": [
|
|
72
|
+
"completed",
|
|
73
|
+
"blocked"
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
"summary": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"minLength": 1
|
|
79
|
+
},
|
|
80
|
+
"changedFiles": {
|
|
81
|
+
"type": "array",
|
|
82
|
+
"items": {
|
|
83
|
+
"type": "string",
|
|
84
|
+
"minLength": 1
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
"checks": {
|
|
88
|
+
"type": "array",
|
|
89
|
+
"items": {
|
|
90
|
+
"type": "object",
|
|
91
|
+
"required": [
|
|
92
|
+
"command",
|
|
93
|
+
"exitCode",
|
|
94
|
+
"status"
|
|
95
|
+
],
|
|
96
|
+
"properties": {
|
|
97
|
+
"id": {
|
|
98
|
+
"type": "string",
|
|
99
|
+
"minLength": 1
|
|
100
|
+
},
|
|
101
|
+
"command": {
|
|
102
|
+
"type": "string",
|
|
103
|
+
"minLength": 1
|
|
104
|
+
},
|
|
105
|
+
"exitCode": {
|
|
106
|
+
"type": "integer"
|
|
107
|
+
},
|
|
108
|
+
"status": {
|
|
109
|
+
"type": "string",
|
|
110
|
+
"enum": [
|
|
111
|
+
"passed",
|
|
112
|
+
"failed"
|
|
113
|
+
]
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
"additionalProperties": false
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
"evidence": {
|
|
120
|
+
"type": "array",
|
|
121
|
+
"items": {
|
|
122
|
+
"type": "object",
|
|
123
|
+
"required": [
|
|
124
|
+
"id",
|
|
125
|
+
"outcome",
|
|
126
|
+
"report"
|
|
127
|
+
],
|
|
128
|
+
"properties": {
|
|
129
|
+
"id": {
|
|
130
|
+
"type": "string",
|
|
131
|
+
"minLength": 1
|
|
132
|
+
},
|
|
133
|
+
"outcome": {
|
|
134
|
+
"type": "string",
|
|
135
|
+
"enum": [
|
|
136
|
+
"passed",
|
|
137
|
+
"failed"
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
"report": {
|
|
141
|
+
"type": "string",
|
|
142
|
+
"minLength": 1
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
"additionalProperties": false
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
"remainingRisks": {
|
|
149
|
+
"type": "array",
|
|
150
|
+
"items": {
|
|
151
|
+
"type": "string"
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"blockers": {
|
|
155
|
+
"type": "array",
|
|
156
|
+
"items": {
|
|
157
|
+
"type": "string"
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
"additionalProperties": false
|
|
162
|
+
}
|
|
163
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"runId": "527508aa-4cbf-4fda-b69e-a5a13c225f67",
|
|
4
|
+
"agent": "claude",
|
|
5
|
+
"activity": "implement",
|
|
6
|
+
"returnCode": 0,
|
|
7
|
+
"durationSeconds": 596.105,
|
|
8
|
+
"finalOutputStatus": "present",
|
|
9
|
+
"finalOutputBytes": 7517,
|
|
10
|
+
"finalOutputDiagnostic": "validated",
|
|
11
|
+
"sessionId": null,
|
|
12
|
+
"timedOut": false,
|
|
13
|
+
"worktreeChanged": true,
|
|
14
|
+
"worktreeChangedFileCount": 23
|
|
15
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 4,
|
|
3
|
+
"issueId": "KKS-432",
|
|
4
|
+
"recommendedProfile": "standard",
|
|
5
|
+
"selectedProfile": "standard",
|
|
6
|
+
"confidence": "high",
|
|
7
|
+
"signals": {
|
|
8
|
+
"scope": "multiple",
|
|
9
|
+
"ambiguity": "low",
|
|
10
|
+
"risk": "medium",
|
|
11
|
+
"contractChange": false,
|
|
12
|
+
"dataOrSecurity": true
|
|
13
|
+
},
|
|
14
|
+
"guardrails": {
|
|
15
|
+
"active": true,
|
|
16
|
+
"reasons": [
|
|
17
|
+
"le changement touche aux donnees ou a la securite"
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
"reasons": [
|
|
21
|
+
"plusieurs composants sont affectes",
|
|
22
|
+
"le risque d'impact est modere"
|
|
23
|
+
],
|
|
24
|
+
"activities": [
|
|
25
|
+
"assess",
|
|
26
|
+
"risk-assessment",
|
|
27
|
+
"prepare",
|
|
28
|
+
"preflight-evidence",
|
|
29
|
+
"implement",
|
|
30
|
+
"verify",
|
|
31
|
+
"review",
|
|
32
|
+
"rollback-check",
|
|
33
|
+
"done"
|
|
34
|
+
],
|
|
35
|
+
"requiredEvidence": [
|
|
36
|
+
"targeted-tests",
|
|
37
|
+
"regression-check",
|
|
38
|
+
"diff-inspection",
|
|
39
|
+
"security-or-data-check",
|
|
40
|
+
"independent-review",
|
|
41
|
+
"rollback-plan"
|
|
42
|
+
],
|
|
43
|
+
"assessedAt": "2026-09-30T22:02:47Z",
|
|
44
|
+
"summary": "Synchroniser les statuts Linear depuis la CLI a chaque transition, cle LINEAR_API_KEY retiree de l'environnement de l'agent, statuts compacts ; version 7.2.0"
|
|
45
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"id": "diff-inspection",
|
|
4
|
+
"outcome": "passed",
|
|
5
|
+
"generatedAt": "2026-09-30T22:26:56Z",
|
|
6
|
+
"changedFiles": [
|
|
7
|
+
"CHANGELOG.md",
|
|
8
|
+
"README.md",
|
|
9
|
+
"docs/cli-reference.md",
|
|
10
|
+
"docs/pipeline-reference.generated.md",
|
|
11
|
+
"docs/releases/7.2.0.md",
|
|
12
|
+
"pyproject.toml",
|
|
13
|
+
"src/devflow_cli/__init__.py",
|
|
14
|
+
"src/devflow_cli/adapters/agents.py",
|
|
15
|
+
"src/devflow_cli/adapters/linear.py",
|
|
16
|
+
"src/devflow_cli/commands/adaptive.py",
|
|
17
|
+
"src/devflow_cli/core/hooks.py",
|
|
18
|
+
"src/devflow_cli/core/verification.py",
|
|
19
|
+
"tests/conftest.py",
|
|
20
|
+
"tests/test_agent_adapters.py",
|
|
21
|
+
"tests/test_cmd_adaptive.py",
|
|
22
|
+
"tests/test_cmd_linear.py",
|
|
23
|
+
"tests/test_constants.py",
|
|
24
|
+
"tests/test_guardrails.py",
|
|
25
|
+
"tests/test_hooks.py",
|
|
26
|
+
"tests/test_linear_adapter.py",
|
|
27
|
+
"tests/test_linear_order.py",
|
|
28
|
+
"tests/test_verification.py",
|
|
29
|
+
"uv.lock"
|
|
30
|
+
],
|
|
31
|
+
"findings": [],
|
|
32
|
+
"gitDiffCheck": {
|
|
33
|
+
"id": "AUTO-DIFF",
|
|
34
|
+
"command": [
|
|
35
|
+
"git",
|
|
36
|
+
"diff",
|
|
37
|
+
"--check"
|
|
38
|
+
],
|
|
39
|
+
"blocking": true,
|
|
40
|
+
"returncode": 0,
|
|
41
|
+
"succeeded": true,
|
|
42
|
+
"timedOut": false,
|
|
43
|
+
"workingDirectory": ".",
|
|
44
|
+
"stdout": "",
|
|
45
|
+
"stderr": ""
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"id": "regression-check",
|
|
4
|
+
"outcome": "passed",
|
|
5
|
+
"startedAt": "2026-09-30T22:25:20Z",
|
|
6
|
+
"completedAt": "2026-09-30T22:26:56Z",
|
|
7
|
+
"commands": [
|
|
8
|
+
{
|
|
9
|
+
"id": "AUTO-REGRESSION-PYTHON",
|
|
10
|
+
"command": [
|
|
11
|
+
"uv",
|
|
12
|
+
"run",
|
|
13
|
+
"python",
|
|
14
|
+
"-m",
|
|
15
|
+
"compileall",
|
|
16
|
+
"-q",
|
|
17
|
+
"src"
|
|
18
|
+
],
|
|
19
|
+
"blocking": true,
|
|
20
|
+
"returncode": 0,
|
|
21
|
+
"succeeded": true,
|
|
22
|
+
"timedOut": false,
|
|
23
|
+
"workingDirectory": ".",
|
|
24
|
+
"stdout": "",
|
|
25
|
+
"stderr": ""
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "PREP-linear-policy",
|
|
29
|
+
"command": [
|
|
30
|
+
"uv",
|
|
31
|
+
"run",
|
|
32
|
+
"pytest",
|
|
33
|
+
"-q",
|
|
34
|
+
"tests/test_linear_order.py",
|
|
35
|
+
"tests/test_constants.py",
|
|
36
|
+
"tests/test_cmd_linear.py"
|
|
37
|
+
],
|
|
38
|
+
"blocking": true,
|
|
39
|
+
"returncode": 0,
|
|
40
|
+
"succeeded": true,
|
|
41
|
+
"timedOut": false,
|
|
42
|
+
"workingDirectory": ".",
|
|
43
|
+
"stdout": ".................................................... [100%]\n52 passed in 0.15s\n",
|
|
44
|
+
"stderr": ""
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "PREP-adaptive-sync-integration",
|
|
48
|
+
"command": [
|
|
49
|
+
"uv",
|
|
50
|
+
"run",
|
|
51
|
+
"pytest",
|
|
52
|
+
"-q",
|
|
53
|
+
"tests/test_cmd_adaptive.py",
|
|
54
|
+
"tests/test_run_progress.py"
|
|
55
|
+
],
|
|
56
|
+
"blocking": true,
|
|
57
|
+
"returncode": 0,
|
|
58
|
+
"succeeded": true,
|
|
59
|
+
"timedOut": false,
|
|
60
|
+
"workingDirectory": ".",
|
|
61
|
+
"stdout": "........................................................................ [ 73%]\n.......................... [100%]\n98 passed in 12.22s\n",
|
|
62
|
+
"stderr": ""
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "PREP-full-regression",
|
|
66
|
+
"command": [
|
|
67
|
+
"uv",
|
|
68
|
+
"run",
|
|
69
|
+
"pytest",
|
|
70
|
+
"-q"
|
|
71
|
+
],
|
|
72
|
+
"blocking": true,
|
|
73
|
+
"returncode": 0,
|
|
74
|
+
"succeeded": true,
|
|
75
|
+
"timedOut": false,
|
|
76
|
+
"workingDirectory": ".",
|
|
77
|
+
"stdout": "........................................................................ [ 4%]\n........................................................................ [ 8%]\n........................................................................ [ 12%]\n........................................................................ [ 16%]\n........................................................................ [ 20%]\n........................................................................ [ 25%]\n........................................................................ [ 29%]\n........................................................................ [ 33%]\n........................................................................ [ 37%]\n........................................................................ [ 41%]\n........................................................................ [ 46%]\n........................................................................ [ 50%]\n........................................................................ [ 54%]\n........................................................................ [ 58%]\n........................................................................ [ 62%]\n........................................................................ [ 67%]\n........................................................................ [ 71%]\n........................................................................ [ 75%]\n........................................................................ [ 79%]\n........................................................................ [ 83%]\n........................................................................ [ 87%]\n........................................................................ [ 92%]\n........................................................................ [ 96%]\n............................................................... [100%]\n1719 passed in 65.59s (0:01:05)\n",
|
|
78
|
+
"stderr": ""
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"id": "PREP-docs-sync",
|
|
82
|
+
"command": [
|
|
83
|
+
"uv",
|
|
84
|
+
"run",
|
|
85
|
+
"devflow",
|
|
86
|
+
"docs-sync",
|
|
87
|
+
"--check"
|
|
88
|
+
],
|
|
89
|
+
"blocking": true,
|
|
90
|
+
"returncode": 0,
|
|
91
|
+
"succeeded": true,
|
|
92
|
+
"timedOut": false,
|
|
93
|
+
"workingDirectory": ".",
|
|
94
|
+
"stdout": "[OK] Documentation déjà synchronisée.\n",
|
|
95
|
+
"stderr": ""
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"id": "PREP-version-concordance",
|
|
99
|
+
"command": [
|
|
100
|
+
"uv",
|
|
101
|
+
"run",
|
|
102
|
+
"pytest",
|
|
103
|
+
"-q",
|
|
104
|
+
"tests/test_version.py",
|
|
105
|
+
"tests/test_release.py",
|
|
106
|
+
"tests/test_docgen.py"
|
|
107
|
+
],
|
|
108
|
+
"blocking": true,
|
|
109
|
+
"returncode": 0,
|
|
110
|
+
"succeeded": true,
|
|
111
|
+
"timedOut": false,
|
|
112
|
+
"workingDirectory": ".",
|
|
113
|
+
"stdout": ".................................... [100%]\n36 passed in 0.25s\n",
|
|
114
|
+
"stderr": ""
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "PREP-lint",
|
|
118
|
+
"command": [
|
|
119
|
+
"uv",
|
|
120
|
+
"run",
|
|
121
|
+
"ruff",
|
|
122
|
+
"check",
|
|
123
|
+
"src",
|
|
124
|
+
"tests"
|
|
125
|
+
],
|
|
126
|
+
"blocking": false,
|
|
127
|
+
"returncode": 2,
|
|
128
|
+
"succeeded": false,
|
|
129
|
+
"timedOut": false,
|
|
130
|
+
"workingDirectory": ".",
|
|
131
|
+
"stdout": "",
|
|
132
|
+
"stderr": "error: Failed to spawn: `ruff`\n Caused by: No such file or directory (os error 2)\n"
|
|
133
|
+
}
|
|
134
|
+
],
|
|
135
|
+
"worktreeMutations": [],
|
|
136
|
+
"waiversApplied": []
|
|
137
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"id": "security-or-data-check",
|
|
4
|
+
"outcome": "failed",
|
|
5
|
+
"startedAt": "2026-09-30T22:25:20Z",
|
|
6
|
+
"completedAt": "2026-09-30T22:26:56Z",
|
|
7
|
+
"commands": [
|
|
8
|
+
{
|
|
9
|
+
"id": "PREP-security-linear-key-and-transport",
|
|
10
|
+
"command": [
|
|
11
|
+
"uv",
|
|
12
|
+
"run",
|
|
13
|
+
"pytest",
|
|
14
|
+
"-q",
|
|
15
|
+
"tests/test_linear_adapter.py",
|
|
16
|
+
"tests/test_agent_adapters.py",
|
|
17
|
+
"tests/test_hooks.py"
|
|
18
|
+
],
|
|
19
|
+
"blocking": true,
|
|
20
|
+
"returncode": 0,
|
|
21
|
+
"succeeded": true,
|
|
22
|
+
"timedOut": false,
|
|
23
|
+
"workingDirectory": ".",
|
|
24
|
+
"stdout": "........................................................................ [ 81%]\n................ [100%]\n88 passed in 1.21s\n",
|
|
25
|
+
"stderr": ""
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "PREP-security-no-key-in-sources",
|
|
29
|
+
"command": [
|
|
30
|
+
"rg",
|
|
31
|
+
"-n",
|
|
32
|
+
"lin_api_[A-Za-z0-9]{20,}",
|
|
33
|
+
"src",
|
|
34
|
+
"tests",
|
|
35
|
+
"docs"
|
|
36
|
+
],
|
|
37
|
+
"blocking": false,
|
|
38
|
+
"returncode": 1,
|
|
39
|
+
"succeeded": false,
|
|
40
|
+
"timedOut": false,
|
|
41
|
+
"workingDirectory": ".",
|
|
42
|
+
"stdout": "",
|
|
43
|
+
"stderr": ""
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
"executionFindings": [],
|
|
47
|
+
"worktreeMutations": [],
|
|
48
|
+
"waiversApplied": []
|
|
49
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"id": "targeted-tests",
|
|
4
|
+
"outcome": "passed",
|
|
5
|
+
"startedAt": "2026-09-30T22:25:20Z",
|
|
6
|
+
"completedAt": "2026-09-30T22:26:56Z",
|
|
7
|
+
"commands": [
|
|
8
|
+
{
|
|
9
|
+
"id": "AUTO-PYTHON",
|
|
10
|
+
"command": [
|
|
11
|
+
"uv",
|
|
12
|
+
"run",
|
|
13
|
+
"pytest",
|
|
14
|
+
"-q",
|
|
15
|
+
"tests/conftest.py",
|
|
16
|
+
"tests/test_agent_adapters.py",
|
|
17
|
+
"tests/test_cmd_adaptive.py",
|
|
18
|
+
"tests/test_cmd_linear.py",
|
|
19
|
+
"tests/test_constants.py",
|
|
20
|
+
"tests/test_guardrails.py",
|
|
21
|
+
"tests/test_hooks.py",
|
|
22
|
+
"tests/test_linear_adapter.py",
|
|
23
|
+
"tests/test_linear_order.py",
|
|
24
|
+
"tests/test_verification.py"
|
|
25
|
+
],
|
|
26
|
+
"blocking": true,
|
|
27
|
+
"returncode": 0,
|
|
28
|
+
"succeeded": true,
|
|
29
|
+
"timedOut": false,
|
|
30
|
+
"workingDirectory": ".",
|
|
31
|
+
"stdout": "........................................................................ [ 19%]\n........................................................................ [ 38%]\n........................................................................ [ 57%]\n........................................................................ [ 76%]\n........................................................................ [ 95%]\n.................. [100%]\n378 passed in 13.76s\n",
|
|
32
|
+
"stderr": ""
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"worktreeMutations": [],
|
|
36
|
+
"waiversApplied": []
|
|
37
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"contractId": "KKS-432:standard:implement:v4",
|
|
4
|
+
"status": "completed",
|
|
5
|
+
"summary": "KKS-432 est implémenté en version 7.2.0.\n\n(1) Politique compacte dans src/devflow_cli/__init__.py :\n- Backlog : assess\n- Design : risk-assessment, prepare, spec, contracts, plan, tasks, preflight-evidence\n- In Progress : implement\n- Review : verify, review, rollback-check\n- Done : done\nL'ordre canonique devient Backlog, Design, In Progress, Review, Done. L'assertion d'inclusion est conservée et decide_linear_transition n'a pas changé (règle L5).\n\n(2) adapters/linear.py :\n- LinearGraphQLAdapter utilise uniquement urllib et json. L'URL HTTPS est fixe, l'en-tête Authorization est construit au dernier moment et le délai est de 5 s par requête. Deux requêtes au plus par activité : une lecture (issue, statut courant et états de l'équipe) et une mutation issueUpdate sur l'identifiant renvoyé. issueId et stateId sont passés en variables GraphQL.\n- Les erreurs deviennent des LinearSyncError à libellé fixe : issue inconnue, statut absent de l'équipe, erreur HTTP <code>, erreur GraphQL (y compris avec HTTP 200), délai dépassé, erreur réseau, réponse invalide, mise à jour refusée. Aucun texte venu de Linear ou du réseau n'est affiché ni journalisé ; « from None » supprime le chaînage d'exceptions.\n- sync_activity_status ne bloque jamais : elle intercepte toute Exception et écrit une seule ligne par emit_progress. Sans clé, elle affiche un seul avertissement par processus et ne fait aucun appel.\n- environment_without_linear_key() est la fonction unique qui construit l'environnement des sous-processus.\n\n(3) Déclencheurs dans commands/adaptive.py :\n- activité agent : juste après la ligne de démarrage, avant l'agent, sur progress_stream(json_output) ;\n- vérification locale : au démarrage, sauf avec refresh ;\n- done : après la complétion réussie de complete(done), choix repris de prepare.\nLe chaînage --until en hérite sans code supplémentaire.\n\n(4) L3 : env=environment_without_linear_key() est passé aux quatre subprocess.run concernés : agents.py execute et execute_structured (communs à Claude, Codex et Cursor), hooks.py (hooks shell, claude et agent) et verification.py (commandes de validation). need.md fait foi : R11 est tranché.\n\n(5) Documentation :\n- README.md et docs/cli-reference.md (section Synchronisation Linear) ;\n- docs/releases/7.2.0.md : réglages Linear préalables, sécurité, retour arrière avec révocation de la clé ;\n- CHANGELOG.md ;\n- docs/pipeline-reference.generated.md, régénéré.\nLa version 7.2.0 est concordante dans pyproject.toml, __init__.py, uv.lock et CHANGELOG.md.\n\n(6) Tests :\n- conftest : fixture autouse qui retire LINEAR_API_KEY, réinitialise l'avertissement et fait échouer urllib.request.urlopen.\n- Transport simulé : update, keep, Canceled et Duplicate ; 14 cas d'échec non bloquants où la clé est absente de la sortie et des logs ; clé absente sans appel ; clé vide.\n- Politique sur toutes les routes 7.0.\n- Environnement sans clé pour les 3 adaptateurs, les hooks (shell réel, claude, agent) et les commandes de validation.\n- Intégration : chaînage --until done avec une synchronisation par activité dans l'ordre et Done à la fin ; --json avec un stdout JSON unique ; échec HTTP 401 sans effet sur le code de sortie et clé absente de tous les fichiers du projet ; done refusé sans synchronisation ; un seul avertissement sans clé dans un chaînage.\n- Deux tests existants ajustés : le comptage des lignes d'avancement exclut la ligne Linear (test_run_prints_start_line_before_agent_call), et l'entrée de liste blanche « Research », devenue inutile, est retirée de test_guardrails.py.",
|
|
6
|
+
"changedFiles": [
|
|
7
|
+
"CHANGELOG.md",
|
|
8
|
+
"README.md",
|
|
9
|
+
"docs/cli-reference.md",
|
|
10
|
+
"docs/pipeline-reference.generated.md",
|
|
11
|
+
"docs/releases/7.2.0.md",
|
|
12
|
+
"pyproject.toml",
|
|
13
|
+
"uv.lock",
|
|
14
|
+
"src/devflow_cli/__init__.py",
|
|
15
|
+
"src/devflow_cli/adapters/linear.py",
|
|
16
|
+
"src/devflow_cli/adapters/agents.py",
|
|
17
|
+
"src/devflow_cli/commands/adaptive.py",
|
|
18
|
+
"src/devflow_cli/core/hooks.py",
|
|
19
|
+
"src/devflow_cli/core/verification.py",
|
|
20
|
+
"tests/conftest.py",
|
|
21
|
+
"tests/test_linear_adapter.py",
|
|
22
|
+
"tests/test_linear_order.py",
|
|
23
|
+
"tests/test_constants.py",
|
|
24
|
+
"tests/test_cmd_linear.py",
|
|
25
|
+
"tests/test_agent_adapters.py",
|
|
26
|
+
"tests/test_hooks.py",
|
|
27
|
+
"tests/test_verification.py",
|
|
28
|
+
"tests/test_cmd_adaptive.py",
|
|
29
|
+
"tests/test_guardrails.py"
|
|
30
|
+
],
|
|
31
|
+
"checks": [
|
|
32
|
+
{
|
|
33
|
+
"id": "security-linear-key-and-transport",
|
|
34
|
+
"command": "uv run pytest -q tests/test_linear_adapter.py tests/test_agent_adapters.py tests/test_hooks.py tests/test_verification.py",
|
|
35
|
+
"exitCode": 0,
|
|
36
|
+
"status": "passed"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "linear-policy",
|
|
40
|
+
"command": "uv run pytest -q tests/test_linear_order.py tests/test_constants.py tests/test_cmd_linear.py",
|
|
41
|
+
"exitCode": 0,
|
|
42
|
+
"status": "passed"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "adaptive-sync-integration",
|
|
46
|
+
"command": "uv run pytest -q tests/test_cmd_adaptive.py tests/test_run_progress.py",
|
|
47
|
+
"exitCode": 0,
|
|
48
|
+
"status": "passed"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "version-concordance",
|
|
52
|
+
"command": "uv run pytest -q tests/test_version.py tests/test_release.py tests/test_docgen.py",
|
|
53
|
+
"exitCode": 0,
|
|
54
|
+
"status": "passed"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "full-regression",
|
|
58
|
+
"command": "uv run pytest -q",
|
|
59
|
+
"exitCode": 0,
|
|
60
|
+
"status": "passed"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"id": "shell-tests",
|
|
64
|
+
"command": "./tests/run-tests.sh",
|
|
65
|
+
"exitCode": 0,
|
|
66
|
+
"status": "passed"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"id": "docs-sync",
|
|
70
|
+
"command": "uv run devflow docs-sync --check",
|
|
71
|
+
"exitCode": 0,
|
|
72
|
+
"status": "passed"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "security-no-key-in-sources",
|
|
76
|
+
"command": "! rg -n 'lin_api_[A-Za-z0-9]{20,}' src tests docs",
|
|
77
|
+
"exitCode": 0,
|
|
78
|
+
"status": "passed"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"id": "lint",
|
|
82
|
+
"command": "uv run ruff check src tests",
|
|
83
|
+
"exitCode": 2,
|
|
84
|
+
"status": "failed"
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
"evidence": [],
|
|
88
|
+
"remainingRisks": [
|
|
89
|
+
"La forme de l'API GraphQL Linear n'est pas vérifiée par un appel réel (contrainte de need.md) : issue(id) avec l'identifiant lisible, clé personnelle sans « Bearer », erreurs en HTTP 200. Toute variante inattendue produit un avertissement (L2), sans blocage. À confirmer au premier usage réel.",
|
|
90
|
+
"La synchronisation de done a lieu après la complétion réussie de complete(done), et non « au démarrage » comme le dit need.md. Ce choix vient de prepare, pour ne pas passer une issue en Done si la gate refuse. À confirmer en review.",
|
|
91
|
+
"La commande historique `devflow verify ISSUE_ID` (commands/verify.py), qui exécute la vérification adaptative, ne déclenche pas de synchronisation : le déclencheur est placé dans `adaptive run` et `adaptive verify`, comme la ligne d'avancement de KKS-433.",
|
|
92
|
+
"Choix de préparation : sans clé, un seul avertissement par processus, grâce à un drapeau au niveau du module réinitialisé par la fixture de test.",
|
|
93
|
+
"Les restes de l'ancien protocole MCP, hors périmètre (installer.py:40 devflow.sync-linear.md, check.py « Linear MCP »), peuvent contredire la nouvelle documentation : ils relèvent de KKS-430.",
|
|
94
|
+
"Le check lint échoue avec le code 2 parce que ruff n'est pas installé dans le projet ; c'était déjà le cas avant l'implémentation (preflight, fait 14). Le check n'est pas bloquant.",
|
|
95
|
+
"Deux tests existants ont été ajustés : test_run_prints_start_line_before_agent_call exclut la ligne Linear de son comptage, et la liste blanche de test_guardrails.py perd l'entrée « Research », devenue sans objet.",
|
|
96
|
+
"Le retrait de la clé protège la transmission par la CLI, pas le poste : un agent peut la relire si elle est définie dans un fichier chargé par son shell. Ce point est documenté dans le README et les notes 7.2.0."
|
|
97
|
+
],
|
|
98
|
+
"blockers": []
|
|
99
|
+
}
|