devflow-cli 6.1.1__tar.gz → 6.1.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 (408) hide show
  1. devflow_cli-6.1.2/.specify/specs/030-kks-416/.gitignore +2 -0
  2. devflow_cli-6.1.2/.specify/specs/030-kks-416/activity-contract.json +169 -0
  3. devflow_cli-6.1.2/.specify/specs/030-kks-416/agent-execution.json +15 -0
  4. devflow_cli-6.1.2/.specify/specs/030-kks-416/assessment.json +41 -0
  5. devflow_cli-6.1.2/.specify/specs/030-kks-416/evidence/diff-inspection.json +31 -0
  6. devflow_cli-6.1.2/.specify/specs/030-kks-416/evidence/requirements-coverage.json +141 -0
  7. devflow_cli-6.1.2/.specify/specs/030-kks-416/evidence/security-or-data-check.json +29 -0
  8. devflow_cli-6.1.2/.specify/specs/030-kks-416/evidence/test-suite.json +95 -0
  9. devflow_cli-6.1.2/.specify/specs/030-kks-416/implement-result.json +81 -0
  10. devflow_cli-6.1.2/.specify/specs/030-kks-416/need.md +59 -0
  11. devflow_cli-6.1.2/.specify/specs/030-kks-416/omission-log.json +16 -0
  12. devflow_cli-6.1.2/.specify/specs/030-kks-416/plan-result.json +117 -0
  13. devflow_cli-6.1.2/.specify/specs/030-kks-416/plan.md +262 -0
  14. devflow_cli-6.1.2/.specify/specs/030-kks-416/preflight-evidence-result.json +83 -0
  15. devflow_cli-6.1.2/.specify/specs/030-kks-416/preflight-evidence.md +147 -0
  16. devflow_cli-6.1.2/.specify/specs/030-kks-416/research-result.json +53 -0
  17. devflow_cli-6.1.2/.specify/specs/030-kks-416/research.md +242 -0
  18. devflow_cli-6.1.2/.specify/specs/030-kks-416/review-result.json +59 -0
  19. devflow_cli-6.1.2/.specify/specs/030-kks-416/risk-assessment-result.json +48 -0
  20. devflow_cli-6.1.2/.specify/specs/030-kks-416/risk-assessment.md +115 -0
  21. devflow_cli-6.1.2/.specify/specs/030-kks-416/rollback-check-result.json +67 -0
  22. devflow_cli-6.1.2/.specify/specs/030-kks-416/spec-result.json +25 -0
  23. devflow_cli-6.1.2/.specify/specs/030-kks-416/spec.md +297 -0
  24. devflow_cli-6.1.2/.specify/specs/030-kks-416/tasks-result.json +39 -0
  25. devflow_cli-6.1.2/.specify/specs/030-kks-416/tasks.md +121 -0
  26. devflow_cli-6.1.2/.specify/specs/030-kks-416/workflow-state.json +92 -0
  27. devflow_cli-6.1.2/.specify/specs/030-kks-416/worklog.md +79 -0
  28. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/CHANGELOG.md +8 -0
  29. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/PKG-INFO +1 -1
  30. devflow_cli-6.1.2/docs/releases/6.1.2.md +57 -0
  31. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/pyproject.toml +1 -1
  32. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/__init__.py +1 -1
  33. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/verification.py +57 -1
  34. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_verification.py +164 -0
  35. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/uv.lock +1 -1
  36. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.ai/mcp/mcp.json +0 -0
  37. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.claude/commands/speckit.analyze.md +0 -0
  38. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.claude/commands/speckit.checklist.md +0 -0
  39. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.claude/commands/speckit.clarify.md +0 -0
  40. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.claude/commands/speckit.constitution.md +0 -0
  41. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.claude/commands/speckit.implement.md +0 -0
  42. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.claude/commands/speckit.plan.md +0 -0
  43. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.claude/commands/speckit.specify.md +0 -0
  44. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.claude/commands/speckit.tasks.md +0 -0
  45. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.claude/commands/speckit.taskstoissues.md +0 -0
  46. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.githooks/post-checkout +0 -0
  47. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.githooks/post-merge +0 -0
  48. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.github/workflows/ci.yml +0 -0
  49. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.github/workflows/release.yml +0 -0
  50. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.gitignore +0 -0
  51. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/init-options.json +0 -0
  52. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/memory/constitution.md +0 -0
  53. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/scripts/bash/check-prerequisites.sh +0 -0
  54. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/scripts/bash/common.sh +0 -0
  55. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/scripts/bash/create-new-feature.sh +0 -0
  56. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/scripts/bash/setup-plan.sh +0 -0
  57. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/scripts/bash/update-agent-context.sh +0 -0
  58. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/001-cli-init-options/checklists/requirements.md +0 -0
  59. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/001-cli-init-options/contracts/cli-init.md +0 -0
  60. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/001-cli-init-options/data-model.md +0 -0
  61. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/001-cli-init-options/plan.md +0 -0
  62. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/001-cli-init-options/research.md +0 -0
  63. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/001-cli-init-options/spec.md +0 -0
  64. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/001-cli-init-options/tasks.md +0 -0
  65. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/002-cascade-regen/checklists/requirements.md +0 -0
  66. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/002-cascade-regen/contracts/cli-regen.md +0 -0
  67. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/002-cascade-regen/contracts/cli-status-staleness.md +0 -0
  68. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/002-cascade-regen/data-model.md +0 -0
  69. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/002-cascade-regen/plan.md +0 -0
  70. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/002-cascade-regen/research.md +0 -0
  71. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/002-cascade-regen/spec.md +0 -0
  72. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/002-cascade-regen/tasks.md +0 -0
  73. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/003-usecase-guides/checklists/requirements.md +0 -0
  74. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/003-usecase-guides/data-model.md +0 -0
  75. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/003-usecase-guides/plan.md +0 -0
  76. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/003-usecase-guides/quickstart.md +0 -0
  77. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/003-usecase-guides/research.md +0 -0
  78. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/003-usecase-guides/spec.md +0 -0
  79. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/003-usecase-guides/tasks.md +0 -0
  80. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/004-specify-central-directory/checklists/requirements.md +0 -0
  81. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/004-specify-central-directory/contracts/cli-commands.md +0 -0
  82. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/004-specify-central-directory/data-model.md +0 -0
  83. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/004-specify-central-directory/plan.md +0 -0
  84. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/004-specify-central-directory/quickstart.md +0 -0
  85. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/004-specify-central-directory/research.md +0 -0
  86. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/004-specify-central-directory/spec.md +0 -0
  87. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/004-specify-central-directory/tasks.md +0 -0
  88. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/005-implement-subphases/checklists/requirements.md +0 -0
  89. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/005-implement-subphases/plan.md +0 -0
  90. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/005-implement-subphases/quickstart.md +0 -0
  91. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/005-implement-subphases/research.md +0 -0
  92. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/005-implement-subphases/spec.md +0 -0
  93. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/005-implement-subphases/tasks.md +0 -0
  94. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/006-template-upgrade/checklists/requirements.md +0 -0
  95. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/006-template-upgrade/contracts/cli-upgrade.md +0 -0
  96. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/006-template-upgrade/data-model.md +0 -0
  97. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/006-template-upgrade/plan.md +0 -0
  98. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/006-template-upgrade/quickstart.md +0 -0
  99. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/006-template-upgrade/research.md +0 -0
  100. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/006-template-upgrade/spec.md +0 -0
  101. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/006-template-upgrade/tasks.md +0 -0
  102. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/007-project-documentation/checklists/requirements.md +0 -0
  103. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/007-project-documentation/data-model.md +0 -0
  104. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/007-project-documentation/plan.md +0 -0
  105. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/007-project-documentation/quickstart.md +0 -0
  106. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/007-project-documentation/research.md +0 -0
  107. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/007-project-documentation/spec.md +0 -0
  108. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/007-project-documentation/tasks.md +0 -0
  109. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/008-hardening-bugs/checklists/requirements.md +0 -0
  110. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/008-hardening-bugs/plan.md +0 -0
  111. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/008-hardening-bugs/quickstart.md +0 -0
  112. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/008-hardening-bugs/research.md +0 -0
  113. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/008-hardening-bugs/spec.md +0 -0
  114. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/008-hardening-bugs/tasks.md +0 -0
  115. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/009-ci-pypi/checklists/requirements.md +0 -0
  116. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/009-ci-pypi/plan.md +0 -0
  117. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/009-ci-pypi/quickstart.md +0 -0
  118. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/009-ci-pypi/research.md +0 -0
  119. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/009-ci-pypi/spec.md +0 -0
  120. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/009-ci-pypi/tasks.md +0 -0
  121. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/010-flexible-pipeline/checklists/requirements.md +0 -0
  122. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/010-flexible-pipeline/plan.md +0 -0
  123. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/010-flexible-pipeline/quickstart.md +0 -0
  124. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/010-flexible-pipeline/research.md +0 -0
  125. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/010-flexible-pipeline/spec.md +0 -0
  126. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/010-flexible-pipeline/tasks.md +0 -0
  127. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/011-cursor-support/checklists/requirements.md +0 -0
  128. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/011-cursor-support/plan.md +0 -0
  129. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/011-cursor-support/quickstart.md +0 -0
  130. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/011-cursor-support/research.md +0 -0
  131. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/011-cursor-support/spec.md +0 -0
  132. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/011-cursor-support/tasks.md +0 -0
  133. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/012-fix-critical-bugs/checklists/requirements.md +0 -0
  134. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/012-fix-critical-bugs/plan.md +0 -0
  135. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/012-fix-critical-bugs/research.md +0 -0
  136. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/012-fix-critical-bugs/spec.md +0 -0
  137. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/012-fix-critical-bugs/tasks.md +0 -0
  138. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/013-align-truth-sources/checklists/requirements.md +0 -0
  139. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/013-align-truth-sources/plan.md +0 -0
  140. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/013-align-truth-sources/quickstart.md +0 -0
  141. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/013-align-truth-sources/spec.md +0 -0
  142. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/013-align-truth-sources/tasks.md +0 -0
  143. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/014-enforce-state-machine/checklists/requirements.md +0 -0
  144. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/014-enforce-state-machine/plan.md +0 -0
  145. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/014-enforce-state-machine/quickstart.md +0 -0
  146. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/014-enforce-state-machine/spec.md +0 -0
  147. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/014-enforce-state-machine/tasks.md +0 -0
  148. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/015-fix-review-contradiction/checklists/requirements.md +0 -0
  149. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/015-fix-review-contradiction/plan.md +0 -0
  150. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/015-fix-review-contradiction/research.md +0 -0
  151. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/015-fix-review-contradiction/spec.md +0 -0
  152. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/015-fix-review-contradiction/tasks.md +0 -0
  153. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/016-harden-state-machine/checklists/requirements.md +0 -0
  154. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/016-harden-state-machine/plan.md +0 -0
  155. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/016-harden-state-machine/research.md +0 -0
  156. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/016-harden-state-machine/spec.md +0 -0
  157. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/016-harden-state-machine/tasks.md +0 -0
  158. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/017-fix-robustness-issues/checklists/requirements.md +0 -0
  159. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/017-fix-robustness-issues/plan.md +0 -0
  160. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/017-fix-robustness-issues/research.md +0 -0
  161. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/017-fix-robustness-issues/spec.md +0 -0
  162. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/017-fix-robustness-issues/tasks.md +0 -0
  163. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/018-fix-final-robustness/spec.md +0 -0
  164. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/019-quality-hardening/checklists/requirements.md +0 -0
  165. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/019-quality-hardening/data-model.md +0 -0
  166. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/019-quality-hardening/plan.md +0 -0
  167. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/019-quality-hardening/research.md +0 -0
  168. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/019-quality-hardening/spec.md +0 -0
  169. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/019-quality-hardening/tasks.md +0 -0
  170. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/020-migrate-speckit/checklists/requirements.md +0 -0
  171. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/020-migrate-speckit/data-model.md +0 -0
  172. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/020-migrate-speckit/plan.md +0 -0
  173. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/020-migrate-speckit/quickstart.md +0 -0
  174. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/020-migrate-speckit/research.md +0 -0
  175. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/020-migrate-speckit/spec.md +0 -0
  176. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/020-migrate-speckit/tasks.md +0 -0
  177. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/021-review-iterations/checklists/requirements.md +0 -0
  178. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/021-review-iterations/plan.md +0 -0
  179. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/021-review-iterations/research.md +0 -0
  180. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/021-review-iterations/spec.md +0 -0
  181. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/021-review-iterations/tasks.md +0 -0
  182. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/022-fix-regen-command/checklists/requirements.md +0 -0
  183. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/022-fix-regen-command/plan.md +0 -0
  184. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/022-fix-regen-command/research.md +0 -0
  185. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/022-fix-regen-command/spec.md +0 -0
  186. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/022-fix-regen-command/tasks.md +0 -0
  187. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/023-add-logging/checklists/requirements.md +0 -0
  188. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/023-add-logging/plan.md +0 -0
  189. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/023-add-logging/research.md +0 -0
  190. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/023-add-logging/spec.md +0 -0
  191. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/023-add-logging/tasks.md +0 -0
  192. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/024-validate-constants/checklists/requirements.md +0 -0
  193. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/024-validate-constants/plan.md +0 -0
  194. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/024-validate-constants/research.md +0 -0
  195. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/024-validate-constants/spec.md +0 -0
  196. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/024-validate-constants/tasks.md +0 -0
  197. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/025-harden-tests/checklists/requirements.md +0 -0
  198. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/025-harden-tests/plan.md +0 -0
  199. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/025-harden-tests/research.md +0 -0
  200. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/025-harden-tests/spec.md +0 -0
  201. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/025-harden-tests/tasks.md +0 -0
  202. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/027-pipeline-auto-execution/checklists/requirements.md +0 -0
  203. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/027-pipeline-auto-execution/contracts/orchestrator-contract.md +0 -0
  204. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/027-pipeline-auto-execution/data-model.md +0 -0
  205. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/027-pipeline-auto-execution/plan.md +0 -0
  206. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/027-pipeline-auto-execution/quickstart.md +0 -0
  207. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/027-pipeline-auto-execution/research.md +0 -0
  208. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/027-pipeline-auto-execution/spec.md +0 -0
  209. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/027-pipeline-auto-execution/tasks.md +0 -0
  210. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/028-kks-411-feature-dir-ignored/.gitignore +0 -0
  211. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/028-kks-411-feature-dir-ignored/activity-contract.json +0 -0
  212. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/028-kks-411-feature-dir-ignored/agent-execution.json +0 -0
  213. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/028-kks-411-feature-dir-ignored/assessment.json +0 -0
  214. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/028-kks-411-feature-dir-ignored/evidence/diff-inspection.json +0 -0
  215. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/028-kks-411-feature-dir-ignored/evidence/regression-check.json +0 -0
  216. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/028-kks-411-feature-dir-ignored/evidence/targeted-tests.json +0 -0
  217. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/028-kks-411-feature-dir-ignored/implement-result.json +0 -0
  218. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/028-kks-411-feature-dir-ignored/need.md +0 -0
  219. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/028-kks-411-feature-dir-ignored/preflight-evidence-result.json +0 -0
  220. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/028-kks-411-feature-dir-ignored/preflight-evidence.md +0 -0
  221. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/028-kks-411-feature-dir-ignored/prepare-attempt.json +0 -0
  222. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/028-kks-411-feature-dir-ignored/prepare-result.json +0 -0
  223. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/028-kks-411-feature-dir-ignored/workflow-state.json +0 -0
  224. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/specs/028-kks-411-feature-dir-ignored/worklog.md +0 -0
  225. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/templates/agent-file-template.md +0 -0
  226. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/templates/checklist-template.md +0 -0
  227. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/templates/constitution-template.md +0 -0
  228. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/templates/plan-template.md +0 -0
  229. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/templates/spec-template-brownfield.md +0 -0
  230. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/templates/spec-template-greenfield.md +0 -0
  231. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/templates/spec-template-microservices.md +0 -0
  232. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/templates/spec-template.md +0 -0
  233. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/.specify/templates/tasks-template.md +0 -0
  234. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/CLAUDE.md +0 -0
  235. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/CONTRIBUTING.md +0 -0
  236. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/FEEDBACK.md +0 -0
  237. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/LICENSE +0 -0
  238. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/README.md +0 -0
  239. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/commands/devflow.context.md +0 -0
  240. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/commands/devflow.extension.md +0 -0
  241. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/commands/devflow.init.md +0 -0
  242. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/commands/devflow.md +0 -0
  243. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/commands/devflow.regen.md +0 -0
  244. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/commands/devflow.status.md +0 -0
  245. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/activity-contracts.md +0 -0
  246. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/adr/0001-v4-workflow-compatibility.md +0 -0
  247. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/adr/0002-v5-rupture-and-provenance.md +0 -0
  248. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/cli-reference.md +0 -0
  249. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/commands-reference.md +0 -0
  250. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/cursor-guide.md +0 -0
  251. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/guides/brownfield.md +0 -0
  252. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/guides/greenfield.md +0 -0
  253. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/guides/microservices.md +0 -0
  254. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/index.md +0 -0
  255. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/pipeline-reference.generated.md +0 -0
  256. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/pipeline.md +0 -0
  257. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/releases/4.0.0.md +0 -0
  258. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/releases/4.0.1.md +0 -0
  259. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/releases/4.0.3.md +0 -0
  260. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/releases/4.0.4.md +0 -0
  261. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/releases/4.0.5.md +0 -0
  262. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/releases/4.0.6.md +0 -0
  263. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/releases/5.0.0.md +0 -0
  264. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/releases/6.0.0.md +0 -0
  265. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/releases/6.1.0.md +0 -0
  266. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/releases/6.1.1.md +0 -0
  267. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/spec-driven.md +0 -0
  268. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/v5-decisions.md +0 -0
  269. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/docs/v6-decisions.md +0 -0
  270. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/extensions/EXTENSION-API-REFERENCE.md +0 -0
  271. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/extensions/catalog.community.json +0 -0
  272. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/extensions/catalog.json +0 -0
  273. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/extensions/template/example-command.md +0 -0
  274. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/extensions/template/example-extension.json +0 -0
  275. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/scripts/check_release.py +0 -0
  276. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/adapters/__init__.py +0 -0
  277. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/adapters/agents.py +0 -0
  278. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/adapters/linear.py +0 -0
  279. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/cli.py +0 -0
  280. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/commands/__init__.py +0 -0
  281. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/commands/adaptive.py +0 -0
  282. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/commands/assess.py +0 -0
  283. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/commands/check.py +0 -0
  284. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/commands/context.py +0 -0
  285. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/commands/docs_sync.py +0 -0
  286. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/commands/export_cmd.py +0 -0
  287. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/commands/extension.py +0 -0
  288. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/commands/feature.py +0 -0
  289. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/commands/hooks_cmd.py +0 -0
  290. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/commands/init_cmd.py +0 -0
  291. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/commands/linear.py +0 -0
  292. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/commands/stale.py +0 -0
  293. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/commands/status.py +0 -0
  294. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/commands/traceability.py +0 -0
  295. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/commands/upgrade_cmd.py +0 -0
  296. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/commands/usage.py +0 -0
  297. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/commands/verify.py +0 -0
  298. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/__init__.py +0 -0
  299. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/activity_contracts.py +0 -0
  300. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/adaptive_runner.py +0 -0
  301. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/adaptive_workflow.py +0 -0
  302. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/agent_failure.py +0 -0
  303. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/assessment.py +0 -0
  304. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/automatic_evidence.py +0 -0
  305. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/catalog.py +0 -0
  306. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/contract_schemas.py +0 -0
  307. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/docgen.py +0 -0
  308. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/git.py +0 -0
  309. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/hooks.py +0 -0
  310. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/installer.py +0 -0
  311. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/manifest.py +0 -0
  312. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/omissions.py +0 -0
  313. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/operational.py +0 -0
  314. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/redaction.py +0 -0
  315. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/remediation.py +0 -0
  316. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/scanner.py +0 -0
  317. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/staleness.py +0 -0
  318. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/telemetry.py +0 -0
  319. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/traceability.py +0 -0
  320. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/validation_approvals.py +0 -0
  321. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/validators.py +0 -0
  322. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/waivers.py +0 -0
  323. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/worklog.py +0 -0
  324. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/core/worktree_snapshot.py +0 -0
  325. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/schemas/activity-contract-v3.schema.json +0 -0
  326. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/schemas/activity-result-v1.schema.json +0 -0
  327. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/schemas/assessment-v3.schema.json +0 -0
  328. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/schemas/workflow-state-v4.schema.json +0 -0
  329. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/utils/__init__.py +0 -0
  330. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/utils/console.py +0 -0
  331. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/utils/logging.py +0 -0
  332. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/utils/paths.py +0 -0
  333. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/src/devflow_cli/utils/strings.py +0 -0
  334. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/templates/agent-context-template.md +0 -0
  335. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/templates/constitution-template.md +0 -0
  336. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/templates/contracts/README-template.md +0 -0
  337. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/templates/contracts/api-template.md +0 -0
  338. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/templates/contracts/components-template.md +0 -0
  339. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/templates/contracts/interfaces-template.md +0 -0
  340. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/templates/contracts/services-template.md +0 -0
  341. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/templates/contracts-template.md +0 -0
  342. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/templates/data-model-template.md +0 -0
  343. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/templates/devflow-hooks-template.yml +0 -0
  344. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/templates/extension-manifest-template.json +0 -0
  345. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/templates/plan-template.md +0 -0
  346. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/templates/quickstart-template.md +0 -0
  347. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/templates/research-template.md +0 -0
  348. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/templates/spec-template.md +0 -0
  349. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/templates/tasks-template.md +0 -0
  350. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/conftest.py +0 -0
  351. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/fixtures/agents/mock-agent.md +0 -0
  352. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/fixtures/commands/mock-command.md +0 -0
  353. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/fixtures/mock-catalog.json +0 -0
  354. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/run-tests.sh +0 -0
  355. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test-helpers.sh +0 -0
  356. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test-template-variants.sh +0 -0
  357. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_activity_contracts.py +0 -0
  358. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_adaptive_runner.py +0 -0
  359. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_adaptive_workflow.py +0 -0
  360. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_agent_adapters.py +0 -0
  361. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_agent_failure.py +0 -0
  362. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_assessment.py +0 -0
  363. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_automatic_evidence.py +0 -0
  364. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_bash_runner.py +0 -0
  365. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_catalog.py +0 -0
  366. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_cmd_adaptive.py +0 -0
  367. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_cmd_assess.py +0 -0
  368. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_cmd_check.py +0 -0
  369. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_cmd_context.py +0 -0
  370. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_cmd_docs_sync.py +0 -0
  371. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_cmd_extension.py +0 -0
  372. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_cmd_feature.py +0 -0
  373. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_cmd_hooks.py +0 -0
  374. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_cmd_init.py +0 -0
  375. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_cmd_linear.py +0 -0
  376. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_cmd_stale.py +0 -0
  377. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_cmd_status.py +0 -0
  378. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_cmd_traceability.py +0 -0
  379. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_cmd_upgrade.py +0 -0
  380. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_cmd_verify.py +0 -0
  381. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_constants.py +0 -0
  382. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_context.py +0 -0
  383. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_contract_schemas.py +0 -0
  384. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_docgen.py +0 -0
  385. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_git.py +0 -0
  386. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_hooks.py +0 -0
  387. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_installer.py +0 -0
  388. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_integration.py +0 -0
  389. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_linear_adapter.py +0 -0
  390. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_linear_order.py +0 -0
  391. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_logging.py +0 -0
  392. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_manifest.py +0 -0
  393. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_omissions.py +0 -0
  394. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_paths.py +0 -0
  395. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_paths_project_root.py +0 -0
  396. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_release.py +0 -0
  397. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_remediation.py +0 -0
  398. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_scanner.py +0 -0
  399. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_staleness.py +0 -0
  400. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_telemetry.py +0 -0
  401. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_traceability.py +0 -0
  402. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_validators.py +0 -0
  403. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_version.py +0 -0
  404. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_waivers.py +0 -0
  405. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_wheel_adaptive_acceptance.py +0 -0
  406. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_wheel_install.py +0 -0
  407. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_worklog.py +0 -0
  408. {devflow_cli-6.1.1 → devflow_cli-6.1.2}/tests/test_worktree_snapshot.py +0 -0
@@ -0,0 +1,2 @@
1
+ # Traces brutes d'agent : elles peuvent contenir le contenu des fichiers lus.
2
+ *.raw.txt
@@ -0,0 +1,169 @@
1
+ {
2
+ "schemaVersion": 3,
3
+ "contractId": "KKS-416:critical:rollback-check:v3",
4
+ "issueId": "KKS-416",
5
+ "profile": "critical",
6
+ "activity": "rollback-check",
7
+ "objective": "Accepter une liste explicite d'options de uv dans les validations uv run",
8
+ "featurePath": ".specify/specs/030-kks-416",
9
+ "inputs": [
10
+ ".specify/specs/030-kks-416/need.md",
11
+ ".specify/specs/030-kks-416/assessment.json",
12
+ ".specify/specs/030-kks-416/workflow-state.json",
13
+ ".specify/specs/030-kks-416/risk-assessment.md",
14
+ ".specify/specs/030-kks-416/spec.md",
15
+ ".specify/specs/030-kks-416/plan.md",
16
+ ".specify/specs/030-kks-416/tasks.md",
17
+ ".specify/specs/030-kks-416/implement-result.json",
18
+ ".specify/specs/030-kks-416/evidence/requirements-coverage.json",
19
+ ".specify/specs/030-kks-416/evidence/test-suite.json",
20
+ ".specify/specs/030-kks-416/evidence/security-or-data-check.json",
21
+ ".specify/specs/030-kks-416/review-result.json",
22
+ ".specify/specs/030-kks-416/omission-log.json"
23
+ ],
24
+ "allowedActions": [
25
+ "read",
26
+ "execute"
27
+ ],
28
+ "constraints": [
29
+ "Respecter strictement l'objectif et le perimetre du contrat.",
30
+ "Le besoin de reference est .specify/specs/030-kks-416/need.md ; en cas d'ecart avec objective, il fait foi.",
31
+ "Preserver les changements utilisateur sans rapport avec cette activite.",
32
+ "Ne pas modifier state.json, workflow-state.json ou assessment.json.",
33
+ "Ne pas creer de commit et ne pas changer de branche.",
34
+ "Signaler tout blocage au lieu de contourner une validation.",
35
+ "Dans checks, status vaut passed si et seulement si exitCode vaut 0. Une commande dont l'absence de resultat constitue le succes attendu doit etre declaree failed, ou remplacee par une commande qui renvoie 0 en cas de succes.",
36
+ "Donner un id stable a chaque objectif de check. Si un check echoue puis est corrige et relance pour le meme objectif, reutiliser cet id : seule la derniere tentative fait foi ; signaler dans remainingRisks toute instabilite encore pertinente.",
37
+ "Ne modifier aucun fichier pendant le controle de rollback.",
38
+ "Verifier une procedure de restauration actionnable, les donnees affectees, les validations post-rollback et les declencheurs.",
39
+ "Retourner blocked si un effet irreversible ou une inconnue critique empeche un retour arriere fiable.",
40
+ "Ne produire rollback-plan=passed que si le plan est applicable et verifiable."
41
+ ],
42
+ "completionCriteria": [
43
+ "Le plan de rollback precise les etapes, responsables, donnees et controles.",
44
+ "Les declencheurs et limites du rollback sont explicites.",
45
+ "La preuve rollback-plan contient un rapport exploitable."
46
+ ],
47
+ "requiredEvidence": [
48
+ "rollback-plan"
49
+ ],
50
+ "expectedOutput": {
51
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
52
+ "$id": "https://devflow.dev/schemas/activity-result/v1",
53
+ "title": "Devflow Activity Result v1",
54
+ "type": "object",
55
+ "required": [
56
+ "schemaVersion",
57
+ "contractId",
58
+ "status",
59
+ "summary",
60
+ "changedFiles",
61
+ "checks",
62
+ "evidence",
63
+ "remainingRisks",
64
+ "blockers"
65
+ ],
66
+ "properties": {
67
+ "schemaVersion": {
68
+ "type": "integer",
69
+ "const": 1
70
+ },
71
+ "contractId": {
72
+ "type": "string",
73
+ "minLength": 1
74
+ },
75
+ "status": {
76
+ "type": "string",
77
+ "enum": [
78
+ "completed",
79
+ "blocked"
80
+ ]
81
+ },
82
+ "summary": {
83
+ "type": "string",
84
+ "minLength": 1
85
+ },
86
+ "changedFiles": {
87
+ "type": "array",
88
+ "items": {
89
+ "type": "string",
90
+ "minLength": 1
91
+ }
92
+ },
93
+ "checks": {
94
+ "type": "array",
95
+ "items": {
96
+ "type": "object",
97
+ "required": [
98
+ "command",
99
+ "exitCode",
100
+ "status"
101
+ ],
102
+ "properties": {
103
+ "id": {
104
+ "type": "string",
105
+ "minLength": 1
106
+ },
107
+ "command": {
108
+ "type": "string",
109
+ "minLength": 1
110
+ },
111
+ "exitCode": {
112
+ "type": "integer"
113
+ },
114
+ "status": {
115
+ "type": "string",
116
+ "enum": [
117
+ "passed",
118
+ "failed"
119
+ ]
120
+ }
121
+ },
122
+ "additionalProperties": false
123
+ }
124
+ },
125
+ "evidence": {
126
+ "type": "array",
127
+ "items": {
128
+ "type": "object",
129
+ "required": [
130
+ "id",
131
+ "outcome",
132
+ "report"
133
+ ],
134
+ "properties": {
135
+ "id": {
136
+ "type": "string",
137
+ "minLength": 1
138
+ },
139
+ "outcome": {
140
+ "type": "string",
141
+ "enum": [
142
+ "passed",
143
+ "failed"
144
+ ]
145
+ },
146
+ "report": {
147
+ "type": "string",
148
+ "minLength": 1
149
+ }
150
+ },
151
+ "additionalProperties": false
152
+ }
153
+ },
154
+ "remainingRisks": {
155
+ "type": "array",
156
+ "items": {
157
+ "type": "string"
158
+ }
159
+ },
160
+ "blockers": {
161
+ "type": "array",
162
+ "items": {
163
+ "type": "string"
164
+ }
165
+ }
166
+ },
167
+ "additionalProperties": false
168
+ }
169
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "runId": "dbd1eedc-2905-4e3e-8fe5-c06d5bebf630",
4
+ "agent": "claude",
5
+ "activity": "rollback-check",
6
+ "returnCode": 0,
7
+ "durationSeconds": 152.85,
8
+ "finalOutputStatus": "present",
9
+ "finalOutputBytes": 6898,
10
+ "finalOutputDiagnostic": "validated",
11
+ "sessionId": null,
12
+ "timedOut": false,
13
+ "worktreeChanged": false,
14
+ "worktreeChangedFileCount": 0
15
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "schemaVersion": 3,
3
+ "issueId": "KKS-416",
4
+ "recommendedProfile": "critical",
5
+ "selectedProfile": "critical",
6
+ "confidence": "high",
7
+ "signals": {
8
+ "scope": "local",
9
+ "ambiguity": "low",
10
+ "risk": "medium",
11
+ "contractChange": false,
12
+ "dataOrSecurity": true
13
+ },
14
+ "reasons": [
15
+ "le changement touche aux donnees ou a la securite"
16
+ ],
17
+ "activities": [
18
+ "assess",
19
+ "risk-assessment",
20
+ "spec",
21
+ "research",
22
+ "contracts",
23
+ "plan",
24
+ "tasks",
25
+ "preflight-evidence",
26
+ "implement",
27
+ "verify",
28
+ "review",
29
+ "rollback-check",
30
+ "done"
31
+ ],
32
+ "requiredEvidence": [
33
+ "requirements-coverage",
34
+ "test-suite",
35
+ "security-or-data-check",
36
+ "rollback-plan",
37
+ "independent-review"
38
+ ],
39
+ "assessedAt": "2026-09-28T20:02:26Z",
40
+ "summary": "Accepter une liste explicite d'options de uv dans les validations uv run"
41
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "id": "diff-inspection",
4
+ "outcome": "passed",
5
+ "generatedAt": "2026-09-28T21:34:02Z",
6
+ "changedFiles": [
7
+ "CHANGELOG.md",
8
+ "docs/releases/6.1.2.md",
9
+ "pyproject.toml",
10
+ "src/devflow_cli/__init__.py",
11
+ "src/devflow_cli/core/verification.py",
12
+ "tests/test_verification.py",
13
+ "uv.lock"
14
+ ],
15
+ "findings": [],
16
+ "gitDiffCheck": {
17
+ "id": "AUTO-DIFF",
18
+ "command": [
19
+ "git",
20
+ "diff",
21
+ "--check"
22
+ ],
23
+ "blocking": true,
24
+ "returncode": 0,
25
+ "succeeded": true,
26
+ "timedOut": false,
27
+ "workingDirectory": ".",
28
+ "stdout": "",
29
+ "stderr": ""
30
+ }
31
+ }
@@ -0,0 +1,141 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "id": "requirements-coverage",
4
+ "outcome": "passed",
5
+ "valid": true,
6
+ "requirements": [
7
+ "FR-001",
8
+ "FR-002",
9
+ "FR-003",
10
+ "FR-004",
11
+ "FR-005",
12
+ "FR-006",
13
+ "FR-007",
14
+ "FR-008",
15
+ "FR-009",
16
+ "FR-010",
17
+ "FR-011",
18
+ "FR-012",
19
+ "FR-013",
20
+ "FR-014",
21
+ "FR-015"
22
+ ],
23
+ "taskIds": [
24
+ "T-001",
25
+ "T-002",
26
+ "T-003",
27
+ "T-004",
28
+ "T-005",
29
+ "T-006",
30
+ "T-007",
31
+ "T-008",
32
+ "T-009",
33
+ "T-010",
34
+ "T-011",
35
+ "T-012",
36
+ "T-013",
37
+ "T-014",
38
+ "T-015",
39
+ "T-016",
40
+ "T-017",
41
+ "T-018",
42
+ "T-019",
43
+ "T-020",
44
+ "T-021",
45
+ "T-022",
46
+ "T-023",
47
+ "T-024",
48
+ "T-025",
49
+ "T-026"
50
+ ],
51
+ "coverage": {
52
+ "FR-001": [
53
+ "T-005",
54
+ "T-009"
55
+ ],
56
+ "FR-002": [
57
+ "T-001",
58
+ "T-009"
59
+ ],
60
+ "FR-003": [
61
+ "T-003",
62
+ "T-005",
63
+ "T-009"
64
+ ],
65
+ "FR-004": [
66
+ "T-002",
67
+ "T-003",
68
+ "T-005",
69
+ "T-007",
70
+ "T-012"
71
+ ],
72
+ "FR-005": [
73
+ "T-006",
74
+ "T-010",
75
+ "T-011",
76
+ "T-023"
77
+ ],
78
+ "FR-006": [
79
+ "T-007",
80
+ "T-012"
81
+ ],
82
+ "FR-007": [
83
+ "T-008",
84
+ "T-013"
85
+ ],
86
+ "FR-008": [
87
+ "T-001",
88
+ "T-007",
89
+ "T-011"
90
+ ],
91
+ "FR-009": [
92
+ "T-008",
93
+ "T-013",
94
+ "T-014",
95
+ "T-022"
96
+ ],
97
+ "FR-010": [
98
+ "T-006",
99
+ "T-008",
100
+ "T-013",
101
+ "T-023"
102
+ ],
103
+ "FR-011": [
104
+ "T-006",
105
+ "T-007",
106
+ "T-010",
107
+ "T-012"
108
+ ],
109
+ "FR-012": [
110
+ "T-004",
111
+ "T-014",
112
+ "T-022",
113
+ "T-025",
114
+ "T-026"
115
+ ],
116
+ "FR-013": [
117
+ "T-015",
118
+ "T-016",
119
+ "T-017",
120
+ "T-025"
121
+ ],
122
+ "FR-014": [
123
+ "T-018",
124
+ "T-019",
125
+ "T-020",
126
+ "T-021",
127
+ "T-024"
128
+ ],
129
+ "FR-015": [
130
+ "T-022",
131
+ "T-023",
132
+ "T-024",
133
+ "T-025",
134
+ "T-026"
135
+ ]
136
+ },
137
+ "missingRequirements": [],
138
+ "unknownRequirements": [],
139
+ "duplicateTaskIds": [],
140
+ "tasksWithoutRequirement": []
141
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "id": "security-or-data-check",
4
+ "outcome": "passed",
5
+ "startedAt": "2026-09-28T21:34:01Z",
6
+ "completedAt": "2026-09-28T21:34:02Z",
7
+ "commands": [
8
+ {
9
+ "id": "PLAN-security-policy-tests",
10
+ "command": [
11
+ "uv",
12
+ "run",
13
+ "pytest",
14
+ "-q",
15
+ "tests/test_verification.py"
16
+ ],
17
+ "blocking": true,
18
+ "returncode": 0,
19
+ "succeeded": true,
20
+ "timedOut": false,
21
+ "workingDirectory": ".",
22
+ "stdout": "........................................................................ [ 57%]\n..................................................... [100%]\n125 passed in 0.14s\n",
23
+ "stderr": ""
24
+ }
25
+ ],
26
+ "executionFindings": [],
27
+ "worktreeMutations": [],
28
+ "waiversApplied": []
29
+ }
@@ -0,0 +1,95 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "id": "test-suite",
4
+ "outcome": "passed",
5
+ "startedAt": "2026-09-28T21:34:01Z",
6
+ "completedAt": "2026-09-28T21:34:02Z",
7
+ "commands": [
8
+ {
9
+ "id": "AUTO-PYTHON",
10
+ "command": [
11
+ "uv",
12
+ "run",
13
+ "pytest",
14
+ "-q",
15
+ "tests/test_verification.py"
16
+ ],
17
+ "blocking": true,
18
+ "returncode": 0,
19
+ "succeeded": true,
20
+ "timedOut": false,
21
+ "workingDirectory": ".",
22
+ "stdout": "........................................................................ [ 57%]\n..................................................... [100%]\n125 passed in 0.14s\n",
23
+ "stderr": ""
24
+ },
25
+ {
26
+ "id": "AUTO-REGRESSION-PYTHON",
27
+ "command": [
28
+ "python",
29
+ "-m",
30
+ "compileall",
31
+ "-q",
32
+ "src"
33
+ ],
34
+ "blocking": true,
35
+ "returncode": 0,
36
+ "succeeded": true,
37
+ "timedOut": false,
38
+ "workingDirectory": ".",
39
+ "stdout": "",
40
+ "stderr": ""
41
+ },
42
+ {
43
+ "id": "PLAN-plan-exists",
44
+ "command": [
45
+ "rg",
46
+ "--files",
47
+ "-g",
48
+ "plan.md",
49
+ ".specify/specs/030-kks-416"
50
+ ],
51
+ "blocking": true,
52
+ "returncode": 0,
53
+ "succeeded": true,
54
+ "timedOut": false,
55
+ "workingDirectory": ".",
56
+ "stdout": ".specify/specs/030-kks-416/plan.md\n",
57
+ "stderr": ""
58
+ },
59
+ {
60
+ "id": "PLAN-plan-sections",
61
+ "command": [
62
+ "rg",
63
+ "-n",
64
+ "^## (Summary|Validation Commands|Sécurité|Retour arrière)",
65
+ ".specify/specs/030-kks-416/plan.md"
66
+ ],
67
+ "blocking": true,
68
+ "returncode": 0,
69
+ "succeeded": true,
70
+ "timedOut": false,
71
+ "workingDirectory": ".",
72
+ "stdout": "7:## Summary\n203:## Validation Commands\n222:## Sécurité\n240:## Retour arrière\n",
73
+ "stderr": ""
74
+ },
75
+ {
76
+ "id": "PLAN-release-consistency",
77
+ "command": [
78
+ "uv",
79
+ "run",
80
+ "pytest",
81
+ "-q",
82
+ "tests/test_release.py"
83
+ ],
84
+ "blocking": false,
85
+ "returncode": 0,
86
+ "succeeded": true,
87
+ "timedOut": false,
88
+ "workingDirectory": ".",
89
+ "stdout": "........... [100%]\n11 passed in 0.02s\n",
90
+ "stderr": ""
91
+ }
92
+ ],
93
+ "worktreeMutations": [],
94
+ "waiversApplied": []
95
+ }
@@ -0,0 +1,81 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contractId": "KKS-416:critical:implement:v3",
4
+ "status": "completed",
5
+ "summary": "La branche uv de _validate_allowed_shape() analyse désormais une à une les options placées entre 'uv run' et l'outil. Elle s'appuie sur une allowlist fermée et exacte (UV_RUN_FLAG_OPTIONS, UV_RUN_VALUE_OPTIONS, UV_QUIET_OPTIONS, UV_PYTHON_VERSION_RE, UV_RUN_NAME_RE), puis valide l'outil imbriqué par l'appel récursif existant à _validate_command(), avec le même explicit. Les options ne sont jamais comparées à explicit, ce qui ferme le contournement R7. Une option refusée produit un message qui la nomme comme option de 'uv run', sans sa valeur attachée ni --allow-command. Une valeur manquante ou hors format et une répétition de -q/--quiet sont refusées. 'uv run <options>' sans outil garde le message existant. La guidance agents liste les options acceptées, générées depuis les mêmes constantes. 82 tests uv_run ont été ajoutés sans modifier les tests existants : 78 d'entre eux échouent sur le code 6.1.1. La version passe à 6.1.2 dans pyproject.toml, __init__.py et uv.lock (uv lock --check OK), avec une entrée CHANGELOG et docs/releases/6.1.2.md. T-017 : docs/activity-contracts.md ne décrit pas la politique en détail et docs-sync --check passe, donc aucune mise à jour de doc n'était nécessaire.",
6
+ "changedFiles": [
7
+ "src/devflow_cli/core/verification.py",
8
+ "tests/test_verification.py",
9
+ "src/devflow_cli/__init__.py",
10
+ "pyproject.toml",
11
+ "uv.lock",
12
+ "CHANGELOG.md",
13
+ "docs/releases/6.1.2.md"
14
+ ],
15
+ "checks": [
16
+ {
17
+ "id": "VAL-001",
18
+ "command": "uv run pytest -q tests/test_verification.py",
19
+ "exitCode": 0,
20
+ "status": "passed"
21
+ },
22
+ {
23
+ "id": "VAL-002",
24
+ "command": "uv run pytest -q tests/test_verification.py -k uv_run",
25
+ "exitCode": 0,
26
+ "status": "passed"
27
+ },
28
+ {
29
+ "id": "VAL-003",
30
+ "command": "uv run pytest -q tests/test_release.py",
31
+ "exitCode": 0,
32
+ "status": "passed"
33
+ },
34
+ {
35
+ "id": "VAL-004",
36
+ "command": "uv run pytest -q",
37
+ "exitCode": 0,
38
+ "status": "passed"
39
+ },
40
+ {
41
+ "id": "VAL-005",
42
+ "command": "uv run devflow docs-sync --check",
43
+ "exitCode": 0,
44
+ "status": "passed"
45
+ },
46
+ {
47
+ "id": "uv-lock-check",
48
+ "command": "uv lock --check --offline",
49
+ "exitCode": 0,
50
+ "status": "passed"
51
+ },
52
+ {
53
+ "id": "shell-tests",
54
+ "command": "./tests/run-tests.sh",
55
+ "exitCode": 0,
56
+ "status": "passed"
57
+ }
58
+ ],
59
+ "evidence": [
60
+ {
61
+ "id": "red-before-fix",
62
+ "outcome": "passed",
63
+ "report": "Avec src/devflow_cli/core/verification.py restauré depuis HEAD (6.1.1), 'uv run pytest -q tests/test_verification.py -k uv_run' donne 78 échecs et 4 réussites. Les 4 réussites sont des non-régressions attendues : uv run seul, uv sync, uv --offline run pytest et uv run pytest -q tests/. Le correctif a ensuite été remis en place à l'identique."
64
+ },
65
+ {
66
+ "id": "suite-complete",
67
+ "outcome": "passed",
68
+ "report": "767 tests pytest réussis (685 avant le changement, plus 82 nouveaux) et 14 tests shell réussis via ./tests/run-tests.sh, lancé ici hors CLI Devflow. docs-sync --check : documentation synchronisée."
69
+ }
70
+ ],
71
+ "remainingRisks": [
72
+ "R11 : la CLI 6.1.1 qui pilote ce parcours garde le défaut. Les validations déclarées en verify ne doivent pas placer d'option entre 'uv run' et l'outil.",
73
+ "./tests/run-tests.sh a été lancé hors CLI pendant implement ; la politique le refuse (chemin hors DEFAULT_ALLOWED_PATHS). Sa relance en verify demande une approbation explicite, sinon il faut déclarer une exécution manuelle.",
74
+ "Forme attachée sans '=' (ex. '-p3.12') : le message reprend le token entier, puisque seule la partie avant '=' est isolée (D9). La valeur reste visible dans ce cas limite, sans enjeu de secret pour une version.",
75
+ "R8 : '--python <version>' peut télécharger un interpréteur géré par uv ; risque accepté, bloqué par --offline.",
76
+ "Hors périmètre : les variables d'environnement et fichiers de configuration de uv (UV_PYTHON, UV_INDEX_URL, uv.toml) ; 'uv run --no-project --python 3.12 python scripts/check_release.py' reste refusée par la politique Python existante.",
77
+ "La guidance ajoutée modifie le texte des contrats d'activité générés ; la suite complète le tolère, aucun fixture textuel n'a dû être ajusté.",
78
+ "Aucun commit créé : il faudra committer les changements après la review (pre-commit-review sur les fichiers staged)."
79
+ ],
80
+ "blockers": []
81
+ }
@@ -0,0 +1,59 @@
1
+ # KKS-416 — Accepter les options de uv dans les commandes de validation « uv run »
2
+
3
+ Source : relevé en conditions réelles sur KKS-413 (CLI 6.1.1), activité `prepare`.
4
+
5
+ ## Problème
6
+
7
+ L'agent déclare la validation `uv run --no-project --python 3.12 python -m pytest -q
8
+ tests/test_release.py`, qui est la forme utilisée par `.github/workflows/release.yml`. Devflow la
9
+ refuse :
10
+
11
+ `script-on-repo: exécutable non approuvé '--no-project'; utilisez --allow-command --no-project
12
+ après audit` → `prepare` rejetée (`invalid-result`).
13
+
14
+ Cause : `_validate_allowed_shape()` (`src/devflow_cli/core/verification.py:352`) valide `uv run`
15
+ en reprenant `args[2:]` comme commande imbriquée. Toute option de `uv run` placée avant l'outil
16
+ est donc prise pour l'exécutable.
17
+
18
+ Deux défauts :
19
+
20
+ - une commande légitime est refusée et brûle une tentative (52 s, 0,57 USD ici) ;
21
+ - le message propose `--allow-command --no-project`, ce qui n'a pas de sens et oriente vers une
22
+ mauvaise piste.
23
+
24
+ ## Attendu
25
+
26
+ - Les options de `uv run` placées avant l'outil sont passées, puis l'outil imbriqué est validé
27
+ exactement comme aujourd'hui (même politique, mêmes messages).
28
+ - Liste explicite d'options autorisées, limitée à celles qui ne changent ni le code exécuté ni
29
+ le répertoire ni la source des paquets : `--no-project`, `--frozen`, `--locked`, `--offline`,
30
+ `--no-sync`, `--isolated`, `--extra <nom>`, `--all-extras`, `--group <nom>`, `--all-groups`,
31
+ `--no-dev`, `-q`/`--quiet`, `--python <version>` / `-p <version>`.
32
+ - `--python` / `-p` : la valeur doit être un numéro de version (ex. `3.12`, `3.11.9`), jamais un
33
+ chemin d'interpréteur.
34
+ - Toute autre option reste refusée, notamment celles qui injectent du code ou changent de
35
+ contexte ou de source : `--with`, `--with-editable`, `--with-requirements`, `--directory`,
36
+ `--project`, `--script`, `--env-file`, `--index`, `--index-url`, `--extra-index-url`,
37
+ `--find-links`.
38
+ - Une option refusée donne un message qui la nomme comme option de `uv run`, sans proposer
39
+ `--allow-command <option>`.
40
+ - Aucun changement pour les autres exécutables.
41
+
42
+ ## Tests attendus
43
+
44
+ - `uv run --no-project --python 3.12 python -m pytest …` acceptée.
45
+ - `uv run pytest …` : comportement inchangé.
46
+ - `uv run --with x pytest`, `uv run --directory .. pytest`, `uv run --index-url u pytest` :
47
+ refusées, message qui nomme l'option.
48
+ - `uv run --python /tmp/python pytest` : refusée (valeur qui n'est pas une version).
49
+ - `uv run --python` sans valeur, `uv run --no-project` sans outil : refusées.
50
+ - Outil imbriqué non approuvé derrière des options autorisées : toujours refusé.
51
+
52
+ ## Livraison
53
+
54
+ La PR augmente la version en 6.1.2 (`pyproject.toml`, `VERSION`, `uv.lock`, `CHANGELOG.md`
55
+ concordants, cf. `scripts/check_release.py`). Le tag est posé à la main après le merge.
56
+
57
+ Contrainte de ce parcours : la CLI qui l'exécute (6.1.1) a encore le défaut. Les commandes de
58
+ validation déclarées ne doivent donc pas mettre d'options entre `uv run` et l'outil
59
+ (ex. `uv run pytest -q tests/…`).