devflow-cli 3.0.0__tar.gz → 4.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.idea/workspace.xml +31 -33
  2. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/CHANGELOG.md +35 -0
  3. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/CLAUDE.md +1 -1
  4. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/PKG-INFO +18 -1
  5. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/README.md +17 -0
  6. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/docs/activity-contracts.md +19 -5
  7. devflow_cli-4.0.2/docs/adr/0001-v4-workflow-compatibility.md +49 -0
  8. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/docs/cli-reference.md +1 -0
  9. devflow_cli-4.0.2/docs/pipeline-reference.generated.md +31 -0
  10. devflow_cli-4.0.2/docs/pipeline.md +46 -0
  11. devflow_cli-4.0.2/docs/releases/4.0.0.md +53 -0
  12. devflow_cli-4.0.2/docs/releases/4.0.1.md +17 -0
  13. devflow_cli-4.0.2/docs/v4-migration.md +53 -0
  14. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/pyproject.toml +1 -1
  15. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/__init__.py +3 -1
  16. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/adapters/agents.py +117 -9
  17. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/commands/adaptive.py +90 -3
  18. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/commands/assess.py +1 -0
  19. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/activity_contracts.py +94 -10
  20. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/adaptive_runner.py +50 -15
  21. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/adaptive_workflow.py +22 -6
  22. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/assessment.py +17 -4
  23. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/automatic_evidence.py +32 -5
  24. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/contract_schemas.py +28 -1
  25. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/docgen.py +3 -3
  26. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/operational.py +1 -1
  27. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/remediation.py +12 -0
  28. devflow_cli-4.0.2/src/devflow_cli/core/v4_migration.py +134 -0
  29. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/validators.py +1 -1
  30. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/worklog.py +18 -0
  31. devflow_cli-4.0.2/src/devflow_cli/schemas/activity-contract-v2.schema.json +32 -0
  32. devflow_cli-4.0.2/src/devflow_cli/schemas/assessment-v2.schema.json +36 -0
  33. devflow_cli-4.0.2/src/devflow_cli/schemas/workflow-state-v3.schema.json +36 -0
  34. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_activity_contracts.py +65 -0
  35. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_adaptive_runner.py +17 -0
  36. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_agent_adapters.py +82 -0
  37. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_automatic_evidence.py +8 -1
  38. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_cmd_adaptive.py +150 -22
  39. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_cmd_assess.py +2 -1
  40. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_contract_schemas.py +19 -0
  41. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_docgen.py +2 -2
  42. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_integration.py +11 -6
  43. devflow_cli-4.0.2/tests/test_v4_migration.py +162 -0
  44. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_validators.py +16 -0
  45. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_wheel_adaptive_acceptance.py +21 -4
  46. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_wheel_install.py +3 -0
  47. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_worklog.py +19 -0
  48. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/uv.lock +1 -1
  49. devflow_cli-3.0.0/docs/pipeline-reference.generated.md +0 -30
  50. devflow_cli-3.0.0/docs/pipeline.md +0 -28
  51. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.ai/mcp/mcp.json +0 -0
  52. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.claude/commands/speckit.analyze.md +0 -0
  53. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.claude/commands/speckit.checklist.md +0 -0
  54. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.claude/commands/speckit.clarify.md +0 -0
  55. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.claude/commands/speckit.constitution.md +0 -0
  56. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.claude/commands/speckit.implement.md +0 -0
  57. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.claude/commands/speckit.plan.md +0 -0
  58. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.claude/commands/speckit.specify.md +0 -0
  59. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.claude/commands/speckit.tasks.md +0 -0
  60. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.claude/commands/speckit.taskstoissues.md +0 -0
  61. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.githooks/post-checkout +0 -0
  62. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.githooks/post-merge +0 -0
  63. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.github/workflows/ci.yml +0 -0
  64. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.github/workflows/release.yml +0 -0
  65. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.gitignore +0 -0
  66. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.idea/.gitignore +0 -0
  67. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.idea/devflow.iml +0 -0
  68. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.idea/misc.xml +0 -0
  69. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.idea/modules.xml +0 -0
  70. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.idea/vcs.xml +0 -0
  71. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/init-options.json +0 -0
  72. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/memory/constitution.md +0 -0
  73. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/scripts/bash/check-prerequisites.sh +0 -0
  74. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/scripts/bash/common.sh +0 -0
  75. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/scripts/bash/create-new-feature.sh +0 -0
  76. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/scripts/bash/setup-plan.sh +0 -0
  77. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/scripts/bash/update-agent-context.sh +0 -0
  78. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/001-cli-init-options/checklists/requirements.md +0 -0
  79. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/001-cli-init-options/contracts/cli-init.md +0 -0
  80. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/001-cli-init-options/data-model.md +0 -0
  81. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/001-cli-init-options/plan.md +0 -0
  82. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/001-cli-init-options/research.md +0 -0
  83. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/001-cli-init-options/spec.md +0 -0
  84. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/001-cli-init-options/tasks.md +0 -0
  85. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/002-cascade-regen/checklists/requirements.md +0 -0
  86. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/002-cascade-regen/contracts/cli-regen.md +0 -0
  87. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/002-cascade-regen/contracts/cli-status-staleness.md +0 -0
  88. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/002-cascade-regen/data-model.md +0 -0
  89. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/002-cascade-regen/plan.md +0 -0
  90. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/002-cascade-regen/research.md +0 -0
  91. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/002-cascade-regen/spec.md +0 -0
  92. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/002-cascade-regen/tasks.md +0 -0
  93. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/003-usecase-guides/checklists/requirements.md +0 -0
  94. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/003-usecase-guides/data-model.md +0 -0
  95. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/003-usecase-guides/plan.md +0 -0
  96. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/003-usecase-guides/quickstart.md +0 -0
  97. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/003-usecase-guides/research.md +0 -0
  98. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/003-usecase-guides/spec.md +0 -0
  99. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/003-usecase-guides/tasks.md +0 -0
  100. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/004-specify-central-directory/checklists/requirements.md +0 -0
  101. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/004-specify-central-directory/contracts/cli-commands.md +0 -0
  102. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/004-specify-central-directory/data-model.md +0 -0
  103. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/004-specify-central-directory/plan.md +0 -0
  104. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/004-specify-central-directory/quickstart.md +0 -0
  105. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/004-specify-central-directory/research.md +0 -0
  106. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/004-specify-central-directory/spec.md +0 -0
  107. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/004-specify-central-directory/tasks.md +0 -0
  108. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/005-implement-subphases/checklists/requirements.md +0 -0
  109. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/005-implement-subphases/plan.md +0 -0
  110. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/005-implement-subphases/quickstart.md +0 -0
  111. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/005-implement-subphases/research.md +0 -0
  112. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/005-implement-subphases/spec.md +0 -0
  113. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/005-implement-subphases/tasks.md +0 -0
  114. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/006-template-upgrade/checklists/requirements.md +0 -0
  115. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/006-template-upgrade/contracts/cli-upgrade.md +0 -0
  116. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/006-template-upgrade/data-model.md +0 -0
  117. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/006-template-upgrade/plan.md +0 -0
  118. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/006-template-upgrade/quickstart.md +0 -0
  119. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/006-template-upgrade/research.md +0 -0
  120. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/006-template-upgrade/spec.md +0 -0
  121. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/006-template-upgrade/tasks.md +0 -0
  122. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/007-project-documentation/checklists/requirements.md +0 -0
  123. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/007-project-documentation/data-model.md +0 -0
  124. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/007-project-documentation/plan.md +0 -0
  125. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/007-project-documentation/quickstart.md +0 -0
  126. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/007-project-documentation/research.md +0 -0
  127. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/007-project-documentation/spec.md +0 -0
  128. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/007-project-documentation/tasks.md +0 -0
  129. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/008-hardening-bugs/checklists/requirements.md +0 -0
  130. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/008-hardening-bugs/plan.md +0 -0
  131. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/008-hardening-bugs/quickstart.md +0 -0
  132. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/008-hardening-bugs/research.md +0 -0
  133. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/008-hardening-bugs/spec.md +0 -0
  134. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/008-hardening-bugs/tasks.md +0 -0
  135. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/009-ci-pypi/checklists/requirements.md +0 -0
  136. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/009-ci-pypi/plan.md +0 -0
  137. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/009-ci-pypi/quickstart.md +0 -0
  138. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/009-ci-pypi/research.md +0 -0
  139. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/009-ci-pypi/spec.md +0 -0
  140. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/009-ci-pypi/tasks.md +0 -0
  141. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/010-flexible-pipeline/checklists/requirements.md +0 -0
  142. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/010-flexible-pipeline/plan.md +0 -0
  143. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/010-flexible-pipeline/quickstart.md +0 -0
  144. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/010-flexible-pipeline/research.md +0 -0
  145. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/010-flexible-pipeline/spec.md +0 -0
  146. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/010-flexible-pipeline/tasks.md +0 -0
  147. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/011-cursor-support/checklists/requirements.md +0 -0
  148. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/011-cursor-support/plan.md +0 -0
  149. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/011-cursor-support/quickstart.md +0 -0
  150. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/011-cursor-support/research.md +0 -0
  151. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/011-cursor-support/spec.md +0 -0
  152. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/011-cursor-support/tasks.md +0 -0
  153. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/012-fix-critical-bugs/checklists/requirements.md +0 -0
  154. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/012-fix-critical-bugs/plan.md +0 -0
  155. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/012-fix-critical-bugs/research.md +0 -0
  156. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/012-fix-critical-bugs/spec.md +0 -0
  157. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/012-fix-critical-bugs/tasks.md +0 -0
  158. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/013-align-truth-sources/checklists/requirements.md +0 -0
  159. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/013-align-truth-sources/plan.md +0 -0
  160. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/013-align-truth-sources/quickstart.md +0 -0
  161. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/013-align-truth-sources/spec.md +0 -0
  162. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/013-align-truth-sources/tasks.md +0 -0
  163. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/014-enforce-state-machine/checklists/requirements.md +0 -0
  164. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/014-enforce-state-machine/plan.md +0 -0
  165. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/014-enforce-state-machine/quickstart.md +0 -0
  166. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/014-enforce-state-machine/spec.md +0 -0
  167. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/014-enforce-state-machine/tasks.md +0 -0
  168. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/015-fix-review-contradiction/checklists/requirements.md +0 -0
  169. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/015-fix-review-contradiction/plan.md +0 -0
  170. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/015-fix-review-contradiction/research.md +0 -0
  171. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/015-fix-review-contradiction/spec.md +0 -0
  172. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/015-fix-review-contradiction/tasks.md +0 -0
  173. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/016-harden-state-machine/checklists/requirements.md +0 -0
  174. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/016-harden-state-machine/plan.md +0 -0
  175. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/016-harden-state-machine/research.md +0 -0
  176. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/016-harden-state-machine/spec.md +0 -0
  177. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/016-harden-state-machine/tasks.md +0 -0
  178. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/017-fix-robustness-issues/checklists/requirements.md +0 -0
  179. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/017-fix-robustness-issues/plan.md +0 -0
  180. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/017-fix-robustness-issues/research.md +0 -0
  181. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/017-fix-robustness-issues/spec.md +0 -0
  182. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/017-fix-robustness-issues/tasks.md +0 -0
  183. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/018-fix-final-robustness/spec.md +0 -0
  184. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/019-quality-hardening/checklists/requirements.md +0 -0
  185. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/019-quality-hardening/data-model.md +0 -0
  186. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/019-quality-hardening/plan.md +0 -0
  187. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/019-quality-hardening/research.md +0 -0
  188. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/019-quality-hardening/spec.md +0 -0
  189. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/019-quality-hardening/tasks.md +0 -0
  190. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/020-migrate-speckit/checklists/requirements.md +0 -0
  191. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/020-migrate-speckit/data-model.md +0 -0
  192. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/020-migrate-speckit/plan.md +0 -0
  193. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/020-migrate-speckit/quickstart.md +0 -0
  194. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/020-migrate-speckit/research.md +0 -0
  195. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/020-migrate-speckit/spec.md +0 -0
  196. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/020-migrate-speckit/tasks.md +0 -0
  197. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/021-review-iterations/checklists/requirements.md +0 -0
  198. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/021-review-iterations/plan.md +0 -0
  199. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/021-review-iterations/research.md +0 -0
  200. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/021-review-iterations/spec.md +0 -0
  201. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/021-review-iterations/tasks.md +0 -0
  202. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/022-fix-regen-command/checklists/requirements.md +0 -0
  203. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/022-fix-regen-command/plan.md +0 -0
  204. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/022-fix-regen-command/research.md +0 -0
  205. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/022-fix-regen-command/spec.md +0 -0
  206. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/022-fix-regen-command/tasks.md +0 -0
  207. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/023-add-logging/checklists/requirements.md +0 -0
  208. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/023-add-logging/plan.md +0 -0
  209. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/023-add-logging/research.md +0 -0
  210. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/023-add-logging/spec.md +0 -0
  211. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/023-add-logging/tasks.md +0 -0
  212. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/024-validate-constants/checklists/requirements.md +0 -0
  213. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/024-validate-constants/plan.md +0 -0
  214. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/024-validate-constants/research.md +0 -0
  215. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/024-validate-constants/spec.md +0 -0
  216. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/024-validate-constants/tasks.md +0 -0
  217. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/025-harden-tests/checklists/requirements.md +0 -0
  218. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/025-harden-tests/plan.md +0 -0
  219. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/025-harden-tests/research.md +0 -0
  220. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/025-harden-tests/spec.md +0 -0
  221. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/025-harden-tests/tasks.md +0 -0
  222. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/027-pipeline-auto-execution/checklists/requirements.md +0 -0
  223. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/027-pipeline-auto-execution/contracts/orchestrator-contract.md +0 -0
  224. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/027-pipeline-auto-execution/data-model.md +0 -0
  225. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/027-pipeline-auto-execution/plan.md +0 -0
  226. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/027-pipeline-auto-execution/quickstart.md +0 -0
  227. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/027-pipeline-auto-execution/research.md +0 -0
  228. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/027-pipeline-auto-execution/spec.md +0 -0
  229. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/specs/027-pipeline-auto-execution/tasks.md +0 -0
  230. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/templates/agent-file-template.md +0 -0
  231. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/templates/checklist-template.md +0 -0
  232. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/templates/constitution-template.md +0 -0
  233. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/templates/plan-template.md +0 -0
  234. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/templates/spec-template-brownfield.md +0 -0
  235. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/templates/spec-template-greenfield.md +0 -0
  236. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/templates/spec-template-microservices.md +0 -0
  237. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/templates/spec-template.md +0 -0
  238. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/.specify/templates/tasks-template.md +0 -0
  239. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/CONTRIBUTING.md +0 -0
  240. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/LICENSE +0 -0
  241. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/commands/devflow.context.md +0 -0
  242. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/commands/devflow.extension.md +0 -0
  243. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/commands/devflow.init.md +0 -0
  244. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/commands/devflow.md +0 -0
  245. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/commands/devflow.regen.md +0 -0
  246. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/commands/devflow.status.md +0 -0
  247. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/docs/commands-reference.md +0 -0
  248. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/docs/cursor-guide.md +0 -0
  249. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/docs/guides/brownfield.md +0 -0
  250. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/docs/guides/greenfield.md +0 -0
  251. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/docs/guides/microservices.md +0 -0
  252. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/docs/index.md +0 -0
  253. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/docs/spec-driven.md +0 -0
  254. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/extensions/EXTENSION-API-REFERENCE.md +0 -0
  255. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/extensions/catalog.community.json +0 -0
  256. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/extensions/catalog.json +0 -0
  257. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/extensions/template/example-command.md +0 -0
  258. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/extensions/template/example-extension.json +0 -0
  259. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/adapters/__init__.py +0 -0
  260. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/adapters/linear.py +0 -0
  261. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/cli.py +0 -0
  262. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/commands/__init__.py +0 -0
  263. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/commands/check.py +0 -0
  264. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/commands/context.py +0 -0
  265. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/commands/docs_sync.py +0 -0
  266. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/commands/export_cmd.py +0 -0
  267. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/commands/extension.py +0 -0
  268. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/commands/feature.py +0 -0
  269. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/commands/hooks_cmd.py +0 -0
  270. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/commands/init_cmd.py +0 -0
  271. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/commands/linear.py +0 -0
  272. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/commands/migrate_cmd.py +0 -0
  273. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/commands/stale.py +0 -0
  274. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/commands/status.py +0 -0
  275. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/commands/traceability.py +0 -0
  276. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/commands/upgrade_cmd.py +0 -0
  277. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/commands/verify.py +0 -0
  278. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/__init__.py +0 -0
  279. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/catalog.py +0 -0
  280. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/git.py +0 -0
  281. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/hooks.py +0 -0
  282. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/installer.py +0 -0
  283. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/manifest.py +0 -0
  284. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/redaction.py +0 -0
  285. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/scanner.py +0 -0
  286. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/staleness.py +0 -0
  287. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/traceability.py +0 -0
  288. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/verification.py +0 -0
  289. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/waivers.py +0 -0
  290. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/core/worktree_snapshot.py +0 -0
  291. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/schemas/activity-contract-v1.schema.json +0 -0
  292. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/schemas/activity-result-v1.schema.json +0 -0
  293. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/schemas/assessment-v1.schema.json +0 -0
  294. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/schemas/workflow-state-v2.schema.json +0 -0
  295. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/utils/__init__.py +0 -0
  296. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/utils/console.py +0 -0
  297. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/utils/logging.py +0 -0
  298. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/utils/paths.py +0 -0
  299. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/src/devflow_cli/utils/strings.py +0 -0
  300. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/templates/agent-context-template.md +0 -0
  301. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/templates/constitution-template.md +0 -0
  302. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/templates/contracts/README-template.md +0 -0
  303. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/templates/contracts/api-template.md +0 -0
  304. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/templates/contracts/components-template.md +0 -0
  305. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/templates/contracts/interfaces-template.md +0 -0
  306. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/templates/contracts/services-template.md +0 -0
  307. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/templates/contracts-template.md +0 -0
  308. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/templates/data-model-template.md +0 -0
  309. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/templates/devflow-hooks-template.yml +0 -0
  310. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/templates/extension-manifest-template.json +0 -0
  311. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/templates/plan-template.md +0 -0
  312. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/templates/quickstart-template.md +0 -0
  313. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/templates/research-template.md +0 -0
  314. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/templates/spec-template.md +0 -0
  315. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/templates/tasks-template.md +0 -0
  316. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/conftest.py +0 -0
  317. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/fixtures/agents/mock-agent.md +0 -0
  318. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/fixtures/commands/mock-command.md +0 -0
  319. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/fixtures/mock-catalog.json +0 -0
  320. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/run-tests.sh +0 -0
  321. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test-helpers.sh +0 -0
  322. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test-template-variants.sh +0 -0
  323. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_adaptive_workflow.py +0 -0
  324. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_assessment.py +0 -0
  325. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_bash_runner.py +0 -0
  326. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_catalog.py +0 -0
  327. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_cmd_check.py +0 -0
  328. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_cmd_context.py +0 -0
  329. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_cmd_docs_sync.py +0 -0
  330. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_cmd_extension.py +0 -0
  331. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_cmd_feature.py +0 -0
  332. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_cmd_hooks.py +0 -0
  333. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_cmd_init.py +0 -0
  334. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_cmd_linear.py +0 -0
  335. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_cmd_migrate.py +0 -0
  336. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_cmd_stale.py +0 -0
  337. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_cmd_status.py +0 -0
  338. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_cmd_traceability.py +0 -0
  339. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_cmd_upgrade.py +0 -0
  340. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_cmd_verify.py +0 -0
  341. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_constants.py +0 -0
  342. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_context.py +0 -0
  343. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_git.py +0 -0
  344. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_hooks.py +0 -0
  345. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_installer.py +0 -0
  346. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_linear_adapter.py +0 -0
  347. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_linear_order.py +0 -0
  348. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_logging.py +0 -0
  349. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_manifest.py +0 -0
  350. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_paths.py +0 -0
  351. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_paths_project_root.py +0 -0
  352. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_scanner.py +0 -0
  353. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_staleness.py +0 -0
  354. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_traceability.py +0 -0
  355. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_verification.py +0 -0
  356. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_version.py +0 -0
  357. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_waivers.py +0 -0
  358. {devflow_cli-3.0.0 → devflow_cli-4.0.2}/tests/test_worktree_snapshot.py +0 -0
@@ -4,17 +4,14 @@
4
4
  <option name="autoReloadType" value="SELECTIVE" />
5
5
  </component>
6
6
  <component name="ChangeListManager">
7
- <list default="true" id="4d5164b1-14ff-40b3-8f55-b6f2c3abff01" name="Changes" comment="">
8
- <change beforePath="$PROJECT_DIR$/pyproject.toml" beforeDir="false" afterPath="$PROJECT_DIR$/pyproject.toml" afterDir="false" />
9
- <change beforePath="$PROJECT_DIR$/src/devflow_cli/utils/paths.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/devflow_cli/utils/paths.py" afterDir="false" />
10
- </list>
7
+ <list default="true" id="4d5164b1-14ff-40b3-8f55-b6f2c3abff01" name="Changes" comment="" />
11
8
  <option name="SHOW_DIALOG" value="false" />
12
9
  <option name="HIGHLIGHT_CONFLICTS" value="true" />
13
10
  <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
14
11
  <option name="LAST_RESOLUTION" value="IGNORE" />
15
12
  </component>
16
13
  <component name="EmbeddingIndexingInfo">
17
- <option name="cachedIndexableFilesCount" value="1457" />
14
+ <option name="cachedIndexableFilesCount" value="1731" />
18
15
  <option name="fileBasedEmbeddingIndicesEnabled" value="true" />
19
16
  </component>
20
17
  <component name="Git.Settings">
@@ -197,34 +194,34 @@
197
194
  <option name="hideEmptyMiddlePackages" value="true" />
198
195
  <option name="showLibraryContents" value="true" />
199
196
  </component>
200
- <component name="PropertiesComponent"><![CDATA[{
201
- "keyToString": {
202
- "ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
203
- "ModuleVcsDetector.initialDetectionPerformed": "true",
204
- "RunOnceActivity.MCP Project settings loaded": "true",
205
- "RunOnceActivity.ShowReadmeOnStart": "true",
206
- "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
207
- "RunOnceActivity.git.unshallow": "true",
208
- "RunOnceActivity.typescript.service.memoryLimit.init": "true",
209
- "SHARE_PROJECT_CONFIGURATION_FILES": "true",
210
- "codeWithMe.voiceChat.enabledByDefault": "false",
211
- "com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true",
212
- "dart.analysis.tool.window.visible": "false",
213
- "git-widget-placeholder": "main",
214
- "junie.onboarding.icon.badge.shown": "true",
215
- "kotlin-language-version-configured": "true",
216
- "last_opened_file_path": "/Users/kellysossoe/Code/Apps/devflow",
217
- "node.js.detected.package.eslint": "true",
218
- "node.js.detected.package.tslint": "true",
219
- "node.js.selected.package.eslint": "(autodetect)",
220
- "node.js.selected.package.tslint": "(autodetect)",
221
- "nodejs_package_manager_path": "npm",
222
- "settings.editor.selected.configurable": "settings.sync",
223
- "show.migrate.to.gradle.popup": "false",
224
- "to.speed.mode.migration.done": "true",
225
- "vue.rearranger.settings.migration": "true"
197
+ <component name="PropertiesComponent">{
198
+ &quot;keyToString&quot;: {
199
+ &quot;ASKED_SHARE_PROJECT_CONFIGURATION_FILES&quot;: &quot;true&quot;,
200
+ &quot;ModuleVcsDetector.initialDetectionPerformed&quot;: &quot;true&quot;,
201
+ &quot;RunOnceActivity.MCP Project settings loaded&quot;: &quot;true&quot;,
202
+ &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
203
+ &quot;RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252&quot;: &quot;true&quot;,
204
+ &quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
205
+ &quot;RunOnceActivity.typescript.service.memoryLimit.init&quot;: &quot;true&quot;,
206
+ &quot;SHARE_PROJECT_CONFIGURATION_FILES&quot;: &quot;true&quot;,
207
+ &quot;codeWithMe.voiceChat.enabledByDefault&quot;: &quot;false&quot;,
208
+ &quot;com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1&quot;: &quot;true&quot;,
209
+ &quot;dart.analysis.tool.window.visible&quot;: &quot;false&quot;,
210
+ &quot;git-widget-placeholder&quot;: &quot;main&quot;,
211
+ &quot;junie.onboarding.icon.badge.shown&quot;: &quot;true&quot;,
212
+ &quot;kotlin-language-version-configured&quot;: &quot;true&quot;,
213
+ &quot;last_opened_file_path&quot;: &quot;/Users/kellysossoe/Code/Apps/devflow&quot;,
214
+ &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
215
+ &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
216
+ &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
217
+ &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
218
+ &quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
219
+ &quot;settings.editor.selected.configurable&quot;: &quot;settings.sync&quot;,
220
+ &quot;show.migrate.to.gradle.popup&quot;: &quot;false&quot;,
221
+ &quot;to.speed.mode.migration.done&quot;: &quot;true&quot;,
222
+ &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
226
223
  }
227
- }]]></component>
224
+ }</component>
228
225
  <component name="SharedIndexes">
229
226
  <attachedChunks>
230
227
  <set>
@@ -241,7 +238,8 @@
241
238
  <option name="presentableId" value="Default" />
242
239
  <updated>1786957258019</updated>
243
240
  <workItem from="1786957259143" duration="1286000" />
244
- <workItem from="1787262300781" duration="880000" />
241
+ <workItem from="1787262300781" duration="3274000" />
242
+ <workItem from="1787616969795" duration="2101000" />
245
243
  </task>
246
244
  <servers />
247
245
  </component>
@@ -5,6 +5,41 @@ Tous les changements notables de ce projet sont documentés dans ce fichier.
5
5
  Le format est basé sur [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/),
6
6
  et ce projet adhère au [Semantic Versioning](https://semver.org/lang/fr/).
7
7
 
8
+ ## [4.0.2] - 2026-08-27
9
+
10
+ ### Fixed
11
+
12
+ - La vérification V4 accepte les preuves de plan V1 conservées lors d'une migration V3 vers V4, sans réécrire les artefacts historiques.
13
+ - Une régression couvre la reprise d'un workflow critical migré avec un plan V1 et une implémentation V2.
14
+
15
+ ## [4.0.1] - 2026-08-26
16
+
17
+ ### Fixed
18
+
19
+ - Les échecs de clôture structurée Codex sont catégorisés sans exposer de contenu de dépôt ou de sortie.
20
+ - Les écritures observées sont tracées par indicateur et compteur dans l'audit et le worklog, sans relance automatique.
21
+ - La migration V3 → V4 est couverte pour les quatre profils, y compris une reprise critical avancée.
22
+
23
+ ## [4.0.0] - 2026-08-26
24
+
25
+ ### Added
26
+
27
+ - Activité `preflight-evidence` dédiée avant toute implémentation, avec artefact unique, contrôle de fraîcheur et détection de secrets.
28
+ - Schémas publics `assessment` v2 et `workflow-state` v3, sans modification des schémas V3 publiés.
29
+ - Migration atomique et auditée via `devflow adaptive migrate`, avec dry-run et sauvegarde restaurable.
30
+
31
+ ### Changed
32
+
33
+ - Les quatre profils utilisent une route V4 explicite et transmettent la preuve de pré-vol à `implement`.
34
+ - La version du paquet et de la CLI passe à 4.0.0.
35
+
36
+ ## [3.0.1] - 2026-08-25
37
+
38
+ ### Fixed
39
+
40
+ - Les réouvertures auditées sont transmises explicitement aux contrats d'activité et les preuves de pré-vol archivées deviennent des entrées d'implémentation.
41
+ - Codex signale désormais distinctement une réponse finale structurée absente lorsque `--output-last-message` est vide, sans permettre de transition implicite.
42
+
8
43
  ## [3.0.0] - 2026-08-25
9
44
 
10
45
  ### Changed
@@ -5,7 +5,7 @@ politique passent par `assessment.json`; les transitions passent par la CLI et
5
5
  ne doivent jamais être réalisées en éditant les fichiers d’état.
6
6
 
7
7
  <!-- devflow:pipeline:start -->
8
- Workflow adaptatif à quatre profils, sélectionné par `devflow assess` : quick: assess → implement → verify → done; standard: assess → prepare → implement → verify → done; deep: assess → spec → plan → tasks → implement → verify → review → done; critical: assess → risk-assessment → spec → research → contracts → plan → tasks → implement → verify → review → rollback-check → done. `assessment.json` porte la politique et `workflow-state.json` porte uniquement la progression et les preuves.
8
+ Workflow adaptatif à quatre profils, sélectionné par `devflow assess` : quick: assess → preflight-evidence → implement → verify → done; standard: assess → prepare → preflight-evidence → implement → verify → done; deep: assess → spec → plan → tasks → preflight-evidence → implement → verify → review → done; critical: assess → risk-assessment → spec → research → contracts → plan → tasks → preflight-evidence → implement → verify → review → rollback-check → done. `assessment.json` porte la politique et `workflow-state.json` porte uniquement la progression et les preuves.
9
9
  <!-- devflow:pipeline:end -->
10
10
 
11
11
  ## Commandes de développement
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: devflow-cli
3
- Version: 3.0.0
3
+ Version: 4.0.2
4
4
  Summary: Spec-Driven Development workflow CLI
5
5
  Project-URL: Homepage, https://github.com/sopequenoteck/devflow
6
6
  Project-URL: Repository, https://github.com/sopequenoteck/devflow
@@ -73,6 +73,10 @@ Chaque invocation de `adaptive run` traite une activité. La politique est dans
73
73
  `workflow-state.json`. Les résultats agent sont validés par schéma et les
74
74
  preuves d’exécution sensibles sont produites localement par Devflow.
75
75
 
76
+ En V4, chaque profil exécute `preflight-evidence` avant `implement`. Cette
77
+ activité archive des faits externes reproductibles dans
78
+ `preflight-evidence.md`, sans secret ni donnée utilisateur.
79
+
76
80
  Les trois adaptateurs acceptent les mêmes contrats structurés :
77
81
 
78
82
  ```bash
@@ -83,6 +87,19 @@ devflow adaptive run KS-123 --agent cursor
83
87
 
84
88
  ## Migrer une ancienne feature
85
89
 
90
+ Pour un workflow adaptatif V3 déjà persisté :
91
+
92
+ ```bash
93
+ devflow adaptive migrate KS-123 --dry-run
94
+ devflow adaptive migrate KS-123
95
+ ```
96
+
97
+ La migration V4 traite ensemble `assessment.json` et `workflow-state.json`,
98
+ conserve une sauvegarde auditée et restaure le couple original en cas d'échec.
99
+ Voir [le guide V4](docs/v4-migration.md).
100
+
101
+ Pour une feature antérieure au moteur adaptatif :
102
+
86
103
  ```bash
87
104
  devflow migrate KS-123 --dry-run
88
105
  devflow migrate KS-123 --profile deep
@@ -45,6 +45,10 @@ Chaque invocation de `adaptive run` traite une activité. La politique est dans
45
45
  `workflow-state.json`. Les résultats agent sont validés par schéma et les
46
46
  preuves d’exécution sensibles sont produites localement par Devflow.
47
47
 
48
+ En V4, chaque profil exécute `preflight-evidence` avant `implement`. Cette
49
+ activité archive des faits externes reproductibles dans
50
+ `preflight-evidence.md`, sans secret ni donnée utilisateur.
51
+
48
52
  Les trois adaptateurs acceptent les mêmes contrats structurés :
49
53
 
50
54
  ```bash
@@ -55,6 +59,19 @@ devflow adaptive run KS-123 --agent cursor
55
59
 
56
60
  ## Migrer une ancienne feature
57
61
 
62
+ Pour un workflow adaptatif V3 déjà persisté :
63
+
64
+ ```bash
65
+ devflow adaptive migrate KS-123 --dry-run
66
+ devflow adaptive migrate KS-123
67
+ ```
68
+
69
+ La migration V4 traite ensemble `assessment.json` et `workflow-state.json`,
70
+ conserve une sauvegarde auditée et restaure le couple original en cas d'échec.
71
+ Voir [le guide V4](docs/v4-migration.md).
72
+
73
+ Pour une feature antérieure au moteur adaptatif :
74
+
58
75
  ```bash
59
76
  devflow migrate KS-123 --dry-run
60
77
  devflow migrate KS-123 --profile deep
@@ -5,10 +5,10 @@
5
5
  Les quatre frontières centrales sont décrites par des JSON Schemas Draft
6
6
  2020-12 embarqués dans le wheel :
7
7
 
8
- - `assessment-v1.schema.json` pour la sélection de politique ;
9
- - `workflow-state-v2.schema.json` pour la progression et les preuves ;
10
- - `activity-contract-v1.schema.json` pour l'instruction portable envoyée à
11
- l'adaptateur ;
8
+ - `assessment-v1.schema.json` et `workflow-state-v2.schema.json` pour les workflows V3 conservés ;
9
+ - `assessment-v2.schema.json` et `workflow-state-v3.schema.json` pour les routes Devflow V4 ;
10
+ - `activity-contract-v1.schema.json` pour les activités V3 et
11
+ `activity-contract-v2.schema.json` pour l'instruction V4 incluant le pré-vol ;
12
12
  - `activity-result-v1.schema.json` pour la réponse structurée de l'agent.
13
13
 
14
14
  Le schéma vérifie la structure, les types, les champs obligatoires et refuse les
@@ -43,12 +43,20 @@ validation par devflow
43
43
  ```
44
44
 
45
45
  Le moteur construit un contrat uniquement pour l'activité courante. Dans le
46
- profil `quick`, l'activité agentique est `implement`. Le profil `standard`
46
+ profil `quick`, `preflight-evidence` précède `implement`. Le profil `standard`
47
47
  ajoute `prepare`, exécutée en lecture seule et conservée dans
48
48
  `prepare-result.json`. Deep enchaîne `spec`, `plan`, `tasks`, `implement`,
49
49
  `verify` et `review`. `assess` est déjà terminé au démarrage, tandis que `done`
50
50
  reste une transition déterministe de la CLI.
51
51
 
52
+ `preflight-evidence` est une activité documentaire autonome : elle ne réutilise
53
+ pas le contrat conditionnel de `plan`, écrit uniquement
54
+ `preflight-evidence.md` et emploie l'`ActivityResult` commun sans
55
+ `validationPlan`. L'artefact doit décrire les faits, leur source, leur
56
+ reproductibilité, le périmètre, la confidentialité et les limites. Il est
57
+ revalidé avant `implement`; une preuve absente, vide, plus ancienne qu'un
58
+ artefact d'entrée ou ressemblant à un secret bloque la transition.
59
+
52
60
  ## Contenu du contrat
53
61
 
54
62
  Un `ActivityContract` versionné contient :
@@ -149,6 +157,12 @@ Les sorties brutes et validées sont conservées respectivement dans
149
157
  `activity-result.raw.txt` et `activity-result.json`. Une réponse bloquée ou
150
158
  invalide ne fait jamais progresser la machine d'état.
151
159
 
160
+ `agent-execution.json` conserve uniquement les métadonnées non sensibles de
161
+ l'exécution : code retour, durée, présence et taille de la réponse finale,
162
+ timeout et identifiant opaque de session lorsqu'il est disponible. Codex
163
+ distingue une réponse finale absente, un fichier vide, un JSON invalide et un
164
+ payload refusé par le schéma; aucun de ces cas ne fait progresser le workflow.
165
+
152
166
  Les activités documentaires Deep écrivent exclusivement `spec.md`, `plan.md`
153
167
  ou `tasks.md`, puis réutilisent les validateurs historiques et le contrôle de
154
168
  traçabilité exigences-tâches. Leurs résultats sont conservés dans
@@ -0,0 +1,49 @@
1
+ # ADR-0001 — Compatibilité des workflows Devflow V3 vers V4
2
+
3
+ - Statut : accepté
4
+ - Date : 2026-08-26
5
+
6
+ ## Contexte
7
+
8
+ Devflow V3 persiste la route dans `assessment.json` v1 et
9
+ `workflow-state.json` v2. Le lecteur vérifie son égalité exacte avec la
10
+ politique du profil. Insérer silencieusement `preflight-evidence` rendrait donc
11
+ les états V3 illisibles ou, pire, changerait leur sens pendant une reprise.
12
+
13
+ ## Décision
14
+
15
+ Devflow V4 publie `assessment` v2, `workflow-state` v3 et
16
+ `activity-contract` v2. Les quatre routes — quick, standard, deep et critical
17
+ — insèrent l'activité autonome `preflight-evidence` immédiatement avant
18
+ `implement`. Les schémas V3 restent immuables et leur lecteur demeure utile à
19
+ la validation de migration.
20
+
21
+ La migration est une commande latérale explicite. Elle verrouille le workflow,
22
+ valide le couple V3, calcule les deux documents V4, sauvegarde les originaux et
23
+ remplace les deux fichiers. Une interruption restaure le couple original. Le
24
+ dry-run n'écrit rien. Aucune migration automatique n'a lieu lors de `start`,
25
+ `status` ou `run`.
26
+
27
+ Un workflow situé avant `implement` conserve son activité. S'il attendait
28
+ `implement`, il reprend à `preflight-evidence`. S'il a dépassé
29
+ `implement`, sa progression n'est conservée que lorsqu'un
30
+ `preflight-evidence.md` V4 valide est déjà présent; cette preuve est alors
31
+ reconnue explicitement dans l'audit. Il n'existe aucune réécriture silencieuse
32
+ spécifique à KKS-300.
33
+
34
+ ## Invariants
35
+
36
+ - Assessment et état sont toujours migrés ou restaurés ensemble.
37
+ - Les dates, preuves et activités V3 terminées sont conservées.
38
+ - La migration est idempotente par détection d'un couple déjà V4.
39
+ - Les originaux et leurs empreintes sont archivés sous `migrations/v4-*`.
40
+ - Une route non canonique, des versions mélangées ou une preuve manquante
41
+ provoquent un refus actionnable.
42
+
43
+ ## Conséquences
44
+
45
+ La V4 ajoute des fichiers de schéma et une étape obligatoire à chaque nouveau
46
+ workflow. La compatibilité demande une action opérateur, mais les reprises,
47
+ rollbacks et audits restent déterministes. Le détournement historique d'un
48
+ `plan` rouvert pour produire une preuve disparaît au profit d'un contrat simple
49
+ et stable.
@@ -24,6 +24,7 @@ Un profil forcé peut augmenter mais jamais réduire la recommandation.
24
24
 
25
25
  ```bash
26
26
  devflow adaptive start ISSUE_ID
27
+ devflow adaptive migrate ISSUE_ID [--dry-run] [--json]
27
28
  devflow adaptive status ISSUE_ID [--json]
28
29
  devflow adaptive contract ISSUE_ID [--json|--prompt]
29
30
  devflow adaptive run ISSUE_ID --agent codex|claude|cursor
@@ -0,0 +1,31 @@
1
+ # Référence générée du workflow adaptatif
2
+
3
+ > Généré par `devflow docs-sync`. Ne pas modifier manuellement.
4
+
5
+ Workflow adaptatif à quatre profils, sélectionné par `devflow assess` : quick: assess → preflight-evidence → implement → verify → done; standard: assess → prepare → preflight-evidence → implement → verify → done; deep: assess → spec → plan → tasks → preflight-evidence → implement → verify → review → done; critical: assess → risk-assessment → spec → research → contracts → plan → tasks → preflight-evidence → implement → verify → review → rollback-check → done. `assessment.json` porte la politique et `workflow-state.json` porte uniquement la progression et les preuves.
6
+
7
+ | Profil | Activités | Preuves requises |
8
+ |---|---|---|
9
+ | `quick` | `assess → preflight-evidence → implement → verify → done` | `targeted-check, diff-inspection` |
10
+ | `standard` | `assess → prepare → preflight-evidence → implement → verify → done` | `targeted-tests, regression-check, diff-inspection` |
11
+ | `deep` | `assess → spec → plan → tasks → preflight-evidence → implement → verify → review → done` | `requirements-coverage, test-suite, implementation-review` |
12
+ | `critical` | `assess → risk-assessment → spec → research → contracts → plan → tasks → preflight-evidence → implement → verify → review → rollback-check → done` | `requirements-coverage, test-suite, security-or-data-check, rollback-plan, independent-review` |
13
+
14
+ ## Synchronisation Linear
15
+
16
+ | Activité | Statut |
17
+ |---|---|
18
+ | `assess` | Backlog |
19
+ | `prepare` | Plan |
20
+ | `risk-assessment` | Research |
21
+ | `spec` | Spec |
22
+ | `research` | Research |
23
+ | `contracts` | Plan |
24
+ | `plan` | Plan |
25
+ | `tasks` | Tasks |
26
+ | `preflight-evidence` | Plan |
27
+ | `implement` | In Progress |
28
+ | `verify` | Review |
29
+ | `review` | Review |
30
+ | `rollback-check` | Review |
31
+ | `done` | Done |
@@ -0,0 +1,46 @@
1
+ # Workflow adaptatif
2
+
3
+ <!-- devflow:pipeline:start -->
4
+ Workflow adaptatif à quatre profils, sélectionné par `devflow assess` : quick: assess → preflight-evidence → implement → verify → done; standard: assess → prepare → preflight-evidence → implement → verify → done; deep: assess → spec → plan → tasks → preflight-evidence → implement → verify → review → done; critical: assess → risk-assessment → spec → research → contracts → plan → tasks → preflight-evidence → implement → verify → review → rollback-check → done. `assessment.json` porte la politique et `workflow-state.json` porte uniquement la progression et les preuves.
5
+ <!-- devflow:pipeline:end -->
6
+
7
+ ## Sources de vérité
8
+
9
+ - `assessment.json` : identité, signaux, profil, route et preuves exigées.
10
+ - `workflow-state.json` : activité courante, progression et preuves constatées.
11
+ - `activity-contract.json` : autorisations et critères de l’activité courante.
12
+ - `activity-result.json` : résultat structuré et validé de l’agent.
13
+ - `worklog.md` : synthèse humaine, sans autorité sur les transitions.
14
+
15
+ ## Cycle
16
+
17
+ 1. `feature` crée seulement la branche et l’espace de travail.
18
+ 2. `assess` calcule la politique de façon déterministe.
19
+ 3. `adaptive start` initialise la route choisie.
20
+ 4. `adaptive run` archive une preuve externe reproductible dans
21
+ `preflight-evidence.md` avant toute implémentation.
22
+ 5. `adaptive run` construit un contrat, appelle l’adaptateur et valide le
23
+ résultat.
24
+ 6. `verify` produit localement les preuves de tests, régression, sécurité et
25
+ inspection du diff selon le profil.
26
+ 7. Une transition n’est acceptée que lorsque ses preuves ont la bonne source
27
+ et le résultat `passed`.
28
+
29
+ Une activité bloquée reste courante. `adaptive reopen` permet une remédiation
30
+ explicite avec motif, sans réécrire l’historique.
31
+
32
+ ## Compatibilité V3 → V4
33
+
34
+ Les schémas V3 publiés restent inchangés. Un couple persisté
35
+ `assessment` v1 / `workflow-state` v2 se migre explicitement et ensemble :
36
+
37
+ ```bash
38
+ devflow adaptive migrate KS-123 --dry-run
39
+ devflow adaptive migrate KS-123
40
+ ```
41
+
42
+ La migration vérifie les invariants, verrouille le workflow, écrit les deux
43
+ fichiers atomiquement et conserve les originaux avec un journal d'audit sous
44
+ `migrations/v4-*`. Un workflow ayant déjà dépassé `implement` n'est accepté
45
+ que si une preuve de pré-vol V4 valide existe déjà. Aucun fichier n'est modifié
46
+ en dry-run et une erreur intermédiaire restaure le couple original.
@@ -0,0 +1,53 @@
1
+ # Devflow 4.0.0 — Notes de release et décision go/no-go
2
+
3
+ Date de validation : 2026-08-26
4
+
5
+ ## Contenu
6
+
7
+ - Routes V4 pour quick, standard, deep et critical avec
8
+ `preflight-evidence` avant `implement`.
9
+ - Schémas publics `assessment` v2, `workflow-state` v3 et
10
+ `activity-contract` v2; les versions V3 restent inchangées.
11
+ - Migration V3 → V4 atomique, auditée, réversible et disponible en dry-run.
12
+ - Validation du pré-vol : structure, fraîcheur, confidentialité et propagation
13
+ explicite vers l'implémentation.
14
+ - Diagnostics Codex distincts pour sortie absente, vide, JSON invalide et
15
+ schéma refusé, avec arrêt sûr après mutation partielle.
16
+
17
+ ## Matrice validée
18
+
19
+ | Parcours | Preuve |
20
+ |---|---|
21
+ | Nouveau quick, standard, deep, critical | Test d'acceptation black-box depuis le wheel installé |
22
+ | V3 avant implémentation | Migration positionnant le workflow sur `preflight-evidence` |
23
+ | V3 avancé sans preuve | Refus sans mutation |
24
+ | Dry-run | Empreintes des deux fichiers inchangées |
25
+ | Interruption au second remplacement | Restauration byte-for-byte des deux originaux |
26
+ | Pré-vol vide, incomplet, secret ou désuet | Refus ciblé |
27
+ | Codex final absent, vide, JSON invalide ou hors schéma | Aucun avancement |
28
+ | Build et installation hors dépôt | Wheel 4.0.0 importé avec tous les schémas publics |
29
+
30
+ ## Retour arrière
31
+
32
+ Pour une migration, restaurer ensemble `assessment.json` et
33
+ `workflow-state.json` depuis le même dossier `migrations/v4-*`, après arrêt des
34
+ exécutions. Pour la distribution, réinstaller 3.0.1 et reprendre uniquement un
35
+ couple V3 restauré; la CLI 3.x ne doit jamais ouvrir un état V4.
36
+
37
+ ## Risques résiduels
38
+
39
+ - La détection de secrets est défensive mais ne remplace pas une politique DLP;
40
+ le contrat interdit toute donnée utilisateur ou privée.
41
+ - La fraîcheur repose sur les dates de modification des artefacts d'entrée;
42
+ les systèmes qui réécrivent arbitrairement ces dates doivent régénérer la
43
+ preuve.
44
+ - La reprise de session Codex dépend des capacités du CLI installé. Après une
45
+ mutation suivie d'une réponse finale absente, Devflow exige une
46
+ réconciliation manuelle et ne rejoue pas automatiquement l'activité.
47
+
48
+ ## Décision
49
+
50
+ **GO** pour la release 4.0.0 : la suite complète, l'acceptation des quatre
51
+ profils, la migration/ restauration, la synchronisation documentaire, le build
52
+ source+wheel et l'import depuis l'installation hors dépôt sont validés. Les
53
+ risques résiduels ci-dessus sont documentés et ne contournent aucune gate.
@@ -0,0 +1,17 @@
1
+ # Devflow 4.0.1 — Correctif de fiabilité Codex
2
+
3
+ ## Correctifs
4
+
5
+ - Les sorties structurées Codex distinguent désormais quatre échecs sûrs :
6
+ fichier final vide, absent, JSON invalide et schéma refusé.
7
+ - L'audit d'exécution et le worklog indiquent le diagnostic, la présence
8
+ d'écritures observées et leur nombre, sans révéler de chemin ou de contenu.
9
+ - Une écriture suivie d'un échec reste bloquée pour réconciliation manuelle ;
10
+ aucune relance automatique n'est effectuée.
11
+
12
+ ## Validation
13
+
14
+ - Suite complète : 476 tests.
15
+ - Acceptation adaptative depuis le wheel installé : validée.
16
+ - Migration V3 → V4 couverte pour quick, standard, deep et critical, dont une
17
+ reprise critical avec preuve de pré-vol valide.
@@ -0,0 +1,53 @@
1
+ # Migration vers Devflow V4
2
+
3
+ Devflow V4 ajoute `preflight-evidence` immédiatement avant `implement` dans
4
+ les quatre profils. Les workflows V3 ne sont jamais réécrits silencieusement.
5
+
6
+ ## Contrôles préalables
7
+
8
+ Le dossier doit contenir un couple cohérent `assessment.json` v1 et
9
+ `workflow-state.json` v2. Commencez toujours par :
10
+
11
+ ```bash
12
+ devflow adaptive migrate ISSUE_ID --dry-run --json
13
+ ```
14
+
15
+ Le dry-run valide les schémas, l'identité, le profil, la route et la
16
+ progression sans créer de sauvegarde ni modifier un octet. Si `implement` a
17
+ déjà commencé ou est terminé, fournissez un `preflight-evidence.md` complet;
18
+ sinon la migration est refusée.
19
+
20
+ ## Migration et reprise
21
+
22
+ ```bash
23
+ devflow adaptive migrate ISSUE_ID
24
+ devflow adaptive status ISSUE_ID
25
+ ```
26
+
27
+ La commande sérialise l'opération avec le verrou du workflow. Les originaux et
28
+ `migration-audit.json` sont conservés sous `migrations/v4-<horodatage>/`. Si
29
+ l'écriture du second fichier échoue, les deux originaux sont restaurés. Une
30
+ nouvelle tentative est sûre : un couple déjà migré est détecté et n'est pas
31
+ réécrit.
32
+
33
+ Un workflow qui attendait `implement` attend désormais
34
+ `preflight-evidence`. Un workflow moins avancé conserve son activité courante.
35
+ Un workflow plus avancé conserve sa progression uniquement si sa preuve de
36
+ pré-vol existante est reconnue et validée.
37
+
38
+ ## Retour arrière
39
+
40
+ Arrêtez toute exécution du workflow, puis restaurez ensemble
41
+ `assessment.json` et `workflow-state.json` depuis le même dossier
42
+ `migrations/v4-*`. Ne restaurez jamais un seul des deux fichiers. Vérifiez les
43
+ empreintes `beforeSha256` de `migration-audit.json`, puis utilisez la CLI V3
44
+ pour reprendre ce couple V3.
45
+
46
+ ## Diagnostics
47
+
48
+ - « migration attend assessment v1 et workflow-state v2 ensemble » : versions
49
+ mélangées ou fichier déjà altéré ; restaurez un couple cohérent.
50
+ - « route V3 non canonique » : la route persistée ne correspond pas au profil ;
51
+ examinez le fichier au lieu de forcer une réécriture.
52
+ - « preflight-evidence.md absent/vide/desuète » : produisez une preuve complète
53
+ sans secret avant de migrer un workflow déjà avancé.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "devflow-cli"
7
- version = "3.0.0"
7
+ version = "4.0.2"
8
8
  description = "Spec-Driven Development workflow CLI"
9
9
  requires-python = ">=3.11"
10
10
  license = {text = "MIT"}
@@ -1,6 +1,6 @@
1
1
  """devflow CLI — workflow de développement adaptatif."""
2
2
 
3
- VERSION = "3.0.0"
3
+ VERSION = "4.0.2"
4
4
 
5
5
  SUPPORTED_AGENTS = ["claude-code", "codex", "cursor"]
6
6
 
@@ -13,6 +13,7 @@ ACTIVITY_LINEAR_MAPPING = {
13
13
  "contracts": "Plan",
14
14
  "plan": "Plan",
15
15
  "tasks": "Tasks",
16
+ "preflight-evidence": "Plan",
16
17
  "implement": "In Progress",
17
18
  "verify": "Review",
18
19
  "review": "Review",
@@ -38,6 +39,7 @@ ARTIFACTS = [
38
39
  "contracts.md",
39
40
  "plan.md",
40
41
  "tasks.md",
42
+ "preflight-evidence.md",
41
43
  "worklog.md",
42
44
  "activity-contract.json",
43
45
  "activity-result.json",