devflow-cli 2.3.0__tar.gz → 2.9.0__tar.gz

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