pactkit 2.25.0__tar.gz → 2.25.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 (1013) hide show
  1. {pactkit-2.25.0 → pactkit-2.25.1}/CHANGELOG.md +7 -0
  2. {pactkit-2.25.0 → pactkit-2.25.1}/PKG-INFO +19 -3
  3. {pactkit-2.25.0 → pactkit-2.25.1}/README.md +18 -2
  4. pactkit-2.25.1/docs/product/stories/HOTFIX-slim-20260830bbb5bc219d35.yaml +19 -0
  5. pactkit-2.25.1/docs/product/stories/HOTFIX-slim-20260901469666ef23a8.yaml +16 -0
  6. pactkit-2.25.1/docs/specs/HOTFIX-slim-20260830bbb5bc219d35.md +42 -0
  7. pactkit-2.25.1/docs/specs/HOTFIX-slim-20260901469666ef23a8.md +55 -0
  8. {pactkit-2.25.0 → pactkit-2.25.1}/pyproject.toml +1 -1
  9. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/__init__.py +1 -1
  10. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/cli.py +13 -3
  11. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/commit_gate.py +74 -6
  12. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/regression.py +6 -0
  13. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/gate.txt +3 -2
  14. pactkit-2.25.1/tests/unit/test_hotfix_20260830_gate_cli.py +164 -0
  15. pactkit-2.25.1/tests/unit/test_hotfix_20260901_gate_docsonly.py +160 -0
  16. {pactkit-2.25.0 → pactkit-2.25.1}/.codegraph/.gitignore +0 -0
  17. {pactkit-2.25.0 → pactkit-2.25.1}/.coverage +0 -0
  18. {pactkit-2.25.0 → pactkit-2.25.1}/.github/workflows/pactkit.yml +0 -0
  19. {pactkit-2.25.0 → pactkit-2.25.1}/.github/workflows/publish.yml +0 -0
  20. {pactkit-2.25.0 → pactkit-2.25.1}/.gitignore +0 -0
  21. {pactkit-2.25.0 → pactkit-2.25.1}/AGENTS.md +0 -0
  22. {pactkit-2.25.0 → pactkit-2.25.1}/CODE_OF_CONDUCT.md +0 -0
  23. {pactkit-2.25.0 → pactkit-2.25.1}/CONTRIBUTING.md +0 -0
  24. {pactkit-2.25.0 → pactkit-2.25.1}/LICENSE +0 -0
  25. {pactkit-2.25.0 → pactkit-2.25.1}/SECURITY.md +0 -0
  26. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/archive/lessons_archive_202602.md +0 -0
  27. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/archive/lessons_archive_202603.md +0 -0
  28. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/archive/lessons_archive_202604.md +0 -0
  29. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/harness_audit.json +0 -0
  30. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260227-8e92f52c86.md +0 -0
  31. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260227-a21cacfde2.md +0 -0
  32. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260227-ccb19799ea.md +0 -0
  33. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260228-6e4b02ff08.md +0 -0
  34. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260228-b87245d5fc.md +0 -0
  35. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260302-8980b2512d.md +0 -0
  36. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260302-8f58fa2045.md +0 -0
  37. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260302-a3a1b7900e.md +0 -0
  38. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260303-3f65c0442b.md +0 -0
  39. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260304-23c605e495.md +0 -0
  40. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260304-8bd6c10219.md +0 -0
  41. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260305-129d1dea2a.md +0 -0
  42. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260305-48752d79c3.md +0 -0
  43. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260305-b9afdd8720.md +0 -0
  44. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260305-f93ee5b19f.md +0 -0
  45. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260306-7061390095.md +0 -0
  46. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260313-edf7807faf.md +0 -0
  47. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260316-091567c2bb.md +0 -0
  48. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260316-4661b3789a.md +0 -0
  49. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260316-7214dac8fc.md +0 -0
  50. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260317-3d8a855086.md +0 -0
  51. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260317-4ba69c35f0.md +0 -0
  52. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260317-6cd2a53ba5.md +0 -0
  53. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260317-7a0dd3407e.md +0 -0
  54. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260317-86927e3701.md +0 -0
  55. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260317-9a8025eaac.md +0 -0
  56. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260317-a0721cc066.md +0 -0
  57. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260317-a1f53d759b.md +0 -0
  58. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260317-a9f7897b36.md +0 -0
  59. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260317-ff430eaa29.md +0 -0
  60. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260318-fb0bcd928b.md +0 -0
  61. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260319-f320fbb5cc.md +0 -0
  62. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260320-b2d80c56b3.md +0 -0
  63. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260320-c102dbd6f8.md +0 -0
  64. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260320-e8f6ddae81.md +0 -0
  65. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260321-5e57da75b0.md +0 -0
  66. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260321-6a4a30628f.md +0 -0
  67. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260321-b5a58de3f9.md +0 -0
  68. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260321-e0138991ed.md +0 -0
  69. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260321-e49663fc95.md +0 -0
  70. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260322-4c0480e882.md +0 -0
  71. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260322-d1ece5c0d4.md +0 -0
  72. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260323-4bd30888ce.md +0 -0
  73. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260323-7a02b3eb85.md +0 -0
  74. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260323-8624e0d93a.md +0 -0
  75. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260323-a8faeea78c.md +0 -0
  76. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260324-075e3332b8.md +0 -0
  77. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260324-0f6f041a52.md +0 -0
  78. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260324-2dab5931de.md +0 -0
  79. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260324-8bcda73e9b.md +0 -0
  80. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260324-9e6238f0c8.md +0 -0
  81. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260324-a1cace9846.md +0 -0
  82. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260324-bf64dd9564.md +0 -0
  83. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260324-c344d7655c.md +0 -0
  84. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260324-e60c50dcc9.md +0 -0
  85. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260324-f5149caffe.md +0 -0
  86. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260325-1a5eeea04c.md +0 -0
  87. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-02460b22de.md +0 -0
  88. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-09de627b2b.md +0 -0
  89. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-204ea48f84.md +0 -0
  90. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-32e2fd3074.md +0 -0
  91. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-6c6dbfc365.md +0 -0
  92. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-7811ad7ff2.md +0 -0
  93. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-88e7123370.md +0 -0
  94. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-d2376010b1.md +0 -0
  95. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-e4f0eb8850.md +0 -0
  96. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-e68b8aa47f.md +0 -0
  97. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-fdd06ad981.md +0 -0
  98. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260327-e3c7f5abcb.md +0 -0
  99. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260330-eb1760def2.md +0 -0
  100. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260331-1b58a289ea.md +0 -0
  101. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260331-26e474753e.md +0 -0
  102. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260331-3028ab9cf5.md +0 -0
  103. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260331-350048862b.md +0 -0
  104. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260331-7d41cdf5a3.md +0 -0
  105. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260331-8e5558a077.md +0 -0
  106. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260331-c46df1c3b1.md +0 -0
  107. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260401-41515789f6.md +0 -0
  108. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260401-4453752dda.md +0 -0
  109. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260401-5a225a1c0a.md +0 -0
  110. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260401-90724b10f0.md +0 -0
  111. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260401-9e322eb76e.md +0 -0
  112. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260401-bd20019d3d.md +0 -0
  113. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260401-de035be681.md +0 -0
  114. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260401-f44c8f499e.md +0 -0
  115. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260401-fa52f596ff.md +0 -0
  116. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260402-5b063207c8.md +0 -0
  117. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260402-5e0913ec81.md +0 -0
  118. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260415-3d8b5e8f81.md +0 -0
  119. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260415-84219771ca.md +0 -0
  120. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260416-41d4564480.md +0 -0
  121. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260416-5cdc3cf53f.md +0 -0
  122. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260416-807c65a8e7.md +0 -0
  123. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260416-ade561c777.md +0 -0
  124. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260416-b78aaf129a.md +0 -0
  125. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260416-db8a5430a0.md +0 -0
  126. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260416-f5a765c496.md +0 -0
  127. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260417-f1d777e9c9.md +0 -0
  128. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260418-ee12f2ff0d.md +0 -0
  129. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260420-2260437be7.md +0 -0
  130. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260420-a35a083e29.md +0 -0
  131. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260420-fa7d958d56.md +0 -0
  132. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260421-309c998a10.md +0 -0
  133. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260422-6509ac4df0.md +0 -0
  134. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260422-8dd5ed6a24.md +0 -0
  135. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260423-b0890ad9c2.md +0 -0
  136. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260424-24cc1d5e19.md +0 -0
  137. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260424-39a99c887d.md +0 -0
  138. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260427-f7955d5775.md +0 -0
  139. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260507-7b75a5cab8.md +0 -0
  140. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260507-b26f97255d.md +0 -0
  141. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260525-1fe96d2ff4.md +0 -0
  142. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260525-717e18e190.md +0 -0
  143. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260525-df4853fa3f.md +0 -0
  144. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260526-4c230f3a9d.md +0 -0
  145. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260601-6d6b779a83.md +0 -0
  146. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260601-e65d3407ed.md +0 -0
  147. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260610-51c3cf895e.md +0 -0
  148. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260629-6171e54ac8.md +0 -0
  149. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260702-4616caa284.md +0 -0
  150. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260713-da6d40dcc0.md +0 -0
  151. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260723-d4c9801300.md +0 -0
  152. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260813-18efcf9687.md +0 -0
  153. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260813-1dc6e2e1c7.md +0 -0
  154. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260813-21d4da632f.md +0 -0
  155. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260817-3587ae1a22.md +0 -0
  156. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260817-5f08a6affa.md +0 -0
  157. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260817-800f717c9d.md +0 -0
  158. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260817-a2cd839a2d.md +0 -0
  159. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260822-9175485749.md +0 -0
  160. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260822105138-298451a42c.md +0 -0
  161. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260822105138-522c7e4af4.md +0 -0
  162. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260822105138-72cc1d0343.md +0 -0
  163. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260823015950-6b8cbea92e.md +0 -0
  164. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260823022240-d3570f57fb.md +0 -0
  165. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260823050717-9192db37f8.md +0 -0
  166. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260826072120-c6db5dd5b1.md +0 -0
  167. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260826074629-f5119ea78b.md +0 -0
  168. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260826080242-012107ada2.md +0 -0
  169. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260826082256-eff3747d60.md +0 -0
  170. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260827093143-3236113033.md +0 -0
  171. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260827095642-059a7e996b.md +0 -0
  172. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260827102057-e04522a6fc.md +0 -0
  173. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260828102433-81cd3e00a0.md +0 -0
  174. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260830034504-4f7d0f8c58.md +0 -0
  175. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/lessons.md +0 -0
  176. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/philosophy.md +0 -0
  177. {pactkit-2.25.0 → pactkit-2.25.1}/docs/architecture/governance/rules.md +0 -0
  178. {pactkit-2.25.0 → pactkit-2.25.1}/docs/assets/logo.png +0 -0
  179. {pactkit-2.25.0 → pactkit-2.25.1}/docs/e2e/journey.md +0 -0
  180. {pactkit-2.25.0 → pactkit-2.25.1}/docs/guides/codex-integration-preresearch.md +0 -0
  181. {pactkit-2.25.0 → pactkit-2.25.1}/docs/guides/tool-integration-checklist.md +0 -0
  182. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/archive/archive_202602.md +0 -0
  183. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/archive/archive_202603.md +0 -0
  184. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/archive/archive_202604.md +0 -0
  185. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/archive/archive_202605.md +0 -0
  186. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/archive/archive_202606.md +0 -0
  187. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/archive/archive_202607.md +0 -0
  188. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/archive/archive_202608.md +0 -0
  189. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/context.md +0 -0
  190. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/friction-log.md +0 -0
  191. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/harness-comparison-2026-08-27.md +0 -0
  192. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/prd.md +0 -0
  193. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/sprint_board.md +0 -0
  194. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/HOTFIX-slim-127.yaml +0 -0
  195. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/HOTFIX-slim-131.yaml +0 -0
  196. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/HOTFIX-slim-132.yaml +0 -0
  197. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/HOTFIX-slim-20260828ee6cde3108fb.yaml +0 -0
  198. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-115.yaml +0 -0
  199. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-118.yaml +0 -0
  200. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-119.yaml +0 -0
  201. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-145.yaml +0 -0
  202. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-147.yaml +0 -0
  203. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-148.yaml +0 -0
  204. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-149.yaml +0 -0
  205. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-2026082381e832771d4e.yaml +0 -0
  206. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260823d854b0cf1875.yaml +0 -0
  207. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260823de7e85d6042a.yaml +0 -0
  208. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260825b1c83a046b4b.yaml +0 -0
  209. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-202608264cf429c75e22.yaml +0 -0
  210. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-2026082672b57c78fd67.yaml +0 -0
  211. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-202608267c3989223b4d.yaml +0 -0
  212. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-202608268fc379dbe6ef.yaml +0 -0
  213. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260826ac1f0bfe4148.yaml +0 -0
  214. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260826cb37edfdd4da.yaml +0 -0
  215. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260826ce35b77ce005.yaml +0 -0
  216. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260826f9492ab32c3d.yaml +0 -0
  217. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260827024e71df170f.yaml +0 -0
  218. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-2026082727cc4ab535e7.yaml +0 -0
  219. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-2026082730b5954cf538.yaml +0 -0
  220. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260827625b870eb7da.yaml +0 -0
  221. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-202608277ec1236a7b99.yaml +0 -0
  222. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260827833e7a200f9a.yaml +0 -0
  223. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260827855bf3efaec3.yaml +0 -0
  224. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-2026082799fa651655be.yaml +0 -0
  225. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260827c67e3add6af5.yaml +0 -0
  226. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260827d0ae0dfada51.yaml +0 -0
  227. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260827eddbe9669c87.yaml +0 -0
  228. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260827fb6291b717eb.yaml +0 -0
  229. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260827fc9de5542ad7.yaml +0 -0
  230. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260828897396a935ab.yaml +0 -0
  231. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-202608289e83eeb30df4.yaml +0 -0
  232. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260828d43fae4edbb6.yaml +0 -0
  233. {pactkit-2.25.0 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260830c65491123af1.yaml +0 -0
  234. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-001.md +0 -0
  235. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-002.md +0 -0
  236. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-003.md +0 -0
  237. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-004.md +0 -0
  238. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-005.md +0 -0
  239. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-006.md +0 -0
  240. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-007.md +0 -0
  241. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-008.md +0 -0
  242. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-009.md +0 -0
  243. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-010.md +0 -0
  244. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-011.md +0 -0
  245. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-012.md +0 -0
  246. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-013.md +0 -0
  247. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-014.md +0 -0
  248. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-015.md +0 -0
  249. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-016.md +0 -0
  250. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-017.md +0 -0
  251. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-018.md +0 -0
  252. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-019.md +0 -0
  253. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-020.md +0 -0
  254. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-021.md +0 -0
  255. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-022.md +0 -0
  256. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-023.md +0 -0
  257. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-024.md +0 -0
  258. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-025.md +0 -0
  259. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-026.md +0 -0
  260. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-027.md +0 -0
  261. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-028.md +0 -0
  262. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-029.md +0 -0
  263. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-030.md +0 -0
  264. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-031.md +0 -0
  265. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-032.md +0 -0
  266. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-033.md +0 -0
  267. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-034.md +0 -0
  268. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-035.md +0 -0
  269. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-slim-001.md +0 -0
  270. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-slim-002.md +0 -0
  271. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-slim-003.md +0 -0
  272. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-slim-004.md +0 -0
  273. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-slim-005.md +0 -0
  274. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-slim-006.md +0 -0
  275. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-slim-089.md +0 -0
  276. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/BUG-slim-107.md +0 -0
  277. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-023.md +0 -0
  278. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-049.md +0 -0
  279. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-050.md +0 -0
  280. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-051.md +0 -0
  281. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-052.md +0 -0
  282. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-061.md +0 -0
  283. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-062.md +0 -0
  284. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-067.md +0 -0
  285. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-069.md +0 -0
  286. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-070.md +0 -0
  287. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-085.md +0 -0
  288. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-087.md +0 -0
  289. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-096.md +0 -0
  290. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-099.md +0 -0
  291. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-107.md +0 -0
  292. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-117.md +0 -0
  293. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-122.md +0 -0
  294. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-123.md +0 -0
  295. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-126.md +0 -0
  296. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-127.md +0 -0
  297. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-130.md +0 -0
  298. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-131.md +0 -0
  299. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-132.md +0 -0
  300. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-20260828ee6cde3108fb.md +0 -0
  301. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-001.md +0 -0
  302. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-002.md +0 -0
  303. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-003.md +0 -0
  304. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-004.md +0 -0
  305. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-005.md +0 -0
  306. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-006.md +0 -0
  307. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-007.md +0 -0
  308. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-008.md +0 -0
  309. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-009.md +0 -0
  310. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-010.md +0 -0
  311. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-011.md +0 -0
  312. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-012.md +0 -0
  313. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-013.md +0 -0
  314. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-014.md +0 -0
  315. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-015.md +0 -0
  316. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-016.md +0 -0
  317. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-017.md +0 -0
  318. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-018.md +0 -0
  319. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-019.md +0 -0
  320. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-020.md +0 -0
  321. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-021.md +0 -0
  322. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-022.md +0 -0
  323. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-023.md +0 -0
  324. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-024.md +0 -0
  325. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-025.md +0 -0
  326. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-026.md +0 -0
  327. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-027.md +0 -0
  328. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-028.md +0 -0
  329. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-029.md +0 -0
  330. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-030.md +0 -0
  331. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-031.md +0 -0
  332. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-032.md +0 -0
  333. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-033.md +0 -0
  334. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-034.md +0 -0
  335. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-035.md +0 -0
  336. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-036.md +0 -0
  337. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-037.md +0 -0
  338. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-038.md +0 -0
  339. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-039.md +0 -0
  340. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-040.md +0 -0
  341. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-041.md +0 -0
  342. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-042.md +0 -0
  343. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-043.md +0 -0
  344. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-044.md +0 -0
  345. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-045.md +0 -0
  346. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-046.md +0 -0
  347. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-047.md +0 -0
  348. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-048.md +0 -0
  349. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-049.md +0 -0
  350. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-050.md +0 -0
  351. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-051.md +0 -0
  352. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-052.md +0 -0
  353. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-053.md +0 -0
  354. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-054.md +0 -0
  355. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-055.md +0 -0
  356. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-056.md +0 -0
  357. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-057.md +0 -0
  358. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-058.md +0 -0
  359. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-059.md +0 -0
  360. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-060.md +0 -0
  361. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-061.md +0 -0
  362. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-062.md +0 -0
  363. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-063.md +0 -0
  364. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-064.md +0 -0
  365. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-065.md +0 -0
  366. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-069.md +0 -0
  367. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-070.md +0 -0
  368. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-071.md +0 -0
  369. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-072.md +0 -0
  370. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-073.md +0 -0
  371. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-001.md +0 -0
  372. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-005.md +0 -0
  373. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-006.md +0 -0
  374. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-007.md +0 -0
  375. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-009.md +0 -0
  376. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-010.md +0 -0
  377. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-011.md +0 -0
  378. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-012.md +0 -0
  379. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-013.md +0 -0
  380. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-014.md +0 -0
  381. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-015.md +0 -0
  382. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-016.md +0 -0
  383. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-017.md +0 -0
  384. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-018.md +0 -0
  385. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-019.md +0 -0
  386. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-020.md +0 -0
  387. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-021.md +0 -0
  388. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-022.md +0 -0
  389. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-023.md +0 -0
  390. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-024.md +0 -0
  391. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-028.md +0 -0
  392. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-029.md +0 -0
  393. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-030.md +0 -0
  394. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-031.md +0 -0
  395. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-032.md +0 -0
  396. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-033.md +0 -0
  397. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-034.md +0 -0
  398. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-035.md +0 -0
  399. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-036.md +0 -0
  400. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-037.md +0 -0
  401. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-038.md +0 -0
  402. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-039.md +0 -0
  403. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-040.md +0 -0
  404. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-041.md +0 -0
  405. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-042.md +0 -0
  406. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-043.md +0 -0
  407. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-044.md +0 -0
  408. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-045.md +0 -0
  409. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-046.md +0 -0
  410. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-047.md +0 -0
  411. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-048.md +0 -0
  412. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-049.md +0 -0
  413. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-050.md +0 -0
  414. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-051.md +0 -0
  415. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-052.md +0 -0
  416. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-053.md +0 -0
  417. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-054.md +0 -0
  418. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-055.md +0 -0
  419. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-056.md +0 -0
  420. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-057.md +0 -0
  421. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-058.md +0 -0
  422. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-059.md +0 -0
  423. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-060.md +0 -0
  424. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-063.md +0 -0
  425. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-066.md +0 -0
  426. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-067.md +0 -0
  427. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-068.md +0 -0
  428. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-069.md +0 -0
  429. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-070.md +0 -0
  430. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-071.md +0 -0
  431. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-072.md +0 -0
  432. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-073.md +0 -0
  433. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-074.md +0 -0
  434. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-075.md +0 -0
  435. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-076.md +0 -0
  436. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-077.md +0 -0
  437. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-078.md +0 -0
  438. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-079.md +0 -0
  439. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-080.md +0 -0
  440. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-081.md +0 -0
  441. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-082.md +0 -0
  442. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-083.md +0 -0
  443. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-084.md +0 -0
  444. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-086.md +0 -0
  445. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-088.md +0 -0
  446. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-089.md +0 -0
  447. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-090.md +0 -0
  448. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-091.md +0 -0
  449. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-092.md +0 -0
  450. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-093.md +0 -0
  451. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-094.md +0 -0
  452. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-095.md +0 -0
  453. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-097.md +0 -0
  454. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-098.md +0 -0
  455. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-099.md +0 -0
  456. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-100.md +0 -0
  457. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-101.md +0 -0
  458. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-102.md +0 -0
  459. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-103.md +0 -0
  460. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-104.md +0 -0
  461. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-105.md +0 -0
  462. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-106.md +0 -0
  463. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-107.md +0 -0
  464. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-108.md +0 -0
  465. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-109.md +0 -0
  466. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-110.md +0 -0
  467. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-111.md +0 -0
  468. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-112.md +0 -0
  469. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-113.md +0 -0
  470. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-114.md +0 -0
  471. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-115.md +0 -0
  472. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-116.md +0 -0
  473. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-118.md +0 -0
  474. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-119.md +0 -0
  475. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-120.md +0 -0
  476. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-121.md +0 -0
  477. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-124.md +0 -0
  478. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-125.md +0 -0
  479. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-126.md +0 -0
  480. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-127.md +0 -0
  481. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-128.md +0 -0
  482. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-129.md +0 -0
  483. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-132.md +0 -0
  484. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-133.md +0 -0
  485. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-134.md +0 -0
  486. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-135.md +0 -0
  487. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-136.md +0 -0
  488. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-137.md +0 -0
  489. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-138.md +0 -0
  490. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-139.md +0 -0
  491. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-140.md +0 -0
  492. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-141.md +0 -0
  493. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-142.md +0 -0
  494. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-143.md +0 -0
  495. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-144.md +0 -0
  496. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-145.md +0 -0
  497. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-146.md +0 -0
  498. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-147.md +0 -0
  499. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-148.md +0 -0
  500. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-149.md +0 -0
  501. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-2026082381e832771d4e.md +0 -0
  502. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-20260823d854b0cf1875.md +0 -0
  503. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-20260823de7e85d6042a.md +0 -0
  504. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-2026082466c8670d9655.md +0 -0
  505. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-20260824dd23a0ed3b4c.md +0 -0
  506. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-20260825b1c83a046b4b.md +0 -0
  507. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-202608264cf429c75e22.md +0 -0
  508. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-2026082672b57c78fd67.md +0 -0
  509. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-202608267c3989223b4d.md +0 -0
  510. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-202608268fc379dbe6ef.md +0 -0
  511. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-20260826ac1f0bfe4148.md +0 -0
  512. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-20260826cb37edfdd4da.md +0 -0
  513. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-20260826ce35b77ce005.md +0 -0
  514. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-20260826f9492ab32c3d.md +0 -0
  515. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-20260827024e71df170f.md +0 -0
  516. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-20260827eddbe9669c87.md +0 -0
  517. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-20260827fc9de5542ad7.md +0 -0
  518. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-20260828897396a935ab.md +0 -0
  519. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-202608289e83eeb30df4.md +0 -0
  520. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-20260828d43fae4edbb6.md +0 -0
  521. {pactkit-2.25.0 → pactkit-2.25.1}/docs/specs/STORY-slim-20260830c65491123af1.md +0 -0
  522. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/BUG-001_case.md +0 -0
  523. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/BUG-002_case.md +0 -0
  524. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-028_case.md +0 -0
  525. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-029_case.md +0 -0
  526. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-031_case.md +0 -0
  527. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-032_case.md +0 -0
  528. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-033_case.md +0 -0
  529. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-034_case.md +0 -0
  530. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-135_case.md +0 -0
  531. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-136_case.md +0 -0
  532. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-137_case.md +0 -0
  533. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-138_case.md +0 -0
  534. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-139_case.md +0 -0
  535. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-140_case.md +0 -0
  536. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-141_case.md +0 -0
  537. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-142_case.md +0 -0
  538. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-143_case.md +0 -0
  539. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-144_case.md +0 -0
  540. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-146_case.md +0 -0
  541. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-147_case.md +0 -0
  542. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-148_case.md +0 -0
  543. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-149_case.md +0 -0
  544. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-2026082381e832771d4e_case.md +0 -0
  545. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260823d854b0cf1875_case.md +0 -0
  546. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260823de7e85d6042a_case.md +0 -0
  547. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260825b1c83a046b4b_case.md +0 -0
  548. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-202608264cf429c75e22_case.md +0 -0
  549. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-2026082672b57c78fd67_case.md +0 -0
  550. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-202608267c3989223b4d_case.md +0 -0
  551. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-202608268fc379dbe6ef_case.md +0 -0
  552. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260826ac1f0bfe4148_case.md +0 -0
  553. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260826cb37edfdd4da_case.md +0 -0
  554. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260826ce35b77ce005_case.md +0 -0
  555. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260826f9492ab32c3d_case.md +0 -0
  556. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260827024e71df170f_case.md +0 -0
  557. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260827eddbe9669c87_case.md +0 -0
  558. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260827fc9de5542ad7_case.md +0 -0
  559. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260828897396a935ab_case.md +0 -0
  560. {pactkit-2.25.0 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260830c65491123af1_case.md +0 -0
  561. {pactkit-2.25.0 → pactkit-2.25.1}/opencode.json +0 -0
  562. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/__main__.py +0 -0
  563. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/audit.py +0 -0
  564. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/auth_gate.py +0 -0
  565. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/backfill.py +0 -0
  566. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/cleaners.py +0 -0
  567. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/config.py +0 -0
  568. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/context_gen.py +0 -0
  569. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/continuation.py +0 -0
  570. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/coverage_gate.py +0 -0
  571. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/delivery_evidence.py +0 -0
  572. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/deploy_manifest.py +0 -0
  573. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/deployment_transaction.py +0 -0
  574. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/deps.py +0 -0
  575. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/doctor.py +0 -0
  576. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/done_verify.py +0 -0
  577. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/enforcement.py +0 -0
  578. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/garden.py +0 -0
  579. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/generators/__init__.py +0 -0
  580. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/generators/claude_md.py +0 -0
  581. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/generators/command_ownership.py +0 -0
  582. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/generators/deploy_base.py +0 -0
  583. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/generators/deployer.py +0 -0
  584. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/governance.py +0 -0
  585. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/graph_query.py +0 -0
  586. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/guards.py +0 -0
  587. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/host_continuation.py +0 -0
  588. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/id_generator.py +0 -0
  589. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/invariants.py +0 -0
  590. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/issue_sync.py +0 -0
  591. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/lazy_visualize.py +0 -0
  592. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/legacy/__init__.py +0 -0
  593. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/legacy/host_continuation.py +0 -0
  594. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/legacy/usage.py +0 -0
  595. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/legacy/workflow_engine.py +0 -0
  596. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/lessons.py +0 -0
  597. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/lint_runner.py +0 -0
  598. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/observe.py +0 -0
  599. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/portable_methods.py +0 -0
  600. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/profiles.py +0 -0
  601. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/project_root.py +0 -0
  602. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/prompts/__init__.py +0 -0
  603. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/prompts/agents.py +0 -0
  604. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/prompts/commands.py +0 -0
  605. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/prompts/guides.py +0 -0
  606. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/prompts/references.py +0 -0
  607. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/prompts/rules.py +0 -0
  608. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/prompts/skills.py +0 -0
  609. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/prompts/workflows.py +0 -0
  610. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/protocols.py +0 -0
  611. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/risk_profile.py +0 -0
  612. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/run_events.py +0 -0
  613. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/run_stats.py +0 -0
  614. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/schemas.py +0 -0
  615. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/scripts.py +0 -0
  616. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/sec_scope.py +0 -0
  617. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/secrets_gate.py +0 -0
  618. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/session_gate.py +0 -0
  619. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/skills/__init__.py +0 -0
  620. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/skills/analyzers/__init__.py +0 -0
  621. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/skills/analyzers/go_analyzer.py +0 -0
  622. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/skills/analyzers/java_analyzer.py +0 -0
  623. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/skills/analyzers/python_analyzer.py +0 -0
  624. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/skills/analyzers/ts_analyzer.py +0 -0
  625. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/skills/board.py +0 -0
  626. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/skills/interface_summary.py +0 -0
  627. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/skills/report.py +0 -0
  628. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/skills/scaffold.py +0 -0
  629. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/skills/spec_linter.py +0 -0
  630. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/skills/visualize.py +0 -0
  631. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/spec_graph.py +0 -0
  632. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/spec_preflight.py +0 -0
  633. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/spec_status.py +0 -0
  634. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/tamper_guard.py +0 -0
  635. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/test_mapper.py +0 -0
  636. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/utils.py +0 -0
  637. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/validators.py +0 -0
  638. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/workflow_engine.py +0 -0
  639. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/workflow_registry.py +0 -0
  640. {pactkit-2.25.0 → pactkit-2.25.1}/src/pactkit/workflow_validators.py +0 -0
  641. {pactkit-2.25.0 → pactkit-2.25.1}/tests/conftest.py +0 -0
  642. {pactkit-2.25.0 → pactkit-2.25.1}/tests/e2e/__init__.py +0 -0
  643. {pactkit-2.25.0 → pactkit-2.25.1}/tests/e2e/cli/__init__.py +0 -0
  644. {pactkit-2.25.0 → pactkit-2.25.1}/tests/e2e/cli/test_cli_e2e.py +0 -0
  645. {pactkit-2.25.0 → pactkit-2.25.1}/tests/e2e/cli/test_story_slim146_cli.py +0 -0
  646. {pactkit-2.25.0 → pactkit-2.25.1}/tests/e2e/cli/test_story_slim147_workflow_cli.py +0 -0
  647. {pactkit-2.25.0 → pactkit-2.25.1}/tests/e2e/cli/test_story_slim148_governance_cli.py +0 -0
  648. {pactkit-2.25.0 → pactkit-2.25.1}/tests/e2e/cli/test_story_slim149_query_cli.py +0 -0
  649. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/agent_parser/agents_dir/researcher.yaml +0 -0
  650. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/agent_parser/agents_dir/writer.yaml +0 -0
  651. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/agent_parser/langgraph_app.py +0 -0
  652. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/agent_parser/mcp_settings.json +0 -0
  653. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/api_call_parser/axios_style.tsx +0 -0
  654. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/api_call_parser/dynamic.tsx +0 -0
  655. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/api_call_parser/page.tsx +0 -0
  656. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/__root__.txt +0 -0
  657. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/audit.txt +0 -0
  658. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/backfill-release.txt +0 -0
  659. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/board.txt +0 -0
  660. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/clean.txt +0 -0
  661. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/commit-gate.txt +0 -0
  662. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/context.txt +0 -0
  663. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/continuation.txt +0 -0
  664. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/coverage-gate.txt +0 -0
  665. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/deps.txt +0 -0
  666. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/doctor.txt +0 -0
  667. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/done-verify.txt +0 -0
  668. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/garden.txt +0 -0
  669. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/generate-id.txt +0 -0
  670. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/governance.txt +0 -0
  671. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/guard.txt +0 -0
  672. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/init.txt +0 -0
  673. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/interface-summary.txt +0 -0
  674. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/invariants-refresh.txt +0 -0
  675. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/issue-sync.txt +0 -0
  676. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/lesson-append.txt +0 -0
  677. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/lint-context.txt +0 -0
  678. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/lint-lessons.txt +0 -0
  679. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/lint-testcase.txt +0 -0
  680. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/lint.txt +0 -0
  681. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/observe.txt +0 -0
  682. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/query.txt +0 -0
  683. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/redetect-stack.txt +0 -0
  684. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/regression.txt +0 -0
  685. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/report.txt +0 -0
  686. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/schema.txt +0 -0
  687. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/sec-scope.txt +0 -0
  688. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/spec-graph.txt +0 -0
  689. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/spec-lint.txt +0 -0
  690. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/spec-preflight.txt +0 -0
  691. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/spec-status.txt +0 -0
  692. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/stats.txt +0 -0
  693. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/sync.txt +0 -0
  694. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/test-map.txt +0 -0
  695. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/update.txt +0 -0
  696. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/upgrade.txt +0 -0
  697. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/version.txt +0 -0
  698. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/visualize.txt +0 -0
  699. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/work-unit.txt +0 -0
  700. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/workflow.txt +0 -0
  701. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/config_golden/copy_claude.json +0 -0
  702. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/config_golden/copy_claude.yaml +0 -0
  703. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/config_golden/copy_codex.json +0 -0
  704. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/config_golden/copy_codex.yaml +0 -0
  705. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/config_golden/copy_github.json +0 -0
  706. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/config_golden/copy_github.yaml +0 -0
  707. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/config_golden/empty.json +0 -0
  708. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/config_golden/empty.yaml +0 -0
  709. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/config_golden/full_legacy.json +0 -0
  710. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/config_golden/full_legacy.yaml +0 -0
  711. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/config_golden/minimal.json +0 -0
  712. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/config_golden/minimal.yaml +0 -0
  713. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/config_golden/unknown_keys.json +0 -0
  714. {pactkit-2.25.0 → pactkit-2.25.1}/tests/fixtures/config_golden/unknown_keys.yaml +0 -0
  715. {pactkit-2.25.0 → pactkit-2.25.1}/tests/integration/__init__.py +0 -0
  716. {pactkit-2.25.0 → pactkit-2.25.1}/tests/integration/test_deploy_classic.py +0 -0
  717. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_agent_features.py +0 -0
  718. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_agent_frontmatter.py +0 -0
  719. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_agents_enrichment.py +0 -0
  720. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_audit.py +0 -0
  721. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_blast_radius.py +0 -0
  722. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_board_bug027.py +0 -0
  723. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_board_sections.py +0 -0
  724. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug001_skill_path.py +0 -0
  725. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug002_plugin_paths.py +0 -0
  726. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug003_multi_import.py +0 -0
  727. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug004_dead_set.py +0 -0
  728. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug005_archive_taskless.py +0 -0
  729. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug006_scan_excludes.py +0 -0
  730. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug007_stale_trace_refs.py +0 -0
  731. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug008_stale_command_refs.py +0 -0
  732. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug009_project_config_backfill.py +0 -0
  733. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug010_rewrite_yaml.py +0 -0
  734. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug011_stale_refs.py +0 -0
  735. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug012_call_graph_filter.py +0 -0
  736. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug013_config_single_source.py +0 -0
  737. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug014_version_hygiene.py +0 -0
  738. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug017_project_init_playbook.py +0 -0
  739. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug018_issue_tracker_verification.py +0 -0
  740. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug019_venv_deployment.py +0 -0
  741. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug020_claude_md_backup.py +0 -0
  742. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug025_release_delegation.py +0 -0
  743. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug026_version_sync.py +0 -0
  744. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug028_ghost_refs.py +0 -0
  745. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug029_stack_detection_fallback.py +0 -0
  746. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug030_spec_lint_cli.py +0 -0
  747. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug031_docstring_accuracy.py +0 -0
  748. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug034_plan_metadata_template.py +0 -0
  749. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug_021.py +0 -0
  750. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug_022.py +0 -0
  751. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug_023.py +0 -0
  752. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug_024.py +0 -0
  753. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug_slim001_env_detection.py +0 -0
  754. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug_slim002_instruction_collision.py +0 -0
  755. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug_slim003.py +0 -0
  756. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug_slim004.py +0 -0
  757. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug_slim005.py +0 -0
  758. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug_slim006.py +0 -0
  759. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_bug_slim089_global_claude_md.py +0 -0
  760. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_check_command.py +0 -0
  761. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_check_extensions_072_073.py +0 -0
  762. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_check_playbook_072_073.py +0 -0
  763. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_cli_help_surface.py +0 -0
  764. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_codex_hook_channel.py +0 -0
  765. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_command_frontmatter.py +0 -0
  766. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_command_ownership_v2.py +0 -0
  767. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_command_visualize_modes.py +0 -0
  768. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_commit_gate.py +0 -0
  769. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_complexity.py +0 -0
  770. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_config.py +0 -0
  771. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_config_auto_merge.py +0 -0
  772. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_config_sync_precedence.py +0 -0
  773. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_constitution_sharpening.py +0 -0
  774. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_context_gen.py +0 -0
  775. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_continuation_hardening.py +0 -0
  776. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_create_skill.py +0 -0
  777. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_cross_flow_matrix.py +0 -0
  778. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_deploy_base.py +0 -0
  779. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_deploy_ownership_safety.py +0 -0
  780. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_deployer_cleanup.py +0 -0
  781. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_deployer_plugin.py +0 -0
  782. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_deployment_transaction.py +0 -0
  783. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_deps.py +0 -0
  784. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_design_command.py +0 -0
  785. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_done_gates.py +0 -0
  786. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_done_verify.py +0 -0
  787. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_draw_prompt.py +0 -0
  788. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_draw_references.py +0 -0
  789. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_drawio_mcp.py +0 -0
  790. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_enforcement.py +0 -0
  791. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_engine_robustness.py +0 -0
  792. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_garden.py +0 -0
  793. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_gate_fail_closed.py +0 -0
  794. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_gate_telemetry.py +0 -0
  795. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_home_path_fix.py +0 -0
  796. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_hook_expansion.py +0 -0
  797. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_hotfix_command.py +0 -0
  798. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_hotfix_legacy_constitution.py +0 -0
  799. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_init_guard.py +0 -0
  800. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_init_playbook_074.py +0 -0
  801. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_interface_summary.py +0 -0
  802. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_lang_profiles.py +0 -0
  803. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_layer_violations.py +0 -0
  804. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_legacy_engine_freeze.py +0 -0
  805. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_lessons_rotation_075.py +0 -0
  806. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_list_stories.py +0 -0
  807. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_mcp_integration.py +0 -0
  808. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_model_config.py +0 -0
  809. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_modular_constitution.py +0 -0
  810. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_monorepo_detect.py +0 -0
  811. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_multi_prefix.py +0 -0
  812. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_observe.py +0 -0
  813. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_pdca_semantics_v2.py +0 -0
  814. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_pdca_slim.py +0 -0
  815. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_profiles.py +0 -0
  816. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_project_root.py +0 -0
  817. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_project_visibility.py +0 -0
  818. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_prompt_cli_contract.py +0 -0
  819. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_prompt_cli_refs.py +0 -0
  820. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_prompt_quality_075.py +0 -0
  821. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_prompt_structural_invariants.py +0 -0
  822. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_prompts_package.py +0 -0
  823. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_push_gate.py +0 -0
  824. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_release.py +0 -0
  825. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_release_field.py +0 -0
  826. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_release_v110.py +0 -0
  827. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_render_prompt.py +0 -0
  828. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_report_parser.py +0 -0
  829. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_report_unified.py +0 -0
  830. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_resolve_scope.py +0 -0
  831. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_review_command.py +0 -0
  832. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_rule_registry_architecture.py +0 -0
  833. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_rules_enrichment.py +0 -0
  834. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_run_events.py +0 -0
  835. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_run_stats.py +0 -0
  836. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_scaffold.py +0 -0
  837. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_scaffold_developer_prefix.py +0 -0
  838. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_schemas.py +0 -0
  839. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_script_extraction.py +0 -0
  840. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_selective_deploy.py +0 -0
  841. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_session_context.py +0 -0
  842. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_skill_structure.py +0 -0
  843. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_skills_enrichment.py +0 -0
  844. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_slim_deps_088.py +0 -0
  845. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_smart_regression.py +0 -0
  846. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_solution_design_rule.py +0 -0
  847. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_spec_preflight.py +0 -0
  848. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_sprint_command.py +0 -0
  849. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_stack_references.py +0 -0
  850. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_stack_test_command.py +0 -0
  851. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_status_command.py +0 -0
  852. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_statusline.py +0 -0
  853. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story014_release.py +0 -0
  854. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story015_ci_lint_gate.py +0 -0
  855. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story016_claude_md.py +0 -0
  856. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story017_init_claude_md.py +0 -0
  857. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story018_arch_staleness.py +0 -0
  858. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story019_bailout.py +0 -0
  859. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story020_horizon.py +0 -0
  860. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story021_rfc.py +0 -0
  861. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story022_decision_tree.py +0 -0
  862. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story023_test_quality.py +0 -0
  863. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story024_native_agent.py +0 -0
  864. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story025_ci_pipeline.py +0 -0
  865. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story026_issue_tracker.py +0 -0
  866. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story028_rule_scoping.py +0 -0
  867. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story029_doctor.py +0 -0
  868. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story030_lint.py +0 -0
  869. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story031_git_init_guard.py +0 -0
  870. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story032_greenfield_redirect.py +0 -0
  871. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story033_config_backfill.py +0 -0
  872. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story034_plan_config_refresh.py +0 -0
  873. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story035_readme_docs.py +0 -0
  874. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story037_regression_fix.py +0 -0
  875. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story038_call_graph_update.py +0 -0
  876. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story039_venv_config.py +0 -0
  877. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story040_layered_claude_md.py +0 -0
  878. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story042_spec_linter.py +0 -0
  879. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story043_active_clarify.py +0 -0
  880. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story044_consistency_check.py +0 -0
  881. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story045_auto_pr.py +0 -0
  882. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story047_enterprise_flags.py +0 -0
  883. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story048_worktree_isolation.py +0 -0
  884. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story049_community_standards.py +0 -0
  885. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story050_doc_only_shortcut.py +0 -0
  886. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story051_workflow_streamlining.py +0 -0
  887. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story052_conditional_github_release.py +0 -0
  888. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story053_impact_regression.py +0 -0
  889. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story055_commands.py +0 -0
  890. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story055_config.py +0 -0
  891. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story055_spec_linter.py +0 -0
  892. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story056_commands.py +0 -0
  893. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story056_config.py +0 -0
  894. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story057_implicit_cleanup.py +0 -0
  895. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story058_opencode_extraction.py +0 -0
  896. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story058_routing_fix.py +0 -0
  897. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story059_codex_removal.py +0 -0
  898. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story060_init_hang.py +0 -0
  899. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story061_remove_thinking.py +0 -0
  900. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story062_mcp_recommendations.py +0 -0
  901. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story063_prompt_slimming.py +0 -0
  902. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story064_venv_local_md.py +0 -0
  903. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story065_sprint_model.py +0 -0
  904. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story072_developer_prefix.py +0 -0
  905. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story106_lateral_scan.py +0 -0
  906. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story133_debug_skill.py +0 -0
  907. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_pdca_host_capsules.py +0 -0
  908. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_pdca_semantics_v2.py +0 -0
  909. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim009_lazy_rules.py +0 -0
  910. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim010_dry_refactor.py +0 -0
  911. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim011_command_rules.py +0 -0
  912. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim012_ci.py +0 -0
  913. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim014_clean.py +0 -0
  914. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim014_context.py +0 -0
  915. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim014_guard.py +0 -0
  916. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim014_lazy_viz.py +0 -0
  917. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim014_next_id.py +0 -0
  918. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim014_regression.py +0 -0
  919. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim014_sec_scope.py +0 -0
  920. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim014_validators.py +0 -0
  921. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim015_doctor.py +0 -0
  922. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim016_testmap_lint.py +0 -0
  923. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim017.py +0 -0
  924. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim018.py +0 -0
  925. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim019_plan_subphases.py +0 -0
  926. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim020_explore_stall_fix.py +0 -0
  927. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim021.py +0 -0
  928. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim022.py +0 -0
  929. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim023.py +0 -0
  930. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim024.py +0 -0
  931. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim025.py +0 -0
  932. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim026.py +0 -0
  933. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim027.py +0 -0
  934. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim028.py +0 -0
  935. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim029.py +0 -0
  936. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim030.py +0 -0
  937. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim031.py +0 -0
  938. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim032.py +0 -0
  939. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim033.py +0 -0
  940. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim034.py +0 -0
  941. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim035.py +0 -0
  942. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim036.py +0 -0
  943. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim037.py +0 -0
  944. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim038.py +0 -0
  945. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim039.py +0 -0
  946. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim040.py +0 -0
  947. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim041.py +0 -0
  948. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim042.py +0 -0
  949. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim043.py +0 -0
  950. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim044.py +0 -0
  951. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim045.py +0 -0
  952. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim046.py +0 -0
  953. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim047.py +0 -0
  954. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim048.py +0 -0
  955. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim049.py +0 -0
  956. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim051.py +0 -0
  957. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim052.py +0 -0
  958. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim053.py +0 -0
  959. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim054.py +0 -0
  960. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim055.py +0 -0
  961. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim056.py +0 -0
  962. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim060_codex_profile.py +0 -0
  963. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim063.py +0 -0
  964. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim065.py +0 -0
  965. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim076_multistack.py +0 -0
  966. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim077_monorepo_stack.py +0 -0
  967. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim078.py +0 -0
  968. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim079.py +0 -0
  969. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim080.py +0 -0
  970. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim081.py +0 -0
  971. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim082.py +0 -0
  972. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim083.py +0 -0
  973. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim084.py +0 -0
  974. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim095.py +0 -0
  975. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim098_pdca_nudge.py +0 -0
  976. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim099_act_context_ref.py +0 -0
  977. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim102_version_marker.py +0 -0
  978. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim104_should_semantics.py +0 -0
  979. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim107.py +0 -0
  980. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim109_journey_spec.py +0 -0
  981. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim111_playwright_assertion.py +0 -0
  982. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim112_rules_split.py +0 -0
  983. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim114_journey_sync.py +0 -0
  984. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim119.py +0 -0
  985. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim120.py +0 -0
  986. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim121.py +0 -0
  987. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim125.py +0 -0
  988. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim126.py +0 -0
  989. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim127_managed_block.py +0 -0
  990. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim128_engineering_concerns.py +0 -0
  991. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim132.py +0 -0
  992. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim134_no_model_in_frontmatter.py +0 -0
  993. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim135_config_schema.py +0 -0
  994. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim139_skill_manifest.py +0 -0
  995. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim141_manifest_hash.py +0 -0
  996. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim142_all_target_isolation.py +0 -0
  997. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim143_spec_graph.py +0 -0
  998. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim144_wave_mode.py +0 -0
  999. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim145.py +0 -0
  1000. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim146.py +0 -0
  1001. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim147.py +0 -0
  1002. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim148.py +0 -0
  1003. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim149.py +0 -0
  1004. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim150.py +0 -0
  1005. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim_stop_hook.py +0 -0
  1006. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_story_slim_work_units.py +0 -0
  1007. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_tools.py +0 -0
  1008. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_topology_parsers_066.py +0 -0
  1009. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_update_task.py +0 -0
  1010. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_visualize_call_nested.py +0 -0
  1011. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_visualize_chain_fix.py +0 -0
  1012. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_visualize_modes.py +0 -0
  1013. {pactkit-2.25.0 → pactkit-2.25.1}/tests/unit/test_visualize_multilang_chain.py +0 -0
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.25.1] - 2026-09-01
4
+
5
+ ### Fixed
6
+ - **`pactkit gate authorize <scope>` parses as documented** — 2.25.0's parser accepted only the bare positional form (`pactkit gate <scope>`), so the form printed by every block message and the L1 Override Protocol failed with "unrecognized arguments"; both forms now parse (HOTFIX-slim-20260830bbb5bc219d35).
7
+ - **Cross-repo commands are judged by the repo they operate on** — `cd <other-repo> && git push` was evaluated against the session cwd's enforcement config; `hook_entry` now resolves the last `cd` target before the git command and evaluates gates against that repository (HOTFIX-slim-20260830bbb5bc219d35).
8
+ - **commit-gate no longer misfires on docs/meta-only commits** — three defects that blocked a zero-code design-baseline commit three times and forced test-writing before allowing it (HOTFIX-slim-20260901469666ef23a8): `.gitignore`/`.claude/**`/`.codex/**` are now doc-only (repo/agent metadata carries no runtime code and no longer disqualifies the change set from the skip path); the full-suite target falls back from `tests/unit/` to `tests/` when only a flat layout exists, and a zero-collected run reports "no tests collected" instead of implying failures (still RED — the TDD contract is unchanged); "No module named pytest" from the venv-less fallback interpreter raises `GateUnavailable` → WARN + allow, matching the missing-binary path (R3 self-lock protection).
9
+
3
10
  ## [2.25.0] - 2026-08-30
4
11
 
5
12
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: pactkit
3
- Version: 2.25.0
3
+ Version: 2.25.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
@@ -280,7 +280,7 @@ PactKit deploys 10 skills (3 scripted + 7 prompt-only), auto-invoked by commands
280
280
 
281
281
  ## CLI Subcommands
282
282
 
283
- PactKit ships 36 deterministic CLI subcommands — operations that were previously delegated to AI prompts are now enforced in Python code (the "C" in P.A.C.T.):
283
+ PactKit ships 45 deterministic CLI subcommands — operations that were previously delegated to AI prompts are now enforced in Python code (the "C" in P.A.C.T.):
284
284
 
285
285
  | Command | Purpose |
286
286
  |---------|---------|
@@ -312,11 +312,27 @@ PactKit ships 36 deterministic CLI subcommands — operations that were previous
312
312
  | `pactkit lint-lessons` | Validate lessons.md structure |
313
313
  | `pactkit lint-testcase` | Validate test case structure |
314
314
  | `pactkit done-verify` | Archive honesty gate: requirement→test evidence chain, checkbox↔case consistency, status machine (blocks `/project-done` on FAIL) |
315
- | `pactkit commit-gate` | Pre-commit test gate with skip≠pass transparency; PreToolUse hook + git pre-commit channels, auto-installed per format |
315
+ | `pactkit commit-gate` | Pre-commit test gate with skip≠pass transparency; stack-aware (pytest/npm test/go test/mvn/gradle); PreToolUse hook + git pre-commit/pre-push channels, auto-installed per format |
316
+ | `pactkit gate` | Session context hooks (`--hook session-start/pre-compact`) + external-effect authorization (`pactkit gate <scope> [--ttl-minutes N]`) |
316
317
  | `pactkit deps` | External dependency check (`deps check`) and guided install (`deps install`) for node/codegraph/gh |
317
318
  | `pactkit schema config` | List every pactkit.yaml key with default, effective value, and source |
318
319
  | `pactkit sync` | Sync codegraph index |
319
320
 
321
+ ### Enforcement Gates (2.25.0)
322
+
323
+ The hook layer enforces the rules prompt text can only state — protected branches, specs, credentials, and external effects survive a conflicting instruction instead of losing to it:
324
+
325
+ | Gate | Blocks | Bypass (human/config only) |
326
+ |------|--------|---------------------------|
327
+ | `push_gate` | Direct push to a protected branch (default `main`/`master`) | `PACTKIT_ALLOW_DIRECT_PUSH=1` or `enforcement.allow_direct_push` |
328
+ | `commit_gate` | Commits on protected branches (default) and RED test suites | same as push_gate; `develop` keeps the full-suite rule |
329
+ | `spec_guard` | Editing a spec that has an active preflight receipt (Spec is Law during Act) | `PACTKIT_ALLOW_SPEC_EDIT=1` or `pactkit gate spec_edit` |
330
+ | `auth_gate` | External-effect commands (PR/release/publish/repo) until the user confirms | `pactkit gate <scope>` TTL token or `PACTKIT_AUTHORIZED=1` |
331
+ | `secrets_gate` | Literal credential material in commands (env-var indirection is exempt) | `PACTKIT_ALLOW_SECRET=1` |
332
+ | `tamper_guard` | Modifying enforcement artifacts (hooks, gate registrations, audit records) | `PACTKIT_ALLOW_CONFIG_EDIT=1` |
333
+
334
+ All blocks/bypasses are audited (`.pactkit/enforcement/`) and feed `pactkit stats` as gate telemetry (per-gate block counts, per-command invocation counts, authorization pairs) — the friction data that decides what to tune next.
335
+
320
336
  ## Deployment Architecture
321
337
 
322
338
  PactKit supports three deployment formats:
@@ -235,7 +235,7 @@ PactKit deploys 10 skills (3 scripted + 7 prompt-only), auto-invoked by commands
235
235
 
236
236
  ## CLI Subcommands
237
237
 
238
- PactKit ships 36 deterministic CLI subcommands — operations that were previously delegated to AI prompts are now enforced in Python code (the "C" in P.A.C.T.):
238
+ PactKit ships 45 deterministic CLI subcommands — operations that were previously delegated to AI prompts are now enforced in Python code (the "C" in P.A.C.T.):
239
239
 
240
240
  | Command | Purpose |
241
241
  |---------|---------|
@@ -267,11 +267,27 @@ PactKit ships 36 deterministic CLI subcommands — operations that were previous
267
267
  | `pactkit lint-lessons` | Validate lessons.md structure |
268
268
  | `pactkit lint-testcase` | Validate test case structure |
269
269
  | `pactkit done-verify` | Archive honesty gate: requirement→test evidence chain, checkbox↔case consistency, status machine (blocks `/project-done` on FAIL) |
270
- | `pactkit commit-gate` | Pre-commit test gate with skip≠pass transparency; PreToolUse hook + git pre-commit channels, auto-installed per format |
270
+ | `pactkit commit-gate` | Pre-commit test gate with skip≠pass transparency; stack-aware (pytest/npm test/go test/mvn/gradle); PreToolUse hook + git pre-commit/pre-push channels, auto-installed per format |
271
+ | `pactkit gate` | Session context hooks (`--hook session-start/pre-compact`) + external-effect authorization (`pactkit gate <scope> [--ttl-minutes N]`) |
271
272
  | `pactkit deps` | External dependency check (`deps check`) and guided install (`deps install`) for node/codegraph/gh |
272
273
  | `pactkit schema config` | List every pactkit.yaml key with default, effective value, and source |
273
274
  | `pactkit sync` | Sync codegraph index |
274
275
 
276
+ ### Enforcement Gates (2.25.0)
277
+
278
+ The hook layer enforces the rules prompt text can only state — protected branches, specs, credentials, and external effects survive a conflicting instruction instead of losing to it:
279
+
280
+ | Gate | Blocks | Bypass (human/config only) |
281
+ |------|--------|---------------------------|
282
+ | `push_gate` | Direct push to a protected branch (default `main`/`master`) | `PACTKIT_ALLOW_DIRECT_PUSH=1` or `enforcement.allow_direct_push` |
283
+ | `commit_gate` | Commits on protected branches (default) and RED test suites | same as push_gate; `develop` keeps the full-suite rule |
284
+ | `spec_guard` | Editing a spec that has an active preflight receipt (Spec is Law during Act) | `PACTKIT_ALLOW_SPEC_EDIT=1` or `pactkit gate spec_edit` |
285
+ | `auth_gate` | External-effect commands (PR/release/publish/repo) until the user confirms | `pactkit gate <scope>` TTL token or `PACTKIT_AUTHORIZED=1` |
286
+ | `secrets_gate` | Literal credential material in commands (env-var indirection is exempt) | `PACTKIT_ALLOW_SECRET=1` |
287
+ | `tamper_guard` | Modifying enforcement artifacts (hooks, gate registrations, audit records) | `PACTKIT_ALLOW_CONFIG_EDIT=1` |
288
+
289
+ All blocks/bypasses are audited (`.pactkit/enforcement/`) and feed `pactkit stats` as gate telemetry (per-gate block counts, per-command invocation counts, authorization pairs) — the friction data that decides what to tune next.
290
+
275
291
  ## Deployment Architecture
276
292
 
277
293
  PactKit supports three deployment formats:
@@ -0,0 +1,19 @@
1
+ schema_version: 1
2
+ id: HOTFIX-slim-20260830bbb5bc219d35
3
+ title: gate CLI syntax + push-gate cross-repo root
4
+ spec_path: docs/specs/HOTFIX-slim-20260830bbb5bc219d35.md
5
+ status: archived
6
+ tasks:
7
+ - id: task-28c4e1d550
8
+ title: Accept authorize keyword in gate CLI
9
+ completed: true
10
+ - id: task-f5de85695c
11
+ title: Resolve cd-target repo in hook_entry
12
+ completed: true
13
+ - id: task-0764566491
14
+ title: Focused tests + golden refresh
15
+ completed: true
16
+ created_at: '2026-08-30T04:48:13+00:00'
17
+ updated_at: '2026-09-01T09:06:16+00:00'
18
+ completed_at: '2026-08-30T04:52:32+00:00'
19
+ archived_at: '2026-09-01T09:06:16+00:00'
@@ -0,0 +1,16 @@
1
+ schema_version: 1
2
+ id: HOTFIX-slim-20260901469666ef23a8
3
+ title: commit-gate misfires on docs/meta-only commits
4
+ spec_path: docs/specs/HOTFIX-slim-20260901469666ef23a8.md
5
+ status: archived
6
+ tasks:
7
+ - id: task-b98663e6af
8
+ title: 'Fix three defects: doc-only patterns miss repo meta files (.gitignore/.claude/.codex);
9
+ full-suite target hard-codes tests/unit/ with no tests/ fallback and counts exit
10
+ 4/5 as RED; missing pytest module (pipx fallback) reads as RED instead of GateUnavailable.
11
+ From harness-backend 2026-09-01 friction.'
12
+ completed: true
13
+ created_at: '2026-09-01T08:29:59+00:00'
14
+ updated_at: '2026-09-01T09:06:16+00:00'
15
+ completed_at: '2026-09-01T08:50:16+00:00'
16
+ archived_at: '2026-09-01T09:06:16+00:00'
@@ -0,0 +1,42 @@
1
+ # HOTFIX-slim-20260830bbb5bc219d35: gate CLI syntax mismatch + push-gate cross-repo blind spot
2
+
3
+ | Field | Value |
4
+ |-------|-------|
5
+ | ID | HOTFIX-slim-20260830bbb5bc219d35 |
6
+ | Status | Done |
7
+ | Priority | P1 |
8
+ | Release | 2.25.1 |
9
+
10
+ ## Background
11
+
12
+ Two defects surfaced during the 2.25.0 release run (post-tag, so they
13
+ ship in 2.25.1):
14
+
15
+ 1. **auth-gate teaches a CLI form that does not exist.** The block
16
+ message (and the L1 Override Protocol prompt text, and
17
+ critical-rules.md on the user's machine) instructs
18
+ `pactkit gate authorize <scope>` — but the `gate` parser accepts only
19
+ the bare positional `pactkit gate <scope>`. The documented form fails
20
+ with "unrecognized arguments". Unit tests call `auth_gate.authorize()`
21
+ directly, so the CLI layer was never exercised. Every internal user
22
+ hits this on their first external-effect command.
23
+ 2. **push-gate evaluates the wrong repository for cross-repo commands.**
24
+ `cd ~/other-repo && git push` is judged against the SESSION cwd's
25
+ enforcement config (payload `cwd`), not the target repo's — observed
26
+ live when the plugin-repo push was allowed by pactkit's own
27
+ `allow_direct_push: true` although the plugin repo has no config.
28
+
29
+ ## Fix
30
+
31
+ 1. `cli.py`: `gate` accepts both `pactkit gate authorize <scope>` and
32
+ `pactkit gate <scope>` (positional `scope` becomes `nargs="*"`; an
33
+ `authorize` keyword is normalized away). Help text documents both.
34
+ All existing message/prompt text becomes correct as-is.
35
+ 2. `commit_gate.py`: `_command_root()` resolves the last `cd <dir>`
36
+ prefix target in the command (absolute, or relative to the payload
37
+ root; non-dirs ignored) and `hook_entry` evaluates gates against that
38
+ root — a `cd`-prefixed command is judged by the repo it operates on.
39
+
40
+ Verification: focused unit tests for both behaviors + full suite +
41
+ regenerated `gate.txt` help golden. Push to main only; no release, no
42
+ version bump, no adapter/plugin/site sync (deferred to 2.25.1).
@@ -0,0 +1,55 @@
1
+ # HOTFIX-slim-20260901469666ef23a8: commit-gate misfires on docs/meta-only commits
2
+
3
+ | Field | Value |
4
+ |-------|-------|
5
+ | ID | HOTFIX-slim-20260901469666ef23a8 |
6
+ | Status | Done |
7
+ | Priority | P1 |
8
+ | Release | 2.25.1 |
9
+
10
+ ## Background
11
+
12
+ A zero-code design-baseline commit (harness-backend root commit,
13
+ 2026-09-01) was blocked three times by the commit gate with "FULL —
14
+ impact mapping empty — full unit suite (safe default)" and finally
15
+ forced the agent to write tests, move them to `tests/unit/`, and
16
+ bootstrap a venv before the commit went through. Three defects
17
+ conspired, each violating the gate's own documented intent:
18
+
19
+ 1. **Repo meta files break doc-only classification.** `.gitignore` and
20
+ `.claude/settings.json` carry no runtime code, yet they disqualify
21
+ the whole change set from the doc-only skip
22
+ (`regression.py` `_DOC_ONLY_PATTERNS`), contradicting the module's
23
+ own "doc-only — safe to skip tests" contract.
24
+ 2. **"Repo has no tests" is treated as "tests failed".** The full
25
+ strategy hard-codes `tests/unit/`; a repo whose tests live at
26
+ `tests/` (or that has none yet) yields exit 4/5, and `run_gate`
27
+ counts any nonzero returncode as RED — converting "nothing to
28
+ verify" into "write tests before any commit".
29
+ 3. **Missing pytest module reads as RED, not unavailable.** With no
30
+ project venv, `pytest_command` falls back to the pipx interpreter;
31
+ `python -m pytest` exits 1 with "No module named pytest", which
32
+ `run_gate` reports as failing tests. This violates R3 self-lock
33
+ protection (a gate that cannot run must WARN and allow) and is
34
+ inconsistent with the existing `FileNotFoundError` → WARN path for
35
+ a missing pytest binary.
36
+
37
+ ## Fix
38
+
39
+ 1. `regression.py`: `_DOC_ONLY_PATTERNS` gains `.gitignore`,
40
+ `.claude/**`, `.codex/**` — agent/repo metadata with no runtime
41
+ code. Tamper guard is a separate channel and is unaffected.
42
+ 2. `commit_gate.py run_pytest`: the full-suite target falls back from
43
+ `tests/unit/` to `tests/` when only the latter exists, so a
44
+ non-convention suite is still run instead of erroring. A repo with
45
+ no tests at all keeps the RED verdict — the TDD contract ("code
46
+ changes require tests") is untouched, but the verdict message now
47
+ says "no tests collected" instead of implying failures.
48
+ 3. `commit_gate.py run_pytest`: output containing "No module named
49
+ pytest" raises `GateUnavailable` → WARN + allow, matching the
50
+ missing-binary path (R3).
51
+
52
+ Out of scope (unchanged): trunk full-suite rule, protected-branch
53
+ block rule, tamper guard, secrets gate.
54
+
55
+ Verification: focused unit tests for all three behaviors + full suite.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "pactkit"
7
- version = "2.25.0"
7
+ version = "2.25.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.25.0"
3
+ __version__ = "2.25.1"
@@ -597,8 +597,9 @@ def main():
597
597
  help="Hook mode: read hook JSON context from stdin (SessionStart/PreCompact)",
598
598
  )
599
599
  gate_parser.add_argument(
600
- "scope", nargs="?", default=None,
601
- help="Authorize a scope (pr|release|repo|publish|spec_edit) for the TTL window",
600
+ "scope", nargs="*", default=None,
601
+ help="Authorize a scope (pr|release|repo|publish|spec_edit) for the TTL window. "
602
+ "Both `pactkit gate authorize <scope>` and `pactkit gate <scope>` work.",
602
603
  )
603
604
  gate_parser.add_argument(
604
605
  "--ttl-minutes", type=int, default=None,
@@ -1651,7 +1652,16 @@ def main():
1651
1652
  if args.scope:
1652
1653
  from pactkit.auth_gate import authorize
1653
1654
 
1654
- print(authorize(project_root, args.scope, args.ttl_minutes))
1655
+ # HOTFIX-slim-20260830bbb5bc219d35: the gate messages and the
1656
+ # L1 Override Protocol document `pactkit gate authorize <scope>`;
1657
+ # accept the keyword form alongside the bare positional form.
1658
+ tokens = list(args.scope)
1659
+ if tokens and tokens[0] == "authorize":
1660
+ tokens = tokens[1:]
1661
+ if len(tokens) != 1:
1662
+ parser.error("gate: authorize takes exactly one scope "
1663
+ "(pr|release|repo|publish|spec_edit)")
1664
+ print(authorize(project_root, tokens[0], args.ttl_minutes))
1655
1665
  raise SystemExit(0)
1656
1666
 
1657
1667
  parser.error("gate: --hook or a scope (authorize) is required")
@@ -142,6 +142,15 @@ def run_pytest(root: Path, test_files: list[str] | None) -> tuple[int, str]:
142
142
  selection is a Python-only capability). An unresolvable stack raises
143
143
  GateUnavailable so run_gate degrades to WARN + allow instead of
144
144
  running a wrong-suite command.
145
+
146
+ HOTFIX-slim-20260901469666ef23a8: the full-suite target falls back
147
+ from ``tests/unit/`` to ``tests/`` when only the latter exists, so a
148
+ flat-layout suite still runs instead of erroring with exit 4; a repo
149
+ with no tests directory keeps the convention target. "No module
150
+ named pytest" (e.g. the pipx fallback interpreter without pytest)
151
+ raises GateUnavailable — an unusable toolchain is an environment
152
+ failure (R3 WARN + allow), not a RED verdict, matching the
153
+ missing-binary FileNotFoundError path.
145
154
  """
146
155
  from pactkit.utils import stack_test_command
147
156
 
@@ -153,8 +162,10 @@ def run_pytest(root: Path, test_files: list[str] | None) -> tuple[int, str]:
153
162
  cmd = [*_pytest_command(root), "-rs", "-q"]
154
163
  if test_files:
155
164
  cmd.extend(test_files)
165
+ elif (root / "tests").is_dir() and not (root / "tests" / "unit").is_dir():
166
+ cmd.append("tests/") # flat layout: run the suite that exists
156
167
  else:
157
- cmd.append("tests/unit/")
168
+ cmd.append("tests/unit/") # convention target
158
169
  else:
159
170
  cmd = list(base_cmd) # full suite; test-file selection ignored
160
171
  env = os.environ.copy()
@@ -165,7 +176,16 @@ def run_pytest(root: Path, test_files: list[str] | None) -> tuple[int, str]:
165
176
  cmd, cwd=root, capture_output=True, text=True,
166
177
  timeout=PYTEST_TIMEOUT_SECONDS, env=env,
167
178
  )
168
- return proc.returncode, proc.stdout + proc.stderr
179
+ output = proc.stdout + proc.stderr
180
+ # Only pytest's own absence counts: a failing test may legitimately
181
+ # print "No module named <something>" without the toolchain being broken.
182
+ if proc.returncode != 0 and re.search(
183
+ r"no module named ['\"]?pytest\b", output.lower()
184
+ ):
185
+ raise GateUnavailable(
186
+ f"pytest not importable via {cmd[0]} — create the project venv"
187
+ )
188
+ return proc.returncode, output
169
189
  except FileNotFoundError:
170
190
  raise GateUnavailable("pytest not found")
171
191
  except subprocess.TimeoutExpired:
@@ -402,14 +422,34 @@ def run_gate(root: Path) -> GateResult:
402
422
  result.lines.extend(f" {line}" for line in summary["skip_reasons"][:20])
403
423
 
404
424
  if returncode != 0:
405
- result.lines.append("[FAIL] tests are RED — commit blocked (R5: fix is yours, not the gate's)")
406
- tail = [ln for ln in output.splitlines() if ln.startswith(("FAILED", "ERROR"))][:10]
407
- result.lines.extend(f" {ln}" for ln in tail)
425
+ collected = (
426
+ summary["passed"] + summary["failed"]
427
+ + summary["skipped"] + summary["errors"]
428
+ )
429
+ if collected == 0:
430
+ # HOTFIX-slim-20260901469666ef23a8: exit 4/5 means nothing
431
+ # ran — say so instead of implying failures. Still RED: a
432
+ # change that reaches the gate needs a suite to verify it
433
+ # (docs/meta-only changes skip via classification instead).
434
+ result.lines.append(
435
+ "[FAIL] no tests collected — treated as RED (code changes "
436
+ "require tests; docs/meta-only changes skip via classification)"
437
+ )
438
+ tail = [ln for ln in output.splitlines() if ln.startswith(("ERROR",))][:10]
439
+ result.lines.extend(f" {ln}" for ln in tail)
440
+ else:
441
+ result.lines.append("[FAIL] tests are RED — commit blocked (R5: fix is yours, not the gate's)")
442
+ tail = [ln for ln in output.splitlines() if ln.startswith(("FAILED", "ERROR"))][:10]
443
+ result.lines.extend(f" {ln}" for ln in tail)
408
444
  result.exit_code = 1
409
445
  from pactkit.run_events import record_gate_event
410
446
 
411
447
  record_gate_event(root, "gate_blocked", {
412
- "gate": "commit_gate", "reason": "tests RED — commit blocked",
448
+ "gate": "commit_gate",
449
+ "reason": (
450
+ "no tests collected — treated as RED"
451
+ if collected == 0 else "tests RED — commit blocked"
452
+ ),
413
453
  })
414
454
  record_status(root, "commit_gate", FULL, "")
415
455
  return result
@@ -431,6 +471,29 @@ def run_gate(root: Path) -> GateResult:
431
471
  return result
432
472
 
433
473
 
474
+ # HOTFIX-slim-20260830bbb5bc219d35: a `cd <dir> && git push` targets
475
+ # <dir>'s repository, not the session cwd — gates must evaluate the
476
+ # TARGET repo's enforcement config. Match `cd` at command start or after
477
+ # a shell separator; the last cd before the git command wins.
478
+ _CD_TARGET_RE = re.compile(r"(?:^|&&|;|\|\|)\s*cd\s+([^\s;&|]+)")
479
+
480
+
481
+ def _command_root(command: str, session_root: Path) -> Path:
482
+ """Directory a shell command actually operates in (last cd target).
483
+
484
+ Relative targets resolve against the session root; a target that is
485
+ not a directory falls back to the session root (never misroute, never
486
+ crash on odd cd usage like `cd -`).
487
+ """
488
+ targets = _CD_TARGET_RE.findall(command)
489
+ if not targets:
490
+ return session_root
491
+ target = Path(targets[-1]).expanduser()
492
+ if not target.is_absolute():
493
+ target = session_root / target
494
+ return target if target.is_dir() else session_root
495
+
496
+
434
497
  def hook_entry(stdin_text: str, root: Path) -> tuple[str, int]:
435
498
  """PreToolUse hook mode. Returns (stderr_message, exit_code).
436
499
 
@@ -486,6 +549,11 @@ def hook_entry(stdin_text: str, root: Path) -> tuple[str, int]:
486
549
  else:
487
550
  command = str(raw_command)
488
551
 
552
+ # HOTFIX-slim-20260830bbb5bc219d35: evaluate gates against the repo the
553
+ # command actually operates in (`cd <other-repo> && git push`), not
554
+ # blindly against the session cwd.
555
+ root = _command_root(command, root)
556
+
489
557
  # L1 secrets scan runs on every Bash command, whatever it is
490
558
  from pactkit.secrets_gate import check_command as check_secrets
491
559
 
@@ -7,11 +7,17 @@ from __future__ import annotations
7
7
  import fnmatch
8
8
 
9
9
  # Files that match these patterns are considered "doc-only" — safe to skip tests.
10
+ # HOTFIX-slim-20260901469666ef23a8: repo/agent metadata (.gitignore,
11
+ # .claude/**, .codex/**) carries no runtime code — a design-baseline or
12
+ # governance commit containing them must not lose the doc-only skip.
10
13
  _DOC_ONLY_PATTERNS: tuple[str, ...] = (
11
14
  "docs/**",
12
15
  "*.md",
13
16
  "README*",
14
17
  "*.txt",
18
+ ".gitignore",
19
+ ".claude/**",
20
+ ".codex/**",
15
21
  )
16
22
  # tests/** is deliberately NOT doc-only: a commit that modifies tests must
17
23
  # run them (STORY-slim-20260826ce35b77ce005 R5).
@@ -1,10 +1,11 @@
1
1
  usage: pactkit gate [-h] [--hook {session-start,pre-compact}]
2
2
  [--ttl-minutes TTL_MINUTES]
3
- [scope]
3
+ [scope ...]
4
4
 
5
5
  positional arguments:
6
6
  scope Authorize a scope (pr|release|repo|publish|spec_edit)
7
- for the TTL window
7
+ for the TTL window. Both `pactkit gate authorize
8
+ <scope>` and `pactkit gate <scope>` work.
8
9
 
9
10
  options:
10
11
  -h, --help show this help message and exit
@@ -0,0 +1,164 @@
1
+ """HOTFIX-slim-20260830bbb5bc219d35: gate CLI syntax + cross-repo push root.
2
+
3
+ Two defects from the 2.25.0 release run:
4
+ 1. auth-gate's documented `pactkit gate authorize <scope>` failed —
5
+ the parser only accepted the bare positional form.
6
+ 2. push-gate judged `cd <other-repo> && git push` by the SESSION cwd's
7
+ enforcement config instead of the target repo's.
8
+ """
9
+
10
+ import json
11
+ from pathlib import Path
12
+
13
+ import pytest
14
+
15
+ from pactkit import commit_gate
16
+ from pactkit.commit_gate import hook_entry
17
+
18
+
19
+ @pytest.fixture
20
+ def repo(tmp_path, monkeypatch):
21
+ (tmp_path / ".git" / "hooks").mkdir(parents=True)
22
+ monkeypatch.setattr(
23
+ commit_gate,
24
+ "_enforcement_settings",
25
+ lambda root: {
26
+ "protected_branches": ["main", "master"],
27
+ "allow_direct_push": False,
28
+ "tamper_guard": True,
29
+ "spec_guard": True,
30
+ "auth_gate": True,
31
+ "secrets_gate": True,
32
+ "auth_ttl_minutes": 30,
33
+ },
34
+ )
35
+ return tmp_path
36
+
37
+
38
+ def _payload(command, cwd=None):
39
+ payload = {"tool_name": "Bash", "tool_input": {"command": command}}
40
+ if cwd:
41
+ payload["cwd"] = str(cwd)
42
+ return json.dumps(payload)
43
+
44
+
45
+ # ===========================================================================
46
+ # Fix 1: gate CLI accepts the documented `authorize <scope>` form
47
+ # ===========================================================================
48
+
49
+
50
+ class TestGateCliSyntax:
51
+ def _run_cli(self, argv, tmp_path):
52
+ import sys
53
+
54
+ from pactkit.cli import main
55
+
56
+ # the CLI requires an init marker before dispatching any command
57
+ marker = tmp_path / ".claude" / "pactkit.yaml"
58
+ marker.parent.mkdir(exist_ok=True)
59
+ marker.write_text("stack: python\n", encoding="utf-8")
60
+
61
+ old_argv = sys.argv
62
+ sys.argv = ["pactkit", "-C", str(tmp_path), "gate", *argv]
63
+ try:
64
+ main()
65
+ except SystemExit as exc:
66
+ return exc.code
67
+ finally:
68
+ sys.argv = old_argv
69
+ return 0
70
+
71
+ def test_authorize_keyword_form(self, tmp_path, capsys):
72
+ code = self._run_cli(["authorize", "release", "--ttl-minutes", "5"], tmp_path)
73
+ assert code in (0, None)
74
+ token = json.loads(
75
+ (tmp_path / ".pactkit" / "enforcement" / "authorization.json").read_text()
76
+ )
77
+ assert token["scope"] == "release"
78
+ assert "authorized" in capsys.readouterr().out
79
+
80
+ def test_bare_scope_form_still_works(self, tmp_path, capsys):
81
+ code = self._run_cli(["release", "--ttl-minutes", "5"], tmp_path)
82
+ assert code in (0, None)
83
+ token = json.loads(
84
+ (tmp_path / ".pactkit" / "enforcement" / "authorization.json").read_text()
85
+ )
86
+ assert token["scope"] == "release"
87
+
88
+ def test_authorize_without_scope_errors(self, tmp_path):
89
+ code = self._run_cli(["authorize"], tmp_path)
90
+ assert code not in (0, None)
91
+
92
+
93
+ # ===========================================================================
94
+ # Fix 2: push-gate evaluates the command's target repo
95
+ # ===========================================================================
96
+
97
+
98
+ class TestCrossRepoPushRoot:
99
+ def test_cd_to_strict_repo_blocks(self, repo, tmp_path_factory, monkeypatch):
100
+ """Target repo has default (protective) config; session repo allows."""
101
+ other = tmp_path_factory.mktemp("other-repo")
102
+ (other / ".git" / "hooks").mkdir(parents=True)
103
+ monkeypatch.setattr(
104
+ commit_gate,
105
+ "_enforcement_settings",
106
+ lambda root: (
107
+ {"protected_branches": ["main"], "allow_direct_push": True,
108
+ "tamper_guard": False, "spec_guard": True, "auth_gate": True,
109
+ "secrets_gate": True, "auth_ttl_minutes": 30}
110
+ if Path(root) == Path(repo)
111
+ else {"protected_branches": ["main", "master"],
112
+ "allow_direct_push": False, "tamper_guard": True,
113
+ "spec_guard": True, "auth_gate": True,
114
+ "secrets_gate": True, "auth_ttl_minutes": 30}
115
+ ),
116
+ )
117
+ monkeypatch.setattr(commit_gate, "current_branch",
118
+ lambda root: "main" if Path(root) == Path(other) else "feature/x")
119
+ monkeypatch.setattr(commit_gate, "run_pytest", lambda root, tf: (0, "1 passed"))
120
+
121
+ _, code = hook_entry(
122
+ _payload(f"cd {other} && git push origin main", cwd=repo), repo
123
+ )
124
+ assert code == 2 # judged by the TARGET repo's protective config
125
+
126
+ def test_cd_to_permissive_repo_allows(self, repo, tmp_path_factory, monkeypatch):
127
+ """Target repo allows direct push; session repo is protective."""
128
+ other = tmp_path_factory.mktemp("other-repo")
129
+ (other / ".git" / "hooks").mkdir(parents=True)
130
+ monkeypatch.setattr(
131
+ commit_gate,
132
+ "_enforcement_settings",
133
+ lambda root: (
134
+ {"protected_branches": ["main"], "allow_direct_push": True,
135
+ "tamper_guard": False, "spec_guard": True, "auth_gate": True,
136
+ "secrets_gate": True, "auth_ttl_minutes": 30}
137
+ if Path(root) == Path(other)
138
+ else {"protected_branches": ["main", "master"],
139
+ "allow_direct_push": False, "tamper_guard": True,
140
+ "spec_guard": True, "auth_gate": True,
141
+ "secrets_gate": True, "auth_ttl_minutes": 30}
142
+ ),
143
+ )
144
+ monkeypatch.setattr(commit_gate, "current_branch",
145
+ lambda root: "main" if Path(root) == Path(other) else "feature/x")
146
+
147
+ _, code = hook_entry(
148
+ _payload(f"cd {other} && git push origin main", cwd=repo), repo
149
+ )
150
+ assert code == 0
151
+
152
+ def test_relative_cd_resolved_against_session_root(self, repo, monkeypatch):
153
+ (repo / "sub" / ".git").mkdir(parents=True)
154
+ monkeypatch.setattr(commit_gate, "current_branch",
155
+ lambda root: "main" if root.name == "sub" else "feature/x")
156
+ monkeypatch.setattr(commit_gate, "run_pytest", lambda root, tf: (0, "1 passed"))
157
+ _, code = hook_entry(_payload("cd sub && git push origin main", cwd=repo), repo)
158
+ assert code == 2
159
+
160
+ def test_cd_to_nonexistent_dir_falls_back_to_session_root(self, repo, monkeypatch):
161
+ """A cd that doesn't resolve must not crash or misroute."""
162
+ monkeypatch.setattr(commit_gate, "current_branch", lambda root: "feature/x")
163
+ _, code = hook_entry(_payload("cd /no/such/dir && git push origin feature/x", cwd=repo), repo)
164
+ assert code == 0 # feature branch in session root: allowed