pactkit 2.24.2__tar.gz → 2.25.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1008) hide show
  1. {pactkit-2.24.2 → pactkit-2.25.0}/CHANGELOG.md +24 -0
  2. {pactkit-2.24.2 → pactkit-2.25.0}/PKG-INFO +3 -3
  3. pactkit-2.25.0/docs/architecture/governance/lessons/LESSON-20260828102433-81cd3e00a0.md +10 -0
  4. pactkit-2.25.0/docs/architecture/governance/lessons/LESSON-20260830034504-4f7d0f8c58.md +10 -0
  5. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/rules.md +1 -1
  6. pactkit-2.25.0/docs/product/stories/HOTFIX-slim-20260828ee6cde3108fb.yaml +13 -0
  7. pactkit-2.25.0/docs/product/stories/STORY-slim-20260828897396a935ab.yaml +31 -0
  8. pactkit-2.25.0/docs/product/stories/STORY-slim-202608289e83eeb30df4.yaml +31 -0
  9. pactkit-2.25.0/docs/product/stories/STORY-slim-20260828d43fae4edbb6.yaml +22 -0
  10. pactkit-2.25.0/docs/product/stories/STORY-slim-20260830c65491123af1.yaml +28 -0
  11. pactkit-2.25.0/docs/specs/HOTFIX-slim-20260828ee6cde3108fb.md +40 -0
  12. pactkit-2.25.0/docs/specs/STORY-slim-20260828897396a935ab.md +246 -0
  13. pactkit-2.25.0/docs/specs/STORY-slim-202608289e83eeb30df4.md +264 -0
  14. pactkit-2.25.0/docs/specs/STORY-slim-20260828d43fae4edbb6.md +155 -0
  15. pactkit-2.25.0/docs/specs/STORY-slim-20260830c65491123af1.md +178 -0
  16. pactkit-2.25.0/docs/test_cases/STORY-slim-20260828897396a935ab_case.md +56 -0
  17. pactkit-2.25.0/docs/test_cases/STORY-slim-20260830c65491123af1_case.md +43 -0
  18. {pactkit-2.24.2 → pactkit-2.25.0}/pyproject.toml +2 -2
  19. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/__init__.py +1 -1
  20. pactkit-2.25.0/src/pactkit/auth_gate.py +144 -0
  21. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/cleaners.py +35 -0
  22. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/cli.py +66 -4
  23. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/commit_gate.py +410 -49
  24. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/config.py +48 -0
  25. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/enforcement.py +89 -4
  26. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/prompts/commands.py +4 -0
  27. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/prompts/rules.py +17 -2
  28. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/run_events.py +64 -0
  29. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/run_stats.py +66 -4
  30. pactkit-2.25.0/src/pactkit/secrets_gate.py +83 -0
  31. pactkit-2.25.0/src/pactkit/session_gate.py +54 -0
  32. pactkit-2.25.0/src/pactkit/tamper_guard.py +243 -0
  33. pactkit-2.25.0/src/pactkit/utils.py +92 -0
  34. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/__root__.txt +4 -2
  35. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/commit-gate.txt +3 -1
  36. pactkit-2.25.0/tests/fixtures/cli_help_golden/gate.txt +15 -0
  37. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/config_golden/copy_claude.json +12 -0
  38. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/config_golden/copy_codex.json +12 -0
  39. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/config_golden/copy_github.json +12 -0
  40. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/config_golden/empty.json +12 -0
  41. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/config_golden/full_legacy.json +12 -0
  42. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/config_golden/minimal.json +12 -0
  43. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/config_golden/unknown_keys.json +12 -0
  44. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_commit_gate.py +40 -14
  45. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_constitution_sharpening.py +5 -1
  46. pactkit-2.25.0/tests/unit/test_gate_telemetry.py +252 -0
  47. pactkit-2.25.0/tests/unit/test_hook_expansion.py +394 -0
  48. pactkit-2.25.0/tests/unit/test_push_gate.py +479 -0
  49. pactkit-2.25.0/tests/unit/test_stack_test_command.py +195 -0
  50. pactkit-2.24.2/src/pactkit/utils.py +0 -39
  51. {pactkit-2.24.2 → pactkit-2.25.0}/.codegraph/.gitignore +0 -0
  52. {pactkit-2.24.2 → pactkit-2.25.0}/.coverage +0 -0
  53. {pactkit-2.24.2 → pactkit-2.25.0}/.github/workflows/pactkit.yml +0 -0
  54. {pactkit-2.24.2 → pactkit-2.25.0}/.github/workflows/publish.yml +0 -0
  55. {pactkit-2.24.2 → pactkit-2.25.0}/.gitignore +0 -0
  56. {pactkit-2.24.2 → pactkit-2.25.0}/AGENTS.md +0 -0
  57. {pactkit-2.24.2 → pactkit-2.25.0}/CODE_OF_CONDUCT.md +0 -0
  58. {pactkit-2.24.2 → pactkit-2.25.0}/CONTRIBUTING.md +0 -0
  59. {pactkit-2.24.2 → pactkit-2.25.0}/LICENSE +0 -0
  60. {pactkit-2.24.2 → pactkit-2.25.0}/README.md +0 -0
  61. {pactkit-2.24.2 → pactkit-2.25.0}/SECURITY.md +0 -0
  62. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/archive/lessons_archive_202602.md +0 -0
  63. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/archive/lessons_archive_202603.md +0 -0
  64. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/archive/lessons_archive_202604.md +0 -0
  65. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/harness_audit.json +0 -0
  66. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260227-8e92f52c86.md +0 -0
  67. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260227-a21cacfde2.md +0 -0
  68. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260227-ccb19799ea.md +0 -0
  69. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260228-6e4b02ff08.md +0 -0
  70. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260228-b87245d5fc.md +0 -0
  71. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260302-8980b2512d.md +0 -0
  72. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260302-8f58fa2045.md +0 -0
  73. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260302-a3a1b7900e.md +0 -0
  74. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260303-3f65c0442b.md +0 -0
  75. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260304-23c605e495.md +0 -0
  76. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260304-8bd6c10219.md +0 -0
  77. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260305-129d1dea2a.md +0 -0
  78. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260305-48752d79c3.md +0 -0
  79. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260305-b9afdd8720.md +0 -0
  80. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260305-f93ee5b19f.md +0 -0
  81. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260306-7061390095.md +0 -0
  82. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260313-edf7807faf.md +0 -0
  83. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260316-091567c2bb.md +0 -0
  84. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260316-4661b3789a.md +0 -0
  85. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260316-7214dac8fc.md +0 -0
  86. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260317-3d8a855086.md +0 -0
  87. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260317-4ba69c35f0.md +0 -0
  88. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260317-6cd2a53ba5.md +0 -0
  89. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260317-7a0dd3407e.md +0 -0
  90. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260317-86927e3701.md +0 -0
  91. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260317-9a8025eaac.md +0 -0
  92. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260317-a0721cc066.md +0 -0
  93. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260317-a1f53d759b.md +0 -0
  94. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260317-a9f7897b36.md +0 -0
  95. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260317-ff430eaa29.md +0 -0
  96. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260318-fb0bcd928b.md +0 -0
  97. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260319-f320fbb5cc.md +0 -0
  98. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260320-b2d80c56b3.md +0 -0
  99. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260320-c102dbd6f8.md +0 -0
  100. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260320-e8f6ddae81.md +0 -0
  101. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260321-5e57da75b0.md +0 -0
  102. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260321-6a4a30628f.md +0 -0
  103. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260321-b5a58de3f9.md +0 -0
  104. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260321-e0138991ed.md +0 -0
  105. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260321-e49663fc95.md +0 -0
  106. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260322-4c0480e882.md +0 -0
  107. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260322-d1ece5c0d4.md +0 -0
  108. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260323-4bd30888ce.md +0 -0
  109. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260323-7a02b3eb85.md +0 -0
  110. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260323-8624e0d93a.md +0 -0
  111. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260323-a8faeea78c.md +0 -0
  112. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260324-075e3332b8.md +0 -0
  113. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260324-0f6f041a52.md +0 -0
  114. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260324-2dab5931de.md +0 -0
  115. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260324-8bcda73e9b.md +0 -0
  116. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260324-9e6238f0c8.md +0 -0
  117. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260324-a1cace9846.md +0 -0
  118. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260324-bf64dd9564.md +0 -0
  119. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260324-c344d7655c.md +0 -0
  120. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260324-e60c50dcc9.md +0 -0
  121. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260324-f5149caffe.md +0 -0
  122. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260325-1a5eeea04c.md +0 -0
  123. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260326-02460b22de.md +0 -0
  124. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260326-09de627b2b.md +0 -0
  125. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260326-204ea48f84.md +0 -0
  126. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260326-32e2fd3074.md +0 -0
  127. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260326-6c6dbfc365.md +0 -0
  128. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260326-7811ad7ff2.md +0 -0
  129. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260326-88e7123370.md +0 -0
  130. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260326-d2376010b1.md +0 -0
  131. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260326-e4f0eb8850.md +0 -0
  132. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260326-e68b8aa47f.md +0 -0
  133. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260326-fdd06ad981.md +0 -0
  134. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260327-e3c7f5abcb.md +0 -0
  135. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260330-eb1760def2.md +0 -0
  136. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260331-1b58a289ea.md +0 -0
  137. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260331-26e474753e.md +0 -0
  138. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260331-3028ab9cf5.md +0 -0
  139. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260331-350048862b.md +0 -0
  140. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260331-7d41cdf5a3.md +0 -0
  141. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260331-8e5558a077.md +0 -0
  142. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260331-c46df1c3b1.md +0 -0
  143. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260401-41515789f6.md +0 -0
  144. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260401-4453752dda.md +0 -0
  145. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260401-5a225a1c0a.md +0 -0
  146. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260401-90724b10f0.md +0 -0
  147. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260401-9e322eb76e.md +0 -0
  148. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260401-bd20019d3d.md +0 -0
  149. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260401-de035be681.md +0 -0
  150. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260401-f44c8f499e.md +0 -0
  151. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260401-fa52f596ff.md +0 -0
  152. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260402-5b063207c8.md +0 -0
  153. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260402-5e0913ec81.md +0 -0
  154. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260415-3d8b5e8f81.md +0 -0
  155. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260415-84219771ca.md +0 -0
  156. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260416-41d4564480.md +0 -0
  157. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260416-5cdc3cf53f.md +0 -0
  158. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260416-807c65a8e7.md +0 -0
  159. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260416-ade561c777.md +0 -0
  160. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260416-b78aaf129a.md +0 -0
  161. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260416-db8a5430a0.md +0 -0
  162. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260416-f5a765c496.md +0 -0
  163. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260417-f1d777e9c9.md +0 -0
  164. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260418-ee12f2ff0d.md +0 -0
  165. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260420-2260437be7.md +0 -0
  166. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260420-a35a083e29.md +0 -0
  167. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260420-fa7d958d56.md +0 -0
  168. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260421-309c998a10.md +0 -0
  169. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260422-6509ac4df0.md +0 -0
  170. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260422-8dd5ed6a24.md +0 -0
  171. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260423-b0890ad9c2.md +0 -0
  172. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260424-24cc1d5e19.md +0 -0
  173. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260424-39a99c887d.md +0 -0
  174. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260427-f7955d5775.md +0 -0
  175. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260507-7b75a5cab8.md +0 -0
  176. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260507-b26f97255d.md +0 -0
  177. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260525-1fe96d2ff4.md +0 -0
  178. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260525-717e18e190.md +0 -0
  179. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260525-df4853fa3f.md +0 -0
  180. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260526-4c230f3a9d.md +0 -0
  181. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260601-6d6b779a83.md +0 -0
  182. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260601-e65d3407ed.md +0 -0
  183. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260610-51c3cf895e.md +0 -0
  184. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260629-6171e54ac8.md +0 -0
  185. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260702-4616caa284.md +0 -0
  186. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260713-da6d40dcc0.md +0 -0
  187. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260723-d4c9801300.md +0 -0
  188. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260813-18efcf9687.md +0 -0
  189. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260813-1dc6e2e1c7.md +0 -0
  190. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260813-21d4da632f.md +0 -0
  191. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260817-3587ae1a22.md +0 -0
  192. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260817-5f08a6affa.md +0 -0
  193. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260817-800f717c9d.md +0 -0
  194. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260817-a2cd839a2d.md +0 -0
  195. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260822-9175485749.md +0 -0
  196. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260822105138-298451a42c.md +0 -0
  197. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260822105138-522c7e4af4.md +0 -0
  198. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260822105138-72cc1d0343.md +0 -0
  199. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260823015950-6b8cbea92e.md +0 -0
  200. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260823022240-d3570f57fb.md +0 -0
  201. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260823050717-9192db37f8.md +0 -0
  202. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260826072120-c6db5dd5b1.md +0 -0
  203. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260826074629-f5119ea78b.md +0 -0
  204. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260826080242-012107ada2.md +0 -0
  205. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260826082256-eff3747d60.md +0 -0
  206. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260827093143-3236113033.md +0 -0
  207. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260827095642-059a7e996b.md +0 -0
  208. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons/LESSON-20260827102057-e04522a6fc.md +0 -0
  209. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/lessons.md +0 -0
  210. {pactkit-2.24.2 → pactkit-2.25.0}/docs/architecture/governance/philosophy.md +0 -0
  211. {pactkit-2.24.2 → pactkit-2.25.0}/docs/assets/logo.png +0 -0
  212. {pactkit-2.24.2 → pactkit-2.25.0}/docs/e2e/journey.md +0 -0
  213. {pactkit-2.24.2 → pactkit-2.25.0}/docs/guides/codex-integration-preresearch.md +0 -0
  214. {pactkit-2.24.2 → pactkit-2.25.0}/docs/guides/tool-integration-checklist.md +0 -0
  215. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/archive/archive_202602.md +0 -0
  216. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/archive/archive_202603.md +0 -0
  217. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/archive/archive_202604.md +0 -0
  218. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/archive/archive_202605.md +0 -0
  219. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/archive/archive_202606.md +0 -0
  220. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/archive/archive_202607.md +0 -0
  221. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/archive/archive_202608.md +0 -0
  222. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/context.md +0 -0
  223. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/friction-log.md +0 -0
  224. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/harness-comparison-2026-08-27.md +0 -0
  225. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/prd.md +0 -0
  226. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/sprint_board.md +0 -0
  227. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/HOTFIX-slim-127.yaml +0 -0
  228. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/HOTFIX-slim-131.yaml +0 -0
  229. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/HOTFIX-slim-132.yaml +0 -0
  230. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-115.yaml +0 -0
  231. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-118.yaml +0 -0
  232. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-119.yaml +0 -0
  233. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-145.yaml +0 -0
  234. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-147.yaml +0 -0
  235. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-148.yaml +0 -0
  236. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-149.yaml +0 -0
  237. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-2026082381e832771d4e.yaml +0 -0
  238. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-20260823d854b0cf1875.yaml +0 -0
  239. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-20260823de7e85d6042a.yaml +0 -0
  240. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-20260825b1c83a046b4b.yaml +0 -0
  241. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-202608264cf429c75e22.yaml +0 -0
  242. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-2026082672b57c78fd67.yaml +0 -0
  243. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-202608267c3989223b4d.yaml +0 -0
  244. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-202608268fc379dbe6ef.yaml +0 -0
  245. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-20260826ac1f0bfe4148.yaml +0 -0
  246. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-20260826cb37edfdd4da.yaml +0 -0
  247. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-20260826ce35b77ce005.yaml +0 -0
  248. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-20260826f9492ab32c3d.yaml +0 -0
  249. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-20260827024e71df170f.yaml +0 -0
  250. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-2026082727cc4ab535e7.yaml +0 -0
  251. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-2026082730b5954cf538.yaml +0 -0
  252. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-20260827625b870eb7da.yaml +0 -0
  253. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-202608277ec1236a7b99.yaml +0 -0
  254. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-20260827833e7a200f9a.yaml +0 -0
  255. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-20260827855bf3efaec3.yaml +0 -0
  256. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-2026082799fa651655be.yaml +0 -0
  257. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-20260827c67e3add6af5.yaml +0 -0
  258. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-20260827d0ae0dfada51.yaml +0 -0
  259. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-20260827eddbe9669c87.yaml +0 -0
  260. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-20260827fb6291b717eb.yaml +0 -0
  261. {pactkit-2.24.2 → pactkit-2.25.0}/docs/product/stories/STORY-slim-20260827fc9de5542ad7.yaml +0 -0
  262. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-001.md +0 -0
  263. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-002.md +0 -0
  264. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-003.md +0 -0
  265. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-004.md +0 -0
  266. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-005.md +0 -0
  267. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-006.md +0 -0
  268. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-007.md +0 -0
  269. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-008.md +0 -0
  270. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-009.md +0 -0
  271. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-010.md +0 -0
  272. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-011.md +0 -0
  273. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-012.md +0 -0
  274. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-013.md +0 -0
  275. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-014.md +0 -0
  276. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-015.md +0 -0
  277. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-016.md +0 -0
  278. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-017.md +0 -0
  279. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-018.md +0 -0
  280. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-019.md +0 -0
  281. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-020.md +0 -0
  282. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-021.md +0 -0
  283. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-022.md +0 -0
  284. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-023.md +0 -0
  285. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-024.md +0 -0
  286. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-025.md +0 -0
  287. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-026.md +0 -0
  288. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-027.md +0 -0
  289. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-028.md +0 -0
  290. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-029.md +0 -0
  291. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-030.md +0 -0
  292. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-031.md +0 -0
  293. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-032.md +0 -0
  294. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-033.md +0 -0
  295. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-034.md +0 -0
  296. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-035.md +0 -0
  297. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-slim-001.md +0 -0
  298. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-slim-002.md +0 -0
  299. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-slim-003.md +0 -0
  300. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-slim-004.md +0 -0
  301. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-slim-005.md +0 -0
  302. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-slim-006.md +0 -0
  303. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-slim-089.md +0 -0
  304. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/BUG-slim-107.md +0 -0
  305. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-023.md +0 -0
  306. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-049.md +0 -0
  307. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-050.md +0 -0
  308. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-051.md +0 -0
  309. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-052.md +0 -0
  310. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-061.md +0 -0
  311. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-062.md +0 -0
  312. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-067.md +0 -0
  313. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-069.md +0 -0
  314. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-070.md +0 -0
  315. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-085.md +0 -0
  316. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-087.md +0 -0
  317. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-096.md +0 -0
  318. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-099.md +0 -0
  319. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-107.md +0 -0
  320. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-117.md +0 -0
  321. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-122.md +0 -0
  322. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-123.md +0 -0
  323. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-126.md +0 -0
  324. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-127.md +0 -0
  325. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-130.md +0 -0
  326. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-131.md +0 -0
  327. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/HOTFIX-slim-132.md +0 -0
  328. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-001.md +0 -0
  329. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-002.md +0 -0
  330. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-003.md +0 -0
  331. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-004.md +0 -0
  332. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-005.md +0 -0
  333. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-006.md +0 -0
  334. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-007.md +0 -0
  335. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-008.md +0 -0
  336. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-009.md +0 -0
  337. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-010.md +0 -0
  338. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-011.md +0 -0
  339. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-012.md +0 -0
  340. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-013.md +0 -0
  341. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-014.md +0 -0
  342. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-015.md +0 -0
  343. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-016.md +0 -0
  344. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-017.md +0 -0
  345. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-018.md +0 -0
  346. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-019.md +0 -0
  347. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-020.md +0 -0
  348. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-021.md +0 -0
  349. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-022.md +0 -0
  350. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-023.md +0 -0
  351. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-024.md +0 -0
  352. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-025.md +0 -0
  353. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-026.md +0 -0
  354. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-027.md +0 -0
  355. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-028.md +0 -0
  356. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-029.md +0 -0
  357. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-030.md +0 -0
  358. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-031.md +0 -0
  359. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-032.md +0 -0
  360. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-033.md +0 -0
  361. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-034.md +0 -0
  362. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-035.md +0 -0
  363. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-036.md +0 -0
  364. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-037.md +0 -0
  365. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-038.md +0 -0
  366. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-039.md +0 -0
  367. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-040.md +0 -0
  368. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-041.md +0 -0
  369. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-042.md +0 -0
  370. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-043.md +0 -0
  371. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-044.md +0 -0
  372. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-045.md +0 -0
  373. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-046.md +0 -0
  374. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-047.md +0 -0
  375. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-048.md +0 -0
  376. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-049.md +0 -0
  377. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-050.md +0 -0
  378. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-051.md +0 -0
  379. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-052.md +0 -0
  380. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-053.md +0 -0
  381. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-054.md +0 -0
  382. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-055.md +0 -0
  383. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-056.md +0 -0
  384. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-057.md +0 -0
  385. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-058.md +0 -0
  386. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-059.md +0 -0
  387. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-060.md +0 -0
  388. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-061.md +0 -0
  389. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-062.md +0 -0
  390. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-063.md +0 -0
  391. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-064.md +0 -0
  392. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-065.md +0 -0
  393. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-069.md +0 -0
  394. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-070.md +0 -0
  395. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-071.md +0 -0
  396. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-072.md +0 -0
  397. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-073.md +0 -0
  398. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-001.md +0 -0
  399. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-005.md +0 -0
  400. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-006.md +0 -0
  401. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-007.md +0 -0
  402. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-009.md +0 -0
  403. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-010.md +0 -0
  404. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-011.md +0 -0
  405. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-012.md +0 -0
  406. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-013.md +0 -0
  407. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-014.md +0 -0
  408. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-015.md +0 -0
  409. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-016.md +0 -0
  410. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-017.md +0 -0
  411. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-018.md +0 -0
  412. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-019.md +0 -0
  413. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-020.md +0 -0
  414. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-021.md +0 -0
  415. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-022.md +0 -0
  416. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-023.md +0 -0
  417. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-024.md +0 -0
  418. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-028.md +0 -0
  419. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-029.md +0 -0
  420. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-030.md +0 -0
  421. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-031.md +0 -0
  422. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-032.md +0 -0
  423. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-033.md +0 -0
  424. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-034.md +0 -0
  425. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-035.md +0 -0
  426. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-036.md +0 -0
  427. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-037.md +0 -0
  428. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-038.md +0 -0
  429. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-039.md +0 -0
  430. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-040.md +0 -0
  431. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-041.md +0 -0
  432. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-042.md +0 -0
  433. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-043.md +0 -0
  434. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-044.md +0 -0
  435. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-045.md +0 -0
  436. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-046.md +0 -0
  437. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-047.md +0 -0
  438. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-048.md +0 -0
  439. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-049.md +0 -0
  440. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-050.md +0 -0
  441. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-051.md +0 -0
  442. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-052.md +0 -0
  443. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-053.md +0 -0
  444. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-054.md +0 -0
  445. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-055.md +0 -0
  446. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-056.md +0 -0
  447. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-057.md +0 -0
  448. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-058.md +0 -0
  449. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-059.md +0 -0
  450. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-060.md +0 -0
  451. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-063.md +0 -0
  452. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-066.md +0 -0
  453. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-067.md +0 -0
  454. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-068.md +0 -0
  455. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-069.md +0 -0
  456. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-070.md +0 -0
  457. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-071.md +0 -0
  458. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-072.md +0 -0
  459. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-073.md +0 -0
  460. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-074.md +0 -0
  461. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-075.md +0 -0
  462. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-076.md +0 -0
  463. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-077.md +0 -0
  464. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-078.md +0 -0
  465. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-079.md +0 -0
  466. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-080.md +0 -0
  467. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-081.md +0 -0
  468. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-082.md +0 -0
  469. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-083.md +0 -0
  470. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-084.md +0 -0
  471. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-086.md +0 -0
  472. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-088.md +0 -0
  473. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-089.md +0 -0
  474. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-090.md +0 -0
  475. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-091.md +0 -0
  476. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-092.md +0 -0
  477. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-093.md +0 -0
  478. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-094.md +0 -0
  479. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-095.md +0 -0
  480. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-097.md +0 -0
  481. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-098.md +0 -0
  482. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-099.md +0 -0
  483. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-100.md +0 -0
  484. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-101.md +0 -0
  485. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-102.md +0 -0
  486. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-103.md +0 -0
  487. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-104.md +0 -0
  488. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-105.md +0 -0
  489. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-106.md +0 -0
  490. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-107.md +0 -0
  491. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-108.md +0 -0
  492. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-109.md +0 -0
  493. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-110.md +0 -0
  494. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-111.md +0 -0
  495. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-112.md +0 -0
  496. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-113.md +0 -0
  497. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-114.md +0 -0
  498. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-115.md +0 -0
  499. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-116.md +0 -0
  500. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-118.md +0 -0
  501. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-119.md +0 -0
  502. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-120.md +0 -0
  503. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-121.md +0 -0
  504. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-124.md +0 -0
  505. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-125.md +0 -0
  506. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-126.md +0 -0
  507. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-127.md +0 -0
  508. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-128.md +0 -0
  509. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-129.md +0 -0
  510. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-132.md +0 -0
  511. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-133.md +0 -0
  512. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-134.md +0 -0
  513. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-135.md +0 -0
  514. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-136.md +0 -0
  515. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-137.md +0 -0
  516. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-138.md +0 -0
  517. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-139.md +0 -0
  518. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-140.md +0 -0
  519. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-141.md +0 -0
  520. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-142.md +0 -0
  521. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-143.md +0 -0
  522. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-144.md +0 -0
  523. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-145.md +0 -0
  524. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-146.md +0 -0
  525. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-147.md +0 -0
  526. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-148.md +0 -0
  527. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-149.md +0 -0
  528. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-2026082381e832771d4e.md +0 -0
  529. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-20260823d854b0cf1875.md +0 -0
  530. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-20260823de7e85d6042a.md +0 -0
  531. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-2026082466c8670d9655.md +0 -0
  532. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-20260824dd23a0ed3b4c.md +0 -0
  533. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-20260825b1c83a046b4b.md +0 -0
  534. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-202608264cf429c75e22.md +0 -0
  535. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-2026082672b57c78fd67.md +0 -0
  536. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-202608267c3989223b4d.md +0 -0
  537. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-202608268fc379dbe6ef.md +0 -0
  538. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-20260826ac1f0bfe4148.md +0 -0
  539. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-20260826cb37edfdd4da.md +0 -0
  540. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-20260826ce35b77ce005.md +0 -0
  541. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-20260826f9492ab32c3d.md +0 -0
  542. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-20260827024e71df170f.md +0 -0
  543. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-20260827eddbe9669c87.md +0 -0
  544. {pactkit-2.24.2 → pactkit-2.25.0}/docs/specs/STORY-slim-20260827fc9de5542ad7.md +0 -0
  545. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/BUG-001_case.md +0 -0
  546. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/BUG-002_case.md +0 -0
  547. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-028_case.md +0 -0
  548. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-029_case.md +0 -0
  549. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-031_case.md +0 -0
  550. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-032_case.md +0 -0
  551. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-033_case.md +0 -0
  552. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-034_case.md +0 -0
  553. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-135_case.md +0 -0
  554. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-136_case.md +0 -0
  555. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-137_case.md +0 -0
  556. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-138_case.md +0 -0
  557. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-139_case.md +0 -0
  558. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-140_case.md +0 -0
  559. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-141_case.md +0 -0
  560. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-142_case.md +0 -0
  561. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-143_case.md +0 -0
  562. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-144_case.md +0 -0
  563. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-146_case.md +0 -0
  564. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-147_case.md +0 -0
  565. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-148_case.md +0 -0
  566. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-149_case.md +0 -0
  567. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-2026082381e832771d4e_case.md +0 -0
  568. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-20260823d854b0cf1875_case.md +0 -0
  569. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-20260823de7e85d6042a_case.md +0 -0
  570. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-20260825b1c83a046b4b_case.md +0 -0
  571. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-202608264cf429c75e22_case.md +0 -0
  572. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-2026082672b57c78fd67_case.md +0 -0
  573. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-202608267c3989223b4d_case.md +0 -0
  574. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-202608268fc379dbe6ef_case.md +0 -0
  575. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-20260826ac1f0bfe4148_case.md +0 -0
  576. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-20260826cb37edfdd4da_case.md +0 -0
  577. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-20260826ce35b77ce005_case.md +0 -0
  578. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-20260826f9492ab32c3d_case.md +0 -0
  579. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-20260827024e71df170f_case.md +0 -0
  580. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-20260827eddbe9669c87_case.md +0 -0
  581. {pactkit-2.24.2 → pactkit-2.25.0}/docs/test_cases/STORY-slim-20260827fc9de5542ad7_case.md +0 -0
  582. {pactkit-2.24.2 → pactkit-2.25.0}/opencode.json +0 -0
  583. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/__main__.py +0 -0
  584. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/audit.py +0 -0
  585. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/backfill.py +0 -0
  586. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/context_gen.py +0 -0
  587. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/continuation.py +0 -0
  588. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/coverage_gate.py +0 -0
  589. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/delivery_evidence.py +0 -0
  590. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/deploy_manifest.py +0 -0
  591. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/deployment_transaction.py +0 -0
  592. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/deps.py +0 -0
  593. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/doctor.py +0 -0
  594. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/done_verify.py +0 -0
  595. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/garden.py +0 -0
  596. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/generators/__init__.py +0 -0
  597. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/generators/claude_md.py +0 -0
  598. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/generators/command_ownership.py +0 -0
  599. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/generators/deploy_base.py +0 -0
  600. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/generators/deployer.py +0 -0
  601. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/governance.py +0 -0
  602. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/graph_query.py +0 -0
  603. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/guards.py +0 -0
  604. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/host_continuation.py +0 -0
  605. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/id_generator.py +0 -0
  606. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/invariants.py +0 -0
  607. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/issue_sync.py +0 -0
  608. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/lazy_visualize.py +0 -0
  609. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/legacy/__init__.py +0 -0
  610. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/legacy/host_continuation.py +0 -0
  611. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/legacy/usage.py +0 -0
  612. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/legacy/workflow_engine.py +0 -0
  613. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/lessons.py +0 -0
  614. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/lint_runner.py +0 -0
  615. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/observe.py +0 -0
  616. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/portable_methods.py +0 -0
  617. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/profiles.py +0 -0
  618. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/project_root.py +0 -0
  619. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/prompts/__init__.py +0 -0
  620. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/prompts/agents.py +0 -0
  621. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/prompts/guides.py +0 -0
  622. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/prompts/references.py +0 -0
  623. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/prompts/skills.py +0 -0
  624. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/prompts/workflows.py +0 -0
  625. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/protocols.py +0 -0
  626. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/regression.py +0 -0
  627. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/risk_profile.py +0 -0
  628. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/schemas.py +0 -0
  629. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/scripts.py +0 -0
  630. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/sec_scope.py +0 -0
  631. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/skills/__init__.py +0 -0
  632. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/skills/analyzers/__init__.py +0 -0
  633. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/skills/analyzers/go_analyzer.py +0 -0
  634. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/skills/analyzers/java_analyzer.py +0 -0
  635. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/skills/analyzers/python_analyzer.py +0 -0
  636. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/skills/analyzers/ts_analyzer.py +0 -0
  637. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/skills/board.py +0 -0
  638. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/skills/interface_summary.py +0 -0
  639. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/skills/report.py +0 -0
  640. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/skills/scaffold.py +0 -0
  641. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/skills/spec_linter.py +0 -0
  642. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/skills/visualize.py +0 -0
  643. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/spec_graph.py +0 -0
  644. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/spec_preflight.py +0 -0
  645. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/spec_status.py +0 -0
  646. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/test_mapper.py +0 -0
  647. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/validators.py +0 -0
  648. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/workflow_engine.py +0 -0
  649. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/workflow_registry.py +0 -0
  650. {pactkit-2.24.2 → pactkit-2.25.0}/src/pactkit/workflow_validators.py +0 -0
  651. {pactkit-2.24.2 → pactkit-2.25.0}/tests/conftest.py +0 -0
  652. {pactkit-2.24.2 → pactkit-2.25.0}/tests/e2e/__init__.py +0 -0
  653. {pactkit-2.24.2 → pactkit-2.25.0}/tests/e2e/cli/__init__.py +0 -0
  654. {pactkit-2.24.2 → pactkit-2.25.0}/tests/e2e/cli/test_cli_e2e.py +0 -0
  655. {pactkit-2.24.2 → pactkit-2.25.0}/tests/e2e/cli/test_story_slim146_cli.py +0 -0
  656. {pactkit-2.24.2 → pactkit-2.25.0}/tests/e2e/cli/test_story_slim147_workflow_cli.py +0 -0
  657. {pactkit-2.24.2 → pactkit-2.25.0}/tests/e2e/cli/test_story_slim148_governance_cli.py +0 -0
  658. {pactkit-2.24.2 → pactkit-2.25.0}/tests/e2e/cli/test_story_slim149_query_cli.py +0 -0
  659. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/agent_parser/agents_dir/researcher.yaml +0 -0
  660. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/agent_parser/agents_dir/writer.yaml +0 -0
  661. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/agent_parser/langgraph_app.py +0 -0
  662. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/agent_parser/mcp_settings.json +0 -0
  663. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/api_call_parser/axios_style.tsx +0 -0
  664. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/api_call_parser/dynamic.tsx +0 -0
  665. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/api_call_parser/page.tsx +0 -0
  666. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/audit.txt +0 -0
  667. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/backfill-release.txt +0 -0
  668. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/board.txt +0 -0
  669. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/clean.txt +0 -0
  670. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/context.txt +0 -0
  671. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/continuation.txt +0 -0
  672. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/coverage-gate.txt +0 -0
  673. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/deps.txt +0 -0
  674. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/doctor.txt +0 -0
  675. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/done-verify.txt +0 -0
  676. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/garden.txt +0 -0
  677. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/generate-id.txt +0 -0
  678. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/governance.txt +0 -0
  679. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/guard.txt +0 -0
  680. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/init.txt +0 -0
  681. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/interface-summary.txt +0 -0
  682. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/invariants-refresh.txt +0 -0
  683. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/issue-sync.txt +0 -0
  684. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/lesson-append.txt +0 -0
  685. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/lint-context.txt +0 -0
  686. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/lint-lessons.txt +0 -0
  687. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/lint-testcase.txt +0 -0
  688. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/lint.txt +0 -0
  689. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/observe.txt +0 -0
  690. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/query.txt +0 -0
  691. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/redetect-stack.txt +0 -0
  692. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/regression.txt +0 -0
  693. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/report.txt +0 -0
  694. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/schema.txt +0 -0
  695. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/sec-scope.txt +0 -0
  696. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/spec-graph.txt +0 -0
  697. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/spec-lint.txt +0 -0
  698. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/spec-preflight.txt +0 -0
  699. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/spec-status.txt +0 -0
  700. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/stats.txt +0 -0
  701. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/sync.txt +0 -0
  702. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/test-map.txt +0 -0
  703. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/update.txt +0 -0
  704. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/upgrade.txt +0 -0
  705. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/version.txt +0 -0
  706. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/visualize.txt +0 -0
  707. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/work-unit.txt +0 -0
  708. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/cli_help_golden/workflow.txt +0 -0
  709. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/config_golden/copy_claude.yaml +0 -0
  710. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/config_golden/copy_codex.yaml +0 -0
  711. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/config_golden/copy_github.yaml +0 -0
  712. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/config_golden/empty.yaml +0 -0
  713. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/config_golden/full_legacy.yaml +0 -0
  714. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/config_golden/minimal.yaml +0 -0
  715. {pactkit-2.24.2 → pactkit-2.25.0}/tests/fixtures/config_golden/unknown_keys.yaml +0 -0
  716. {pactkit-2.24.2 → pactkit-2.25.0}/tests/integration/__init__.py +0 -0
  717. {pactkit-2.24.2 → pactkit-2.25.0}/tests/integration/test_deploy_classic.py +0 -0
  718. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_agent_features.py +0 -0
  719. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_agent_frontmatter.py +0 -0
  720. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_agents_enrichment.py +0 -0
  721. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_audit.py +0 -0
  722. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_blast_radius.py +0 -0
  723. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_board_bug027.py +0 -0
  724. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_board_sections.py +0 -0
  725. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug001_skill_path.py +0 -0
  726. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug002_plugin_paths.py +0 -0
  727. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug003_multi_import.py +0 -0
  728. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug004_dead_set.py +0 -0
  729. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug005_archive_taskless.py +0 -0
  730. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug006_scan_excludes.py +0 -0
  731. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug007_stale_trace_refs.py +0 -0
  732. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug008_stale_command_refs.py +0 -0
  733. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug009_project_config_backfill.py +0 -0
  734. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug010_rewrite_yaml.py +0 -0
  735. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug011_stale_refs.py +0 -0
  736. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug012_call_graph_filter.py +0 -0
  737. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug013_config_single_source.py +0 -0
  738. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug014_version_hygiene.py +0 -0
  739. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug017_project_init_playbook.py +0 -0
  740. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug018_issue_tracker_verification.py +0 -0
  741. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug019_venv_deployment.py +0 -0
  742. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug020_claude_md_backup.py +0 -0
  743. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug025_release_delegation.py +0 -0
  744. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug026_version_sync.py +0 -0
  745. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug028_ghost_refs.py +0 -0
  746. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug029_stack_detection_fallback.py +0 -0
  747. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug030_spec_lint_cli.py +0 -0
  748. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug031_docstring_accuracy.py +0 -0
  749. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug034_plan_metadata_template.py +0 -0
  750. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug_021.py +0 -0
  751. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug_022.py +0 -0
  752. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug_023.py +0 -0
  753. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug_024.py +0 -0
  754. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug_slim001_env_detection.py +0 -0
  755. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug_slim002_instruction_collision.py +0 -0
  756. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug_slim003.py +0 -0
  757. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug_slim004.py +0 -0
  758. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug_slim005.py +0 -0
  759. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug_slim006.py +0 -0
  760. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_bug_slim089_global_claude_md.py +0 -0
  761. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_check_command.py +0 -0
  762. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_check_extensions_072_073.py +0 -0
  763. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_check_playbook_072_073.py +0 -0
  764. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_cli_help_surface.py +0 -0
  765. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_codex_hook_channel.py +0 -0
  766. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_command_frontmatter.py +0 -0
  767. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_command_ownership_v2.py +0 -0
  768. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_command_visualize_modes.py +0 -0
  769. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_complexity.py +0 -0
  770. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_config.py +0 -0
  771. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_config_auto_merge.py +0 -0
  772. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_config_sync_precedence.py +0 -0
  773. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_context_gen.py +0 -0
  774. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_continuation_hardening.py +0 -0
  775. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_create_skill.py +0 -0
  776. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_cross_flow_matrix.py +0 -0
  777. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_deploy_base.py +0 -0
  778. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_deploy_ownership_safety.py +0 -0
  779. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_deployer_cleanup.py +0 -0
  780. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_deployer_plugin.py +0 -0
  781. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_deployment_transaction.py +0 -0
  782. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_deps.py +0 -0
  783. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_design_command.py +0 -0
  784. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_done_gates.py +0 -0
  785. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_done_verify.py +0 -0
  786. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_draw_prompt.py +0 -0
  787. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_draw_references.py +0 -0
  788. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_drawio_mcp.py +0 -0
  789. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_enforcement.py +0 -0
  790. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_engine_robustness.py +0 -0
  791. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_garden.py +0 -0
  792. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_gate_fail_closed.py +0 -0
  793. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_home_path_fix.py +0 -0
  794. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_hotfix_command.py +0 -0
  795. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_hotfix_legacy_constitution.py +0 -0
  796. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_init_guard.py +0 -0
  797. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_init_playbook_074.py +0 -0
  798. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_interface_summary.py +0 -0
  799. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_lang_profiles.py +0 -0
  800. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_layer_violations.py +0 -0
  801. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_legacy_engine_freeze.py +0 -0
  802. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_lessons_rotation_075.py +0 -0
  803. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_list_stories.py +0 -0
  804. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_mcp_integration.py +0 -0
  805. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_model_config.py +0 -0
  806. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_modular_constitution.py +0 -0
  807. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_monorepo_detect.py +0 -0
  808. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_multi_prefix.py +0 -0
  809. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_observe.py +0 -0
  810. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_pdca_semantics_v2.py +0 -0
  811. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_pdca_slim.py +0 -0
  812. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_profiles.py +0 -0
  813. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_project_root.py +0 -0
  814. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_project_visibility.py +0 -0
  815. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_prompt_cli_contract.py +0 -0
  816. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_prompt_cli_refs.py +0 -0
  817. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_prompt_quality_075.py +0 -0
  818. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_prompt_structural_invariants.py +0 -0
  819. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_prompts_package.py +0 -0
  820. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_release.py +0 -0
  821. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_release_field.py +0 -0
  822. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_release_v110.py +0 -0
  823. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_render_prompt.py +0 -0
  824. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_report_parser.py +0 -0
  825. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_report_unified.py +0 -0
  826. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_resolve_scope.py +0 -0
  827. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_review_command.py +0 -0
  828. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_rule_registry_architecture.py +0 -0
  829. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_rules_enrichment.py +0 -0
  830. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_run_events.py +0 -0
  831. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_run_stats.py +0 -0
  832. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_scaffold.py +0 -0
  833. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_scaffold_developer_prefix.py +0 -0
  834. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_schemas.py +0 -0
  835. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_script_extraction.py +0 -0
  836. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_selective_deploy.py +0 -0
  837. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_session_context.py +0 -0
  838. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_skill_structure.py +0 -0
  839. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_skills_enrichment.py +0 -0
  840. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_slim_deps_088.py +0 -0
  841. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_smart_regression.py +0 -0
  842. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_solution_design_rule.py +0 -0
  843. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_spec_preflight.py +0 -0
  844. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_sprint_command.py +0 -0
  845. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_stack_references.py +0 -0
  846. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_status_command.py +0 -0
  847. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_statusline.py +0 -0
  848. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story014_release.py +0 -0
  849. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story015_ci_lint_gate.py +0 -0
  850. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story016_claude_md.py +0 -0
  851. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story017_init_claude_md.py +0 -0
  852. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story018_arch_staleness.py +0 -0
  853. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story019_bailout.py +0 -0
  854. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story020_horizon.py +0 -0
  855. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story021_rfc.py +0 -0
  856. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story022_decision_tree.py +0 -0
  857. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story023_test_quality.py +0 -0
  858. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story024_native_agent.py +0 -0
  859. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story025_ci_pipeline.py +0 -0
  860. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story026_issue_tracker.py +0 -0
  861. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story028_rule_scoping.py +0 -0
  862. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story029_doctor.py +0 -0
  863. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story030_lint.py +0 -0
  864. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story031_git_init_guard.py +0 -0
  865. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story032_greenfield_redirect.py +0 -0
  866. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story033_config_backfill.py +0 -0
  867. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story034_plan_config_refresh.py +0 -0
  868. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story035_readme_docs.py +0 -0
  869. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story037_regression_fix.py +0 -0
  870. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story038_call_graph_update.py +0 -0
  871. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story039_venv_config.py +0 -0
  872. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story040_layered_claude_md.py +0 -0
  873. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story042_spec_linter.py +0 -0
  874. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story043_active_clarify.py +0 -0
  875. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story044_consistency_check.py +0 -0
  876. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story045_auto_pr.py +0 -0
  877. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story047_enterprise_flags.py +0 -0
  878. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story048_worktree_isolation.py +0 -0
  879. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story049_community_standards.py +0 -0
  880. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story050_doc_only_shortcut.py +0 -0
  881. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story051_workflow_streamlining.py +0 -0
  882. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story052_conditional_github_release.py +0 -0
  883. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story053_impact_regression.py +0 -0
  884. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story055_commands.py +0 -0
  885. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story055_config.py +0 -0
  886. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story055_spec_linter.py +0 -0
  887. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story056_commands.py +0 -0
  888. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story056_config.py +0 -0
  889. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story057_implicit_cleanup.py +0 -0
  890. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story058_opencode_extraction.py +0 -0
  891. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story058_routing_fix.py +0 -0
  892. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story059_codex_removal.py +0 -0
  893. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story060_init_hang.py +0 -0
  894. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story061_remove_thinking.py +0 -0
  895. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story062_mcp_recommendations.py +0 -0
  896. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story063_prompt_slimming.py +0 -0
  897. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story064_venv_local_md.py +0 -0
  898. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story065_sprint_model.py +0 -0
  899. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story072_developer_prefix.py +0 -0
  900. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story106_lateral_scan.py +0 -0
  901. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story133_debug_skill.py +0 -0
  902. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_pdca_host_capsules.py +0 -0
  903. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_pdca_semantics_v2.py +0 -0
  904. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim009_lazy_rules.py +0 -0
  905. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim010_dry_refactor.py +0 -0
  906. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim011_command_rules.py +0 -0
  907. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim012_ci.py +0 -0
  908. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim014_clean.py +0 -0
  909. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim014_context.py +0 -0
  910. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim014_guard.py +0 -0
  911. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim014_lazy_viz.py +0 -0
  912. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim014_next_id.py +0 -0
  913. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim014_regression.py +0 -0
  914. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim014_sec_scope.py +0 -0
  915. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim014_validators.py +0 -0
  916. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim015_doctor.py +0 -0
  917. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim016_testmap_lint.py +0 -0
  918. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim017.py +0 -0
  919. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim018.py +0 -0
  920. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim019_plan_subphases.py +0 -0
  921. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim020_explore_stall_fix.py +0 -0
  922. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim021.py +0 -0
  923. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim022.py +0 -0
  924. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim023.py +0 -0
  925. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim024.py +0 -0
  926. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim025.py +0 -0
  927. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim026.py +0 -0
  928. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim027.py +0 -0
  929. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim028.py +0 -0
  930. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim029.py +0 -0
  931. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim030.py +0 -0
  932. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim031.py +0 -0
  933. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim032.py +0 -0
  934. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim033.py +0 -0
  935. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim034.py +0 -0
  936. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim035.py +0 -0
  937. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim036.py +0 -0
  938. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim037.py +0 -0
  939. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim038.py +0 -0
  940. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim039.py +0 -0
  941. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim040.py +0 -0
  942. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim041.py +0 -0
  943. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim042.py +0 -0
  944. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim043.py +0 -0
  945. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim044.py +0 -0
  946. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim045.py +0 -0
  947. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim046.py +0 -0
  948. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim047.py +0 -0
  949. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim048.py +0 -0
  950. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim049.py +0 -0
  951. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim051.py +0 -0
  952. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim052.py +0 -0
  953. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim053.py +0 -0
  954. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim054.py +0 -0
  955. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim055.py +0 -0
  956. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim056.py +0 -0
  957. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim060_codex_profile.py +0 -0
  958. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim063.py +0 -0
  959. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim065.py +0 -0
  960. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim076_multistack.py +0 -0
  961. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim077_monorepo_stack.py +0 -0
  962. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim078.py +0 -0
  963. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim079.py +0 -0
  964. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim080.py +0 -0
  965. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim081.py +0 -0
  966. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim082.py +0 -0
  967. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim083.py +0 -0
  968. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim084.py +0 -0
  969. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim095.py +0 -0
  970. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim098_pdca_nudge.py +0 -0
  971. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim099_act_context_ref.py +0 -0
  972. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim102_version_marker.py +0 -0
  973. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim104_should_semantics.py +0 -0
  974. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim107.py +0 -0
  975. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim109_journey_spec.py +0 -0
  976. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim111_playwright_assertion.py +0 -0
  977. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim112_rules_split.py +0 -0
  978. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim114_journey_sync.py +0 -0
  979. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim119.py +0 -0
  980. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim120.py +0 -0
  981. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim121.py +0 -0
  982. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim125.py +0 -0
  983. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim126.py +0 -0
  984. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim127_managed_block.py +0 -0
  985. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim128_engineering_concerns.py +0 -0
  986. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim132.py +0 -0
  987. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim134_no_model_in_frontmatter.py +0 -0
  988. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim135_config_schema.py +0 -0
  989. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim139_skill_manifest.py +0 -0
  990. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim141_manifest_hash.py +0 -0
  991. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim142_all_target_isolation.py +0 -0
  992. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim143_spec_graph.py +0 -0
  993. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim144_wave_mode.py +0 -0
  994. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim145.py +0 -0
  995. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim146.py +0 -0
  996. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim147.py +0 -0
  997. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim148.py +0 -0
  998. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim149.py +0 -0
  999. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim150.py +0 -0
  1000. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim_stop_hook.py +0 -0
  1001. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_story_slim_work_units.py +0 -0
  1002. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_tools.py +0 -0
  1003. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_topology_parsers_066.py +0 -0
  1004. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_update_task.py +0 -0
  1005. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_visualize_call_nested.py +0 -0
  1006. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_visualize_chain_fix.py +0 -0
  1007. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_visualize_modes.py +0 -0
  1008. {pactkit-2.24.2 → pactkit-2.25.0}/tests/unit/test_visualize_multilang_chain.py +0 -0
@@ -1,5 +1,29 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.25.0] - 2026-08-30
4
+
5
+ ### Added
6
+ - **Protected-branch push gate** — `git push` to a protected branch (default `main`/`master`) is intercepted across all three channels (PreToolUse, codex hooks.json, git pre-push) and blocked with an actionable message: the sanctioned path (feature branch + PR), the human bypass (`PACTKIT_ALLOW_DIRECT_PUSH=1` via the `!` prefix), and the repo-owner config (`enforcement.allow_direct_push`). Direct commits on protected branches block by default instead of merely running the full suite; `--no-verify` is no longer a free PreToolUse bypass (the agent can type it; only the env var proves a human channel). Every block and bypass is audited under `push_gate`.
7
+ - **Tamper guard** — agent modification of enforcement artifacts is blocked: `.git/hooks/**`, `.pactkit/enforcement/**`, `.codex/hooks.json` fully; `.claude/settings.json` only when the edit removes a gate registration. Bypass: `PACTKIT_ALLOW_CONFIG_EDIT=1` or `enforcement.tamper_guard: false`.
8
+ - **L1 Hard-Rule Override Protocol** — core rules now state that L1 rules are never waivable in conversation: a conflicting user instruction is refused (not obeyed), and editing rules/hooks/gate config to comply is itself L1 tampering. Sanctioned channels: do it the sanctioned way, the human runs the command via `!`, or the repo owner changes the config.
9
+ - **Stack-aware commit-gate test commands** — the gate runs the detected stack's real suite (`npm test` / `go test ./...` / `mvn|gradle test`) instead of forcing pytest onto Node/Go/Java repos; `pactkit doctor` probes report stack-specific availability. Python keeps the venv-aware pytest path verbatim (monorepos included).
10
+ - **Session context hooks** — `pactkit gate --hook session-start` regenerates `.pactkit/context.md` and prints it (SessionStart injects stdout as context; fires post-compaction too), `--hook pre-compact` refreshes state as a side effect and never blocks compaction. Cold-start orientation is deterministic instead of prompt-hoped.
11
+ - **Spec tampering guard** — during Act, editing a spec with an active preflight receipt is blocked ("Spec is Law", L1); Plan-phase spec writing is unaffected (no receipt exists yet). Bypass: `PACTKIT_ALLOW_SPEC_EDIT=1` or `pactkit gate authorize spec_edit`.
12
+ - **Authorization gate** — external-effect commands (`gh pr create`, `gh release create|delete|upload`, `gh repo create|delete`, `npm`/`pnpm`/`yarn`/`cargo publish`, `twine upload`, `docker push`) block until the user authorizes: ask first, then `pactkit gate authorize <scope>` opens a short-TTL audited window; the strict human channel is `PACTKIT_AUTHORIZED=1` via `!`. Read-only variants never match. Honest threat model: prevents forgetting, not malice — all uses leave records.
13
+ - **Secrets gate** — Bash commands containing literal credential material (AWS `AKIA…`, `ghp_`/`github_pat_`, `glpat-`, `xox?-`, `sk-…`, private keys, `password=`/`pwd=`/`passwd=` with a literal value) block by default; env-var indirection (`password=$DB_PASS`) is exempt as the sanctioned pattern. Bypass: `PACTKIT_ALLOW_SECRET=1` or `enforcement.secrets_gate: false`.
14
+ - **`pactkit gate` command** — one entry for session hooks and `authorize <scope> [--ttl-minutes N]` (token lives in the tamper-guard-protected `.pactkit/enforcement/`).
15
+ - **Gate telemetry** — gate blocks, authorizations, and Skill invocations feed the run-event stream (`gate_blocked` / `authorization_asked` / `authorization_granted` / `command_invoked`) so `pactkit stats` reflects real direct-PDCA usage, not only the workflow engine: per-gate block counts, per-command invocation counts, and the authorization pair at project scope. Telemetry is best-effort and never blocks a gate verdict.
16
+ - **`enforcement` config section** — `protected_branches` (default `[main, master]`), `allow_direct_push` (false), `tamper_guard` (true), `spec_guard` (true), `auth_gate` (true), `secrets_gate` (true), `auth_ttl_minutes` (30). Missing/malformed values fall back to safe defaults.
17
+
18
+ ### Fixed
19
+ - **Git hooks no longer lock out machines without pactkit** — generated pre-commit/pre-push scripts probe `command -v pactkit` and WARN + allow when the binary is missing (was: exit 127 blocking every commit for teammates/CI in non-Python teams).
20
+ - **Audit records no longer persist credentials** — command-derived text is redacted (`[REDACTED:{pattern}]`) before any persistence (enforcement reasons, event details, stderr); `pactkit clean` scrubs legacy records once. Found in the 2026-08-30 fleet inspection: a blocked `PGPASSWORD=…` command had written the literal password into the on-disk audit record.
21
+
22
+ ### Changed
23
+ - **Behavior change (intentional)**: direct commits on `main`/`master` that previously "just ran more tests" now block by default — set `enforcement.allow_direct_push: true` (PactKit's own repo does) or use the bypass env var.
24
+ - `pactkit stats` output gains a project-scoped `Gate telemetry` section (JSON: `gate_telemetry`).
25
+ - Constitution baseline: core protocol word budget 735→900 (L1 Override Protocol + authorize channel).
26
+
3
27
  ## [2.24.2] - 2026-08-27
4
28
 
5
29
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: pactkit
3
- Version: 2.24.2
3
+ Version: 2.25.0
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
@@ -23,7 +23,7 @@ Classifier: Topic :: Software Development :: Quality Assurance
23
23
  Requires-Python: >=3.10
24
24
  Requires-Dist: pyyaml>=6.0
25
25
  Provides-Extra: all
26
- Requires-Dist: pactkit-codex<2.25.0,>=2.24.0; extra == 'all'
26
+ Requires-Dist: pactkit-codex<2.26.0,>=2.25.0; extra == 'all'
27
27
  Requires-Dist: pactkit-opencode>=2.9.0; extra == 'all'
28
28
  Requires-Dist: ruff>=0.4; extra == 'all'
29
29
  Requires-Dist: tree-sitter-go>=0.25; extra == 'all'
@@ -31,7 +31,7 @@ Requires-Dist: tree-sitter-java>=0.23; extra == 'all'
31
31
  Requires-Dist: tree-sitter-typescript>=0.23; extra == 'all'
32
32
  Requires-Dist: tree-sitter>=0.25; extra == 'all'
33
33
  Provides-Extra: codex
34
- Requires-Dist: pactkit-codex<2.25.0,>=2.24.0; extra == 'codex'
34
+ Requires-Dist: pactkit-codex<2.26.0,>=2.25.0; extra == 'codex'
35
35
  Provides-Extra: lint
36
36
  Requires-Dist: ruff>=0.4; extra == 'lint'
37
37
  Provides-Extra: opencode
@@ -0,0 +1,10 @@
1
+ ---
2
+ schema_version: 1
3
+ id: LESSON-20260828102433-81cd3e00a0
4
+ date: '2026-08-28'
5
+ story_id: STORY-slim-20260828897396a935ab
6
+ context: session_gate.py:pre_compact_entry
7
+ tags: []
8
+ ---
9
+
10
+ SessionStart/PreCompact 契约不对称:前者 stdout 注入上下文且 compact 后触发,后者 stdout 只进 debug log——压缩前刷新状态文件必须做成副作用而非打印
@@ -0,0 +1,10 @@
1
+ ---
2
+ schema_version: 1
3
+ id: LESSON-20260830034504-4f7d0f8c58
4
+ date: '2026-08-30'
5
+ story_id: STORY-slim-20260830c65491123af1
6
+ context: run_stats.py:collect_gate_telemetry
7
+ tags: []
8
+ ---
9
+
10
+ 计数器断线的根因是聚合端与发射端分离:run_stats 早已统计 authorization_asked/granted 但只有 workflow engine 发射——补遥测的正确切入点是 gate 拦截咽喉点(_record_gate/tamper_guard、check_command 各 gate)而非聚合层
@@ -15,7 +15,7 @@
15
15
 
16
16
  ## Invariants
17
17
 
18
- 1. All 4711+ tests must pass before any commit to `main`.
18
+ 1. All 4791+ tests must pass before any commit to `main`.
19
19
  2. Specs (`docs/specs/`) are the source of truth — code conforms to specs, not the reverse.
20
20
  3. CLI entry point is `pactkit` via `src/pactkit/cli.py:main`.
21
21
  4. No runtime dependencies beyond `pyyaml`.
@@ -0,0 +1,13 @@
1
+ schema_version: 1
2
+ id: HOTFIX-slim-20260828ee6cde3108fb
3
+ title: git hooks must not lock everyone out when pactkit is missing
4
+ spec_path: docs/specs/HOTFIX-slim-20260828ee6cde3108fb.md
5
+ status: archived
6
+ tasks:
7
+ - id: task-ce700c4d7c
8
+ title: PATH probe in generated pre-commit/pre-push scripts
9
+ completed: true
10
+ created_at: '2026-08-28T09:40:06+00:00'
11
+ updated_at: '2026-08-28T10:25:19+00:00'
12
+ completed_at: '2026-08-28T09:45:19+00:00'
13
+ archived_at: '2026-08-28T10:25:19+00:00'
@@ -0,0 +1,31 @@
1
+ schema_version: 1
2
+ id: STORY-slim-20260828897396a935ab
3
+ title: 'Hook coverage expansion: session context, spec/auth/secrets gates'
4
+ spec_path: docs/specs/STORY-slim-20260828897396a935ab.md
5
+ status: archived
6
+ tasks:
7
+ - id: task-88ef617a79
8
+ title: auth_gate module + TTL token
9
+ completed: true
10
+ - id: task-4fe2f5e463
11
+ title: secrets_gate credential patterns
12
+ completed: true
13
+ - id: task-3599c86e37
14
+ title: session_gate SessionStart/PreCompact
15
+ completed: true
16
+ - id: task-9ea9b99702
17
+ title: spec_guard in tamper_guard
18
+ completed: true
19
+ - id: task-dbae64cef8
20
+ title: dispatch wiring + install registration
21
+ completed: true
22
+ - id: task-58f20fc032
23
+ title: config/enforcement/cli extensions
24
+ completed: true
25
+ - id: task-fe4d5a6fb7
26
+ title: unit tests AC1-AC6
27
+ completed: true
28
+ created_at: '2026-08-28T10:12:42+00:00'
29
+ updated_at: '2026-08-28T10:25:19+00:00'
30
+ completed_at: '2026-08-28T10:23:54+00:00'
31
+ archived_at: '2026-08-28T10:25:19+00:00'
@@ -0,0 +1,31 @@
1
+ schema_version: 1
2
+ id: STORY-slim-202608289e83eeb30df4
3
+ title: Protected-branch push gate + L1 hard-rule override protocol
4
+ spec_path: docs/specs/STORY-slim-202608289e83eeb30df4.md
5
+ status: archived
6
+ tasks:
7
+ - id: task-ea1a074f1b
8
+ title: Extend hook_entry with git push matching + branch resolution + block/bypass
9
+ completed: true
10
+ - id: task-0697f734bc
11
+ title: Add enforcement config section to config.py
12
+ completed: true
13
+ - id: task-99362d5614
14
+ title: Install pre-push hook + tamper guard registration + ensure_gate_channel
15
+ completed: true
16
+ - id: task-642a8a34e6
17
+ title: Extend GATES + probe_push_gate + doctor output
18
+ completed: true
19
+ - id: task-0697d362c6
20
+ title: 'Upgrade prompts/rules.py: L1 entries + Override Protocol'
21
+ completed: true
22
+ - id: task-3957ff25e0
23
+ title: Write unit tests for AC1-AC8
24
+ completed: true
25
+ - id: task-4ae76ca85f
26
+ title: Set pactkit self-config allow_direct_push/tamper_guard
27
+ completed: true
28
+ created_at: '2026-08-28T07:32:17+00:00'
29
+ updated_at: '2026-08-28T10:25:19+00:00'
30
+ completed_at: '2026-08-28T09:37:23+00:00'
31
+ archived_at: '2026-08-28T10:25:19+00:00'
@@ -0,0 +1,22 @@
1
+ schema_version: 1
2
+ id: STORY-slim-20260828d43fae4edbb6
3
+ title: Stack-aware commit-gate test commands (node/go/java)
4
+ spec_path: docs/specs/STORY-slim-20260828d43fae4edbb6.md
5
+ status: archived
6
+ tasks:
7
+ - id: task-2f9bce4ef2
8
+ title: utils.stack_test_command marker resolution
9
+ completed: true
10
+ - id: task-f3ec4c758a
11
+ title: run_pytest stack dispatch + GateUnavailable
12
+ completed: true
13
+ - id: task-9fe787b9dd
14
+ title: probe_commit_gate stack-aware
15
+ completed: true
16
+ - id: task-8c24910f22
17
+ title: unit tests AC1-AC5
18
+ completed: true
19
+ created_at: '2026-08-28T09:43:04+00:00'
20
+ updated_at: '2026-08-28T10:25:19+00:00'
21
+ completed_at: '2026-08-28T09:45:19+00:00'
22
+ archived_at: '2026-08-28T10:25:19+00:00'
@@ -0,0 +1,28 @@
1
+ schema_version: 1
2
+ id: STORY-slim-20260830c65491123af1
3
+ title: Gate telemetry truthfulness + audit-record redaction
4
+ spec_path: docs/specs/STORY-slim-20260830c65491123af1.md
5
+ status: archived
6
+ tasks:
7
+ - id: task-e925929544
8
+ title: redact_command helper + persisted reason redaction
9
+ completed: true
10
+ - id: task-52f121ef11
11
+ title: EVENT_TYPES extension + gate event emission
12
+ completed: true
13
+ - id: task-14aa0a45c6
14
+ title: Skill matcher telemetry branch
15
+ completed: true
16
+ - id: task-c2d0f91cc2
17
+ title: run_stats gate/command counters
18
+ completed: true
19
+ - id: task-ca9189a213
20
+ title: clean-time legacy record scrub
21
+ completed: true
22
+ - id: task-31e039b53c
23
+ title: unit tests AC1-AC5
24
+ completed: true
25
+ created_at: '2026-08-30T03:29:00+00:00'
26
+ updated_at: '2026-08-30T03:46:05+00:00'
27
+ completed_at: '2026-08-30T03:35:56+00:00'
28
+ archived_at: '2026-08-30T03:46:05+00:00'
@@ -0,0 +1,40 @@
1
+ # HOTFIX-slim-20260828ee6cde3108fb: git hooks must not lock everyone out when pactkit is missing
2
+
3
+ | Field | Value |
4
+ |-------|-------|
5
+ | ID | HOTFIX-slim-20260828ee6cde3108fb |
6
+ | Status | Done |
7
+ | Priority | P1 |
8
+ | Release | 2.25.0 |
9
+
10
+ ## Background
11
+
12
+ The git hooks written by `install_git_hook` / `install_pre_push_hook`
13
+ (`src/pactkit/commit_gate.py`) call `exec pactkit commit-gate`. On a
14
+ machine without the pactkit binary on PATH (teammates, CI runners, docker
15
+ builds — the default state in Node.js teams that never install Python),
16
+ the shell exits 127 and git treats the failed hook as a block: **every
17
+ commit and push is locked out by a broken gate**, violating the R3
18
+ self-lock protection principle (a gate that cannot run must WARN and
19
+ allow, not masquerade as enforcement).
20
+
21
+ ## Target
22
+
23
+ `src/pactkit/commit_gate.py` — `install_git_hook` (~:687) and
24
+ `install_pre_push_hook` (~:702): generated hook scripts gain a PATH probe
25
+ (`command -v pactkit`) that prints a WARN and exits 0 when the binary is
26
+ missing. The chain-onto-existing-hook path gets the same probe.
27
+
28
+ ## Fix
29
+
30
+ Prepend to both generated scripts:
31
+
32
+ ```sh
33
+ command -v pactkit >/dev/null 2>&1 || {
34
+ echo "[WARN] pactkit not on PATH — gate skipped (unavailable, not enforced)"
35
+ exit 0
36
+ }
37
+ ```
38
+
39
+ Verification: unit tests assert the probe is present in installed hook
40
+ scripts (`tests/unit/test_commit_gate.py`, `tests/unit/test_push_gate.py`).
@@ -0,0 +1,246 @@
1
+ # STORY-slim-20260828897396a935ab: Hook coverage expansion: session context, spec/auth/secrets gates
2
+
3
+ | Field | Value |
4
+ |-------|-------|
5
+ | ID | STORY-slim-20260828897396a935ab |
6
+ | Status | Done |
7
+ | Priority | P1 |
8
+ | Release | 2.25.0 |
9
+
10
+ ## Background
11
+
12
+ Claude Code exposes 7 hook event families; PactKit uses one (PreToolUse).
13
+ The 2026-08-28 hook-coverage analysis identified five mechanisms whose
14
+ rules today live only in prompt text (the layer that loses to context
15
+ growth and compaction — the exact failure mode behind this release
16
+ train's original incident):
17
+
18
+ 1. **Cold-start orientation**: `.pactkit/context.md` is generated by
19
+ `pactkit context` but relies on prompt discipline to be read.
20
+ 2. **"Spec is Law" (L1)**: agents MUST NOT amend a Spec unilaterally
21
+ during Act — unenforced. Preflight receipts already bind spec hashes.
22
+ 3. **Workflow state loss on compaction**: PDCA state (story, phase,
23
+ next action) evaporates with the compacted context.
24
+ 4. **Authorization list (Runtime Contract)**: push/PR/release/publish/
25
+ external messages require user authorization — pure prompt today.
26
+ push-gate (STORY-slim-202608289e83eeb30df4) covers `git push` only.
27
+ 5. **Secrets red line (L1)**: never print credentials — unenforced.
28
+ (Observed live this session: a plaintext password in a curl command
29
+ entered a transcript.)
30
+
31
+ Doc-verified hook contracts: SessionStart stdout (plain text) IS injected
32
+ as context and fires with matcher sources including `compact`; PreCompact
33
+ stdout is NOT injected (debug log only) — it is useful for side effects
34
+ only. User-confirmed design decisions: authorization gate = block + TTL
35
+ token (conversation flow, audited, honor-system); secrets gate = block by
36
+ default with env bypass.
37
+
38
+ ## Requirements
39
+
40
+ ### R1: SessionStart context injection (MUST)
41
+
42
+ A new hook command `pactkit gate --hook session-start` MUST regenerate
43
+ `.pactkit/context.md` (via the existing `context_gen.generate_context`)
44
+ and print it to stdout — SessionStart injects plain-text stdout as
45
+ context, making cold-start orientation deterministic instead of
46
+ prompt-hoped. Because SessionStart fires on source `compact` as well,
47
+ post-compaction re-orientation comes free. When generation fails, the
48
+ hook MUST exit 0 with a one-line WARN (context injection is an aid, never
49
+ a gate). Registered only for Claude Code formats (classic/all); Codex and
50
+ other channels skip session events (not portable).
51
+
52
+ ### R2: PreCompact state refresh (MUST)
53
+
54
+ `pactkit gate --hook pre-compact` MUST refresh `.pactkit/context.md` as a
55
+ side effect (stdout is discarded by the harness for this event — the
56
+ refresh serves the subsequent SessionStart(compact) injection).
57
+ Compaction MUST NOT be blocked under any code path (exit 0 always; a
58
+ failed refresh is logged, never fatal). Deliberately redundant with R1:
59
+ belt-and-suspenders against SessionStart-source variance.
60
+
61
+ ### R3: Spec tampering guard (MUST)
62
+
63
+ `tamper_guard.check_edit_tool` and `check_bash_command` MUST block agent
64
+ modification of `docs/specs/*.md` when a preflight receipt exists for
65
+ that story (`.pactkit/preflight/{story_id}/current.json`): during Act the
66
+ Spec is Law, and amendments MUST go back through `/project-plan` (the RFC
67
+ gate's "do not modify the Spec unilaterally"). Plan-phase spec writing is
68
+ unaffected — no receipt exists until spec-preflight runs. Release:
69
+ `PACTKIT_ALLOW_SPEC_EDIT=1` (human channel) or a valid `spec_edit`
70
+ authorization token. Audit under gate name `spec_guard`. Config:
71
+ `enforcement.spec_guard` (default `true`).
72
+
73
+ ### R4: Authorization gate (MUST)
74
+
75
+ The PreToolUse Bash dispatch (`commit_gate.hook_entry`) MUST block
76
+ external-effect commands until the user has authorized them: `gh pr
77
+ create`, `gh release create|delete|upload`, `gh repo create|delete`,
78
+ `npm publish`, `pnpm publish`, `yarn publish`, `cargo publish`, `twine
79
+ upload`, `docker push`. Read-only variants (`gh pr view`, `gh release
80
+ list`, …) MUST NOT match (subcommand-anchored patterns only). The block
81
+ message MUST instruct: ask the user; after explicit confirmation run
82
+ `pactkit gate authorize <scope>`; the strict human channel is
83
+ `PACTKIT_AUTHORIZED=1` via the `!` prefix. Every block and authorized
84
+ allow MUST be audited under gate name `auth_gate`. Honest threat model
85
+ (documented in the block message rationale): this gate prevents
86
+ forgetting, not malice — the token is agent-invocable by design, all uses
87
+ leave records. Config: `enforcement.auth_gate` (default `true`),
88
+ `enforcement.auth_ttl_minutes` (default `30`).
89
+
90
+ ### R5: Secrets gate (MUST)
91
+
92
+ The PreToolUse Bash dispatch MUST block commands containing literal
93
+ credential material: `AKIA[0-9A-Z]{16}` (AWS), `ghp_`/`github_pat_`
94
+ (GitHub), `glpat-` (GitLab), `xox[baprs]-` (Slack), `sk-` + 20+ chars
95
+ (API keys), `-----BEGIN … PRIVATE KEY-----`, and `password=`/`pwd=`/
96
+ `passwd=` with a non-empty literal value. Environment-variable
97
+ references (`$VAR`, `${VAR}`) MUST be exempt — indirection is the
98
+ sanctioned pattern. Block by default (user decision), with
99
+ `PACTKIT_ALLOW_SECRET=1` bypass and config `enforcement.secrets_gate`
100
+ (default `true`). Audited under gate name `secrets_gate`.
101
+
102
+ ### R6: authorize CLI + token + registration + doctor (MUST)
103
+
104
+ `pactkit gate authorize <scope> [--ttl-minutes N]` MUST atomically write
105
+ `.pactkit/enforcement/authorization.json` (`{scope, expires_at, ts}`),
106
+ valid for the configured TTL; guards R3/R4 read it via a shared helper.
107
+ The token file lives under `.pactkit/enforcement/` — already inside the
108
+ tamper guard's protected surface, so raw file tampering stays blocked and
109
+ the CLI is the single audited write path. `install_hook` MUST register
110
+ the SessionStart and PreCompact entries (classic/all formats only).
111
+ `config.py`'s `enforcement` section extends with `spec_guard`,
112
+ `auth_gate`, `secrets_gate` (bool, default `true`) and `auth_ttl_minutes`
113
+ (int, default `30`); the validator's known-key set updates accordingly.
114
+ `GATES` extends with `spec_guard`, `auth_gate`, `secrets_gate`; each gets
115
+ a doctor probe; all three fold into the existing `_enforcement_settings`
116
+ normalization (missing/malformed values fall back to safe defaults).
117
+
118
+ ## Acceptance Criteria
119
+
120
+ ### AC1: SessionStart injects context (R1)
121
+
122
+ - **Given** a deployed project with board stories and a git repo
123
+ - **When** `pactkit gate --hook session-start` runs
124
+ - **Then** stdout contains the regenerated context (Sprint Status / Current Stories sections) and exit code is 0
125
+ - **Given** generation raises (e.g. unreadable board)
126
+ - **Then** the hook exits 0 with a one-line WARN on stderr, never non-zero
127
+
128
+ ### AC2: PreCompact refreshes state without blocking (R2)
129
+
130
+ - **Given** a project with workflow state
131
+ - **When** `pactkit gate --hook pre-compact` runs
132
+ - **Then** `.pactkit/context.md` is refreshed (mtime changes) and the exit code is 0
133
+ - **Given** the refresh fails internally
134
+ - **Then** the exit code is still 0 (compaction must never be blocked)
135
+
136
+ ### AC3: Spec tampering blocked during Act (R3)
137
+
138
+ - **Given** a spec with an active preflight receipt (`current.json` exists and matches the story)
139
+ - **When** an Edit tool call targets `docs/specs/{story}.md`
140
+ - **Then** the hook exits 2 with a "Spec is Law" message and a `spec_guard` record is written
141
+ - **Given** `PACTKIT_ALLOW_SPEC_EDIT=1` in the environment, or a valid `spec_edit` token
142
+ - **When** the same Edit is attempted
143
+ - **Then** it is allowed
144
+ - **Given** a spec with NO receipt (Plan phase, fresh story)
145
+ - **When** an Edit targets it
146
+ - **Then** it is allowed (spec writing is legitimate)
147
+
148
+ ### AC4: External-effect commands gated (R4)
149
+
150
+ - **Given** a project with default enforcement config
151
+ - **When** the hook receives `gh release create v1.0.0` (or `npm publish`, `gh pr create`, `docker push`, `twine upload dist/*`)
152
+ - **Then** it exits 2 with the ask-first message naming `pactkit gate authorize`, and an `auth_gate` record is written
153
+ - **Given** a valid `release` token (fresh `pactkit gate authorize release`)
154
+ - **When** the same command is received
155
+ - **Then** it is allowed and the authorized allow is recorded
156
+ - **Given** an expired token (> TTL)
157
+ - **When** the same command is received
158
+ - **Then** it is blocked again
159
+ - **Given** read-only commands (`gh pr view 12`, `gh release list`)
160
+ - **When** received
161
+ - **Then** they pass untouched (exit 0, no record)
162
+
163
+ ### AC5: Secrets blocked by default (R5)
164
+
165
+ - **Given** default enforcement config
166
+ - **When** the hook receives a command containing `AKIAIOSFODNN7EXAMPLE` or `password=Test@1234` or `-----BEGIN RSA PRIVATE KEY-----`
167
+ - **Then** it exits 2 with the secrets red-line message, and a `secrets_gate` record is written
168
+ - **Given** the same command with `PACTKIT_ALLOW_SECRET=1` in the environment, or `password=$DB_PASS` (env indirection)
169
+ - **When** received
170
+ - **Then** it is allowed
171
+
172
+ ### AC6: Registration, config, doctor (R6)
173
+
174
+ - **Given** `pactkit init --format all` on a fresh project
175
+ - **When** deployment finishes
176
+ - **Then** `.claude/settings.json` contains SessionStart and PreCompact entries alongside the existing PreToolUse matchers, `.codex/hooks.json` does NOT contain session-event entries (not portable), and `pactkit doctor` reports `spec_guard`, `auth_gate`, `secrets_gate` probe status
177
+ - **Given** a pactkit.yaml with `enforcement: {auth_ttl_minutes: "30 minutes"}`
178
+ - **When** config validation runs
179
+ - **Then** a warning is emitted (must be an integer)
180
+
181
+ ## Target Call Chain
182
+
183
+ ```
184
+ SessionStart / PreCompact (Claude Code only, classic|all formats)
185
+ └─ cli.py (new `gate` subcommand) → session_gate.py (new)
186
+ ├─ session_start: context_gen.generate_context → print stdout (injected)
187
+ └─ pre_compact: context_gen.generate_context (side effect only)
188
+
189
+ PreToolUse (existing single entry, extended dispatch)
190
+ └─ commit_gate.hook_entry
191
+ ├─ git push → check_push (existing)
192
+ ├─ git commit → run_gate (existing)
193
+ └─ otherwise → tamper_guard / new checks:
194
+ ├─ secrets_gate.scan_command (new, first — L1)
195
+ ├─ auth_gate.check_command (new)
196
+ ├─ spec_guard: docs/specs/*.md edit check (new, in tamper_guard)
197
+ └─ tamper_guard.check_bash_command (existing)
198
+
199
+ pactkit gate authorize <scope> → authorization.json (atomic, in tamper-guard-
200
+ protected .pactkit/enforcement/) → shared token reader for R3/R4
201
+
202
+ config.py enforcement += spec_guard/auth_gate/secrets_gate/auth_ttl_minutes
203
+ enforcement.py GATES += spec_guard/auth_gate/secrets_gate + probes
204
+ ```
205
+
206
+ ## Implementation Steps
207
+
208
+ | Step | File | Action | Dependencies | Risk |
209
+ |------|------|--------|-------------|------|
210
+ | 1 | `src/pactkit/auth_gate.py` (new) | External-effect patterns, token read/write, `pactkit gate authorize` logic | None | Medium |
211
+ | 2 | `src/pactkit/secrets_gate.py` (new) | Credential pattern scan + env-indirection exemption | None | Low |
212
+ | 3 | `src/pactkit/session_gate.py` (new) | session-start / pre-compact entries over context_gen | None | Low |
213
+ | 4 | `src/pactkit/tamper_guard.py` | spec_guard check (receipt lookup) + protected-path integration | Step 1 | Medium |
214
+ | 5 | `src/pactkit/commit_gate.py` | Dispatch wiring: secrets → auth ordering; install SessionStart/PreCompact entries | Steps 1-3 | Medium |
215
+ | 6 | `src/pactkit/config.py` | enforcement keys + validator update | None | Low |
216
+ | 7 | `src/pactkit/enforcement.py` | GATES + probes | Steps 1-4 | Low |
217
+ | 8 | `src/pactkit/cli.py` | `gate` subcommand (`--hook`, `authorize`) | Steps 1-3 | Low |
218
+ | 9 | `tests/unit/test_hook_expansion.py` (new) | AC1-AC6 coverage | Steps 1-8 | Low |
219
+
220
+ ## Security Scope
221
+
222
+ | Check | Applicable | Reason |
223
+ |-------|------------|--------|
224
+ | SEC-1 | Yes | New gate modules; parsing stays regex/JSON with isinstance guards, no eval/shell assembly; token file written atomically |
225
+ | SEC-2 | Yes | Hook stdin is untrusted JSON (existing shape guards); authorization.json is agent-writable by design — document the honor-system threat model |
226
+ | SEC-5 | Yes | The token is a capability credential (short-TTL, local file, tamper-guard protected); MUST NOT contain or derive from real secrets; scopes are a closed set |
227
+ | SEC-7 | Yes | Failure semantics fixed per channel: session hooks never block compaction (exit 0); PreToolUse gates block on their own contract only; every fallback writes a status record |
228
+ | SEC-8 | No | No dependency manifests changed |
229
+
230
+ ## Dependency Surface
231
+
232
+ | Field | Value |
233
+ |-------|-------|
234
+ | Depends on | STORY-slim-202608289e83eeb30df4 (hook_entry dispatch, tamper_guard surface, enforcement section — same release train, committed 1df1512) |
235
+ | Provides | `pactkit gate` subcommand; `authorization.json` token; gates `spec_guard`/`auth_gate`/`secrets_gate`; session-event registration |
236
+ | Touches | `src/pactkit/{auth_gate,secrets_gate,session_gate,tamper_guard,commit_gate,config,enforcement,cli}.py`, `tests/unit/` (new file) |
237
+ | Conflict risk | LOW |
238
+
239
+ ## Out of Scope
240
+
241
+ - Stop hook / completion-evidence enforcement (loop-risk design needed — separate story)
242
+ - model-gate (Task-matcher alias rewriting — pending the user's routing decision)
243
+ - PostToolUse fast-lint feedback
244
+ - UserPromptSubmit conditional rule injection
245
+ - Codex/OpenCode parity for session events (not portable; git-fallback channels unchanged)
246
+ - Output-stream secret scanning (PostToolUse) — command-string scan only