devflow-cli 4.0.2__tar.gz → 6.1.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.
Files changed (391) hide show
  1. devflow_cli-6.1.0/.github/workflows/release.yml +88 -0
  2. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.gitignore +1 -0
  3. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/CHANGELOG.md +108 -0
  4. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/CLAUDE.md +1 -1
  5. devflow_cli-6.1.0/FEEDBACK.md +176 -0
  6. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/PKG-INFO +8 -23
  7. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/README.md +7 -22
  8. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/commands/devflow.md +8 -4
  9. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/docs/activity-contracts.md +176 -15
  10. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/docs/adr/0001-v4-workflow-compatibility.md +1 -1
  11. devflow_cli-6.1.0/docs/adr/0002-v5-rupture-and-provenance.md +84 -0
  12. devflow_cli-6.1.0/docs/cli-reference.md +196 -0
  13. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/docs/commands-reference.md +3 -2
  14. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/docs/guides/brownfield.md +1 -0
  15. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/docs/guides/greenfield.md +1 -0
  16. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/docs/guides/microservices.md +1 -0
  17. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/docs/pipeline-reference.generated.md +1 -1
  18. devflow_cli-6.1.0/docs/pipeline.md +52 -0
  19. devflow_cli-6.1.0/docs/releases/4.0.3.md +26 -0
  20. devflow_cli-6.1.0/docs/releases/4.0.4.md +26 -0
  21. devflow_cli-6.1.0/docs/releases/4.0.5.md +28 -0
  22. devflow_cli-6.1.0/docs/releases/4.0.6.md +31 -0
  23. devflow_cli-6.1.0/docs/releases/5.0.0.md +77 -0
  24. devflow_cli-6.1.0/docs/releases/6.0.0.md +100 -0
  25. devflow_cli-6.1.0/docs/releases/6.1.0.md +54 -0
  26. devflow_cli-6.1.0/docs/v5-decisions.md +80 -0
  27. devflow_cli-6.1.0/docs/v6-decisions.md +97 -0
  28. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/pyproject.toml +1 -1
  29. devflow_cli-6.1.0/scripts/check_release.py +77 -0
  30. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/__init__.py +2 -2
  31. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/adapters/agents.py +274 -19
  32. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/cli.py +2 -2
  33. devflow_cli-6.1.0/src/devflow_cli/commands/adaptive.py +1155 -0
  34. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/commands/assess.py +0 -1
  35. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/commands/check.py +41 -0
  36. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/commands/feature.py +25 -3
  37. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/commands/status.py +3 -3
  38. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/commands/upgrade_cmd.py +14 -8
  39. devflow_cli-6.1.0/src/devflow_cli/commands/usage.py +92 -0
  40. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/commands/verify.py +30 -0
  41. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/activity_contracts.py +218 -23
  42. devflow_cli-6.1.0/src/devflow_cli/core/adaptive_runner.py +896 -0
  43. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/adaptive_workflow.py +90 -50
  44. devflow_cli-6.1.0/src/devflow_cli/core/agent_failure.py +113 -0
  45. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/assessment.py +17 -19
  46. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/automatic_evidence.py +252 -71
  47. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/contract_schemas.py +21 -31
  48. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/docgen.py +6 -5
  49. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/manifest.py +9 -1
  50. devflow_cli-6.1.0/src/devflow_cli/core/omissions.py +168 -0
  51. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/operational.py +5 -1
  52. devflow_cli-6.1.0/src/devflow_cli/core/remediation.py +347 -0
  53. devflow_cli-6.1.0/src/devflow_cli/core/telemetry.py +168 -0
  54. devflow_cli-6.1.0/src/devflow_cli/core/validation_approvals.py +220 -0
  55. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/validators.py +59 -9
  56. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/verification.py +95 -8
  57. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/worklog.py +14 -3
  58. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/worktree_snapshot.py +17 -0
  59. devflow_cli-4.0.2/src/devflow_cli/schemas/activity-contract-v2.schema.json → devflow_cli-6.1.0/src/devflow_cli/schemas/activity-contract-v3.schema.json +3 -3
  60. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/schemas/activity-result-v1.schema.json +13 -1
  61. devflow_cli-4.0.2/src/devflow_cli/schemas/assessment-v2.schema.json → devflow_cli-6.1.0/src/devflow_cli/schemas/assessment-v3.schema.json +3 -3
  62. devflow_cli-4.0.2/src/devflow_cli/schemas/workflow-state-v3.schema.json → devflow_cli-6.1.0/src/devflow_cli/schemas/workflow-state-v4.schema.json +23 -4
  63. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/utils/paths.py +17 -2
  64. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/templates/plan-template.md +4 -4
  65. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/conftest.py +10 -0
  66. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_activity_contracts.py +303 -35
  67. devflow_cli-6.1.0/tests/test_adaptive_runner.py +1998 -0
  68. devflow_cli-6.1.0/tests/test_adaptive_workflow.py +349 -0
  69. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_agent_adapters.py +230 -0
  70. devflow_cli-6.1.0/tests/test_agent_failure.py +129 -0
  71. devflow_cli-6.1.0/tests/test_automatic_evidence.py +1385 -0
  72. devflow_cli-6.1.0/tests/test_cmd_adaptive.py +1863 -0
  73. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_cmd_assess.py +1 -1
  74. devflow_cli-6.1.0/tests/test_cmd_check.py +269 -0
  75. devflow_cli-6.1.0/tests/test_cmd_feature.py +227 -0
  76. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_cmd_status.py +3 -3
  77. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_cmd_upgrade.py +26 -0
  78. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_cmd_verify.py +51 -0
  79. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_contract_schemas.py +22 -10
  80. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_docgen.py +2 -2
  81. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_integration.py +7 -4
  82. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_manifest.py +12 -0
  83. devflow_cli-6.1.0/tests/test_omissions.py +312 -0
  84. devflow_cli-6.1.0/tests/test_release.py +80 -0
  85. devflow_cli-6.1.0/tests/test_remediation.py +173 -0
  86. devflow_cli-6.1.0/tests/test_telemetry.py +278 -0
  87. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_validators.py +49 -0
  88. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_verification.py +99 -1
  89. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_waivers.py +5 -3
  90. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_wheel_adaptive_acceptance.py +11 -7
  91. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_wheel_install.py +3 -6
  92. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_worklog.py +14 -12
  93. devflow_cli-6.1.0/tests/test_worktree_snapshot.py +112 -0
  94. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/uv.lock +1 -1
  95. devflow_cli-4.0.2/.github/workflows/release.yml +0 -52
  96. devflow_cli-4.0.2/.idea/.gitignore +0 -10
  97. devflow_cli-4.0.2/.idea/devflow.iml +0 -9
  98. devflow_cli-4.0.2/.idea/misc.xml +0 -5
  99. devflow_cli-4.0.2/.idea/modules.xml +0 -8
  100. devflow_cli-4.0.2/.idea/vcs.xml +0 -6
  101. devflow_cli-4.0.2/.idea/workspace.xml +0 -249
  102. devflow_cli-4.0.2/docs/cli-reference.md +0 -106
  103. devflow_cli-4.0.2/docs/pipeline.md +0 -46
  104. devflow_cli-4.0.2/docs/v4-migration.md +0 -53
  105. devflow_cli-4.0.2/src/devflow_cli/commands/adaptive.py +0 -681
  106. devflow_cli-4.0.2/src/devflow_cli/commands/migrate_cmd.py +0 -200
  107. devflow_cli-4.0.2/src/devflow_cli/core/adaptive_runner.py +0 -378
  108. devflow_cli-4.0.2/src/devflow_cli/core/remediation.py +0 -170
  109. devflow_cli-4.0.2/src/devflow_cli/core/v4_migration.py +0 -134
  110. devflow_cli-4.0.2/src/devflow_cli/schemas/activity-contract-v1.schema.json +0 -76
  111. devflow_cli-4.0.2/src/devflow_cli/schemas/assessment-v1.schema.json +0 -60
  112. devflow_cli-4.0.2/src/devflow_cli/schemas/workflow-state-v2.schema.json +0 -66
  113. devflow_cli-4.0.2/tests/test_adaptive_runner.py +0 -593
  114. devflow_cli-4.0.2/tests/test_adaptive_workflow.py +0 -185
  115. devflow_cli-4.0.2/tests/test_automatic_evidence.py +0 -762
  116. devflow_cli-4.0.2/tests/test_cmd_adaptive.py +0 -919
  117. devflow_cli-4.0.2/tests/test_cmd_check.py +0 -112
  118. devflow_cli-4.0.2/tests/test_cmd_feature.py +0 -113
  119. devflow_cli-4.0.2/tests/test_cmd_migrate.py +0 -185
  120. devflow_cli-4.0.2/tests/test_v4_migration.py +0 -162
  121. devflow_cli-4.0.2/tests/test_worktree_snapshot.py +0 -59
  122. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.ai/mcp/mcp.json +0 -0
  123. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.claude/commands/speckit.analyze.md +0 -0
  124. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.claude/commands/speckit.checklist.md +0 -0
  125. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.claude/commands/speckit.clarify.md +0 -0
  126. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.claude/commands/speckit.constitution.md +0 -0
  127. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.claude/commands/speckit.implement.md +0 -0
  128. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.claude/commands/speckit.plan.md +0 -0
  129. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.claude/commands/speckit.specify.md +0 -0
  130. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.claude/commands/speckit.tasks.md +0 -0
  131. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.claude/commands/speckit.taskstoissues.md +0 -0
  132. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.githooks/post-checkout +0 -0
  133. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.githooks/post-merge +0 -0
  134. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.github/workflows/ci.yml +0 -0
  135. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/init-options.json +0 -0
  136. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/memory/constitution.md +0 -0
  137. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/scripts/bash/check-prerequisites.sh +0 -0
  138. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/scripts/bash/common.sh +0 -0
  139. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/scripts/bash/create-new-feature.sh +0 -0
  140. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/scripts/bash/setup-plan.sh +0 -0
  141. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/scripts/bash/update-agent-context.sh +0 -0
  142. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/001-cli-init-options/checklists/requirements.md +0 -0
  143. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/001-cli-init-options/contracts/cli-init.md +0 -0
  144. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/001-cli-init-options/data-model.md +0 -0
  145. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/001-cli-init-options/plan.md +0 -0
  146. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/001-cli-init-options/research.md +0 -0
  147. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/001-cli-init-options/spec.md +0 -0
  148. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/001-cli-init-options/tasks.md +0 -0
  149. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/002-cascade-regen/checklists/requirements.md +0 -0
  150. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/002-cascade-regen/contracts/cli-regen.md +0 -0
  151. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/002-cascade-regen/contracts/cli-status-staleness.md +0 -0
  152. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/002-cascade-regen/data-model.md +0 -0
  153. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/002-cascade-regen/plan.md +0 -0
  154. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/002-cascade-regen/research.md +0 -0
  155. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/002-cascade-regen/spec.md +0 -0
  156. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/002-cascade-regen/tasks.md +0 -0
  157. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/003-usecase-guides/checklists/requirements.md +0 -0
  158. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/003-usecase-guides/data-model.md +0 -0
  159. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/003-usecase-guides/plan.md +0 -0
  160. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/003-usecase-guides/quickstart.md +0 -0
  161. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/003-usecase-guides/research.md +0 -0
  162. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/003-usecase-guides/spec.md +0 -0
  163. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/003-usecase-guides/tasks.md +0 -0
  164. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/004-specify-central-directory/checklists/requirements.md +0 -0
  165. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/004-specify-central-directory/contracts/cli-commands.md +0 -0
  166. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/004-specify-central-directory/data-model.md +0 -0
  167. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/004-specify-central-directory/plan.md +0 -0
  168. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/004-specify-central-directory/quickstart.md +0 -0
  169. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/004-specify-central-directory/research.md +0 -0
  170. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/004-specify-central-directory/spec.md +0 -0
  171. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/004-specify-central-directory/tasks.md +0 -0
  172. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/005-implement-subphases/checklists/requirements.md +0 -0
  173. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/005-implement-subphases/plan.md +0 -0
  174. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/005-implement-subphases/quickstart.md +0 -0
  175. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/005-implement-subphases/research.md +0 -0
  176. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/005-implement-subphases/spec.md +0 -0
  177. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/005-implement-subphases/tasks.md +0 -0
  178. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/006-template-upgrade/checklists/requirements.md +0 -0
  179. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/006-template-upgrade/contracts/cli-upgrade.md +0 -0
  180. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/006-template-upgrade/data-model.md +0 -0
  181. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/006-template-upgrade/plan.md +0 -0
  182. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/006-template-upgrade/quickstart.md +0 -0
  183. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/006-template-upgrade/research.md +0 -0
  184. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/006-template-upgrade/spec.md +0 -0
  185. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/006-template-upgrade/tasks.md +0 -0
  186. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/007-project-documentation/checklists/requirements.md +0 -0
  187. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/007-project-documentation/data-model.md +0 -0
  188. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/007-project-documentation/plan.md +0 -0
  189. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/007-project-documentation/quickstart.md +0 -0
  190. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/007-project-documentation/research.md +0 -0
  191. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/007-project-documentation/spec.md +0 -0
  192. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/007-project-documentation/tasks.md +0 -0
  193. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/008-hardening-bugs/checklists/requirements.md +0 -0
  194. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/008-hardening-bugs/plan.md +0 -0
  195. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/008-hardening-bugs/quickstart.md +0 -0
  196. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/008-hardening-bugs/research.md +0 -0
  197. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/008-hardening-bugs/spec.md +0 -0
  198. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/008-hardening-bugs/tasks.md +0 -0
  199. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/009-ci-pypi/checklists/requirements.md +0 -0
  200. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/009-ci-pypi/plan.md +0 -0
  201. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/009-ci-pypi/quickstart.md +0 -0
  202. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/009-ci-pypi/research.md +0 -0
  203. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/009-ci-pypi/spec.md +0 -0
  204. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/009-ci-pypi/tasks.md +0 -0
  205. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/010-flexible-pipeline/checklists/requirements.md +0 -0
  206. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/010-flexible-pipeline/plan.md +0 -0
  207. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/010-flexible-pipeline/quickstart.md +0 -0
  208. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/010-flexible-pipeline/research.md +0 -0
  209. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/010-flexible-pipeline/spec.md +0 -0
  210. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/010-flexible-pipeline/tasks.md +0 -0
  211. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/011-cursor-support/checklists/requirements.md +0 -0
  212. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/011-cursor-support/plan.md +0 -0
  213. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/011-cursor-support/quickstart.md +0 -0
  214. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/011-cursor-support/research.md +0 -0
  215. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/011-cursor-support/spec.md +0 -0
  216. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/011-cursor-support/tasks.md +0 -0
  217. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/012-fix-critical-bugs/checklists/requirements.md +0 -0
  218. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/012-fix-critical-bugs/plan.md +0 -0
  219. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/012-fix-critical-bugs/research.md +0 -0
  220. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/012-fix-critical-bugs/spec.md +0 -0
  221. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/012-fix-critical-bugs/tasks.md +0 -0
  222. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/013-align-truth-sources/checklists/requirements.md +0 -0
  223. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/013-align-truth-sources/plan.md +0 -0
  224. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/013-align-truth-sources/quickstart.md +0 -0
  225. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/013-align-truth-sources/spec.md +0 -0
  226. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/013-align-truth-sources/tasks.md +0 -0
  227. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/014-enforce-state-machine/checklists/requirements.md +0 -0
  228. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/014-enforce-state-machine/plan.md +0 -0
  229. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/014-enforce-state-machine/quickstart.md +0 -0
  230. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/014-enforce-state-machine/spec.md +0 -0
  231. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/014-enforce-state-machine/tasks.md +0 -0
  232. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/015-fix-review-contradiction/checklists/requirements.md +0 -0
  233. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/015-fix-review-contradiction/plan.md +0 -0
  234. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/015-fix-review-contradiction/research.md +0 -0
  235. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/015-fix-review-contradiction/spec.md +0 -0
  236. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/015-fix-review-contradiction/tasks.md +0 -0
  237. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/016-harden-state-machine/checklists/requirements.md +0 -0
  238. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/016-harden-state-machine/plan.md +0 -0
  239. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/016-harden-state-machine/research.md +0 -0
  240. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/016-harden-state-machine/spec.md +0 -0
  241. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/016-harden-state-machine/tasks.md +0 -0
  242. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/017-fix-robustness-issues/checklists/requirements.md +0 -0
  243. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/017-fix-robustness-issues/plan.md +0 -0
  244. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/017-fix-robustness-issues/research.md +0 -0
  245. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/017-fix-robustness-issues/spec.md +0 -0
  246. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/017-fix-robustness-issues/tasks.md +0 -0
  247. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/018-fix-final-robustness/spec.md +0 -0
  248. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/019-quality-hardening/checklists/requirements.md +0 -0
  249. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/019-quality-hardening/data-model.md +0 -0
  250. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/019-quality-hardening/plan.md +0 -0
  251. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/019-quality-hardening/research.md +0 -0
  252. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/019-quality-hardening/spec.md +0 -0
  253. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/019-quality-hardening/tasks.md +0 -0
  254. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/020-migrate-speckit/checklists/requirements.md +0 -0
  255. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/020-migrate-speckit/data-model.md +0 -0
  256. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/020-migrate-speckit/plan.md +0 -0
  257. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/020-migrate-speckit/quickstart.md +0 -0
  258. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/020-migrate-speckit/research.md +0 -0
  259. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/020-migrate-speckit/spec.md +0 -0
  260. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/020-migrate-speckit/tasks.md +0 -0
  261. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/021-review-iterations/checklists/requirements.md +0 -0
  262. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/021-review-iterations/plan.md +0 -0
  263. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/021-review-iterations/research.md +0 -0
  264. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/021-review-iterations/spec.md +0 -0
  265. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/021-review-iterations/tasks.md +0 -0
  266. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/022-fix-regen-command/checklists/requirements.md +0 -0
  267. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/022-fix-regen-command/plan.md +0 -0
  268. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/022-fix-regen-command/research.md +0 -0
  269. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/022-fix-regen-command/spec.md +0 -0
  270. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/022-fix-regen-command/tasks.md +0 -0
  271. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/023-add-logging/checklists/requirements.md +0 -0
  272. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/023-add-logging/plan.md +0 -0
  273. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/023-add-logging/research.md +0 -0
  274. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/023-add-logging/spec.md +0 -0
  275. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/023-add-logging/tasks.md +0 -0
  276. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/024-validate-constants/checklists/requirements.md +0 -0
  277. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/024-validate-constants/plan.md +0 -0
  278. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/024-validate-constants/research.md +0 -0
  279. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/024-validate-constants/spec.md +0 -0
  280. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/024-validate-constants/tasks.md +0 -0
  281. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/025-harden-tests/checklists/requirements.md +0 -0
  282. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/025-harden-tests/plan.md +0 -0
  283. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/025-harden-tests/research.md +0 -0
  284. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/025-harden-tests/spec.md +0 -0
  285. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/025-harden-tests/tasks.md +0 -0
  286. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/027-pipeline-auto-execution/checklists/requirements.md +0 -0
  287. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/027-pipeline-auto-execution/contracts/orchestrator-contract.md +0 -0
  288. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/027-pipeline-auto-execution/data-model.md +0 -0
  289. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/027-pipeline-auto-execution/plan.md +0 -0
  290. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/027-pipeline-auto-execution/quickstart.md +0 -0
  291. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/027-pipeline-auto-execution/research.md +0 -0
  292. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/027-pipeline-auto-execution/spec.md +0 -0
  293. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/specs/027-pipeline-auto-execution/tasks.md +0 -0
  294. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/templates/agent-file-template.md +0 -0
  295. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/templates/checklist-template.md +0 -0
  296. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/templates/constitution-template.md +0 -0
  297. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/templates/plan-template.md +0 -0
  298. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/templates/spec-template-brownfield.md +0 -0
  299. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/templates/spec-template-greenfield.md +0 -0
  300. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/templates/spec-template-microservices.md +0 -0
  301. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/templates/spec-template.md +0 -0
  302. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/.specify/templates/tasks-template.md +0 -0
  303. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/CONTRIBUTING.md +0 -0
  304. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/LICENSE +0 -0
  305. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/commands/devflow.context.md +0 -0
  306. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/commands/devflow.extension.md +0 -0
  307. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/commands/devflow.init.md +0 -0
  308. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/commands/devflow.regen.md +0 -0
  309. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/commands/devflow.status.md +0 -0
  310. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/docs/cursor-guide.md +0 -0
  311. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/docs/index.md +0 -0
  312. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/docs/releases/4.0.0.md +0 -0
  313. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/docs/releases/4.0.1.md +0 -0
  314. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/docs/spec-driven.md +0 -0
  315. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/extensions/EXTENSION-API-REFERENCE.md +0 -0
  316. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/extensions/catalog.community.json +0 -0
  317. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/extensions/catalog.json +0 -0
  318. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/extensions/template/example-command.md +0 -0
  319. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/extensions/template/example-extension.json +0 -0
  320. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/adapters/__init__.py +0 -0
  321. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/adapters/linear.py +0 -0
  322. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/commands/__init__.py +0 -0
  323. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/commands/context.py +0 -0
  324. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/commands/docs_sync.py +0 -0
  325. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/commands/export_cmd.py +0 -0
  326. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/commands/extension.py +0 -0
  327. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/commands/hooks_cmd.py +0 -0
  328. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/commands/init_cmd.py +0 -0
  329. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/commands/linear.py +0 -0
  330. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/commands/stale.py +0 -0
  331. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/commands/traceability.py +0 -0
  332. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/__init__.py +0 -0
  333. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/catalog.py +0 -0
  334. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/git.py +0 -0
  335. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/hooks.py +0 -0
  336. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/installer.py +0 -0
  337. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/redaction.py +0 -0
  338. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/scanner.py +0 -0
  339. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/staleness.py +0 -0
  340. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/traceability.py +0 -0
  341. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/core/waivers.py +0 -0
  342. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/utils/__init__.py +0 -0
  343. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/utils/console.py +0 -0
  344. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/utils/logging.py +0 -0
  345. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/src/devflow_cli/utils/strings.py +0 -0
  346. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/templates/agent-context-template.md +0 -0
  347. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/templates/constitution-template.md +0 -0
  348. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/templates/contracts/README-template.md +0 -0
  349. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/templates/contracts/api-template.md +0 -0
  350. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/templates/contracts/components-template.md +0 -0
  351. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/templates/contracts/interfaces-template.md +0 -0
  352. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/templates/contracts/services-template.md +0 -0
  353. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/templates/contracts-template.md +0 -0
  354. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/templates/data-model-template.md +0 -0
  355. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/templates/devflow-hooks-template.yml +0 -0
  356. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/templates/extension-manifest-template.json +0 -0
  357. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/templates/quickstart-template.md +0 -0
  358. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/templates/research-template.md +0 -0
  359. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/templates/spec-template.md +0 -0
  360. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/templates/tasks-template.md +0 -0
  361. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/fixtures/agents/mock-agent.md +0 -0
  362. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/fixtures/commands/mock-command.md +0 -0
  363. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/fixtures/mock-catalog.json +0 -0
  364. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/run-tests.sh +0 -0
  365. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test-helpers.sh +0 -0
  366. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test-template-variants.sh +0 -0
  367. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_assessment.py +0 -0
  368. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_bash_runner.py +0 -0
  369. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_catalog.py +0 -0
  370. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_cmd_context.py +0 -0
  371. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_cmd_docs_sync.py +0 -0
  372. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_cmd_extension.py +0 -0
  373. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_cmd_hooks.py +0 -0
  374. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_cmd_init.py +0 -0
  375. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_cmd_linear.py +0 -0
  376. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_cmd_stale.py +0 -0
  377. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_cmd_traceability.py +0 -0
  378. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_constants.py +0 -0
  379. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_context.py +0 -0
  380. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_git.py +0 -0
  381. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_hooks.py +0 -0
  382. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_installer.py +0 -0
  383. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_linear_adapter.py +0 -0
  384. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_linear_order.py +0 -0
  385. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_logging.py +0 -0
  386. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_paths.py +0 -0
  387. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_paths_project_root.py +0 -0
  388. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_scanner.py +0 -0
  389. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_staleness.py +0 -0
  390. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_traceability.py +0 -0
  391. {devflow_cli-4.0.2 → devflow_cli-6.1.0}/tests/test_version.py +0 -0
@@ -0,0 +1,88 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags: ["v*"]
6
+
7
+ jobs:
8
+ validate:
9
+ runs-on: ubuntu-latest
10
+ permissions:
11
+ contents: read
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+
15
+ - name: Setup uv
16
+ uses: astral-sh/setup-uv@v4
17
+ with:
18
+ version: "latest"
19
+
20
+ - name: Setup Python
21
+ run: uv python install 3.12
22
+
23
+ - name: Check tag, version and main commit
24
+ env:
25
+ RELEASE_TAG: ${{ github.ref_name }}
26
+ RELEASE_SHA: ${{ github.sha }}
27
+ run: |
28
+ main_sha="$(git ls-remote origin refs/heads/main | cut -f1)"
29
+ uv run --no-project --python 3.12 python scripts/check_release.py \
30
+ --tag "$RELEASE_TAG" --head-sha "$RELEASE_SHA" --main-sha "$main_sha"
31
+
32
+ test:
33
+ needs: validate
34
+ runs-on: ubuntu-latest
35
+ permissions:
36
+ contents: read
37
+ strategy:
38
+ matrix:
39
+ python-version: ["3.11", "3.12"]
40
+ steps:
41
+ - uses: actions/checkout@v4
42
+
43
+ - name: Setup uv
44
+ uses: astral-sh/setup-uv@v4
45
+ with:
46
+ version: "latest"
47
+
48
+ - name: Setup Python ${{ matrix.python-version }}
49
+ run: uv python install ${{ matrix.python-version }}
50
+
51
+ - name: Create venv and install dependencies
52
+ run: |
53
+ uv venv --python ${{ matrix.python-version }}
54
+ uv pip install -e ".[dev]"
55
+
56
+ - name: Run tests
57
+ run: uv run pytest tests/ -v --ignore=tests/test_wheel_adaptive_acceptance.py
58
+
59
+ - name: Run installed-wheel adaptive acceptance
60
+ run: uv run pytest tests/test_wheel_adaptive_acceptance.py -v
61
+
62
+ - name: Check generated documentation
63
+ run: uv run devflow docs-sync --check
64
+
65
+ - name: Run bash tests
66
+ run: ./tests/run-tests.sh
67
+
68
+ publish:
69
+ needs: test
70
+ runs-on: ubuntu-latest
71
+ environment: pypi
72
+ permissions:
73
+ id-token: write
74
+ contents: read
75
+
76
+ steps:
77
+ - uses: actions/checkout@v4
78
+
79
+ - name: Setup uv
80
+ uses: astral-sh/setup-uv@v4
81
+ with:
82
+ version: "latest"
83
+
84
+ - name: Build package
85
+ run: uv build
86
+
87
+ - name: Publish to PyPI
88
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -13,3 +13,4 @@ venv/
13
13
  .coverage
14
14
  .devflow/
15
15
  .state.lock
16
+ .idea/
@@ -5,6 +5,114 @@ 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
+ ## [6.1.0] - 2026-09-24
9
+
10
+ Mesure de consommation des agents : voir [notes de version](docs/releases/6.1.0.md).
11
+
12
+ ### Added
13
+
14
+ - Télémétrie locale de consommation : chaque tentative `adaptive run` ajoute
15
+ une ligne à `~/.devflow/telemetry.jsonl` (tokens, tours, modèle, coût
16
+ équivalent API Claude, deltas de quota Codex), sans prompt ni contenu.
17
+ Désactivable avec `DEVFLOW_TELEMETRY=0`.
18
+ - `devflow usage` résume ces tentatives par activité, profil, agent, modèle ou
19
+ projet, avec `--since`, `--project` et `--json`.
20
+ - `agent-execution.json` porte le `runId` de la tentative correspondante.
21
+
22
+ ## [6.0.0] - 2026-09-24
23
+
24
+ Retours d'usage k-review traités : voir [v6-decisions.md](docs/v6-decisions.md).
25
+
26
+ ### Added
27
+
28
+ - Le parcours adaptatif peut enchaîner les activités jusqu'à un jalon demandé.
29
+ - En profil `critical`, `research` et `contracts` peuvent être omises si `risk-assessment` le recommande, avec décision nominative, motif audité et confirmation obligatoire lors de la revue. Les gates de sécurité, vérification et rollback restent obligatoires.
30
+
31
+ ### Fixed
32
+
33
+ - Les résultats d'activité rejetés peuvent être réconciliés après contrôle de la trace et des fichiers.
34
+ - Les preuves de revue expirent après une modification pertinente, et la fraîcheur des preuves de tests ne dépend plus des seuls changements documentaires.
35
+ - Les diagnostics du runner et de la vérification rendent explicites les causes des refus et des indisponibilités.
36
+ - `adaptive reconcile --result` n'est accepté que si la trace de l'agent ne contient aucune réponse exploitable pour le contrat courant.
37
+ - `devflow upgrade` met à jour les commandes `devflow*.md` installées, jusqu'ici jamais rafraîchies ; une commande modifiée localement ou sans empreinte d'installation n'est remplacée qu'après confirmation, avec une copie `.bak`.
38
+ - `adaptive approve-command` affiche la commande exacte, son répertoire et le motif du plan, puis demande confirmation ; `--yes` approuve sans terminal.
39
+ - Une tentative refusée dont les fichiers ont changé ne bloque plus définitivement l'activité : `run` renvoie `stale-attempt` et `adaptive discard-attempt` l'abandonne avec archive et journal d'audit.
40
+
41
+ ### Changed
42
+
43
+ - **Rupture de compatibilité.** `adaptive complete` refuse `prepare`, les activités documentaires et `implement`, qui ne progressent plus que par `adaptive run` ou `adaptive reconcile` afin que leur résultat et leurs mutations soient validés.
44
+ - **Rupture de compatibilité.** Sur une feature adaptative, `devflow verify` exécute la vérification adaptative et fait progresser l'état ; `--allow-command` y est refusé au profit de `adaptive approve-command`.
45
+ - La publication vérifie la correspondance du tag, des versions distribuées et de la pointe de `main`, puis rejoue la matrice Python, la documentation générée et les tests shell avant PyPI.
46
+
47
+ ## [5.0.0] - 2026-09-13
48
+
49
+ ### Added
50
+
51
+ - Le besoin est un fichier obligatoire, `need.md`, dans le dossier de la feature (F-004). `adaptive start` refuse de démarrer sans lui, le runner le revérifie avant chaque activité, `adaptive contract` refuse de produire un contrat portable sans lui, et chaque contrat le cite en première entrée avec une contrainte le déclarant prioritaire sur le résumé de l'assessment, jusqu'ici seule description du besoin transmise à l'agent.
52
+ - Les preuves collectées par `verify` enregistrent l'empreinte de HEAD et des fichiers modifiés, hors dossier de la feature (F-013). Une preuve dont le code a changé depuis est affichée `passed (stale)` par `adaptive status`, et `review`, `rollback-check` et `done` refusent de se terminer sur elle. `devflow adaptive verify ISSUE_ID --refresh` rejoue la collecte d'un `verify` déjà complété sans changer d'activité. Un état git inobservable ne rend aucune preuve périmée.
53
+ - `devflow adaptive review ISSUE_ID --by NOM --report FICHIER` enregistre une revue humaine pendant `review` ou `rollback-check` (F-012). Le résultat est construit au schéma de la revue agent et soumis à la même validation ; la preuve porte la source `human` et le nom du relecteur. Les preuves de jugement acceptent désormais `agent`, `reconciled` ou `human` ; les preuves mesurées restent réservées à `devflow`.
54
+ - `devflow adaptive reconcile ISSUE_ID` valide sans relancer l'agent le travail d'une tentative échouée (F-002, F-003). À l'échec, Devflow consigne `<activity>-attempt.json` (contrat, agent, HEAD, branche, empreintes des fichiers modifiés, périmètre reporté) ; la réconciliation vérifie que rien n'a changé, extrait la réponse finale de la trace avec l'adaptateur et rejoue la validation de `adaptive run`. Les preuves acceptées portent la source `reconciled`.
55
+
56
+ ### Fixed
57
+
58
+ - Le contrat d'`implement` n'invente plus de remédiation (F-009). Chaque activité écrit désormais son propre `<activity>-result.json` (`implement-result.json`, `verify-result.json`…) au lieu d'un `activity-result.json` partagé et écrasé ; le périmètre reporté n'est lu que depuis un résultat dont le `contractId` provient d'`implement`.
59
+ - `verify` ne reconstruit plus le résultat d'`implement` depuis sa trace brute (F-011) : la trace `*-result.raw.txt` n'est jamais une source de résultat.
60
+
61
+ ### Changed
62
+
63
+ - Un échec agent affiche la dernière erreur émise au lieu de la première, et un échec dû au quota, à l'authentification ou au réseau devient `agent-unavailable` (code de sortie 8, nouveau) : l'activité reste courante et la reprise guidée propose `check --live`, `reconcile` et les autres agents (F-003, F-007, F-008). L'heure de reprise n'est pas extraite : aucun format stable n'est publié par les agents.
64
+ - `devflow check --ai codex|claude-code --live` effectue un appel réel minimal à l'agent : la présence du binaire ne prouve pas qu'il répond. En cas d'échec, la cause affichée est la dernière erreur émise, classée en quota, authentification ou réseau quand elle est reconnue (F-007). L'option consomme du quota et n'est pas active par défaut.
65
+ - `devflow adaptive complete ISSUE_ID` complète l'activité courante quand l'activité n'est pas précisée ; une activité fournie qui diffère de l'activité courante reste refusée (F-005).
66
+ - `devflow feature` génère dans le dossier de la feature un `.gitignore` excluant `*.raw.txt` : les traces brutes d'agent, qui peuvent recopier le contenu des fichiers lus, ne sont plus versionnées par défaut (F-010).
67
+ - Les sources acceptées par chaque preuve sont décrites par une table unique (`accepted_evidence_sources`), appliquée à l'identique par `complete` et par la relecture de l'état.
68
+ - Une preuve de source `agent` enregistre le nom de l'agent qui l'a produite, affiché par `adaptive status`.
69
+ - La commande suggérée après une activité reprend le dernier agent réellement exécuté (`agent-execution.json`) au lieu de `--agent codex` en dur ; sans exécution antérieure, elle affiche `--agent AGENT` (F-006).
70
+
71
+ ### Removed
72
+
73
+ - **Rupture de compatibilité (ADR-0002).** Devflow 5 ne lit plus que ses propres schémas : `assessment` v3, `workflow-state` v4, `activity-contract` v3. Les schémas `assessment` v1/v2, `workflow-state` v2/v3 et `activity-contract` v1/v2, leurs lecteurs, `devflow adaptive migrate` et `devflow migrate` sont supprimés. Un workflow créé par une version antérieure est refusé avec un diagnostic « devflow < 5 » ; il se termine sous devflow 4.x.
74
+
75
+ ## [4.0.8] - 2026-08-29
76
+
77
+ ### Fixed
78
+
79
+ - Une review qui rapporte les preuves de référence qu'elle a contrôlées ne réécrit plus leur origine. Le runner enregistrait toute preuve présente dans le résultat avec `source=agent`, y compris celles produites par `verify` : leur `source=devflow` était écrasée, l'invariant de la gate `verify` rompu, et l'état devenait illisible avec « invariants métier incohérents » — juste après une review pourtant validée. Seule la preuve propre à l'activité est désormais enregistrée. Régression introduite par 4.0.7, qui autorisait ce rapport sans en tirer la conséquence côté écriture.
80
+
81
+ ## [4.0.7] - 2026-08-29
82
+
83
+ ### Fixed
84
+
85
+ - La review peut rapporter les preuves de référence que son propre contrat lui demande de contrôler. Le contrat impose de traiter les preuves `source=devflow` déjà validées par `verify` comme résultats d'exécution de référence et de « contrôler leur contenu, leur actualité et leur adéquation » ; un agent qui s'y conformait voyait ensuite son résultat refusé avec `preuves inattendues`. La règle n'étant évaluée que sur un résultat `completed`, la contradiction restait invisible tant qu'une review continuait à trouver de vrais défauts. Les preuves du profil actif sont désormais acceptées aux côtés de la preuve de review ; celles étrangères au profil restent refusées, et la preuve de review reste requise en `passed`.
86
+
87
+ ## [4.0.6] - 2026-08-28
88
+
89
+ ### Fixed
90
+
91
+ - Le contrat d'activité énonce les deux règles que ses validateurs appliquaient sans les dire : cohérence `status`/`exitCode` des `checks`, et interdiction du mode silencieux sur les commandes de test Maven. Un agent ne pouvait les découvrir que par le refus, qui ne lui est jamais transmis lors d'une relance.
92
+
93
+ ## [4.0.5] - 2026-08-27
94
+
95
+ ### Fixed
96
+
97
+ - Une commande de test Maven silencieuse (`-q`, `--quiet`) est refusée à l'écriture du plan, au lieu de produire une validation que la gate `verify` rejette forcément faute de bilan de tests lisible.
98
+ - Les validations Maven générées automatiquement par Devflow n'utilisent plus `-q` : leur bilan de tests était jusqu'ici illisible, donc systématiquement refusé par la vérification automatique.
99
+
100
+ ## [4.0.4] - 2026-08-27
101
+
102
+ ### Fixed
103
+
104
+ - Le périmètre d'implémentation reporté survit à une réouverture visant une activité située avant `implement`, au lieu d'être perdu et de faire échouer la reprise en `no-worktree-change`.
105
+ - Un fichier reporté n'est retenu que s'il est encore réellement modifié dans le working tree, afin qu'un périmètre devenu fantôme ne valide aucune activité.
106
+
107
+ ## [4.0.3] - 2026-08-27
108
+
109
+ ### Fixed
110
+
111
+ - Codex est exécuté en mode événements : sa réponse finale est récupérée depuis le flux lorsque `--output-last-message` reste absent ou vide, au lieu de bloquer l'activité.
112
+ - Le flux d'événements Codex devient la trace d'exécution conservée dans `*-result.raw.txt`, que la reprise guidée désigne explicitement.
113
+ - Un tour Codex interrompu est catégorisé `agent-turn-failed` et l'identifiant de session provient de l'événement `thread.started`.
114
+ - Les agents n'héritent plus de l'entrée standard, qui pouvait être ajoutée au prompt du contrat ou bloquer l'exécution jusqu'au timeout.
115
+
8
116
  ## [4.0.2] - 2026-08-27
9
117
 
10
118
  ### Fixed
@@ -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 → 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.
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 route par défaut et `workflow-state.json` porte la progression, les preuves et les éventuelles omissions justifiées de research ou contracts dans critical.
9
9
  <!-- devflow:pipeline:end -->
10
10
 
11
11
  ## Commandes de développement
@@ -0,0 +1,176 @@
1
+ # Retours d'usage devflow
2
+
3
+ Observés en conditions réelles. Chaque entrée : ce qui s'est passé, pourquoi ça coûte, une piste.
4
+ Les décisions t'appartiennent. Classement par gravité.
5
+
6
+ Retours précédents traités en 5.0.0 : voir `docs/v5-decisions.md`. Ceux de la série suivante en
7
+ 6.0.0 : voir `docs/v6-decisions.md`.
8
+
9
+ **Contexte des retours ci-dessous.** Projet k-review, trois parcours conduits les 23 et 24 septembre
10
+ 2026 : KKS-368 `deep`, KKS-369 `deep`, KKS-370 `standard`. Point de vue : celui du superviseur
11
+ (Claude), qui enchaîne les activités, rédige lui-même les artefacts, délègue l'implémentation à des
12
+ agents et répare les rejets.
13
+
14
+ **Réserve à lire avant tout.** Ces parcours ont été conduits avec la **CLI v5.0.0** : la 6.0.0 a été
15
+ publiée alors que le dernier se terminait. Chaque entrée ci-dessous a donc été **revérifiée contre le
16
+ code de la 6.0.0** avant d'être écrite, et celles que la 6.0.0 corrige déjà ne figurent pas dans les
17
+ sections de gravité — elles sont rassemblées en fin de document, à titre de confirmation.
18
+
19
+ ---
20
+
21
+ ## 1. Majeur
22
+
23
+ ### M1 — Le profil `standard` n'a aucune activité de revue
24
+
25
+ **Ce qui s'est passé.** KKS-370 a été évalué `standard` : `assess → prepare → preflight-evidence →
26
+ implement → verify → done`. Il n'y a **pas d'activité `review`**, et la preuve `implementation-review`
27
+ n'est pas requise — contrairement au profil `deep`, où les deux existent.
28
+
29
+ Or ce lot modifiait `app.html`, le gabarit du **shell partagé par les quatre écrans** de
30
+ l'application, en changeant l'ordre du DOM. Une régression y aurait été visible partout à la fois. Le
31
+ projet impose par ailleurs deux revues d'agent avant chaque commit ; elles ont été jouées, mais
32
+ **hors du parcours**, sans point d'ancrage ni trace dans l'état du workflow.
33
+
34
+ **Pourquoi ça coûte.** La rigueur de revue est indexée sur le profil, donc sur l'ampleur estimée du
35
+ changement, et non sur le **risque de ce qui est touché**. Un lot `standard` qui modifie un composant
36
+ partagé est moins contrôlé qu'un lot `deep` qui ajoute un fichier isolé. Le commit a lieu dans les
37
+ deux cas, et rien dans les artefacts ne dit qu'une revue a eu lieu : `done` se complète sans elle.
38
+
39
+ **Piste.** Permettre au `risk-assessment` de **recommander l'ajout** d'une activité `review` à un
40
+ profil qui ne la porte pas, symétriquement à l'omission introduite en 6.0.0 pour `critical`
41
+ (`adaptive omit`). Ou rendre `implementation-review` exigible dès qu'un fichier du périmètre est
42
+ partagé par plusieurs modules. À défaut, un `adaptive review` accepté en `standard` pour consigner
43
+ une revue qui a eu lieu, même sans activité dédiée.
44
+
45
+ ### M2 — Le plafond de dix commandes n'est pas dans la politique injectée
46
+
47
+ **Ce qui s'est passé.** `activity_contracts.py:788` refuse tout `validationPlan` de plus de dix
48
+ commandes : `validationPlan doit contenir entre 1 et 10 commandes`. La politique exposée aux agents
49
+ par `validation_policy_guidance()` (`verification.py:70`) énumère les exécutables autorisés, les
50
+ tâches Maven et Gradle, les opérateurs interdits, l'approbation des exécutables hors liste et la
51
+ consigne sur `git ls-files` — **mais pas ce plafond**.
52
+
53
+ Sur KKS-368, le plan comptait onze validations, toutes légitimes et distinctes. Le refus est arrivé à
54
+ `verify`, après rédaction du plan **et** du document qui le décrit.
55
+
56
+ **Pourquoi ça coûte.** Ce n'est pas seulement une commande à retirer : il faut en **fusionner** deux
57
+ qui portaient des garanties différentes, puis amender le document de plan pour qu'aucun écart ne
58
+ subsiste entre ce qui est écrit et ce qui s'exécute. Le retour de M1 de la série précédente — « la
59
+ politique n'est connue qu'après coup » — a été traité, mais cette contrainte-là y a échappé, alors
60
+ qu'elle est la plus facile à énoncer.
61
+
62
+ **Piste.** Ajouter une ligne à `validation_policy_guidance()` : « le validationPlan contient entre 1
63
+ et 10 commandes ; regrouper plutôt qu'énumérer ». Une seule phrase ferme le sujet.
64
+
65
+ ---
66
+
67
+ ## 2. Mineur
68
+
69
+ ### m1 — `adaptive review` complète l'activité, et son nom ne le dit pas
70
+
71
+ **Ce qui s'est passé.** Sur KKS-369, `adaptive review` rend : « Revue humaine de … validée pour
72
+ 'review'. **Prochaine : done** ». L'enchaînement naturel, `adaptive complete KKS-369 review`, échoue
73
+ alors avec « activité courante attendue : done ».
74
+
75
+ **Pourquoi ça coûte.** Un aller-retour et un doute : on ne sait pas si la revue a été prise en compte
76
+ ou si l'on a sauté une étape. Le verbe `review` suggère d'enregistrer une revue, pas de terminer
77
+ l'activité.
78
+
79
+ **Piste.** Le message de succès pourrait dire que l'activité est complétée, pas seulement quelle est
80
+ la suivante : « Revue enregistrée, activité 'review' complétée. Prochaine : done ».
81
+
82
+ ### m2 — Le format `evidence` des résultats est accepté sans être compris
83
+
84
+ **Ce qui s'est passé.** Les `*-result.json` acceptent un tableau `evidence`. Un objet de la forme
85
+ `{id, kind, summary, path}` passe la validation du résultat **sans erreur**, mais ne compte comme
86
+ aucune preuve : `complete review` a refusé avec « preuves manquantes : implementation-review » alors
87
+ qu'une entrée portant `"id": "implementation-review"` figurait dans le fichier. Le format reconnu est
88
+ `{id, outcome, report}`, et l'`id` doit être le **nom du type de preuve attendu**.
89
+
90
+ **Pourquoi ça coûte.** Le message de refus décrit l'état des preuves, pas ce qui a été lu dans le
91
+ fichier. On corrige le format à l'aveugle, on relance, on échoue encore — jusqu'à aller lire un
92
+ `workflow-state.json` d'un lot précédent pour en déduire la forme attendue.
93
+
94
+ **Piste.** Signaler les entrées `evidence` non reconnues au moment de la complétion, avec la forme
95
+ attendue : « entrée ignorée : clés {kind, summary, path} ; attendu {id, outcome, report} ».
96
+
97
+ ### m3 — Le porteur du `validationPlan` change avec le profil, sans être annoncé
98
+
99
+ **Ce qui s'est passé.** En `standard`, le `validationPlan` va dans `prepare-result.json`. En `deep`,
100
+ il n'y a pas d'activité `prepare` : c'est `plan-result.json` qui doit le porter. Son absence ne se
101
+ manifeste qu'à `verify`, par `invalid-preparation-result` — un code dont le nom désigne une activité
102
+ qui n'existe pas dans ce profil.
103
+
104
+ **Pourquoi ça coûte.** Le message n'indique pas quel fichier remplir, et son intitulé oriente vers la
105
+ mauvaise piste. Sur KKS-368, la cause n'a été trouvée qu'en comparant avec le dossier d'un lot
106
+ antérieur conduit sous un autre profil.
107
+
108
+ **Piste.** Nommer le fichier attendu dans le refus : « validationPlan absent de plan-result.json
109
+ (profil deep : pas d'activité prepare) ». Le contrat d'activité pourrait aussi le rappeler, puisqu'il
110
+ demande déjà « un validationPlan exécutable et portable est fourni » sans dire où.
111
+
112
+ ---
113
+
114
+ ## 3. Hors outil, mais rencontré en le pilotant
115
+
116
+ ### h1 — Rien n'oblige une conclusion d'absence à se prouver
117
+
118
+ **Ce qui s'est passé.** KKS-370 était un lot d'audit : son premier temps produisait un constat, le
119
+ second corrigeait. Le constat a conclu deux fois à une **absence** — « aucune gestion de mise à jour
120
+ du service worker n'existe », « aucun renvoi au principe de couleur dans le code ». Les deux étaient
121
+ faux. Un service complet existait depuis quatre lots ; il y avait trois renvois. Les deux erreurs
122
+ venaient de recherches dont la sortie avait été tronquée.
123
+
124
+ Ces faux constats sont entrés dans `audit.md`, puis dans le périmètre, puis dans les instructions
125
+ données à un agent d'implémentation — qui a refusé d'écrire le code et a corrigé le superviseur. Un
126
+ arbitrage a été demandé à l'utilisateur pour un travail sans objet.
127
+
128
+ **Pourquoi ça coûte.** L'activité `preflight-evidence` demande des « faits observés » et vérifie que
129
+ les sections existent, mais ne distingue pas un fait **positif** — mesuré, reproductible — d'une
130
+ **absence constatée**, qui n'est un fait que si la recherche était exhaustive. Une absence mal établie
131
+ se propage plus loin qu'une mesure fausse, parce qu'elle justifie de **construire** quelque chose.
132
+
133
+ **Piste.** Dans le contrat de `preflight-evidence`, demander que toute affirmation d'absence cite la
134
+ commande qui l'établit, et que cette commande figure dans la section de reproductibilité. C'est une
135
+ consigne, pas un contrôle — mais elle aurait suffi ici : écrire la commande aurait exposé le `head`
136
+ qui la tronquait.
137
+
138
+ ---
139
+
140
+ ## 4. Ce que la 6.0.0 corrige, vérifié
141
+
142
+ Ces points figuraient dans mes retours précédents ou ont été rencontrés en v5.0.0 pendant ces
143
+ parcours. Ils sont **résolus**, et je les note pour fermer la boucle plutôt que pour demander quoi que
144
+ ce soit.
145
+
146
+ - **m4, preuves `manual` refusées.** `adaptive evidence --help` annonce désormais « Enregistre une
147
+ preuve manuelle informative, **sans ouvrir les gates** ». En v5.0.0, la commande acceptait
148
+ l'enregistrement puis la complétion échouait avec « preuves automatiques valides requises », sans
149
+ jamais nommer `adaptive review`. L'aide actuelle aurait évité l'aller-retour.
150
+ - **M6, messages sans cible.** Le refus `regression-check-failed (PREP-conflit-plus-non-tranche)`
151
+ nomme l'identifiant exact de la validation fautive, en première ligne. J'ai trouvé la cause
152
+ immédiatement — c'était une validation que j'avais moi-même mal conçue.
153
+ - **M1, politique connue après coup.** Les sections requises sont nommées dans le refus : « sections
154
+ de pré-vol manquantes : faits observés, reproductibilité, limites ». Trois mots suffisent à
155
+ corriger.
156
+ - **Le refus de réduire un profil recommandé** reste strict, et c'est bien. Déclarer
157
+ `--contract-change` sur une route ajoutée fait recommander `deep` ; `--profile standard` est
158
+ refusé. Le contourner en retirant le drapeau marcherait, et mentirait sur la nature du changement.
159
+ Le garde-fou tient exactement là où il doit tenir.
160
+ - **`devflow traceability`** joué avant de compléter `tasks` rend la couverture des exigences par les
161
+ tâches en une seconde. Deux écarts rattrapés sur KKS-369 à ce moment-là plutôt qu'à la revue.
162
+
163
+ ---
164
+
165
+ ## Priorités suggérées
166
+
167
+ 1. **M2** — une phrase dans `validation_policy_guidance()`. Coût nul, évite un rejet tardif et une
168
+ réécriture de document.
169
+ 2. **m3** — nommer le fichier attendu dans le refus `invalid-preparation-result`. Coût nul, supprime
170
+ la recherche à l'aveugle.
171
+ 3. **M1** — la revue absente du profil `standard` est le seul point qui touche la qualité du résultat
172
+ plutôt que le confort du pilote. C'est aussi le plus lourd à trancher : il engage la définition des
173
+ profils.
174
+ 4. **m2** et **m1** — messages, à traiter quand l'occasion se présente.
175
+ 5. **h1** — une consigne de contrat, si l'idée te paraît juste. Elle sort du périmètre habituel de
176
+ l'outil, et je la propose sans insister.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: devflow-cli
3
- Version: 4.0.2
3
+ Version: 6.1.0
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
@@ -57,6 +57,7 @@ Python 3.11+ et Git sont requis. `--ai` accepte `codex`, `claude-code` ou
57
57
 
58
58
  ```bash
59
59
  devflow feature KS-123 --short-name user-auth
60
+ # Décrire le besoin dans need.md, dans le dossier de la feature créé
60
61
  devflow assess KS-123 --scope multiple --ambiguity medium --risk medium
61
62
  devflow adaptive start KS-123
62
63
  devflow adaptive run KS-123 --agent codex
@@ -73,7 +74,7 @@ Chaque invocation de `adaptive run` traite une activité. La politique est dans
73
74
  `workflow-state.json`. Les résultats agent sont validés par schéma et les
74
75
  preuves d’exécution sensibles sont produites localement par Devflow.
75
76
 
76
- En V4, chaque profil exécute `preflight-evidence` avant `implement`. Cette
77
+ Chaque profil exécute `preflight-evidence` avant `implement`. Cette
77
78
  activité archive des faits externes reproductibles dans
78
79
  `preflight-evidence.md`, sans secret ni donnée utilisateur.
79
80
 
@@ -85,29 +86,13 @@ devflow adaptive run KS-123 --agent claude
85
86
  devflow adaptive run KS-123 --agent cursor
86
87
  ```
87
88
 
88
- ## Migrer une ancienne feature
89
+ ## Features créées avant devflow 5
89
90
 
90
- Pour un workflow adaptatif V3 déjà persisté :
91
+ Devflow 5 ne lit que ses propres schémas et ne fournit aucune migration : un
92
+ `assessment.json`, un `workflow-state.json` ou un `state.json` créé par une
93
+ version antérieure est refusé. Terminez ces features avec devflow 4.x avant la
94
+ mise à jour. Voir [ADR-0002](docs/adr/0002-v5-rupture-and-provenance.md).
91
95
 
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
-
103
- ```bash
104
- devflow migrate KS-123 --dry-run
105
- devflow migrate KS-123 --profile deep
106
- ```
107
-
108
- La migration conserve les artefacts, archive `state.json` sous
109
- `legacy-state.json`, puis redémarre à la première activité vérifiable du profil.
110
- Sans identifiant, `devflow migrate` traite toutes les anciennes features.
111
96
  `devflow init` et `devflow upgrade` déplacent également les anciennes commandes
112
97
  Claude connues vers `~/.claude/.devflow-legacy-backup/` sans toucher aux
113
98
  commandes personnalisées.
@@ -29,6 +29,7 @@ Python 3.11+ et Git sont requis. `--ai` accepte `codex`, `claude-code` ou
29
29
 
30
30
  ```bash
31
31
  devflow feature KS-123 --short-name user-auth
32
+ # Décrire le besoin dans need.md, dans le dossier de la feature créé
32
33
  devflow assess KS-123 --scope multiple --ambiguity medium --risk medium
33
34
  devflow adaptive start KS-123
34
35
  devflow adaptive run KS-123 --agent codex
@@ -45,7 +46,7 @@ Chaque invocation de `adaptive run` traite une activité. La politique est dans
45
46
  `workflow-state.json`. Les résultats agent sont validés par schéma et les
46
47
  preuves d’exécution sensibles sont produites localement par Devflow.
47
48
 
48
- En V4, chaque profil exécute `preflight-evidence` avant `implement`. Cette
49
+ Chaque profil exécute `preflight-evidence` avant `implement`. Cette
49
50
  activité archive des faits externes reproductibles dans
50
51
  `preflight-evidence.md`, sans secret ni donnée utilisateur.
51
52
 
@@ -57,29 +58,13 @@ devflow adaptive run KS-123 --agent claude
57
58
  devflow adaptive run KS-123 --agent cursor
58
59
  ```
59
60
 
60
- ## Migrer une ancienne feature
61
+ ## Features créées avant devflow 5
61
62
 
62
- Pour un workflow adaptatif V3 déjà persisté :
63
+ Devflow 5 ne lit que ses propres schémas et ne fournit aucune migration : un
64
+ `assessment.json`, un `workflow-state.json` ou un `state.json` créé par une
65
+ version antérieure est refusé. Terminez ces features avec devflow 4.x avant la
66
+ mise à jour. Voir [ADR-0002](docs/adr/0002-v5-rupture-and-provenance.md).
63
67
 
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
-
75
- ```bash
76
- devflow migrate KS-123 --dry-run
77
- devflow migrate KS-123 --profile deep
78
- ```
79
-
80
- La migration conserve les artefacts, archive `state.json` sous
81
- `legacy-state.json`, puis redémarre à la première activité vérifiable du profil.
82
- Sans identifiant, `devflow migrate` traite toutes les anciennes features.
83
68
  `devflow init` et `devflow upgrade` déplacent également les anciennes commandes
84
69
  Claude connues vers `~/.claude/.devflow-legacy-backup/` sans toucher aux
85
70
  commandes personnalisées.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  description: Pilote le workflow adaptatif Devflow depuis Claude Code
3
- argument-hint: ISSUE_ID [--agent claude|codex|cursor]
3
+ argument-hint: ISSUE_ID [--agent claude|codex|cursor] [--until ACTIVITY|done]
4
4
  allowed-tools: Bash(devflow:*)
5
5
  ---
6
6
 
@@ -9,7 +9,8 @@ allowed-tools: Bash(devflow:*)
9
9
  Utiliser exclusivement la machine adaptative de la CLI. Ne jamais créer ni
10
10
  interpréter de `state.json`.
11
11
 
12
- 1. Lire `$ARGUMENTS` et extraire l'identifiant de feature.
12
+ 1. Lire `$ARGUMENTS` et extraire l'identifiant de feature, l'agent demandé
13
+ (`claude` par défaut) et la cible `--until` (`done` par défaut).
13
14
  2. Exécuter `devflow status ISSUE_ID`.
14
15
  3. Si la feature n'existe pas, demander à l'utilisateur de lancer
15
16
  `devflow feature ISSUE_ID`.
@@ -17,8 +18,11 @@ interpréter de `state.json`.
17
18
  `devflow assess ISSUE_ID` avec des options explicites.
18
19
  5. Si elle est évaluée mais non démarrée, lancer
19
20
  `devflow adaptive start ISSUE_ID`.
20
- 6. Lancer une seule activité avec
21
- `devflow adaptive run ISSUE_ID --agent AGENT`.
21
+ 6. Enchaîner les activités avec
22
+ `devflow adaptive run ISSUE_ID --agent AGENT --until CIBLE`.
23
+ `--until` inclut l'activité ciblée.
24
+ La CLI s'arrête au premier refus : ne pas relancer automatiquement la
25
+ tentative refusée et afficher sa commande de reprise.
22
26
  7. Afficher ensuite `devflow adaptive status ISSUE_ID`.
23
27
 
24
28
  Le contrat produit par Devflow est la seule autorité sur les actions,