pactkit 2.15.2__tar.gz → 2.16.1__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 (615) hide show
  1. {pactkit-2.15.2 → pactkit-2.16.1}/CHANGELOG.md +10 -0
  2. {pactkit-2.15.2 → pactkit-2.16.1}/PKG-INFO +1 -1
  3. {pactkit-2.15.2 → pactkit-2.16.1}/docs/architecture/governance/archive/lessons_archive_202603.md +2 -0
  4. {pactkit-2.15.2 → pactkit-2.16.1}/docs/architecture/governance/lessons.md +2 -2
  5. {pactkit-2.15.2 → pactkit-2.16.1}/docs/architecture/governance/rules.md +1 -1
  6. pactkit-2.16.1/docs/product/archive/archive_202607.md +28 -0
  7. {pactkit-2.15.2 → pactkit-2.16.1}/docs/product/context.md +4 -4
  8. {pactkit-2.15.2 → pactkit-2.16.1}/docs/product/sprint_board.md +0 -1
  9. pactkit-2.16.1/docs/specs/STORY-slim-125.md +72 -0
  10. pactkit-2.16.1/docs/specs/STORY-slim-133.md +152 -0
  11. pactkit-2.16.1/docs/specs/STORY-slim-134.md +102 -0
  12. {pactkit-2.15.2 → pactkit-2.16.1}/pyproject.toml +1 -1
  13. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/__init__.py +1 -1
  14. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/config.py +2 -0
  15. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/prompts/commands.py +2 -8
  16. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/prompts/rules.py +1 -0
  17. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/prompts/workflows.py +145 -3
  18. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_config.py +5 -5
  19. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_pdca_slim.py +10 -10
  20. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_prompt_structural_invariants.py +2 -2
  21. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_selective_deploy.py +6 -7
  22. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_status_command.py +2 -2
  23. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story063_prompt_slimming.py +2 -1
  24. pactkit-2.16.1/tests/unit/test_story133_debug_skill.py +37 -0
  25. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim063.py +1 -1
  26. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim125.py +34 -39
  27. pactkit-2.16.1/tests/unit/test_story_slim134_no_model_in_frontmatter.py +126 -0
  28. pactkit-2.15.2/docs/product/archive/archive_202607.md +0 -13
  29. pactkit-2.15.2/docs/specs/STORY-slim-125.md +0 -86
  30. {pactkit-2.15.2 → pactkit-2.16.1}/.codegraph/.gitignore +0 -0
  31. {pactkit-2.15.2 → pactkit-2.16.1}/.github/workflows/pactkit.yml +0 -0
  32. {pactkit-2.15.2 → pactkit-2.16.1}/.github/workflows/publish.yml +0 -0
  33. {pactkit-2.15.2 → pactkit-2.16.1}/.gitignore +0 -0
  34. {pactkit-2.15.2 → pactkit-2.16.1}/AGENTS.md +0 -0
  35. {pactkit-2.15.2 → pactkit-2.16.1}/CODE_OF_CONDUCT.md +0 -0
  36. {pactkit-2.15.2 → pactkit-2.16.1}/CONTRIBUTING.md +0 -0
  37. {pactkit-2.15.2 → pactkit-2.16.1}/LICENSE +0 -0
  38. {pactkit-2.15.2 → pactkit-2.16.1}/README.md +0 -0
  39. {pactkit-2.15.2 → pactkit-2.16.1}/SECURITY.md +0 -0
  40. {pactkit-2.15.2 → pactkit-2.16.1}/docs/architecture/governance/archive/lessons_archive_202602.md +0 -0
  41. {pactkit-2.15.2 → pactkit-2.16.1}/docs/architecture/governance/harness_audit.json +0 -0
  42. {pactkit-2.15.2 → pactkit-2.16.1}/docs/architecture/governance/philosophy.md +0 -0
  43. {pactkit-2.15.2 → pactkit-2.16.1}/docs/assets/logo.png +0 -0
  44. {pactkit-2.15.2 → pactkit-2.16.1}/docs/e2e/journey.md +0 -0
  45. {pactkit-2.15.2 → pactkit-2.16.1}/docs/guides/codex-integration-preresearch.md +0 -0
  46. {pactkit-2.15.2 → pactkit-2.16.1}/docs/guides/tool-integration-checklist.md +0 -0
  47. {pactkit-2.15.2 → pactkit-2.16.1}/docs/product/archive/archive_202602.md +0 -0
  48. {pactkit-2.15.2 → pactkit-2.16.1}/docs/product/archive/archive_202603.md +0 -0
  49. {pactkit-2.15.2 → pactkit-2.16.1}/docs/product/archive/archive_202604.md +0 -0
  50. {pactkit-2.15.2 → pactkit-2.16.1}/docs/product/archive/archive_202605.md +0 -0
  51. {pactkit-2.15.2 → pactkit-2.16.1}/docs/product/archive/archive_202606.md +0 -0
  52. {pactkit-2.15.2 → pactkit-2.16.1}/docs/product/friction-log.md +0 -0
  53. {pactkit-2.15.2 → pactkit-2.16.1}/docs/product/prd.md +0 -0
  54. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-001.md +0 -0
  55. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-002.md +0 -0
  56. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-003.md +0 -0
  57. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-004.md +0 -0
  58. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-005.md +0 -0
  59. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-006.md +0 -0
  60. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-007.md +0 -0
  61. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-008.md +0 -0
  62. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-009.md +0 -0
  63. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-010.md +0 -0
  64. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-011.md +0 -0
  65. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-012.md +0 -0
  66. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-013.md +0 -0
  67. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-014.md +0 -0
  68. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-015.md +0 -0
  69. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-016.md +0 -0
  70. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-017.md +0 -0
  71. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-018.md +0 -0
  72. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-019.md +0 -0
  73. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-020.md +0 -0
  74. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-021.md +0 -0
  75. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-022.md +0 -0
  76. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-023.md +0 -0
  77. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-024.md +0 -0
  78. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-025.md +0 -0
  79. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-026.md +0 -0
  80. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-027.md +0 -0
  81. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-028.md +0 -0
  82. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-029.md +0 -0
  83. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-030.md +0 -0
  84. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-031.md +0 -0
  85. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-032.md +0 -0
  86. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-033.md +0 -0
  87. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-034.md +0 -0
  88. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-035.md +0 -0
  89. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-slim-001.md +0 -0
  90. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-slim-002.md +0 -0
  91. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-slim-003.md +0 -0
  92. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-slim-004.md +0 -0
  93. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-slim-005.md +0 -0
  94. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-slim-006.md +0 -0
  95. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-slim-089.md +0 -0
  96. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/BUG-slim-107.md +0 -0
  97. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-023.md +0 -0
  98. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-049.md +0 -0
  99. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-050.md +0 -0
  100. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-051.md +0 -0
  101. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-052.md +0 -0
  102. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-061.md +0 -0
  103. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-062.md +0 -0
  104. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-067.md +0 -0
  105. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-069.md +0 -0
  106. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-070.md +0 -0
  107. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-085.md +0 -0
  108. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-087.md +0 -0
  109. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-096.md +0 -0
  110. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-099.md +0 -0
  111. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-107.md +0 -0
  112. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-117.md +0 -0
  113. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-122.md +0 -0
  114. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-123.md +0 -0
  115. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-126.md +0 -0
  116. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-127.md +0 -0
  117. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-130.md +0 -0
  118. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-131.md +0 -0
  119. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/HOTFIX-slim-132.md +0 -0
  120. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-001.md +0 -0
  121. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-002.md +0 -0
  122. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-003.md +0 -0
  123. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-004.md +0 -0
  124. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-005.md +0 -0
  125. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-006.md +0 -0
  126. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-007.md +0 -0
  127. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-008.md +0 -0
  128. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-009.md +0 -0
  129. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-010.md +0 -0
  130. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-011.md +0 -0
  131. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-012.md +0 -0
  132. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-013.md +0 -0
  133. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-014.md +0 -0
  134. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-015.md +0 -0
  135. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-016.md +0 -0
  136. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-017.md +0 -0
  137. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-018.md +0 -0
  138. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-019.md +0 -0
  139. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-020.md +0 -0
  140. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-021.md +0 -0
  141. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-022.md +0 -0
  142. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-023.md +0 -0
  143. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-024.md +0 -0
  144. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-025.md +0 -0
  145. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-026.md +0 -0
  146. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-027.md +0 -0
  147. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-028.md +0 -0
  148. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-029.md +0 -0
  149. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-030.md +0 -0
  150. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-031.md +0 -0
  151. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-032.md +0 -0
  152. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-033.md +0 -0
  153. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-034.md +0 -0
  154. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-035.md +0 -0
  155. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-036.md +0 -0
  156. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-037.md +0 -0
  157. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-038.md +0 -0
  158. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-039.md +0 -0
  159. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-040.md +0 -0
  160. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-041.md +0 -0
  161. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-042.md +0 -0
  162. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-043.md +0 -0
  163. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-044.md +0 -0
  164. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-045.md +0 -0
  165. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-046.md +0 -0
  166. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-047.md +0 -0
  167. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-048.md +0 -0
  168. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-049.md +0 -0
  169. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-050.md +0 -0
  170. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-051.md +0 -0
  171. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-052.md +0 -0
  172. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-053.md +0 -0
  173. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-054.md +0 -0
  174. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-055.md +0 -0
  175. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-056.md +0 -0
  176. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-057.md +0 -0
  177. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-058.md +0 -0
  178. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-059.md +0 -0
  179. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-060.md +0 -0
  180. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-061.md +0 -0
  181. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-062.md +0 -0
  182. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-063.md +0 -0
  183. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-064.md +0 -0
  184. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-065.md +0 -0
  185. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-069.md +0 -0
  186. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-070.md +0 -0
  187. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-071.md +0 -0
  188. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-072.md +0 -0
  189. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-073.md +0 -0
  190. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-001.md +0 -0
  191. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-005.md +0 -0
  192. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-006.md +0 -0
  193. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-007.md +0 -0
  194. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-009.md +0 -0
  195. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-010.md +0 -0
  196. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-011.md +0 -0
  197. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-012.md +0 -0
  198. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-013.md +0 -0
  199. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-014.md +0 -0
  200. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-015.md +0 -0
  201. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-016.md +0 -0
  202. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-017.md +0 -0
  203. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-018.md +0 -0
  204. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-019.md +0 -0
  205. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-020.md +0 -0
  206. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-021.md +0 -0
  207. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-022.md +0 -0
  208. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-023.md +0 -0
  209. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-024.md +0 -0
  210. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-028.md +0 -0
  211. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-029.md +0 -0
  212. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-030.md +0 -0
  213. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-031.md +0 -0
  214. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-032.md +0 -0
  215. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-033.md +0 -0
  216. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-034.md +0 -0
  217. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-035.md +0 -0
  218. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-036.md +0 -0
  219. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-037.md +0 -0
  220. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-038.md +0 -0
  221. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-039.md +0 -0
  222. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-040.md +0 -0
  223. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-041.md +0 -0
  224. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-042.md +0 -0
  225. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-043.md +0 -0
  226. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-044.md +0 -0
  227. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-045.md +0 -0
  228. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-046.md +0 -0
  229. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-047.md +0 -0
  230. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-048.md +0 -0
  231. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-049.md +0 -0
  232. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-050.md +0 -0
  233. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-051.md +0 -0
  234. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-052.md +0 -0
  235. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-053.md +0 -0
  236. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-054.md +0 -0
  237. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-055.md +0 -0
  238. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-056.md +0 -0
  239. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-057.md +0 -0
  240. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-058.md +0 -0
  241. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-059.md +0 -0
  242. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-060.md +0 -0
  243. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-063.md +0 -0
  244. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-066.md +0 -0
  245. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-067.md +0 -0
  246. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-068.md +0 -0
  247. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-069.md +0 -0
  248. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-070.md +0 -0
  249. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-071.md +0 -0
  250. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-072.md +0 -0
  251. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-073.md +0 -0
  252. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-074.md +0 -0
  253. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-075.md +0 -0
  254. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-076.md +0 -0
  255. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-077.md +0 -0
  256. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-078.md +0 -0
  257. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-079.md +0 -0
  258. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-080.md +0 -0
  259. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-081.md +0 -0
  260. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-082.md +0 -0
  261. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-083.md +0 -0
  262. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-084.md +0 -0
  263. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-086.md +0 -0
  264. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-088.md +0 -0
  265. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-089.md +0 -0
  266. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-090.md +0 -0
  267. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-091.md +0 -0
  268. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-092.md +0 -0
  269. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-093.md +0 -0
  270. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-094.md +0 -0
  271. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-095.md +0 -0
  272. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-097.md +0 -0
  273. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-098.md +0 -0
  274. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-099.md +0 -0
  275. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-100.md +0 -0
  276. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-101.md +0 -0
  277. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-102.md +0 -0
  278. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-103.md +0 -0
  279. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-104.md +0 -0
  280. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-105.md +0 -0
  281. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-106.md +0 -0
  282. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-107.md +0 -0
  283. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-108.md +0 -0
  284. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-109.md +0 -0
  285. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-110.md +0 -0
  286. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-111.md +0 -0
  287. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-112.md +0 -0
  288. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-113.md +0 -0
  289. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-114.md +0 -0
  290. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-115.md +0 -0
  291. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-116.md +0 -0
  292. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-118.md +0 -0
  293. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-119.md +0 -0
  294. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-120.md +0 -0
  295. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-121.md +0 -0
  296. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-124.md +0 -0
  297. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-126.md +0 -0
  298. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-127.md +0 -0
  299. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-128.md +0 -0
  300. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-129.md +0 -0
  301. {pactkit-2.15.2 → pactkit-2.16.1}/docs/specs/STORY-slim-132.md +0 -0
  302. {pactkit-2.15.2 → pactkit-2.16.1}/docs/test_cases/BUG-001_case.md +0 -0
  303. {pactkit-2.15.2 → pactkit-2.16.1}/docs/test_cases/BUG-002_case.md +0 -0
  304. {pactkit-2.15.2 → pactkit-2.16.1}/docs/test_cases/STORY-slim-028_case.md +0 -0
  305. {pactkit-2.15.2 → pactkit-2.16.1}/docs/test_cases/STORY-slim-029_case.md +0 -0
  306. {pactkit-2.15.2 → pactkit-2.16.1}/docs/test_cases/STORY-slim-031_case.md +0 -0
  307. {pactkit-2.15.2 → pactkit-2.16.1}/docs/test_cases/STORY-slim-032_case.md +0 -0
  308. {pactkit-2.15.2 → pactkit-2.16.1}/docs/test_cases/STORY-slim-033_case.md +0 -0
  309. {pactkit-2.15.2 → pactkit-2.16.1}/docs/test_cases/STORY-slim-034_case.md +0 -0
  310. {pactkit-2.15.2 → pactkit-2.16.1}/opencode.json +0 -0
  311. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/__main__.py +0 -0
  312. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/audit.py +0 -0
  313. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/backfill.py +0 -0
  314. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/cleaners.py +0 -0
  315. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/cli.py +0 -0
  316. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/context_gen.py +0 -0
  317. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/coverage_gate.py +0 -0
  318. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/doctor.py +0 -0
  319. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/garden.py +0 -0
  320. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/generators/__init__.py +0 -0
  321. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/generators/adapter.py +0 -0
  322. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/generators/deploy_base.py +0 -0
  323. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/generators/deployer.py +0 -0
  324. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/guards.py +0 -0
  325. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/id_generator.py +0 -0
  326. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/invariants.py +0 -0
  327. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/issue_sync.py +0 -0
  328. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/lazy_visualize.py +0 -0
  329. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/lessons.py +0 -0
  330. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/lint_runner.py +0 -0
  331. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/observe.py +0 -0
  332. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/profiles.py +0 -0
  333. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/prompts/__init__.py +0 -0
  334. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/prompts/agents.py +0 -0
  335. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/prompts/guides.py +0 -0
  336. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/prompts/references.py +0 -0
  337. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/prompts/skills.py +0 -0
  338. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/regression.py +0 -0
  339. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/schemas.py +0 -0
  340. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/scripts.py +0 -0
  341. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/sec_scope.py +0 -0
  342. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/skills/__init__.py +0 -0
  343. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/skills/analyzers/__init__.py +0 -0
  344. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/skills/analyzers/go_analyzer.py +0 -0
  345. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/skills/analyzers/java_analyzer.py +0 -0
  346. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/skills/analyzers/python_analyzer.py +0 -0
  347. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/skills/analyzers/ts_analyzer.py +0 -0
  348. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/skills/board.py +0 -0
  349. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/skills/interface_summary.py +0 -0
  350. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/skills/report.py +0 -0
  351. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/skills/scaffold.py +0 -0
  352. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/skills/spec_linter.py +0 -0
  353. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/skills/visualize.py +0 -0
  354. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/spec_status.py +0 -0
  355. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/test_mapper.py +0 -0
  356. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/utils.py +0 -0
  357. {pactkit-2.15.2 → pactkit-2.16.1}/src/pactkit/validators.py +0 -0
  358. {pactkit-2.15.2 → pactkit-2.16.1}/tests/conftest.py +0 -0
  359. {pactkit-2.15.2 → pactkit-2.16.1}/tests/e2e/__init__.py +0 -0
  360. {pactkit-2.15.2 → pactkit-2.16.1}/tests/e2e/cli/__init__.py +0 -0
  361. {pactkit-2.15.2 → pactkit-2.16.1}/tests/e2e/cli/test_cli_e2e.py +0 -0
  362. {pactkit-2.15.2 → pactkit-2.16.1}/tests/fixtures/agent_parser/agents_dir/researcher.yaml +0 -0
  363. {pactkit-2.15.2 → pactkit-2.16.1}/tests/fixtures/agent_parser/agents_dir/writer.yaml +0 -0
  364. {pactkit-2.15.2 → pactkit-2.16.1}/tests/fixtures/agent_parser/langgraph_app.py +0 -0
  365. {pactkit-2.15.2 → pactkit-2.16.1}/tests/fixtures/agent_parser/mcp_settings.json +0 -0
  366. {pactkit-2.15.2 → pactkit-2.16.1}/tests/fixtures/api_call_parser/axios_style.tsx +0 -0
  367. {pactkit-2.15.2 → pactkit-2.16.1}/tests/fixtures/api_call_parser/dynamic.tsx +0 -0
  368. {pactkit-2.15.2 → pactkit-2.16.1}/tests/fixtures/api_call_parser/page.tsx +0 -0
  369. {pactkit-2.15.2 → pactkit-2.16.1}/tests/integration/__init__.py +0 -0
  370. {pactkit-2.15.2 → pactkit-2.16.1}/tests/integration/test_deploy_classic.py +0 -0
  371. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_agent_features.py +0 -0
  372. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_agent_frontmatter.py +0 -0
  373. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_agents_enrichment.py +0 -0
  374. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_audit.py +0 -0
  375. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_blast_radius.py +0 -0
  376. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_board_bug027.py +0 -0
  377. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_board_sections.py +0 -0
  378. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug001_skill_path.py +0 -0
  379. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug002_plugin_paths.py +0 -0
  380. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug003_multi_import.py +0 -0
  381. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug004_dead_set.py +0 -0
  382. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug005_archive_taskless.py +0 -0
  383. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug006_scan_excludes.py +0 -0
  384. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug007_stale_trace_refs.py +0 -0
  385. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug008_stale_command_refs.py +0 -0
  386. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug009_project_config_backfill.py +0 -0
  387. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug010_rewrite_yaml.py +0 -0
  388. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug011_stale_refs.py +0 -0
  389. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug012_call_graph_filter.py +0 -0
  390. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug013_config_single_source.py +0 -0
  391. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug014_version_hygiene.py +0 -0
  392. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug017_project_init_playbook.py +0 -0
  393. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug018_issue_tracker_verification.py +0 -0
  394. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug019_venv_deployment.py +0 -0
  395. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug020_claude_md_backup.py +0 -0
  396. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug025_release_delegation.py +0 -0
  397. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug026_version_sync.py +0 -0
  398. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug028_ghost_refs.py +0 -0
  399. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug029_stack_detection_fallback.py +0 -0
  400. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug030_spec_lint_cli.py +0 -0
  401. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug031_docstring_accuracy.py +0 -0
  402. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug034_plan_metadata_template.py +0 -0
  403. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug_021.py +0 -0
  404. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug_022.py +0 -0
  405. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug_023.py +0 -0
  406. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug_024.py +0 -0
  407. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug_slim001_env_detection.py +0 -0
  408. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug_slim002_instruction_collision.py +0 -0
  409. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug_slim003.py +0 -0
  410. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug_slim004.py +0 -0
  411. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug_slim005.py +0 -0
  412. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug_slim006.py +0 -0
  413. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_bug_slim089_global_claude_md.py +0 -0
  414. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_check_command.py +0 -0
  415. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_check_extensions_072_073.py +0 -0
  416. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_check_playbook_072_073.py +0 -0
  417. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_command_frontmatter.py +0 -0
  418. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_command_visualize_modes.py +0 -0
  419. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_complexity.py +0 -0
  420. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_config_auto_merge.py +0 -0
  421. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_constitution_sharpening.py +0 -0
  422. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_context_gen.py +0 -0
  423. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_create_skill.py +0 -0
  424. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_cross_flow_matrix.py +0 -0
  425. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_deploy_base.py +0 -0
  426. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_deployer_cleanup.py +0 -0
  427. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_deployer_plugin.py +0 -0
  428. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_design_command.py +0 -0
  429. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_done_gates.py +0 -0
  430. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_draw_prompt.py +0 -0
  431. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_draw_references.py +0 -0
  432. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_drawio_mcp.py +0 -0
  433. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_garden.py +0 -0
  434. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_home_path_fix.py +0 -0
  435. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_hotfix_command.py +0 -0
  436. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_init_guard.py +0 -0
  437. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_init_playbook_074.py +0 -0
  438. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_interface_summary.py +0 -0
  439. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_lang_profiles.py +0 -0
  440. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_layer_violations.py +0 -0
  441. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_lessons_rotation_075.py +0 -0
  442. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_list_stories.py +0 -0
  443. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_mcp_integration.py +0 -0
  444. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_model_config.py +0 -0
  445. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_modular_constitution.py +0 -0
  446. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_monorepo_detect.py +0 -0
  447. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_multi_prefix.py +0 -0
  448. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_observe.py +0 -0
  449. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_profiles.py +0 -0
  450. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_project_visibility.py +0 -0
  451. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_prompt_cli_refs.py +0 -0
  452. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_prompt_quality_075.py +0 -0
  453. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_prompts_package.py +0 -0
  454. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_release.py +0 -0
  455. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_release_field.py +0 -0
  456. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_release_v110.py +0 -0
  457. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_render_prompt.py +0 -0
  458. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_report_parser.py +0 -0
  459. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_report_unified.py +0 -0
  460. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_review_command.py +0 -0
  461. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_rules_enrichment.py +0 -0
  462. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_scaffold.py +0 -0
  463. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_scaffold_developer_prefix.py +0 -0
  464. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_schemas.py +0 -0
  465. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_script_extraction.py +0 -0
  466. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_session_context.py +0 -0
  467. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_skill_structure.py +0 -0
  468. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_skills_enrichment.py +0 -0
  469. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_slim_deps_088.py +0 -0
  470. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_smart_regression.py +0 -0
  471. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_solution_design_rule.py +0 -0
  472. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_sprint_command.py +0 -0
  473. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_stack_references.py +0 -0
  474. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_statusline.py +0 -0
  475. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story014_release.py +0 -0
  476. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story015_ci_lint_gate.py +0 -0
  477. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story016_claude_md.py +0 -0
  478. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story017_init_claude_md.py +0 -0
  479. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story018_arch_staleness.py +0 -0
  480. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story019_bailout.py +0 -0
  481. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story020_horizon.py +0 -0
  482. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story021_rfc.py +0 -0
  483. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story022_decision_tree.py +0 -0
  484. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story023_test_quality.py +0 -0
  485. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story024_native_agent.py +0 -0
  486. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story025_ci_pipeline.py +0 -0
  487. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story026_issue_tracker.py +0 -0
  488. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story028_rule_scoping.py +0 -0
  489. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story029_doctor.py +0 -0
  490. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story030_lint.py +0 -0
  491. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story031_git_init_guard.py +0 -0
  492. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story032_greenfield_redirect.py +0 -0
  493. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story033_config_backfill.py +0 -0
  494. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story034_plan_config_refresh.py +0 -0
  495. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story035_readme_docs.py +0 -0
  496. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story037_regression_fix.py +0 -0
  497. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story038_call_graph_update.py +0 -0
  498. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story039_venv_config.py +0 -0
  499. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story040_layered_claude_md.py +0 -0
  500. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story042_spec_linter.py +0 -0
  501. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story043_active_clarify.py +0 -0
  502. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story044_consistency_check.py +0 -0
  503. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story045_auto_pr.py +0 -0
  504. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story046_agent_adapter.py +0 -0
  505. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story047_enterprise_flags.py +0 -0
  506. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story048_worktree_isolation.py +0 -0
  507. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story049_community_standards.py +0 -0
  508. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story050_doc_only_shortcut.py +0 -0
  509. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story051_workflow_streamlining.py +0 -0
  510. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story052_conditional_github_release.py +0 -0
  511. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story053_impact_regression.py +0 -0
  512. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story055_commands.py +0 -0
  513. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story055_config.py +0 -0
  514. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story055_spec_linter.py +0 -0
  515. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story056_commands.py +0 -0
  516. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story056_config.py +0 -0
  517. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story057_implicit_cleanup.py +0 -0
  518. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story058_opencode_extraction.py +0 -0
  519. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story058_routing_fix.py +0 -0
  520. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story059_codex_removal.py +0 -0
  521. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story060_init_hang.py +0 -0
  522. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story061_remove_thinking.py +0 -0
  523. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story062_mcp_recommendations.py +0 -0
  524. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story064_venv_local_md.py +0 -0
  525. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story065_sprint_model.py +0 -0
  526. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story072_developer_prefix.py +0 -0
  527. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story106_lateral_scan.py +0 -0
  528. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim009_lazy_rules.py +0 -0
  529. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim010_dry_refactor.py +0 -0
  530. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim011_command_rules.py +0 -0
  531. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim012_ci.py +0 -0
  532. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim014_clean.py +0 -0
  533. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim014_context.py +0 -0
  534. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim014_guard.py +0 -0
  535. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim014_lazy_viz.py +0 -0
  536. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim014_next_id.py +0 -0
  537. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim014_regression.py +0 -0
  538. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim014_sec_scope.py +0 -0
  539. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim014_validators.py +0 -0
  540. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim015_doctor.py +0 -0
  541. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim016_testmap_lint.py +0 -0
  542. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim017.py +0 -0
  543. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim018.py +0 -0
  544. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim019_plan_subphases.py +0 -0
  545. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim020_explore_stall_fix.py +0 -0
  546. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim021.py +0 -0
  547. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim022.py +0 -0
  548. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim023.py +0 -0
  549. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim024.py +0 -0
  550. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim025.py +0 -0
  551. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim026.py +0 -0
  552. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim027.py +0 -0
  553. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim028.py +0 -0
  554. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim029.py +0 -0
  555. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim030.py +0 -0
  556. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim031.py +0 -0
  557. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim032.py +0 -0
  558. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim033.py +0 -0
  559. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim034.py +0 -0
  560. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim035.py +0 -0
  561. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim036.py +0 -0
  562. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim037.py +0 -0
  563. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim038.py +0 -0
  564. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim039.py +0 -0
  565. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim040.py +0 -0
  566. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim041.py +0 -0
  567. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim042.py +0 -0
  568. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim043.py +0 -0
  569. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim044.py +0 -0
  570. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim045.py +0 -0
  571. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim046.py +0 -0
  572. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim047.py +0 -0
  573. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim048.py +0 -0
  574. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim049.py +0 -0
  575. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim051.py +0 -0
  576. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim052.py +0 -0
  577. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim053.py +0 -0
  578. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim054.py +0 -0
  579. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim055.py +0 -0
  580. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim056.py +0 -0
  581. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim060_codex_profile.py +0 -0
  582. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim065.py +0 -0
  583. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim076_multistack.py +0 -0
  584. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim077_monorepo_stack.py +0 -0
  585. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim078.py +0 -0
  586. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim079.py +0 -0
  587. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim080.py +0 -0
  588. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim081.py +0 -0
  589. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim082.py +0 -0
  590. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim083.py +0 -0
  591. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim084.py +0 -0
  592. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim095.py +0 -0
  593. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim098_pdca_nudge.py +0 -0
  594. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim099_act_context_ref.py +0 -0
  595. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim102_version_marker.py +0 -0
  596. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim104_should_semantics.py +0 -0
  597. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim107.py +0 -0
  598. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim109_journey_spec.py +0 -0
  599. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim111_playwright_assertion.py +0 -0
  600. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim112_rules_split.py +0 -0
  601. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim114_journey_sync.py +0 -0
  602. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim119.py +0 -0
  603. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim120.py +0 -0
  604. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim121.py +0 -0
  605. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim126.py +0 -0
  606. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim127_managed_block.py +0 -0
  607. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim128_engineering_concerns.py +0 -0
  608. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_story_slim132.py +0 -0
  609. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_tools.py +0 -0
  610. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_topology_parsers_066.py +0 -0
  611. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_update_task.py +0 -0
  612. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_visualize_call_nested.py +0 -0
  613. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_visualize_chain_fix.py +0 -0
  614. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_visualize_modes.py +0 -0
  615. {pactkit-2.15.2 → pactkit-2.16.1}/tests/unit/test_visualize_multilang_chain.py +0 -0
@@ -4,6 +4,16 @@ All notable changes to PactKit will be documented in this file.
4
4
 
5
5
  Format follows [Keep a Changelog](https://keepachangelog.com/).
6
6
 
7
+ ## [2.16.1] - 2026-07-23
8
+
9
+ ### Fixed
10
+ - **Bedrock VS Code plugin model compatibility** (STORY-slim-134) — Removed `model:` field from all `/project-*` command frontmatter. Claude Code was resolving `model: sonnet/opus` to Anthropic's latest model ID (e.g., `us.anthropic.claude-sonnet-4-5-20250929-v1:0`), bypassing `ANTHROPIC_DEFAULT_SONNET_MODEL` env var in VS Code plugin environments. Commands now inherit the session default model set by the user's provider env vars.
11
+
12
+ ## [2.16.0] - 2026-07-13
13
+
14
+ ### Added
15
+ - **`/project-debug` command** (STORY-slim-133) — Hypothesis-driven troubleshooting skill. Structured loop: Symptom → Hypothesize (≤3) → Verify (executable commands) → Narrow → Root Cause. Enforces evidence-gated file access (no aimless reading) and convergence guarantees (escalates to `/project-plan` if stuck after 3 iterations). Uses sonnet model with structured protocol.
16
+
7
17
  ## [2.15.2] - 2026-07-02
8
18
 
9
19
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pactkit
3
- Version: 2.15.2
3
+ Version: 2.16.1
4
4
  Summary: Spec-driven agentic DevOps toolkit for AI coding assistants
5
5
  Project-URL: Homepage, https://pactkit.dev
6
6
  Project-URL: Repository, https://github.com/pactkit/pactkit-public
@@ -66,3 +66,5 @@
66
66
  | 2026-03-26 | DeployerBase static methods use lazy imports to avoid circular dependencies between deploy_base.py and deployer.py | deploy_base.py:DeployerBase.render_prompt |
67
67
  | 2026-03-26 | Thin adapter conversion: pactkit-codex reduced from 15,356 lines (full fork) to 668 lines (thin adapter) by importing core via DeployerBase. Key: deploy_codex_playbooks needs explicit path replacement for ALL format prefixes (~/.claude/, ~/.config/opencode/ → ~/.codex/) | pactkit_codex/deployer.py:deploy_codex_playbooks |
68
68
  | 2026-03-27 | When migrating commands to skills (subdir/SKILL.md format), all path assertions in pre-existing tests must be updated in the same commit — 17 tests broke because they asserted flat commands/*.md paths | deployer.py:_deploy_commands |
69
+ | 2026-03-30 | Frontend API path convention bugs are structurally preventable: ApiCallParser+api_convention_summary in trace phase surfaces prefix/wrapper conventions before implementation, eliminating a class of copy-paste path errors | visualize.py:ApiCallParser |
70
+ | 2026-03-31 | Rendering-only changes to visualize.py can be isolated by extracting a shared render helper (_render_nested_call_graph) that both forward and reverse BFS call — keeps AST parsing untouched | visualize.py:_render_nested_call_graph |
@@ -2,8 +2,6 @@
2
2
 
3
3
  | Date | Lesson | Context |
4
4
  |------|--------|---------|
5
- | 2026-03-30 | Frontend API path convention bugs are structurally preventable: ApiCallParser+api_convention_summary in trace phase surfaces prefix/wrapper conventions before implementation, eliminating a class of copy-paste path errors | visualize.py:ApiCallParser |
6
- | 2026-03-31 | Rendering-only changes to visualize.py can be isolated by extracting a shared render helper (_render_nested_call_graph) that both forward and reverse BFS call — keeps AST parsing untouched | visualize.py:_render_nested_call_graph |
7
5
  | 2026-03-31 | dict.update() on call_edges causes last-wins overwrite when scanning same-name functions across files; use extend-merge pattern instead | visualize.py:_build_call_graph |
8
6
  | 2026-03-31 | CLI args must mirror visualize.py standalone argparse; feature implemented in visualize.py but not exposed in cli.py is effectively dead code | cli.py:viz_parser |
9
7
  | 2026-03-31 | tree-sitter comment nodes are direct children of function body nodes (block/statement_block), enabling scoped dispatch hint queries without parent traversal. Per-language comment query needed: Go/TS use (comment), Java uses [(line_comment)(block_comment)]. | visualize.py:_extract_calls_from_body |
@@ -53,3 +51,5 @@
53
51
  | 2026-06-10 | Engineering guides are additive: new GUIDES_FILES entries auto-deploy via _deploy_guides() without deployer changes. Test impact limited to count assertions in test_story_slim128. | src/pactkit/prompts/guides.py:GUIDES_FILES |
54
52
  | 2026-06-29 | Large @inject rules (architecture 11KB, solution 8.4KB, engineering 4.3KB) removed from COMMAND_RULES_MAP — loaded on-demand via Read in playbooks. Saves ~12,500 tokens/PDCA session. | src/pactkit/prompts/rules.py:COMMAND_RULES_MAP |
55
53
  | 2026-07-02 | Hardcoding external tool CLI commands in SKILL_VISUALIZE_MD and deployer.py creates upgrade coupling — replaced with codegraph --help runtime discovery in _build_claude_md_managed_content() | src/pactkit/generators/deployer.py:_build_claude_md_managed_content |
54
+ | 2026-07-13 | Adding project-debug required updating VALID_COMMANDS in config.py, VALID_SKILLS, COMMANDS_CONTENT registration in commands.py, and COMMAND_RULES_MAP in rules.py — plus 6 test files with hardcoded count assertions | src/pactkit/config.py:VALID_COMMANDS, src/pactkit/prompts/rules.py:COMMAND_RULES_MAP |
55
+ | 2026-07-23 | Removing `model:` from COMMANDS_CONTENT frontmatter fixes Bedrock VS Code plugin errors — Claude Code resolves the alias to Anthropic's latest model ID, bypassing `ANTHROPIC_DEFAULT_SONNET_MODEL`; without it, commands inherit the session default model set by the user's env vars | src/pactkit/prompts/commands.py:COMMANDS_CONTENT |
@@ -15,7 +15,7 @@
15
15
 
16
16
  ## Invariants
17
17
 
18
- 1. All 4032+ tests must pass before any commit to `main`.
18
+ 1. All 4045+ tests must pass before any commit to `main`.
19
19
  2. Specs (`docs/specs/`) are the source of truth — code conforms to specs, not the reverse.
20
20
  3. CLI entry point is `pactkit` via `src/pactkit/cli.py:main`.
21
21
  4. No runtime dependencies beyond `pyyaml`.
@@ -0,0 +1,28 @@
1
+
2
+ ### [STORY-slim-132] Decouple codegraph commands from hardcoded prompt
3
+ > Spec: docs/specs/STORY-slim-132.md
4
+
5
+ - [x] Replace skills.py codegraph block with help fallback
6
+ - [x] Replace deployer.py codegraph section
7
+ - [x] Update global CLAUDE.md
8
+ - [x] Remove MCP tool name list
9
+
10
+ ### [HOTFIX-slim-130] Fix skill frontmatter parsing
11
+ > Spec: docs/specs/HOTFIX-slim-130.md
12
+
13
+ - [x] Move @ references below YAML frontmatter block in all project-* skills
14
+
15
+ ### [STORY-slim-133] Structured Debug Skill (Hypothesis-Driven Troubleshooting)
16
+ > Spec: docs/specs/STORY-slim-133.md
17
+
18
+ - [x] Create SKILL.md protocol with all phases
19
+ - [x] Add to routing table in pactkit.md
20
+ - [x] Register in available-skills list
21
+
22
+ ### [STORY-slim-134] remove model field from command frontmatter
23
+ > Spec: docs/specs/STORY-slim-134.md
24
+
25
+ - [x] 删除 commands.py frontmatter model 字段
26
+ - [x] 删除 workflows.py frontmatter model 字段
27
+ - [x] 运行测试套件
28
+ - [x] redeploy plugin artifact
@@ -1,8 +1,8 @@
1
1
  # Project Context (Auto-generated)
2
- > Last updated: 2026-07-02T11:00:51+08:00 by pactkit context
2
+ > Last updated: 2026-07-23T18:05:40+08:00 by pactkit context
3
3
 
4
4
  ## Sprint Status
5
- Backlog: 4 | In Progress: 0 | Done: 0 stories
5
+ Backlog: 5 | In Progress: 0 | Done: 0 stories
6
6
 
7
7
  ## Current Stories
8
8
  None
@@ -16,11 +16,11 @@ None
16
16
  * main
17
17
 
18
18
  ## Key Decisions
19
- - codegraph sync must be enforced by code (pactkit visualize/sync), not by prompt instructions — prompt-only enforcement is unreliable for deterministic operations
20
- - Managed-block pattern (start/end markers + regex replace) is the canonical way to update mixed-ownership files — same pattern for CLAUDE.md and CLAUDE.local.md
21
19
  - Engineering guides are additive: new GUIDES_FILES entries auto-deploy via _deploy_guides() without deployer changes. Test impact limited to count assertions in test_story_slim128.
22
20
  - Large @inject rules (architecture 11KB, solution 8.4KB, engineering 4.3KB) removed from COMMAND_RULES_MAP — loaded on-demand via Read in playbooks. Saves ~12,500 tokens/PDCA session.
23
21
  - Hardcoding external tool CLI commands in SKILL_VISUALIZE_MD and deployer.py creates upgrade coupling — replaced with codegraph --help runtime discovery in _build_claude_md_managed_content()
22
+ - Adding project-debug required updating VALID_COMMANDS in config.py, VALID_SKILLS, COMMANDS_CONTENT registration in commands.py, and COMMAND_RULES_MAP in rules.py — plus 6 test files with hardcoded count assertions
23
+ - Removing `model:` from COMMANDS_CONTENT frontmatter fixes Bedrock VS Code plugin errors — Claude Code resolves the alias to Anthropic's latest model ID, bypassing `ANTHROPIC_DEFAULT_SONNET_MODEL`; without it, commands inherit the session default model set by the user's env vars
24
24
 
25
25
  ## Next Recommended Action
26
26
  `/project-plan`
@@ -31,7 +31,6 @@
31
31
 
32
32
  - [ ] Fix _deploy_commands prepend order
33
33
 
34
-
35
34
  ### [HOTFIX-slim-132] Add explicit board.py move_story command to project-act
36
35
  > Spec: docs/specs/HOTFIX-slim-132.md
37
36
 
@@ -0,0 +1,72 @@
1
+ # STORY-slim-125: Add model frontmatter to all PDCA command/skill prompts
2
+
3
+ | Field | Value |
4
+ |-------|-------|
5
+ | ID | STORY-slim-125 |
6
+ | Status | Done |
7
+ | Priority | P1 |
8
+ | Release | 2.14.0 |
9
+
10
+ ## Background
11
+
12
+ Originally (v2.14.0), all PDCA command frontmatter included a `model:` field to ensure consistent model routing. However, this caused breakage in enterprise Bedrock deployments: Claude Code resolves `model: sonnet` to the latest Anthropic model ID (e.g., `us.anthropic.claude-sonnet-4-5-20250929-v1:0`), which may not be available in a user's Bedrock deployment.
13
+
14
+ Superseded by STORY-slim-134 (v2.17.0): the `model:` field is removed from all command frontmatter. Commands now inherit the user's session-level default model, which is controlled by environment variables (`ANTHROPIC_DEFAULT_SONNET_MODEL`, etc.) that the user configures for their provider.
15
+
16
+ ## Requirements
17
+
18
+ ### R1: No PDCA command has model frontmatter (MUST)
19
+
20
+ No command/skill prompt in `src/pactkit/prompts/commands.py` or `src/pactkit/prompts/workflows.py` MUST include a `model:` field in its frontmatter block. Commands inherit the session default model.
21
+
22
+ ### R2: Deploy produces no model field in SKILL.md (MUST)
23
+
24
+ After `pactkit update`, no deployed `~/.claude/skills/project-*/SKILL.md` MUST contain a `model:` line in its YAML frontmatter.
25
+
26
+ ## Acceptance Criteria
27
+
28
+ ### AC1: No command has model field (R1)
29
+
30
+ - **Given** the source prompts in `commands.py` and `workflows.py`
31
+ - **When** their frontmatter is parsed
32
+ - **Then** no command prompt contains a `model:` field
33
+
34
+ ### AC2: Deploy produces no model in SKILL.md (R2)
35
+
36
+ - **Given** `pactkit update` is run
37
+ - **When** deployed SKILL.md files are inspected
38
+ - **Then** no `project-*` skill contains `model:` in frontmatter
39
+
40
+ ### AC3: project-design has no model field (R1)
41
+
42
+ - **Given** the `project-design` prompt in `workflows.py`
43
+ - **When** its frontmatter is read
44
+ - **Then** no `model:` field is present
45
+
46
+ ## Target Call Chain
47
+
48
+ ```
49
+ commands.py / workflows.py (prompt string with frontmatter)
50
+ → deployer.py _deploy_skills()
51
+ → writes ~/.claude/skills/project-*/SKILL.md
52
+ ```
53
+
54
+ ## Implementation Steps
55
+
56
+ | Step | File | Action | Dependencies | Risk |
57
+ |------|------|--------|-------------|------|
58
+ | 1 | `src/pactkit/prompts/commands.py` | Add `model: sonnet` to check, done, clarify, init, release, pr frontmatter | None | Low |
59
+ | 2 | `src/pactkit/prompts/workflows.py` | Add `model: sonnet` to sprint, hotfix; `model: opus` to design | None | Low |
60
+ | 3 | `tests/unit/` | Test that all command prompts have model field | Steps 1-2 | Low |
61
+
62
+ ## Security Scope
63
+
64
+ | Check | Applicable | Reason |
65
+ |-------|------------|--------|
66
+ | SEC-1 through SEC-8 | N/A | Prompt-only changes, no user input, no external systems |
67
+
68
+ ## Out of Scope
69
+
70
+ - Changing embedded skill models (pactkit-trace, pactkit-draw, etc.) — already assigned
71
+ - Validating model availability at runtime (Claude Code handles gracefully)
72
+ - Adding model field to agent definitions (separate mechanism via `agent_models` config)
@@ -0,0 +1,152 @@
1
+ # STORY-slim-133: Structured Debug Skill with Hypothesis-Driven Troubleshooting
2
+
3
+ | Field | Value |
4
+ |-------|-------|
5
+ | ID | STORY-slim-133 |
6
+ | Status | Done |
7
+ | Priority | P1 |
8
+ | Release | 2.16.0 |
9
+
10
+ ## Background
11
+
12
+ 当前 troubleshooting 流程存在两个核心问题:
13
+ 1. **假设发散不收敛** — AI 列出大量可能原因但不逐个验证排除,导致排查停滞
14
+ 2. **信息过载** — 漫无目的地 grep/read 大量文件,消耗 token 但不推进定位
15
+
16
+ 现有工具覆盖不了这个场景:
17
+ - `pactkit-trace` 是静态分析工具,前提是"已知要看哪里"
18
+ - `pactkit-doctor` 仅做项目健康检查
19
+ - `system-medic` 仅处理环境/配置问题
20
+ - `project-hotfix` 前提是"已定位到问题"
21
+
22
+ 需要一个**从症状到根因**的结构化排查 skill,强制走「假设→验证→缩小」循环,用 opus 模型的强推理能力替代漫无目的的搜索。
23
+
24
+ ## Requirements
25
+
26
+ ### R1: Hypothesis-Driven Loop (MUST)
27
+
28
+ Skill MUST enforce a structured loop: Observe → Hypothesize (≤3) → Verify (executable command per hypothesis) → Narrow. Each hypothesis MUST have a concrete verification step (a runnable command or code inspection with expected vs actual outcome). Skill MUST NOT proceed to the next hypothesis without executing verification on the current one first.
29
+
30
+ ### R2: Evidence-Gated File Access (MUST)
31
+
32
+ Every file read MUST be justified by a stated hypothesis or evidence trail. Skill MUST NOT read files "to get familiar with the codebase" or "to understand the context" without linking to a specific hypothesis being tested — violation of this produces the exact "查不到点子上" problem this skill solves.
33
+
34
+ ### R3: Structured Input Protocol (MUST)
35
+
36
+ Skill MUST provide a structured input template that minimizes user typing while capturing critical debugging info:
37
+ - **Symptom**: What's happening (error message, unexpected behavior)
38
+ - **Expected**: What should happen instead
39
+ - **Reproduction**: How to trigger it (command, URL, input)
40
+ - **Context**: What changed recently (optional)
41
+
42
+ When user provides raw text instead of structured input, skill MUST extract and organize into this structure before proceeding.
43
+
44
+ ### R4: Convergence Guarantee (MUST)
45
+
46
+ Each loop iteration MUST reduce the hypothesis space. If after 3 iterations no hypothesis is confirmed, skill MUST escalate:
47
+ - **Round 1 escalation**: ask user for more information (additional symptoms, reproduction steps)
48
+ - **Round 2 escalation (still stuck)**: nudge to `/project-plan` — "This looks like a cross-module issue that needs full architectural trace."
49
+
50
+ MUST NOT loop indefinitely on the same hypothesis set. The skill's job is fast triage, not deep surgery.
51
+
52
+ ### R5: Model Selection (MUST)
53
+
54
+ Skill MUST specify `model: sonnet` in SKILL.md frontmatter. Sonnet + structured protocol handles 80% of common bugs. For complex cross-module issues that don't converge, the escalation path is `/project-plan` (full PDCA with trace), not model upgrade.
55
+
56
+ ### R6: Concluding Report (MUST)
57
+
58
+ Upon locating root cause, skill MUST output a structured conclusion:
59
+ - **Root Cause**: One-sentence statement
60
+ - **Evidence**: The verification step that confirmed it
61
+ - **Fix Path**: Concrete next action (file:line to change, or command to run)
62
+ - **PDCA Nudge**: Recommend `/project-hotfix` or `/project-act` as appropriate
63
+
64
+ ### R7: Codegraph Integration (SHOULD)
65
+
66
+ If `.codegraph/` exists, skill SHOULD prefer codegraph for caller/callee analysis over grep during hypothesis verification. Fallback to grep when codegraph is unavailable.
67
+
68
+ ## Acceptance Criteria
69
+
70
+ ### AC1: Hypothesis Loop Enforced (R1, R4)
71
+
72
+ - **Given** user invokes `/project-debug "tests fail with KeyError on user_id"`
73
+ - **When** the skill starts processing
74
+ - **Then** it outputs: (1) structured symptom summary, (2) ≤3 ranked hypotheses each with a verification command, (3) executes verification commands in order, (4) narrows based on results, (5) converges to root cause within ≤5 iterations
75
+
76
+ ### AC2: No Aimless File Reading (R2)
77
+
78
+ - **Given** the skill is in a verification phase
79
+ - **When** it needs to read a file
80
+ - **Then** the read is preceded by a one-line justification linking to a hypothesis (e.g., "H2 verification: checking if `models.py:45` validates user_id before access")
81
+
82
+ ### AC3: Structured Input Extraction (R3)
83
+
84
+ - **Given** user provides unstructured text like "部署之后接口报500了"
85
+ - **When** the skill receives this input
86
+ - **Then** it extracts and formats into the 4-field template, asks for missing critical fields (Reproduction), and does NOT start hypothesizing until Symptom is clear
87
+
88
+ ### AC4: Convergence Escalation (R4)
89
+
90
+ - **Given** 3 iterations have passed without confirming a hypothesis
91
+ - **When** the skill enters the 4th iteration
92
+ - **Then** it asks user for more info; if still stuck after 1 more round, it nudges `/project-plan` with a summary of what was tried and ruled out
93
+
94
+ ### AC5: Sonnet Model with PDCA Escalation (R5)
95
+
96
+ - **Given** the SKILL.md file exists at `~/.claude/skills/project-debug/SKILL.md`
97
+ - **When** inspecting the frontmatter
98
+ - **Then** the `model` field is set to `sonnet`
99
+
100
+ ### AC6: Conclusion Report Format (R6)
101
+
102
+ - **Given** root cause has been identified through the verification loop
103
+ - **When** the skill outputs its conclusion
104
+ - **Then** it includes all 4 fields: Root Cause (one sentence), Evidence (which verification confirmed it), Fix Path (file:line or command), and PDCA Nudge (appropriate command recommendation)
105
+
106
+ ### AC7: Codegraph Preferred When Available (R7)
107
+
108
+ - **Given** the project has `.codegraph/` directory
109
+ - **When** the skill needs to trace callers/callees during verification
110
+ - **Then** it uses `codegraph` CLI instead of raw grep
111
+
112
+ ## Target Call Chain
113
+
114
+ ```
115
+ User invokes /project-debug "$symptom"
116
+ → SKILL.md protocol loaded (model: opus)
117
+ → Phase 1: Symptom Structuring (extract/confirm 4-field template)
118
+ → Phase 2: Hypothesis Generation (≤3, ranked by probability)
119
+ → Phase 3: Verification Loop (execute → observe → narrow)
120
+ └─ Loop until: root cause confirmed OR escalation triggered
121
+ → Phase 4: Conclusion Report (root cause + fix path + PDCA nudge)
122
+ ```
123
+
124
+ No code implementation needed — this is a pure SKILL.md protocol (prompt-as-code for diagnostic reasoning).
125
+
126
+ ## Implementation Steps
127
+
128
+ | Step | File | Action | Dependencies | Risk |
129
+ |------|------|--------|-------------|------|
130
+ | 1 | `~/.claude/skills/project-debug/SKILL.md` | Create skill protocol with all phases | None | Low |
131
+ | 2 | `~/.claude/rules/pactkit.md` | Add command to routing table | Step 1 | Low |
132
+ | 3 | Board | Register skill in available-skills | Step 1 | Low |
133
+
134
+ ## Security Scope
135
+
136
+ | Check | Applicable | Reason |
137
+ |-------|------------|--------|
138
+ | SEC-1 (Injection) | N/A | No user input passed to shell unsanitized — verification commands are AI-composed |
139
+ | SEC-2 (Auth) | N/A | No auth logic involved |
140
+ | SEC-3 (Data Exposure) | N/A | Reads local files only |
141
+ | SEC-4 (XSS) | N/A | No web output |
142
+ | SEC-5 (Config) | N/A | No config files modified |
143
+ | SEC-6 (Crypto) | N/A | No crypto involved |
144
+ | SEC-7 (Logging) | N/A | No logging changes |
145
+ | SEC-8 (SSRF) | N/A | No network requests |
146
+
147
+ ## Out of Scope
148
+
149
+ - 自动修复代码 — skill 仅定位问题,修复走 `/project-hotfix` 或 `/project-act`
150
+ - 环境/配置问题 — 已有 `system-medic` + `pactkit-doctor` 覆盖
151
+ - 性能分析 — 属于另一个专项 skill 的范畴
152
+ - CI/CD pipeline 问题 — 超出本地 debug 范围
@@ -0,0 +1,102 @@
1
+ # STORY-slim-134: remove model field from command frontmatter
2
+
3
+ | Field | Value |
4
+ |-------|-------|
5
+ | ID | STORY-slim-134 |
6
+ | Status | Done |
7
+ | Priority | P1 |
8
+ | Release | 2.17.0 |
9
+
10
+ ## Background
11
+
12
+ Claude Code 在读取 command frontmatter 中的 `model: sonnet` / `model: opus` 字段时,会将 alias 解析成 Anthropic 官方最新的 model ID(如 `us.anthropic.claude-sonnet-4-5-20250929-v1:0`)。但企业用户通过 Bedrock 代理(如 genai-nexus)接入时,其部署往往只启用了较旧版本的模型,导致 VS Code 插件环境下所有 `/project-*` 命令都因模型不可用而报错。
13
+
14
+ 移除 frontmatter 中的 `model:` 字段后,command 会继承用户当前 session 的默认模型(由用户的 `ANTHROPIC_DEFAULT_SONNET_MODEL` 等环境变量或 Claude Code 设置控制),不再主动切换,从而避免 Bedrock 兼容性问题。
15
+
16
+ ## Requirements
17
+
18
+ ### R1: 移除 prompts/commands.py 中的 model 字段 (MUST)
19
+
20
+ 删除 `src/pactkit/prompts/commands.py` 中所有 command 字符串 frontmatter 里的 `model:` 行。涉及 9 处(`model: opus` × 2,`model: sonnet` × 7)。
21
+
22
+ ### R2: 移除 prompts/workflows.py 中的 model 字段 (MUST)
23
+
24
+ 删除 `src/pactkit/prompts/workflows.py` 中所有 command 字符串 frontmatter 里的 `model:` 行。涉及 4 处(`model: opus` × 1,`model: sonnet` × 3)。
25
+
26
+ ### R3: 同步更新 pactkit-plugin/commands/ (MUST)
27
+
28
+ 执行 `pactkit deploy --format plugin` 重新生成 `pactkit-plugin/commands/*.md`,确保 generated artifact 与 source 一致。
29
+
30
+ ### R4: 不影响 sprint 内联 model 引用 (MUST NOT)
31
+
32
+ `workflows.py` 中 sprint 命令正文里对 `model: sonnet` 的**文本说明**(如 `A1 model: opus`)不得修改——这些是给 LLM 读的 prompt 指令,不是 frontmatter 字段。
33
+
34
+ ## Acceptance Criteria
35
+
36
+ ### AC1: commands.py 无 model 字段 (R1)
37
+
38
+ - **Given** `src/pactkit/prompts/commands.py` 中各 command 字符串的 YAML frontmatter
39
+ - **When** 检查每个 `---` 块内的字段列表
40
+ - **Then** 不存在任何 `model:` 行;`description:` 和 `allowed-tools:` 字段保持不变
41
+
42
+ ### AC2: workflows.py 无 model 字段 (R2)
43
+
44
+ - **Given** `src/pactkit/prompts/workflows.py` 中各 command 字符串的 YAML frontmatter
45
+ - **When** 检查每个 `---` 块内的字段列表
46
+ - **Then** 不存在任何 `model:` 行;正文中对模型的文字引用保持不变
47
+
48
+ ### AC3: plugin artifact 与 source 一致 (R3)
49
+
50
+ - **Given** R1/R2 修改完成后执行 `pactkit deploy --format plugin`
51
+ - **When** 检查 `pactkit-plugin/commands/*.md` 各文件的 frontmatter
52
+ - **Then** 所有文件 frontmatter 中均无 `model:` 字段
53
+
54
+ ### AC5: sprint 正文模型引用不变 (R4)
55
+
56
+ - **Given** R1/R2 修改完成
57
+ - **When** 检查 `workflows.py` 中 sprint 命令正文(非 frontmatter)的内容
58
+ - **Then** `A1 (system-architect, model: opus)`、`A2 (senior-developer, model: sonnet)` 等文字说明保持不变
59
+
60
+ ### AC4: 测试套件全通过 (R1-R4)
61
+
62
+ - **Given** 修改完成
63
+ - **When** 运行 `.venv/bin/pytest tests/ -v`
64
+ - **Then** 所有测试通过,无新失败
65
+
66
+ ## Target Call Chain
67
+
68
+ ```
69
+ src/pactkit/prompts/commands.py (COMMANDS_CONTENT 字符串常量,含 model: 字段)
70
+ src/pactkit/prompts/workflows.py (SPRINT_PROMPT / HOTFIX_PROMPT 等,含 model: 字段)
71
+ → deployer._deploy_commands() — 原样写出字符串到文件
72
+ → pactkit-plugin/commands/*.md (generated artifact)
73
+ → Claude Code frontmatter 解析 → model alias → Bedrock model ID
74
+ ```
75
+
76
+ ## Implementation Steps
77
+
78
+ | Step | File | Action | Dependencies | Risk |
79
+ |------|------|--------|-------------|------|
80
+ | 1 | `src/pactkit/prompts/commands.py` | 删除所有 frontmatter 中的 `model:` 行(9 处) | None | Low |
81
+ | 2 | `src/pactkit/prompts/workflows.py` | 删除所有 frontmatter 中的 `model:` 行(4 处) | Step 1 | Low |
82
+ | 3 | 运行测试 | `.venv/bin/pytest tests/ -v` 确保无回归 | Step 1-2 | Low |
83
+ | 4 | `pactkit-plugin/commands/` | `pactkit deploy --format plugin` 重新生成 artifact | Step 1-2 | Low |
84
+
85
+ ## Security Scope
86
+
87
+ | Check | Applicable | Reason |
88
+ |-------|------------|--------|
89
+ | SEC-1 | N/A | 仅删除字符串字段,无新代码逻辑引入 |
90
+ | SEC-2 | N/A | 无输入处理变更 |
91
+ | SEC-3 | N/A | 无数据库相关 |
92
+ | SEC-4 | N/A | 无前端文件 |
93
+ | SEC-5 | N/A | 无认证/会话逻辑变更 |
94
+ | SEC-6 | N/A | 无 API/路由变更 |
95
+ | SEC-7 | N/A | 无错误处理变更 |
96
+ | SEC-8 | N/A | 无依赖变更 |
97
+
98
+ ## Out of Scope
99
+
100
+ - 不修改 `deployer.py` 中的 frontmatter 处理逻辑
101
+ - 不为用户提供 model fallback 配置机制(该需求已明确放弃)
102
+ - 不修改 sprint/hotfix 正文中对模型的文字说明(R4)
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "pactkit"
7
- version = "2.15.2"
7
+ version = "2.16.1"
8
8
  description = "Spec-driven agentic DevOps toolkit for AI coding assistants"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -1,3 +1,3 @@
1
1
  """PactKit - Spec-driven agentic DevOps toolkit."""
2
2
 
3
- __version__ = "2.15.2"
3
+ __version__ = "2.16.1"
@@ -40,6 +40,7 @@ VALID_COMMANDS = frozenset(
40
40
  "project-clarify",
41
41
  "project-release",
42
42
  "project-pr",
43
+ "project-debug",
43
44
  }
44
45
  )
45
46
 
@@ -71,6 +72,7 @@ VALID_SKILLS = frozenset(
71
72
  "project-clarify",
72
73
  "project-release",
73
74
  "project-pr",
75
+ "project-debug",
74
76
  }
75
77
  )
76
78
 
@@ -1,4 +1,5 @@
1
1
  from pactkit.prompts.workflows import (
2
+ DEBUG_PROMPT,
2
3
  DESIGN_PROMPT,
3
4
  HOTFIX_PROMPT,
4
5
  SPRINT_PROMPT,
@@ -8,7 +9,6 @@ COMMANDS_CONTENT = {
8
9
  "project-plan.md": """---
9
10
  description: "Analyze requirements, create Spec and Story"
10
11
  allowed-tools: [Read, Write, Edit, Bash, Glob, Grep]
11
- model: opus
12
12
  ---
13
13
 
14
14
  # Command: Plan (v1.3.0 Integrated Trace)
@@ -166,7 +166,6 @@ model: opus
166
166
  "project-act.md": """---
167
167
  description: "Implement code per Spec, strict TDD"
168
168
  allowed-tools: [Read, Write, Edit, Bash, Glob, Grep]
169
- model: sonnet
170
169
  ---
171
170
 
172
171
  # Command: Act (v1.3.0 Stack-Aware)
@@ -287,7 +286,6 @@ model: sonnet
287
286
  "project-check.md": """---
288
287
  description: "QA verification: security scan, code quality scan, Spec alignment"
289
288
  allowed-tools: [Read, Bash, Grep, Glob]
290
- model: sonnet
291
289
  ---
292
290
 
293
291
  # Command: Check (v1.3.0 Deep QA)
@@ -501,7 +499,6 @@ For each finding, assign a severity (P0-P3). Flag issues that may cause silent f
501
499
  "project-done.md": """---
502
500
  description: "Code cleanup, Board update, Git commit"
503
501
  allowed-tools: [Read, Write, Edit, Bash, Glob]
504
- model: sonnet
505
502
  ---
506
503
 
507
504
  # Command: Done (v1.3.0 Smart Gatekeeper)
@@ -672,7 +669,6 @@ Run `pactkit coverage-gate <changed-files>` to verify coverage on changed source
672
669
  "project-clarify.md": """---
673
670
  description: "Standalone requirement clarification before planning"
674
671
  allowed-tools: [Read, Bash, Glob, Grep]
675
- model: sonnet
676
672
  ---
677
673
 
678
674
  # Command: Clarify (v1.1.0)
@@ -713,7 +709,6 @@ model: sonnet
713
709
  "project-init.md": """---
714
710
  description: "Initialize project scaffolding and governance structure"
715
711
  allowed-tools: [Read, Write, Edit, Bash, Glob]
716
- model: sonnet
717
712
  ---
718
713
 
719
714
  # Command: Init (v1.3.0 Rich)
@@ -786,7 +781,6 @@ model: sonnet
786
781
  "project-release.md": """---
787
782
  description: "Version release: snapshot, archive, Git tag, and GitHub Release"
788
783
  allowed-tools: [Read, Write, Edit, Bash, Glob]
789
- model: sonnet
790
784
  ---
791
785
 
792
786
  # Command: Release (v1.4.0)
@@ -809,7 +803,6 @@ model: sonnet
809
803
  "project-pr.md": """---
810
804
  description: "Push branch and create pull request via gh CLI"
811
805
  allowed-tools: [Read, Write, Edit, Bash, Glob]
812
- model: sonnet
813
806
  ---
814
807
 
815
808
  # Command: PR (v1.4.0)
@@ -868,3 +861,4 @@ model: sonnet
868
861
  COMMANDS_CONTENT["project-sprint.md"] = SPRINT_PROMPT
869
862
  COMMANDS_CONTENT["project-hotfix.md"] = HOTFIX_PROMPT
870
863
  COMMANDS_CONTENT["project-design.md"] = DESIGN_PROMPT
864
+ COMMANDS_CONTENT["project-debug.md"] = DEBUG_PROMPT
@@ -857,6 +857,7 @@ COMMAND_RULES_MAP = {
857
857
  "core", "sectional", "hierarchy", "atlas", "routing", "workflow",
858
858
  "mcp", "shared", "credential",
859
859
  ],
860
+ "project-debug": ["core", "shared", "credential"],
860
861
  }
861
862
 
862
863
  # Managed file prefixes for rules/ directory cleanup (deployer will clean these, leave user files intact)