pactkit 2.25.0__tar.gz → 2.25.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pactkit-2.25.0 → pactkit-2.25.2}/CHANGELOG.md +12 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/PKG-INFO +35 -3
- {pactkit-2.25.0 → pactkit-2.25.2}/README.md +34 -2
- pactkit-2.25.2/docs/architecture/governance/lessons/LESSON-20260902100234-6fa7694bad.md +10 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/rules.md +1 -1
- pactkit-2.25.2/docs/product/sprint_board.md +371 -0
- pactkit-2.25.2/docs/product/stories/HOTFIX-slim-20260830bbb5bc219d35.yaml +19 -0
- pactkit-2.25.2/docs/product/stories/HOTFIX-slim-20260901469666ef23a8.yaml +16 -0
- pactkit-2.25.2/docs/product/stories/STORY-slim-202609025bc9246b6a54.yaml +25 -0
- pactkit-2.25.2/docs/specs/HOTFIX-slim-20260830bbb5bc219d35.md +42 -0
- pactkit-2.25.2/docs/specs/HOTFIX-slim-20260901469666ef23a8.md +55 -0
- pactkit-2.25.2/docs/specs/STORY-slim-202609025bc9246b6a54.md +181 -0
- pactkit-2.25.2/docs/test_cases/STORY-slim-202609025bc9246b6a54_case.md +63 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/pyproject.toml +1 -1
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/__init__.py +1 -1
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/cli.py +13 -3
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/commit_gate.py +182 -12
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/regression.py +6 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/gate.txt +3 -2
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_commit_gate.py +2 -2
- pactkit-2.25.2/tests/unit/test_gate_junit_counts.py +221 -0
- pactkit-2.25.2/tests/unit/test_hotfix_20260830_gate_cli.py +164 -0
- pactkit-2.25.2/tests/unit/test_hotfix_20260901_gate_docsonly.py +161 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_push_gate.py +1 -1
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_stack_test_command.py +12 -3
- pactkit-2.25.0/docs/product/sprint_board.md +0 -207
- {pactkit-2.25.0 → pactkit-2.25.2}/.codegraph/.gitignore +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/.coverage +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/.github/workflows/pactkit.yml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/.github/workflows/publish.yml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/.gitignore +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/AGENTS.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/CODE_OF_CONDUCT.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/CONTRIBUTING.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/LICENSE +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/SECURITY.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/archive/lessons_archive_202602.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/archive/lessons_archive_202603.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/archive/lessons_archive_202604.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/harness_audit.json +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260227-8e92f52c86.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260227-a21cacfde2.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260227-ccb19799ea.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260228-6e4b02ff08.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260228-b87245d5fc.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260302-8980b2512d.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260302-8f58fa2045.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260302-a3a1b7900e.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260303-3f65c0442b.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260304-23c605e495.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260304-8bd6c10219.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260305-129d1dea2a.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260305-48752d79c3.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260305-b9afdd8720.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260305-f93ee5b19f.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260306-7061390095.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260313-edf7807faf.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260316-091567c2bb.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260316-4661b3789a.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260316-7214dac8fc.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260317-3d8a855086.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260317-4ba69c35f0.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260317-6cd2a53ba5.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260317-7a0dd3407e.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260317-86927e3701.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260317-9a8025eaac.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260317-a0721cc066.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260317-a1f53d759b.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260317-a9f7897b36.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260317-ff430eaa29.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260318-fb0bcd928b.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260319-f320fbb5cc.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260320-b2d80c56b3.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260320-c102dbd6f8.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260320-e8f6ddae81.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260321-5e57da75b0.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260321-6a4a30628f.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260321-b5a58de3f9.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260321-e0138991ed.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260321-e49663fc95.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260322-4c0480e882.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260322-d1ece5c0d4.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260323-4bd30888ce.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260323-7a02b3eb85.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260323-8624e0d93a.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260323-a8faeea78c.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260324-075e3332b8.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260324-0f6f041a52.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260324-2dab5931de.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260324-8bcda73e9b.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260324-9e6238f0c8.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260324-a1cace9846.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260324-bf64dd9564.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260324-c344d7655c.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260324-e60c50dcc9.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260324-f5149caffe.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260325-1a5eeea04c.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260326-02460b22de.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260326-09de627b2b.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260326-204ea48f84.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260326-32e2fd3074.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260326-6c6dbfc365.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260326-7811ad7ff2.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260326-88e7123370.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260326-d2376010b1.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260326-e4f0eb8850.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260326-e68b8aa47f.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260326-fdd06ad981.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260327-e3c7f5abcb.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260330-eb1760def2.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260331-1b58a289ea.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260331-26e474753e.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260331-3028ab9cf5.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260331-350048862b.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260331-7d41cdf5a3.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260331-8e5558a077.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260331-c46df1c3b1.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260401-41515789f6.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260401-4453752dda.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260401-5a225a1c0a.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260401-90724b10f0.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260401-9e322eb76e.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260401-bd20019d3d.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260401-de035be681.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260401-f44c8f499e.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260401-fa52f596ff.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260402-5b063207c8.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260402-5e0913ec81.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260415-3d8b5e8f81.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260415-84219771ca.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260416-41d4564480.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260416-5cdc3cf53f.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260416-807c65a8e7.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260416-ade561c777.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260416-b78aaf129a.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260416-db8a5430a0.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260416-f5a765c496.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260417-f1d777e9c9.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260418-ee12f2ff0d.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260420-2260437be7.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260420-a35a083e29.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260420-fa7d958d56.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260421-309c998a10.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260422-6509ac4df0.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260422-8dd5ed6a24.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260423-b0890ad9c2.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260424-24cc1d5e19.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260424-39a99c887d.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260427-f7955d5775.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260507-7b75a5cab8.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260507-b26f97255d.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260525-1fe96d2ff4.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260525-717e18e190.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260525-df4853fa3f.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260526-4c230f3a9d.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260601-6d6b779a83.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260601-e65d3407ed.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260610-51c3cf895e.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260629-6171e54ac8.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260702-4616caa284.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260713-da6d40dcc0.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260723-d4c9801300.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260813-18efcf9687.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260813-1dc6e2e1c7.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260813-21d4da632f.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260817-3587ae1a22.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260817-5f08a6affa.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260817-800f717c9d.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260817-a2cd839a2d.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260822-9175485749.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260822105138-298451a42c.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260822105138-522c7e4af4.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260822105138-72cc1d0343.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260823015950-6b8cbea92e.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260823022240-d3570f57fb.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260823050717-9192db37f8.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260826072120-c6db5dd5b1.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260826074629-f5119ea78b.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260826080242-012107ada2.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260826082256-eff3747d60.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260827093143-3236113033.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260827095642-059a7e996b.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260827102057-e04522a6fc.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260828102433-81cd3e00a0.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons/LESSON-20260830034504-4f7d0f8c58.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/lessons.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/architecture/governance/philosophy.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/assets/logo.png +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/e2e/journey.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/guides/codex-integration-preresearch.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/guides/tool-integration-checklist.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/archive/archive_202602.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/archive/archive_202603.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/archive/archive_202604.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/archive/archive_202605.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/archive/archive_202606.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/archive/archive_202607.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/archive/archive_202608.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/context.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/friction-log.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/harness-comparison-2026-08-27.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/prd.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/HOTFIX-slim-127.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/HOTFIX-slim-131.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/HOTFIX-slim-132.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/HOTFIX-slim-20260828ee6cde3108fb.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-115.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-118.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-119.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-145.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-147.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-148.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-149.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-2026082381e832771d4e.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-20260823d854b0cf1875.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-20260823de7e85d6042a.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-20260825b1c83a046b4b.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-202608264cf429c75e22.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-2026082672b57c78fd67.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-202608267c3989223b4d.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-202608268fc379dbe6ef.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-20260826ac1f0bfe4148.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-20260826cb37edfdd4da.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-20260826ce35b77ce005.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-20260826f9492ab32c3d.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-20260827024e71df170f.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-2026082727cc4ab535e7.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-2026082730b5954cf538.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-20260827625b870eb7da.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-202608277ec1236a7b99.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-20260827833e7a200f9a.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-20260827855bf3efaec3.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-2026082799fa651655be.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-20260827c67e3add6af5.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-20260827d0ae0dfada51.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-20260827eddbe9669c87.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-20260827fb6291b717eb.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-20260827fc9de5542ad7.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-20260828897396a935ab.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-202608289e83eeb30df4.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-20260828d43fae4edbb6.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/product/stories/STORY-slim-20260830c65491123af1.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-001.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-002.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-003.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-004.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-005.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-006.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-007.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-008.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-009.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-010.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-011.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-012.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-013.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-014.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-015.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-016.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-017.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-018.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-019.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-020.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-021.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-022.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-023.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-024.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-025.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-026.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-027.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-028.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-029.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-030.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-031.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-032.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-033.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-034.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-035.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-slim-001.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-slim-002.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-slim-003.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-slim-004.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-slim-005.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-slim-006.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-slim-089.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/BUG-slim-107.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-023.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-049.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-050.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-051.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-052.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-061.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-062.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-067.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-069.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-070.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-085.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-087.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-096.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-099.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-107.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-117.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-122.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-123.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-126.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-127.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-130.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-131.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-132.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/HOTFIX-slim-20260828ee6cde3108fb.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-001.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-002.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-003.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-004.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-005.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-006.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-007.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-008.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-009.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-010.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-011.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-012.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-013.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-014.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-015.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-016.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-017.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-018.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-019.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-020.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-021.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-022.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-023.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-024.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-025.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-026.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-027.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-028.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-029.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-030.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-031.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-032.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-033.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-034.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-035.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-036.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-037.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-038.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-039.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-040.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-041.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-042.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-043.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-044.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-045.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-046.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-047.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-048.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-049.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-050.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-051.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-052.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-053.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-054.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-055.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-056.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-057.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-058.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-059.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-060.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-061.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-062.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-063.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-064.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-065.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-069.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-070.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-071.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-072.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-073.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-001.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-005.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-006.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-007.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-009.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-010.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-011.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-012.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-013.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-014.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-015.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-016.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-017.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-018.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-019.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-020.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-021.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-022.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-023.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-024.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-028.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-029.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-030.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-031.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-032.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-033.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-034.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-035.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-036.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-037.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-038.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-039.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-040.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-041.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-042.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-043.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-044.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-045.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-046.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-047.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-048.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-049.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-050.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-051.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-052.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-053.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-054.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-055.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-056.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-057.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-058.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-059.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-060.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-063.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-066.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-067.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-068.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-069.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-070.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-071.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-072.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-073.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-074.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-075.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-076.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-077.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-078.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-079.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-080.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-081.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-082.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-083.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-084.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-086.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-088.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-089.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-090.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-091.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-092.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-093.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-094.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-095.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-097.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-098.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-099.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-100.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-101.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-102.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-103.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-104.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-105.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-106.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-107.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-108.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-109.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-110.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-111.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-112.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-113.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-114.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-115.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-116.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-118.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-119.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-120.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-121.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-124.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-125.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-126.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-127.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-128.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-129.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-132.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-133.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-134.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-135.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-136.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-137.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-138.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-139.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-140.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-141.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-142.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-143.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-144.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-145.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-146.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-147.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-148.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-149.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-2026082381e832771d4e.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-20260823d854b0cf1875.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-20260823de7e85d6042a.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-2026082466c8670d9655.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-20260824dd23a0ed3b4c.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-20260825b1c83a046b4b.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-202608264cf429c75e22.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-2026082672b57c78fd67.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-202608267c3989223b4d.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-202608268fc379dbe6ef.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-20260826ac1f0bfe4148.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-20260826cb37edfdd4da.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-20260826ce35b77ce005.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-20260826f9492ab32c3d.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-20260827024e71df170f.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-20260827eddbe9669c87.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-20260827fc9de5542ad7.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-20260828897396a935ab.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-202608289e83eeb30df4.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-20260828d43fae4edbb6.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/specs/STORY-slim-20260830c65491123af1.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/BUG-001_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/BUG-002_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-028_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-029_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-031_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-032_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-033_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-034_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-135_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-136_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-137_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-138_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-139_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-140_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-141_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-142_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-143_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-144_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-146_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-147_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-148_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-149_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-2026082381e832771d4e_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-20260823d854b0cf1875_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-20260823de7e85d6042a_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-20260825b1c83a046b4b_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-202608264cf429c75e22_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-2026082672b57c78fd67_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-202608267c3989223b4d_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-202608268fc379dbe6ef_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-20260826ac1f0bfe4148_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-20260826cb37edfdd4da_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-20260826ce35b77ce005_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-20260826f9492ab32c3d_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-20260827024e71df170f_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-20260827eddbe9669c87_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-20260827fc9de5542ad7_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-20260828897396a935ab_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/docs/test_cases/STORY-slim-20260830c65491123af1_case.md +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/opencode.json +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/__main__.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/audit.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/auth_gate.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/backfill.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/cleaners.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/config.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/context_gen.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/continuation.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/coverage_gate.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/delivery_evidence.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/deploy_manifest.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/deployment_transaction.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/deps.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/doctor.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/done_verify.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/enforcement.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/garden.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/generators/__init__.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/generators/claude_md.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/generators/command_ownership.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/generators/deploy_base.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/generators/deployer.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/governance.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/graph_query.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/guards.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/host_continuation.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/id_generator.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/invariants.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/issue_sync.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/lazy_visualize.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/legacy/__init__.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/legacy/host_continuation.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/legacy/usage.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/legacy/workflow_engine.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/lessons.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/lint_runner.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/observe.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/portable_methods.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/profiles.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/project_root.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/prompts/__init__.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/prompts/agents.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/prompts/commands.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/prompts/guides.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/prompts/references.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/prompts/rules.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/prompts/skills.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/prompts/workflows.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/protocols.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/risk_profile.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/run_events.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/run_stats.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/schemas.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/scripts.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/sec_scope.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/secrets_gate.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/session_gate.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/skills/__init__.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/skills/analyzers/__init__.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/skills/analyzers/go_analyzer.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/skills/analyzers/java_analyzer.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/skills/analyzers/python_analyzer.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/skills/analyzers/ts_analyzer.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/skills/board.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/skills/interface_summary.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/skills/report.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/skills/scaffold.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/skills/spec_linter.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/skills/visualize.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/spec_graph.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/spec_preflight.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/spec_status.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/tamper_guard.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/test_mapper.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/utils.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/validators.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/workflow_engine.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/workflow_registry.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/src/pactkit/workflow_validators.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/conftest.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/e2e/__init__.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/e2e/cli/__init__.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/e2e/cli/test_cli_e2e.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/e2e/cli/test_story_slim146_cli.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/e2e/cli/test_story_slim147_workflow_cli.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/e2e/cli/test_story_slim148_governance_cli.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/e2e/cli/test_story_slim149_query_cli.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/agent_parser/agents_dir/researcher.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/agent_parser/agents_dir/writer.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/agent_parser/langgraph_app.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/agent_parser/mcp_settings.json +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/api_call_parser/axios_style.tsx +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/api_call_parser/dynamic.tsx +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/api_call_parser/page.tsx +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/__root__.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/audit.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/backfill-release.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/board.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/clean.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/commit-gate.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/context.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/continuation.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/coverage-gate.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/deps.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/doctor.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/done-verify.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/garden.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/generate-id.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/governance.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/guard.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/init.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/interface-summary.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/invariants-refresh.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/issue-sync.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/lesson-append.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/lint-context.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/lint-lessons.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/lint-testcase.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/lint.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/observe.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/query.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/redetect-stack.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/regression.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/report.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/schema.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/sec-scope.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/spec-graph.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/spec-lint.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/spec-preflight.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/spec-status.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/stats.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/sync.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/test-map.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/update.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/upgrade.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/version.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/visualize.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/work-unit.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/cli_help_golden/workflow.txt +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/config_golden/copy_claude.json +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/config_golden/copy_claude.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/config_golden/copy_codex.json +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/config_golden/copy_codex.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/config_golden/copy_github.json +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/config_golden/copy_github.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/config_golden/empty.json +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/config_golden/empty.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/config_golden/full_legacy.json +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/config_golden/full_legacy.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/config_golden/minimal.json +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/config_golden/minimal.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/config_golden/unknown_keys.json +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/fixtures/config_golden/unknown_keys.yaml +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/integration/__init__.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/integration/test_deploy_classic.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_agent_features.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_agent_frontmatter.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_agents_enrichment.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_audit.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_blast_radius.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_board_bug027.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_board_sections.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug001_skill_path.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug002_plugin_paths.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug003_multi_import.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug004_dead_set.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug005_archive_taskless.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug006_scan_excludes.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug007_stale_trace_refs.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug008_stale_command_refs.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug009_project_config_backfill.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug010_rewrite_yaml.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug011_stale_refs.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug012_call_graph_filter.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug013_config_single_source.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug014_version_hygiene.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug017_project_init_playbook.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug018_issue_tracker_verification.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug019_venv_deployment.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug020_claude_md_backup.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug025_release_delegation.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug026_version_sync.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug028_ghost_refs.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug029_stack_detection_fallback.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug030_spec_lint_cli.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug031_docstring_accuracy.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug034_plan_metadata_template.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug_021.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug_022.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug_023.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug_024.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug_slim001_env_detection.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug_slim002_instruction_collision.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug_slim003.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug_slim004.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug_slim005.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug_slim006.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_bug_slim089_global_claude_md.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_check_command.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_check_extensions_072_073.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_check_playbook_072_073.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_cli_help_surface.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_codex_hook_channel.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_command_frontmatter.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_command_ownership_v2.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_command_visualize_modes.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_complexity.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_config.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_config_auto_merge.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_config_sync_precedence.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_constitution_sharpening.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_context_gen.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_continuation_hardening.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_create_skill.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_cross_flow_matrix.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_deploy_base.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_deploy_ownership_safety.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_deployer_cleanup.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_deployer_plugin.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_deployment_transaction.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_deps.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_design_command.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_done_gates.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_done_verify.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_draw_prompt.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_draw_references.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_drawio_mcp.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_enforcement.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_engine_robustness.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_garden.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_gate_fail_closed.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_gate_telemetry.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_home_path_fix.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_hook_expansion.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_hotfix_command.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_hotfix_legacy_constitution.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_init_guard.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_init_playbook_074.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_interface_summary.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_lang_profiles.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_layer_violations.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_legacy_engine_freeze.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_lessons_rotation_075.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_list_stories.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_mcp_integration.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_model_config.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_modular_constitution.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_monorepo_detect.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_multi_prefix.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_observe.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_pdca_semantics_v2.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_pdca_slim.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_profiles.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_project_root.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_project_visibility.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_prompt_cli_contract.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_prompt_cli_refs.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_prompt_quality_075.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_prompt_structural_invariants.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_prompts_package.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_release.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_release_field.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_release_v110.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_render_prompt.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_report_parser.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_report_unified.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_resolve_scope.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_review_command.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_rule_registry_architecture.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_rules_enrichment.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_run_events.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_run_stats.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_scaffold.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_scaffold_developer_prefix.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_schemas.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_script_extraction.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_selective_deploy.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_session_context.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_skill_structure.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_skills_enrichment.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_slim_deps_088.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_smart_regression.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_solution_design_rule.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_spec_preflight.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_sprint_command.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_stack_references.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_status_command.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_statusline.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story014_release.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story015_ci_lint_gate.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story016_claude_md.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story017_init_claude_md.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story018_arch_staleness.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story019_bailout.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story020_horizon.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story021_rfc.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story022_decision_tree.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story023_test_quality.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story024_native_agent.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story025_ci_pipeline.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story026_issue_tracker.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story028_rule_scoping.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story029_doctor.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story030_lint.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story031_git_init_guard.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story032_greenfield_redirect.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story033_config_backfill.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story034_plan_config_refresh.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story035_readme_docs.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story037_regression_fix.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story038_call_graph_update.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story039_venv_config.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story040_layered_claude_md.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story042_spec_linter.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story043_active_clarify.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story044_consistency_check.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story045_auto_pr.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story047_enterprise_flags.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story048_worktree_isolation.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story049_community_standards.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story050_doc_only_shortcut.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story051_workflow_streamlining.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story052_conditional_github_release.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story053_impact_regression.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story055_commands.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story055_config.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story055_spec_linter.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story056_commands.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story056_config.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story057_implicit_cleanup.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story058_opencode_extraction.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story058_routing_fix.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story059_codex_removal.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story060_init_hang.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story061_remove_thinking.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story062_mcp_recommendations.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story063_prompt_slimming.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story064_venv_local_md.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story065_sprint_model.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story072_developer_prefix.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story106_lateral_scan.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story133_debug_skill.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_pdca_host_capsules.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_pdca_semantics_v2.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim009_lazy_rules.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim010_dry_refactor.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim011_command_rules.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim012_ci.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim014_clean.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim014_context.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim014_guard.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim014_lazy_viz.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim014_next_id.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim014_regression.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim014_sec_scope.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim014_validators.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim015_doctor.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim016_testmap_lint.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim017.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim018.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim019_plan_subphases.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim020_explore_stall_fix.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim021.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim022.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim023.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim024.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim025.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim026.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim027.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim028.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim029.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim030.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim031.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim032.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim033.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim034.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim035.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim036.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim037.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim038.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim039.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim040.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim041.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim042.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim043.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim044.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim045.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim046.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim047.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim048.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim049.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim051.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim052.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim053.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim054.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim055.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim056.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim060_codex_profile.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim063.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim065.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim076_multistack.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim077_monorepo_stack.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim078.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim079.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim080.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim081.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim082.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim083.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim084.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim095.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim098_pdca_nudge.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim099_act_context_ref.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim102_version_marker.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim104_should_semantics.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim107.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim109_journey_spec.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim111_playwright_assertion.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim112_rules_split.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim114_journey_sync.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim119.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim120.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim121.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim125.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim126.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim127_managed_block.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim128_engineering_concerns.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim132.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim134_no_model_in_frontmatter.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim135_config_schema.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim139_skill_manifest.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim141_manifest_hash.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim142_all_target_isolation.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim143_spec_graph.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim144_wave_mode.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim145.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim146.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim147.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim148.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim149.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim150.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim_stop_hook.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_story_slim_work_units.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_tools.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_topology_parsers_066.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_update_task.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_visualize_call_nested.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_visualize_chain_fix.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_visualize_modes.py +0 -0
- {pactkit-2.25.0 → pactkit-2.25.2}/tests/unit/test_visualize_multilang_chain.py +0 -0
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.25.2] - 2026-09-02
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
- **commit-gate counts survive repo `addopts` interference** — the gate parsed pass/fail counts from pytest's terminal summary line, but a repo's `addopts = "-q"` stacks with the gate's own `-q` into `-qq`, where pytest 9 prints no final summary at all: every run parsed as all-zero, and a genuinely red (flaky) run was misreported as "no tests collected" (live incident 2026-09-02, harness-backend; STORY-slim-202609025bc9246b6a54). Counts now come from a `--junitxml` side channel (pinned `junit_family=xunit2`) that verbosity cannot suppress, with the terminal parse as fallback. Repo `addopts` are otherwise fully honored — required run flags such as `--asyncio-mode=auto` keep applying, addopts are never cleared — and a repo that disables the junitxml plugin degrades to terminal parsing instead of locking commits. Failure messages now report the exit code's actual meaning (`no tests ran` for exit 5, usage/collection error for exit 4, `counts unparseable` with an addopts hint otherwise), and the gate runs `-rsfE` so `FAILED`/`ERROR` short-summary lines — which survive `-qq` — reach the block message.
|
|
7
|
+
|
|
8
|
+
## [2.25.1] - 2026-09-01
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- **`pactkit gate authorize <scope>` parses as documented** — 2.25.0's parser accepted only the bare positional form (`pactkit gate <scope>`), so the form printed by every block message and the L1 Override Protocol failed with "unrecognized arguments"; both forms now parse (HOTFIX-slim-20260830bbb5bc219d35).
|
|
12
|
+
- **Cross-repo commands are judged by the repo they operate on** — `cd <other-repo> && git push` was evaluated against the session cwd's enforcement config; `hook_entry` now resolves the last `cd` target before the git command and evaluates gates against that repository (HOTFIX-slim-20260830bbb5bc219d35).
|
|
13
|
+
- **commit-gate no longer misfires on docs/meta-only commits** — three defects that blocked a zero-code design-baseline commit three times and forced test-writing before allowing it (HOTFIX-slim-20260901469666ef23a8): `.gitignore`/`.claude/**`/`.codex/**` are now doc-only (repo/agent metadata carries no runtime code and no longer disqualifies the change set from the skip path); the full-suite target falls back from `tests/unit/` to `tests/` when only a flat layout exists, and a zero-collected run reports "no tests collected" instead of implying failures (still RED — the TDD contract is unchanged); "No module named pytest" from the venv-less fallback interpreter raises `GateUnavailable` → WARN + allow, matching the missing-binary path (R3 self-lock protection).
|
|
14
|
+
|
|
3
15
|
## [2.25.0] - 2026-08-30
|
|
4
16
|
|
|
5
17
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: pactkit
|
|
3
|
-
Version: 2.25.
|
|
3
|
+
Version: 2.25.2
|
|
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
|
|
@@ -106,6 +106,22 @@ T Truth Data is the Truth Factual basis for all judgment — no memory,
|
|
|
106
106
|
- **Full PDCA Lifecycle** — Plan -> Act -> Check -> Done, with quality gates at every stage
|
|
107
107
|
- **Safe by Design** — TDD-first, safe regression, pre-existing test protection
|
|
108
108
|
- **Multi-Tool Support** — Works with Claude Code, OpenCode, and Codex CLI
|
|
109
|
+
- **AI-Native SDLC, Operationalized** — The artifact chain, gates, and audit trail that Anthropic's engineering practice describes — running across all 3 hosts
|
|
110
|
+
|
|
111
|
+
## AI-Native SDLC Alignment
|
|
112
|
+
|
|
113
|
+
Anthropic's engineering team has published their practice for an AI-native software development lifecycle: six stages, each producing a committed artifact, humans at the gates, and the commit chain as the audit trail. PactKit operationalizes that model today — across all 3 supported hosts:
|
|
114
|
+
|
|
115
|
+
| AI-Native SDLC | Practice | PactKit mechanism |
|
|
116
|
+
|----------------|----------|-------------------|
|
|
117
|
+
| Plan — `intent.md` | Ideas become committed artifacts with provenance | `/project-clarify` -> `/project-plan` (Spec + Story, timestamped in git history) |
|
|
118
|
+
| Design — `spec.md` | Requirements + design in one pass; policies applied at generation time | Spec generation reads rule modules; `spec_guard` keeps the Spec law during Act |
|
|
119
|
+
| Build — `plan.md` | No code before an accepted plan; guardrails as code, not prompt discipline | Spec lint + consistency check gate `/project-act`; enforcement gates enforce what prompts can only state |
|
|
120
|
+
| Test — `diff + tests` | Sessions self-verify; steering config is regression-tested | TDD loop + regression gates; `commit-gate` blocks RED suites with skip != pass transparency |
|
|
121
|
+
| Deploy — `PR + findings` | Multi-pass review; hooks as allow/ask/block gates | `auth_gate` authorization pairs, `push_gate`, `tamper_guard` — every block and bypass audited |
|
|
122
|
+
| Maintain | Incidents feed the next cycle | Gate telemetry + friction stats (`pactkit stats`) decide what to tune next |
|
|
123
|
+
|
|
124
|
+
Beyond the published practice: the same governance runs on Claude Code, OpenCode, and Codex CLI; interrupted sessions leave machine-observable `outcome_unknown` fences that block resume until the gate re-runs; and every gate decision lands in `.pactkit/enforcement/` as an audit record.
|
|
109
125
|
|
|
110
126
|
## Installation
|
|
111
127
|
|
|
@@ -280,7 +296,7 @@ PactKit deploys 10 skills (3 scripted + 7 prompt-only), auto-invoked by commands
|
|
|
280
296
|
|
|
281
297
|
## CLI Subcommands
|
|
282
298
|
|
|
283
|
-
PactKit ships
|
|
299
|
+
PactKit ships 45 deterministic CLI subcommands — operations that were previously delegated to AI prompts are now enforced in Python code (the "C" in P.A.C.T.):
|
|
284
300
|
|
|
285
301
|
| Command | Purpose |
|
|
286
302
|
|---------|---------|
|
|
@@ -312,11 +328,27 @@ PactKit ships 36 deterministic CLI subcommands — operations that were previous
|
|
|
312
328
|
| `pactkit lint-lessons` | Validate lessons.md structure |
|
|
313
329
|
| `pactkit lint-testcase` | Validate test case structure |
|
|
314
330
|
| `pactkit done-verify` | Archive honesty gate: requirement→test evidence chain, checkbox↔case consistency, status machine (blocks `/project-done` on FAIL) |
|
|
315
|
-
| `pactkit commit-gate` | Pre-commit test gate with skip≠pass transparency; PreToolUse hook + git pre-commit channels, auto-installed per format |
|
|
331
|
+
| `pactkit commit-gate` | Pre-commit test gate with skip≠pass transparency; stack-aware (pytest/npm test/go test/mvn/gradle); counts via junitxml — immune to repo `addopts` verbosity tricks — with exit-code-truthful failure messages; PreToolUse hook + git pre-commit/pre-push channels, auto-installed per format |
|
|
332
|
+
| `pactkit gate` | Session context hooks (`--hook session-start/pre-compact`) + external-effect authorization (`pactkit gate <scope> [--ttl-minutes N]`) |
|
|
316
333
|
| `pactkit deps` | External dependency check (`deps check`) and guided install (`deps install`) for node/codegraph/gh |
|
|
317
334
|
| `pactkit schema config` | List every pactkit.yaml key with default, effective value, and source |
|
|
318
335
|
| `pactkit sync` | Sync codegraph index |
|
|
319
336
|
|
|
337
|
+
### Enforcement Gates (2.25.0)
|
|
338
|
+
|
|
339
|
+
The hook layer enforces the rules prompt text can only state — protected branches, specs, credentials, and external effects survive a conflicting instruction instead of losing to it:
|
|
340
|
+
|
|
341
|
+
| Gate | Blocks | Bypass (human/config only) |
|
|
342
|
+
|------|--------|---------------------------|
|
|
343
|
+
| `push_gate` | Direct push to a protected branch (default `main`/`master`) | `PACTKIT_ALLOW_DIRECT_PUSH=1` or `enforcement.allow_direct_push` |
|
|
344
|
+
| `commit_gate` | Commits on protected branches (default) and RED test suites | same as push_gate; `develop` keeps the full-suite rule |
|
|
345
|
+
| `spec_guard` | Editing a spec that has an active preflight receipt (Spec is Law during Act) | `PACTKIT_ALLOW_SPEC_EDIT=1` or `pactkit gate spec_edit` |
|
|
346
|
+
| `auth_gate` | External-effect commands (PR/release/publish/repo) until the user confirms | `pactkit gate <scope>` TTL token or `PACTKIT_AUTHORIZED=1` |
|
|
347
|
+
| `secrets_gate` | Literal credential material in commands (env-var indirection is exempt) | `PACTKIT_ALLOW_SECRET=1` |
|
|
348
|
+
| `tamper_guard` | Modifying enforcement artifacts (hooks, gate registrations, audit records) | `PACTKIT_ALLOW_CONFIG_EDIT=1` |
|
|
349
|
+
|
|
350
|
+
All blocks/bypasses are audited (`.pactkit/enforcement/`) and feed `pactkit stats` as gate telemetry (per-gate block counts, per-command invocation counts, authorization pairs) — the friction data that decides what to tune next.
|
|
351
|
+
|
|
320
352
|
## Deployment Architecture
|
|
321
353
|
|
|
322
354
|
PactKit supports three deployment formats:
|
|
@@ -61,6 +61,22 @@ T Truth Data is the Truth Factual basis for all judgment — no memory,
|
|
|
61
61
|
- **Full PDCA Lifecycle** — Plan -> Act -> Check -> Done, with quality gates at every stage
|
|
62
62
|
- **Safe by Design** — TDD-first, safe regression, pre-existing test protection
|
|
63
63
|
- **Multi-Tool Support** — Works with Claude Code, OpenCode, and Codex CLI
|
|
64
|
+
- **AI-Native SDLC, Operationalized** — The artifact chain, gates, and audit trail that Anthropic's engineering practice describes — running across all 3 hosts
|
|
65
|
+
|
|
66
|
+
## AI-Native SDLC Alignment
|
|
67
|
+
|
|
68
|
+
Anthropic's engineering team has published their practice for an AI-native software development lifecycle: six stages, each producing a committed artifact, humans at the gates, and the commit chain as the audit trail. PactKit operationalizes that model today — across all 3 supported hosts:
|
|
69
|
+
|
|
70
|
+
| AI-Native SDLC | Practice | PactKit mechanism |
|
|
71
|
+
|----------------|----------|-------------------|
|
|
72
|
+
| Plan — `intent.md` | Ideas become committed artifacts with provenance | `/project-clarify` -> `/project-plan` (Spec + Story, timestamped in git history) |
|
|
73
|
+
| Design — `spec.md` | Requirements + design in one pass; policies applied at generation time | Spec generation reads rule modules; `spec_guard` keeps the Spec law during Act |
|
|
74
|
+
| Build — `plan.md` | No code before an accepted plan; guardrails as code, not prompt discipline | Spec lint + consistency check gate `/project-act`; enforcement gates enforce what prompts can only state |
|
|
75
|
+
| Test — `diff + tests` | Sessions self-verify; steering config is regression-tested | TDD loop + regression gates; `commit-gate` blocks RED suites with skip != pass transparency |
|
|
76
|
+
| Deploy — `PR + findings` | Multi-pass review; hooks as allow/ask/block gates | `auth_gate` authorization pairs, `push_gate`, `tamper_guard` — every block and bypass audited |
|
|
77
|
+
| Maintain | Incidents feed the next cycle | Gate telemetry + friction stats (`pactkit stats`) decide what to tune next |
|
|
78
|
+
|
|
79
|
+
Beyond the published practice: the same governance runs on Claude Code, OpenCode, and Codex CLI; interrupted sessions leave machine-observable `outcome_unknown` fences that block resume until the gate re-runs; and every gate decision lands in `.pactkit/enforcement/` as an audit record.
|
|
64
80
|
|
|
65
81
|
## Installation
|
|
66
82
|
|
|
@@ -235,7 +251,7 @@ PactKit deploys 10 skills (3 scripted + 7 prompt-only), auto-invoked by commands
|
|
|
235
251
|
|
|
236
252
|
## CLI Subcommands
|
|
237
253
|
|
|
238
|
-
PactKit ships
|
|
254
|
+
PactKit ships 45 deterministic CLI subcommands — operations that were previously delegated to AI prompts are now enforced in Python code (the "C" in P.A.C.T.):
|
|
239
255
|
|
|
240
256
|
| Command | Purpose |
|
|
241
257
|
|---------|---------|
|
|
@@ -267,11 +283,27 @@ PactKit ships 36 deterministic CLI subcommands — operations that were previous
|
|
|
267
283
|
| `pactkit lint-lessons` | Validate lessons.md structure |
|
|
268
284
|
| `pactkit lint-testcase` | Validate test case structure |
|
|
269
285
|
| `pactkit done-verify` | Archive honesty gate: requirement→test evidence chain, checkbox↔case consistency, status machine (blocks `/project-done` on FAIL) |
|
|
270
|
-
| `pactkit commit-gate` | Pre-commit test gate with skip≠pass transparency; PreToolUse hook + git pre-commit channels, auto-installed per format |
|
|
286
|
+
| `pactkit commit-gate` | Pre-commit test gate with skip≠pass transparency; stack-aware (pytest/npm test/go test/mvn/gradle); counts via junitxml — immune to repo `addopts` verbosity tricks — with exit-code-truthful failure messages; PreToolUse hook + git pre-commit/pre-push channels, auto-installed per format |
|
|
287
|
+
| `pactkit gate` | Session context hooks (`--hook session-start/pre-compact`) + external-effect authorization (`pactkit gate <scope> [--ttl-minutes N]`) |
|
|
271
288
|
| `pactkit deps` | External dependency check (`deps check`) and guided install (`deps install`) for node/codegraph/gh |
|
|
272
289
|
| `pactkit schema config` | List every pactkit.yaml key with default, effective value, and source |
|
|
273
290
|
| `pactkit sync` | Sync codegraph index |
|
|
274
291
|
|
|
292
|
+
### Enforcement Gates (2.25.0)
|
|
293
|
+
|
|
294
|
+
The hook layer enforces the rules prompt text can only state — protected branches, specs, credentials, and external effects survive a conflicting instruction instead of losing to it:
|
|
295
|
+
|
|
296
|
+
| Gate | Blocks | Bypass (human/config only) |
|
|
297
|
+
|------|--------|---------------------------|
|
|
298
|
+
| `push_gate` | Direct push to a protected branch (default `main`/`master`) | `PACTKIT_ALLOW_DIRECT_PUSH=1` or `enforcement.allow_direct_push` |
|
|
299
|
+
| `commit_gate` | Commits on protected branches (default) and RED test suites | same as push_gate; `develop` keeps the full-suite rule |
|
|
300
|
+
| `spec_guard` | Editing a spec that has an active preflight receipt (Spec is Law during Act) | `PACTKIT_ALLOW_SPEC_EDIT=1` or `pactkit gate spec_edit` |
|
|
301
|
+
| `auth_gate` | External-effect commands (PR/release/publish/repo) until the user confirms | `pactkit gate <scope>` TTL token or `PACTKIT_AUTHORIZED=1` |
|
|
302
|
+
| `secrets_gate` | Literal credential material in commands (env-var indirection is exempt) | `PACTKIT_ALLOW_SECRET=1` |
|
|
303
|
+
| `tamper_guard` | Modifying enforcement artifacts (hooks, gate registrations, audit records) | `PACTKIT_ALLOW_CONFIG_EDIT=1` |
|
|
304
|
+
|
|
305
|
+
All blocks/bypasses are audited (`.pactkit/enforcement/`) and feed `pactkit stats` as gate telemetry (per-gate block counts, per-command invocation counts, authorization pairs) — the friction data that decides what to tune next.
|
|
306
|
+
|
|
275
307
|
## Deployment Architecture
|
|
276
308
|
|
|
277
309
|
PactKit supports three deployment formats:
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 1
|
|
3
|
+
id: LESSON-20260902100234-6fa7694bad
|
|
4
|
+
date: '2026-09-02'
|
|
5
|
+
story_id: STORY-slim-202609025bc9246b6a54
|
|
6
|
+
context: commit_gate.py:run_pytest
|
|
7
|
+
tags: []
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
commit_gate.py run_pytest 解析 pytest 计数不能依赖终端输出:显式 -r 会覆盖默认 short-summary 集合(-rs 挤掉 FAILED 行),verbosity -qq 吞最终 summary 行——已改走 --junitxml 权威通道
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
## Invariants
|
|
17
17
|
|
|
18
|
-
1. All
|
|
18
|
+
1. All 4820+ 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,371 @@
|
|
|
1
|
+
# Sprint Board
|
|
2
|
+
|
|
3
|
+
## 📋 Backlog
|
|
4
|
+
|
|
5
|
+
### [HOTFIX-slim-127] Add codegraph sync to PDCA command source templates
|
|
6
|
+
> Spec: docs/specs/HOTFIX-slim-127.md
|
|
7
|
+
|
|
8
|
+
- [ ] Fix project-plan
|
|
9
|
+
- [ ] Fix project-act
|
|
10
|
+
- [ ] Fix project-done
|
|
11
|
+
- [ ] Fix project-hotfix
|
|
12
|
+
|
|
13
|
+
### [HOTFIX-slim-131] Fix deployer @ refs before frontmatter
|
|
14
|
+
> Spec: docs/specs/HOTFIX-slim-131.md
|
|
15
|
+
|
|
16
|
+
- [ ] Fix _deploy_commands prepend order
|
|
17
|
+
|
|
18
|
+
### [HOTFIX-slim-132] Add explicit board.py move_story command to project-act
|
|
19
|
+
> Spec: docs/specs/HOTFIX-slim-132.md
|
|
20
|
+
|
|
21
|
+
- [ ] Add move_story command template to Phase 0.6
|
|
22
|
+
|
|
23
|
+
### [STORY-slim-115] Worktree/Parallel Session Artifact Drift Prevention
|
|
24
|
+
> Spec: docs/specs/STORY-slim-115.md
|
|
25
|
+
|
|
26
|
+
- [ ] 实现派生 Board 视图
|
|
27
|
+
- [ ] 增加 Board 生成与状态命令
|
|
28
|
+
- [ ] 迁移 PDCA Board 操作
|
|
29
|
+
- [ ] 验证并行 Session 安全
|
|
30
|
+
- [ ] 完成兼容迁移与回归
|
|
31
|
+
|
|
32
|
+
### [STORY-slim-118] codegraph MCP Integration for Semantic Code Queries
|
|
33
|
+
> Spec: docs/specs/STORY-slim-118.md
|
|
34
|
+
|
|
35
|
+
- [ ] Document replacement vs augmentation decision
|
|
36
|
+
- [ ] Add codegraph MCP conditional note to SKILL_VISUALIZE_MD Graph Query Protocol
|
|
37
|
+
- [ ] Run pactkit update to redeploy
|
|
38
|
+
|
|
39
|
+
### [STORY-slim-119] Improve Python Call Graph Coverage
|
|
40
|
+
> Spec: docs/specs/STORY-slim-119.md
|
|
41
|
+
|
|
42
|
+
- [ ] Extend _extract_calls to capture non-self attribute method calls (R1)
|
|
43
|
+
- [ ] Capture function references in list/assignment contexts (R2)
|
|
44
|
+
- [ ] Use ast.walk to scan nested functions (R3)
|
|
45
|
+
- [ ] Write TDD tests for AC1-AC4
|
|
46
|
+
- [ ] Run pactkit update to redeploy
|
|
47
|
+
|
|
48
|
+
### [STORY-slim-2026082727cc4ab535e7] [P2-1 backlog] 生成式目录 + 漂移门
|
|
49
|
+
> Spec: docs/specs/STORY-slim-2026082727cc4ab535e7.md
|
|
50
|
+
|
|
51
|
+
- [ ] workflow_registry + RULE_DEFINITIONS 生成 docs/reference/ 目录页,CI 校验 diff 为零
|
|
52
|
+
|
|
53
|
+
### [STORY-slim-2026082730b5954cf538] [P2-4 backlog] 治理工具 MCP 化
|
|
54
|
+
> Spec: docs/specs/STORY-slim-2026082730b5954cf538.md
|
|
55
|
+
|
|
56
|
+
- [ ] board/continuation/doctor 关键子命令包成 MCP server([mcp_servers] 配置段生成)
|
|
57
|
+
- [ ] Codex hook handler 可走 MCP 不必 shell out
|
|
58
|
+
|
|
59
|
+
### [STORY-slim-20260827625b870eb7da] [P2-3 backlog] 配置分层组合(企业基线→项目→用户 overlay)
|
|
60
|
+
> Spec: docs/specs/STORY-slim-20260827625b870eb7da.md
|
|
61
|
+
|
|
62
|
+
- [ ] pactkit.yaml 层叠 last-write-wins + pactkit config dump
|
|
63
|
+
- [ ] 参考 Codex config loader 与 dsh profile/bundle/patch 语义
|
|
64
|
+
|
|
65
|
+
### [STORY-slim-202608277ec1236a7b99] [P1-2 backlog] outcome_unknown 崩溃恢复中间态
|
|
66
|
+
> Spec: docs/specs/STORY-slim-202608277ec1236a7b99.md
|
|
67
|
+
|
|
68
|
+
- [ ] checkpoint 状态机增加 outcome_unknown(evidence 级 unknown 标记)
|
|
69
|
+
- [ ] 恢复时强制重跑验证步骤而非沿用旧结论(Ctrl-C 半途场景)
|
|
70
|
+
|
|
71
|
+
### [STORY-slim-20260827833e7a200f9a] [P2-2 backlog] 跨宿主 prompt snapshot 测试
|
|
72
|
+
> Spec: docs/specs/STORY-slim-20260827833e7a200f9a.md
|
|
73
|
+
|
|
74
|
+
- [ ] deploy 到临时目录,对 Claude/OpenCode/Codex 三 profile 产物做字节级 snapshot
|
|
75
|
+
- [ ] 拦截 prompt 模板静默回归(2.21/2.22 类事故)
|
|
76
|
+
|
|
77
|
+
### [STORY-slim-20260827855bf3efaec3] [P1-3 backlog] 设计决策记录(Agent Notes 治理版)
|
|
78
|
+
> Spec: docs/specs/STORY-slim-20260827855bf3efaec3.md
|
|
79
|
+
|
|
80
|
+
- [ ] decision note 模板 + commit-gate 规则:触及 governance/spec/architecture 文件须有对应 note
|
|
81
|
+
- [ ] enterprise adoption:可追溯架构决定
|
|
82
|
+
|
|
83
|
+
### [STORY-slim-2026082799fa651655be] [P2-5 backlog] 宿主版本/能力探测泛化
|
|
84
|
+
> Spec: docs/specs/STORY-slim-2026082799fa651655be.md
|
|
85
|
+
|
|
86
|
+
- [ ] 大部分已被 STORY-slim-20260827024e71df170f R4/R5(Codex 探测)覆盖
|
|
87
|
+
- [ ] 剩余:OpenCode/Copilot 的版本探测与 profiles 能力标志动态化
|
|
88
|
+
|
|
89
|
+
### [STORY-slim-20260827c67e3add6af5] [P1-1 backlog] 授权审计事件对:authorization/asked + granted|denied 落事件流
|
|
90
|
+
> Spec: docs/specs/STORY-slim-20260827c67e3add6af5.md
|
|
91
|
+
|
|
92
|
+
- [ ] 依赖 P0 事件流(STORY-slim-20260827024e71df170f)落地后在 blocker 升降路径落审计事件对
|
|
93
|
+
- [ ] enterprise 合规刚需,实现成本低
|
|
94
|
+
|
|
95
|
+
### [STORY-slim-20260827d0ae0dfada51] [P1-5 backlog] write_scope 编译到宿主策略层
|
|
96
|
+
> Spec: docs/specs/STORY-slim-20260827d0ae0dfada51.md
|
|
97
|
+
|
|
98
|
+
- [ ] Spec Touches∪项目 write_scope 编译为 Codex sandbox/permission profile + Claude allowlist
|
|
99
|
+
- [ ] 从 prompt 劝告升级为宿主结构性拒绝
|
|
100
|
+
|
|
101
|
+
### [STORY-slim-20260827fb6291b717eb] [P1-4 backlog] Codex 插件分发形态(.codex-plugin manifest)
|
|
102
|
+
> Spec: docs/specs/STORY-slim-20260827fb6291b717eb.md
|
|
103
|
+
|
|
104
|
+
- [ ] 生成 .codex-plugin manifest 捆绑 skills+hooks+MCP 声明
|
|
105
|
+
- [ ] 依赖 P0-4 hooks.json;对称于现有 Claude plugin 发布流程
|
|
106
|
+
|
|
107
|
+
## 🔄 In Progress
|
|
108
|
+
|
|
109
|
+
## ✅ Done
|
|
110
|
+
|
|
111
|
+
### [HOTFIX-slim-20260828ee6cde3108fb] git hooks must not lock everyone out when pactkit is missing
|
|
112
|
+
> Spec: docs/specs/HOTFIX-slim-20260828ee6cde3108fb.md
|
|
113
|
+
|
|
114
|
+
- [x] PATH probe in generated pre-commit/pre-push scripts
|
|
115
|
+
|
|
116
|
+
### [HOTFIX-slim-20260830bbb5bc219d35] gate CLI syntax + push-gate cross-repo root
|
|
117
|
+
> Spec: docs/specs/HOTFIX-slim-20260830bbb5bc219d35.md
|
|
118
|
+
|
|
119
|
+
- [x] Accept authorize keyword in gate CLI
|
|
120
|
+
- [x] Resolve cd-target repo in hook_entry
|
|
121
|
+
- [x] Focused tests + golden refresh
|
|
122
|
+
|
|
123
|
+
### [HOTFIX-slim-20260901469666ef23a8] commit-gate misfires on docs/meta-only commits
|
|
124
|
+
> Spec: docs/specs/HOTFIX-slim-20260901469666ef23a8.md
|
|
125
|
+
|
|
126
|
+
- [x] Fix three defects: doc-only patterns miss repo meta files (.gitignore/.claude/.codex); full-suite target hard-codes tests/unit/ with no tests/ fallback and counts exit 4/5 as RED; missing pytest module (pipx fallback) reads as RED instead of GateUnavailable. From harness-backend 2026-09-01 friction.
|
|
127
|
+
|
|
128
|
+
### [STORY-slim-145] Codex 部署命令语义完整性与 Adapter 兼容门禁
|
|
129
|
+
> Spec: docs/specs/STORY-slim-145.md
|
|
130
|
+
|
|
131
|
+
- [x] 建立 CLI policy 与结构化操作渲染契约
|
|
132
|
+
- [x] 移除 pactkit-codex 有损命令前缀替换
|
|
133
|
+
- [x] 增加 prompt 完整性与 Classic/Codex parity 门禁
|
|
134
|
+
- [x] 阻止不兼容 Core/adapter 组合静默部署
|
|
135
|
+
- [x] 完成隔离迁移、双仓回归与 2.23.0 同版本构建验证
|
|
136
|
+
|
|
137
|
+
### [STORY-slim-147] 全 Skill 执行可靠性协议与 Plan 可恢复工作流
|
|
138
|
+
> Spec: docs/specs/STORY-slim-147.md
|
|
139
|
+
|
|
140
|
+
- [x] 建立 25 入口执行可靠性注册表
|
|
141
|
+
- [x] 抽象通用 continuation engine
|
|
142
|
+
- [x] 无损迁移 project-act
|
|
143
|
+
- [x] 接入 project-plan 可恢复 workflow
|
|
144
|
+
- [x] 增加迁移诊断与安全门禁
|
|
145
|
+
- [x] 验证四种部署目标语义一致
|
|
146
|
+
|
|
147
|
+
### [STORY-slim-148] Git 友好的分片治理事实源与无冲突投影视图
|
|
148
|
+
> Spec: docs/specs/STORY-slim-148.md
|
|
149
|
+
|
|
150
|
+
- [x] 定义 Story/Lesson 分片 schema 与唯一字段所有权
|
|
151
|
+
- [x] 实现无中心唯一 ITEM ID 与新旧解析兼容
|
|
152
|
+
- [x] 迁移 Board 和 Lesson 写入到单记录 repository
|
|
153
|
+
- [x] 将 Context 与 Board 降级为只读 projection
|
|
154
|
+
- [x] 实现无损迁移、回滚与禁止双写门禁
|
|
155
|
+
- [x] 迁移所有消费者并验证双工作树无冲突
|
|
156
|
+
- [x] 验证四种 Adapter 的新治理语义
|
|
157
|
+
|
|
158
|
+
### [STORY-slim-149] Codegraph-first 静态分析路由与显式降级
|
|
159
|
+
> Spec: docs/specs/STORY-slim-149.md
|
|
160
|
+
|
|
161
|
+
- [x] 实现统一 GraphProviderRouter 与结果模型
|
|
162
|
+
- [x] 实现 Codegraph 健康、新鲜度和单次 sync
|
|
163
|
+
- [x] 扩展 query/explore/impact CLI 与显式 fallback
|
|
164
|
+
- [x] 让 Plan Act Trace 统一走查询路由
|
|
165
|
+
- [x] 校验 continuation provider evidence
|
|
166
|
+
- [x] 增加 doctor 与部署完整性诊断
|
|
167
|
+
- [x] 验证四种 Adapter 的查询语义
|
|
168
|
+
|
|
169
|
+
### [STORY-slim-2026082381e832771d4e] Codex 未完成 Workflow 终止门禁与宿主续跑协议
|
|
170
|
+
> Spec: docs/specs/STORY-slim-2026082381e832771d4e.md
|
|
171
|
+
|
|
172
|
+
- [x] 实现 workflow finish-guard 与稳定终止决策
|
|
173
|
+
- [x] 为关键写操作增加 managed active-run ownership
|
|
174
|
+
- [x] 定义宿主 capability handshake 与 bounded resume runner
|
|
175
|
+
- [x] 加入 lease、无进展检测与人工副作用边界
|
|
176
|
+
- [x] 在四平台模板中部署 Pre-Final Protocol
|
|
177
|
+
- [x] 建立 transcript-level agent-loop 与 adapter 验收
|
|
178
|
+
- [x] 补充 doctor、manifest 与保证等级文档
|
|
179
|
+
- [x] 为十个通用 Project Workflow 增加命令级完成证据
|
|
180
|
+
- [x] 在 Codex、OpenCode 与 Copilot 部署 Sprint 串行降级入口
|
|
181
|
+
|
|
182
|
+
### [STORY-slim-20260823d854b0cf1875] Portable Methods 与宿主能力分层工作流架构
|
|
183
|
+
> Spec: docs/specs/STORY-slim-20260823d854b0cf1875.md
|
|
184
|
+
|
|
185
|
+
- [x] 定义三层产品边界与单一事实源
|
|
186
|
+
- [x] 实现 Work Unit 与租约状态机
|
|
187
|
+
- [x] 实现 ExecutionAttempt 与 EvidenceReceipt 复验
|
|
188
|
+
- [x] 建立 Host Capability Contract 与诚实降级
|
|
189
|
+
- [x] 提取 Portable Methods 单一内容源
|
|
190
|
+
- [x] 迁移 project-plan 与原子 finalize
|
|
191
|
+
- [x] 移除 Stop hook 正确性依赖
|
|
192
|
+
- [x] 完成兼容迁移、doctor 与真实宿主验证
|
|
193
|
+
|
|
194
|
+
### [STORY-slim-20260823de7e85d6042a] Codex Stop Hook 强制续跑与真实宿主完成门禁
|
|
195
|
+
> Spec: docs/specs/STORY-slim-20260823de7e85d6042a.md
|
|
196
|
+
|
|
197
|
+
- [x] 实现 Core session/turn 绑定与 hook-facing decision 接口
|
|
198
|
+
- [x] 实现 Codex Stop handler 与 finish-guard 映射
|
|
199
|
+
- [x] 部署并无损管理 Codex hooks 配置
|
|
200
|
+
- [x] 增加 trust/capability/doctor 与 manifest 诊断
|
|
201
|
+
- [x] 覆盖 handler、部署和防循环测试
|
|
202
|
+
- [x] 完成真实 Codex Plan/Done 提前终止 E2E
|
|
203
|
+
- [x] pip 更新并验证真实本机 Codex 部署
|
|
204
|
+
|
|
205
|
+
### [STORY-slim-20260825b1c83a046b4b] PactKit 场景化规则架构与非阻塞执行契约
|
|
206
|
+
> Spec: docs/specs/STORY-slim-20260825b1c83a046b4b.md
|
|
207
|
+
|
|
208
|
+
- [x] 建立规则注册表与最小 Runtime Kernel
|
|
209
|
+
- [x] 拆分 Phase Contracts 与共享能力模块
|
|
210
|
+
- [x] 统一非阻塞失败和完成语义
|
|
211
|
+
- [x] 重写风险驱动 Engineering Guides
|
|
212
|
+
- [x] 实现 ownership 安全迁移与回滚
|
|
213
|
+
- [x] 验证四种 Adapter 语义一致性
|
|
214
|
+
|
|
215
|
+
### [STORY-slim-202608264cf429c75e22] Unify deployment ownership safety across skills, agents, CLAUDE.md and rollback
|
|
216
|
+
> Spec: docs/specs/STORY-slim-202608264cf429c75e22.md
|
|
217
|
+
|
|
218
|
+
- [x] Extract shared ownership helper (load_previous_hashes + preserve_or_write) in deploy_manifest.py; narrow manifest skill ownership to registered artifacts
|
|
219
|
+
- [x] Write RED tests for skill/agent ownership preservation (AC1-AC4, AC9)
|
|
220
|
+
- [x] Refactor _deploy_rules/_deploy_guides to shared helper; add ownership checks to _deploy_skills/_deploy_agents; fix _deploy_claude_md unreadable+appended-content paths; retire disabled skills with proof
|
|
221
|
+
- [x] Write RED tests for CLAUDE.md preservation and skill retirement (AC5, AC8)
|
|
222
|
+
- [x] Fix rollback_paths: catch BaseException + per-restore isolation
|
|
223
|
+
- [x] Write RED tests for KeyboardInterrupt rollback and restore isolation (AC7, AC10)
|
|
224
|
+
- [x] Full regression + update spec status
|
|
225
|
+
- [x] QA fix iteration — command-skill ownership, CLAUDE.md boundary tightening, gate unification, retirement hardening, count honesty
|
|
226
|
+
|
|
227
|
+
### [STORY-slim-2026082672b57c78fd67] Subtraction pass: dead code removal, completion-rule dedup, CLI decomposition
|
|
228
|
+
> Spec: docs/specs/STORY-slim-2026082672b57c78fd67.md
|
|
229
|
+
|
|
230
|
+
- [x] RED: taxonomy-consistency + help-surface snapshot tests
|
|
231
|
+
- [x] Completion-rule delegation to workflow_validators (R1)
|
|
232
|
+
- [x] Shared step taxonomy (R2)
|
|
233
|
+
- [x] cli.py decomposition (R3)
|
|
234
|
+
- [x] Dead code removal with adapter-package grep proof (R4)
|
|
235
|
+
- [x] Doctor FORMAT_PROFILES root helper (R5)
|
|
236
|
+
- [x] Full regression + CHANGELOG
|
|
237
|
+
- [x] Delivered scope: R3 bounded + R4 partial + R5 project-level (R1/R2 dropped per legacy freeze)
|
|
238
|
+
|
|
239
|
+
### [STORY-slim-202608267c3989223b4d] Workflow engine robustness: no bricked runs, corrupt-file isolation, Windows locks
|
|
240
|
+
> Spec: docs/specs/STORY-slim-202608267c3989223b4d.md
|
|
241
|
+
|
|
242
|
+
- [x] RED tests AC1-AC6
|
|
243
|
+
- [x] workflow_engine: fingerprint consistency + scan isolation
|
|
244
|
+
- [x] continuation: platform-split lock + story lock + stale tolerance + typed guards
|
|
245
|
+
- [x] host_continuation typed access
|
|
246
|
+
- [x] Full regression
|
|
247
|
+
|
|
248
|
+
### [STORY-slim-202608268fc379dbe6ef] PactKit PDCA 规则语义深化与风险驱动执行模型
|
|
249
|
+
> Spec: docs/specs/STORY-slim-202608268fc379dbe6ef.md
|
|
250
|
+
|
|
251
|
+
- [x] 细化 RuleClause 与 PhaseContract schema
|
|
252
|
+
- [x] 实现 Sprint 动态 phase capsule
|
|
253
|
+
- [x] 建立 Change Risk Profile 与风险路由
|
|
254
|
+
- [x] 原生重写 engineering guides 并补三类实践
|
|
255
|
+
- [x] 实现 scope integrity 与 test adequacy evidence
|
|
256
|
+
- [x] 完善兼容迁移、doctor 与四 Adapter parity
|
|
257
|
+
|
|
258
|
+
### [STORY-slim-20260826ac1f0bfe4148] Prompt-to-CLI contract consistency: machine-checked and gap-closed
|
|
259
|
+
> Spec: docs/specs/STORY-slim-20260826ac1f0bfe4148.md
|
|
260
|
+
|
|
261
|
+
- [x] RED contract test AC1/AC2
|
|
262
|
+
- [x] board.py add_task subcommand + AC3 round-trip test
|
|
263
|
+
- [x] spec_preflight dedup + oversized-reference WARN + AC4/AC5 tests
|
|
264
|
+
- [x] Playbook interface inventory (R4)
|
|
265
|
+
- [x] Full regression
|
|
266
|
+
|
|
267
|
+
### [STORY-slim-20260826cb37edfdd4da] Freeze and isolate the legacy workflow engine with a data-driven deletion track
|
|
268
|
+
> Spec: docs/specs/STORY-slim-20260826cb37edfdd4da.md
|
|
269
|
+
|
|
270
|
+
- [x] RED tests AC1-AC8
|
|
271
|
+
- [x] Create protocols.py neutral constants module
|
|
272
|
+
- [x] Move workflow_engine + host_continuation to frozen legacy package with compat shims
|
|
273
|
+
- [x] Re-point cli/doctor/deploy_manifest imports + usage instrumentation + doctor usage line
|
|
274
|
+
- [x] Test import migration + full regression
|
|
275
|
+
- [x] CHANGELOG deprecation notice
|
|
276
|
+
|
|
277
|
+
### [STORY-slim-20260826ce35b77ce005] Gate subsystem fails closed: fix inverted and fail-open gates
|
|
278
|
+
> Spec: docs/specs/STORY-slim-20260826ce35b77ce005.md
|
|
279
|
+
|
|
280
|
+
- [x] RED tests AC1-AC9 with mocked subprocesses
|
|
281
|
+
- [x] Fix audit.py: pip-audit exit contract, exception surfacing, no_secrets pathspec, single-layer scorecard guard, load_config path
|
|
282
|
+
- [x] Fix done_verify.py word-boundary matching
|
|
283
|
+
- [x] Extract shared venv-aware pytest helper; coverage_gate fail-closed + CLI exit code
|
|
284
|
+
- [x] Fix commit_gate collection-failure transparency + tests/** classification
|
|
285
|
+
- [x] Fix doctor.py stale-graph config loading
|
|
286
|
+
- [x] Full regression
|
|
287
|
+
|
|
288
|
+
### [STORY-slim-20260826f9492ab32c3d] Unify pactkit.yaml read and sync precedence into one canonical order
|
|
289
|
+
> Spec: docs/specs/STORY-slim-20260826f9492ab32c3d.md
|
|
290
|
+
|
|
291
|
+
- [x] RED tests AC1-AC4 fixture matrix
|
|
292
|
+
- [x] Expose single candidate-order constant in profiles.py
|
|
293
|
+
- [x] sync_config_copies: sync-from-effective + atomic write + divergence warning
|
|
294
|
+
- [x] Full regression + pre-existing sync test migration
|
|
295
|
+
|
|
296
|
+
### [STORY-slim-20260827024e71df170f] P0 可观测性与拦截力升级:run 事件流、friction 统计、gate 完整度上报、Codex 原生 hooks 接入
|
|
297
|
+
> Spec: docs/specs/STORY-slim-20260827024e71df170f.md
|
|
298
|
+
|
|
299
|
+
- [x] R1 事件流写入:continuation.py 锁内追加 events/*.jsonl + 归档随行
|
|
300
|
+
- [x] R2 pactkit stats 聚合命令 + golden CLI snapshot 更新
|
|
301
|
+
- [x] R3 enforcement 状态模型(full/degraded/unavailable)+ doctor 聚合
|
|
302
|
+
- [x] R4 Codex hooks.json 薄注册(create-if-absent,依赖 ownership 契约修复)
|
|
303
|
+
- [x] R4b Codex hook schema 适配 + doctor 真实能力检测 + profiles 能力标志修正
|
|
304
|
+
- [x] 单测:AC1-AC3 事件流(投影一致/blocker 对/崩溃安全)
|
|
305
|
+
- [x] e2e:AC7-AC9 config.toml 字节不变 + hooks 幂等 + doctor 检测
|
|
306
|
+
|
|
307
|
+
### [STORY-slim-20260827eddbe9669c87] Continuation 状态机补强:授权审计事件对与 outcome_unknown 恢复语义
|
|
308
|
+
> Spec: docs/specs/STORY-slim-20260827eddbe9669c87.md
|
|
309
|
+
|
|
310
|
+
- [x] R1 授权审计事件对(asked/granted 自动 + denied 显式,双路径发射)
|
|
311
|
+
- [x] R2 pactkit continuation deny 命令(锁内、前置校验、blocked 重写)
|
|
312
|
+
- [x] R3 验证尝试围栏 record_attempt + commit-gate 接入
|
|
313
|
+
- [x] R4 resume/finish_guard outcome_unknown 交叉检查(阻塞与解除)
|
|
314
|
+
- [x] R5 stats 授权决策计数 + golden CLI 更新
|
|
315
|
+
|
|
316
|
+
### [STORY-slim-20260827fc9de5542ad7] Codex command references 所有权契约修复:command manifest v2 记录 reference 摘要
|
|
317
|
+
> Spec: docs/specs/STORY-slim-20260827fc9de5542ad7.md
|
|
318
|
+
|
|
319
|
+
- [x] core: command_ownership.py v2 schema + record_deployed_reference + v1 兼容读取 + 单测
|
|
320
|
+
- [x] adapter: deploy_codex_command_skills 渲染时记录 reference 摘要(snapshot 事务内)
|
|
321
|
+
- [x] adapter: _cleanup_stale_command_references 证明来源 ∪ command manifest v2
|
|
322
|
+
- [x] adapter tests: 修复两个红测试 + AC3/AC5/AC6 覆盖
|
|
323
|
+
- [x] core tests: v2 单测 + 全量回归
|
|
324
|
+
|
|
325
|
+
### [STORY-slim-20260828897396a935ab] Hook coverage expansion: session context, spec/auth/secrets gates
|
|
326
|
+
> Spec: docs/specs/STORY-slim-20260828897396a935ab.md
|
|
327
|
+
|
|
328
|
+
- [x] auth_gate module + TTL token
|
|
329
|
+
- [x] secrets_gate credential patterns
|
|
330
|
+
- [x] session_gate SessionStart/PreCompact
|
|
331
|
+
- [x] spec_guard in tamper_guard
|
|
332
|
+
- [x] dispatch wiring + install registration
|
|
333
|
+
- [x] config/enforcement/cli extensions
|
|
334
|
+
- [x] unit tests AC1-AC6
|
|
335
|
+
|
|
336
|
+
### [STORY-slim-202608289e83eeb30df4] Protected-branch push gate + L1 hard-rule override protocol
|
|
337
|
+
> Spec: docs/specs/STORY-slim-202608289e83eeb30df4.md
|
|
338
|
+
|
|
339
|
+
- [x] Extend hook_entry with git push matching + branch resolution + block/bypass
|
|
340
|
+
- [x] Add enforcement config section to config.py
|
|
341
|
+
- [x] Install pre-push hook + tamper guard registration + ensure_gate_channel
|
|
342
|
+
- [x] Extend GATES + probe_push_gate + doctor output
|
|
343
|
+
- [x] Upgrade prompts/rules.py: L1 entries + Override Protocol
|
|
344
|
+
- [x] Write unit tests for AC1-AC8
|
|
345
|
+
- [x] Set pactkit self-config allow_direct_push/tamper_guard
|
|
346
|
+
|
|
347
|
+
### [STORY-slim-20260828d43fae4edbb6] Stack-aware commit-gate test commands (node/go/java)
|
|
348
|
+
> Spec: docs/specs/STORY-slim-20260828d43fae4edbb6.md
|
|
349
|
+
|
|
350
|
+
- [x] utils.stack_test_command marker resolution
|
|
351
|
+
- [x] run_pytest stack dispatch + GateUnavailable
|
|
352
|
+
- [x] probe_commit_gate stack-aware
|
|
353
|
+
- [x] unit tests AC1-AC5
|
|
354
|
+
|
|
355
|
+
### [STORY-slim-20260830c65491123af1] Gate telemetry truthfulness + audit-record redaction
|
|
356
|
+
> Spec: docs/specs/STORY-slim-20260830c65491123af1.md
|
|
357
|
+
|
|
358
|
+
- [x] redact_command helper + persisted reason redaction
|
|
359
|
+
- [x] EVENT_TYPES extension + gate event emission
|
|
360
|
+
- [x] Skill matcher telemetry branch
|
|
361
|
+
- [x] run_stats gate/command counters
|
|
362
|
+
- [x] clean-time legacy record scrub
|
|
363
|
+
- [x] unit tests AC1-AC5
|
|
364
|
+
|
|
365
|
+
### [STORY-slim-202609025bc9246b6a54] commit-gate 计数解析鲁棒性:中和 repo addopts 干扰 + 真实失败文案
|
|
366
|
+
> Spec: docs/specs/STORY-slim-202609025bc9246b6a54.md
|
|
367
|
+
|
|
368
|
+
- [x] R1 计数可得性——gate 的 pytest 调用不受 repo addopts 干扰(2026-09-02 harness-backend 事故:addopts=-q 与 gate -q 叠加成 -qq,pytest 9 在 -qq 下不打印 summary 行→解析永远全 0);候选 -o addopts= 清空 / --junitxml 机器可读计数,需权衡 addopts 中必要运行参数(如 --asyncio-mode=auto)不可被清空
|
|
369
|
+
- [x] R2 文案真实化——rc≠0 且计数全 0 时按 exit code 报因:5=没跑、4=usage/collection、其余=跑了但 summary 不可解析(附 addopts 干扰提示),不再一律报 no tests collected
|
|
370
|
+
- [x] R3 回归测试——fixture repo 带 pyproject addopts=-q 复现事故场景,断言修复后计数解析正确、文案与事实一致
|
|
371
|
+
- [x] R4 全量套件绿 + CHANGELOG/README 更新
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
schema_version: 1
|
|
2
|
+
id: HOTFIX-slim-20260830bbb5bc219d35
|
|
3
|
+
title: gate CLI syntax + push-gate cross-repo root
|
|
4
|
+
spec_path: docs/specs/HOTFIX-slim-20260830bbb5bc219d35.md
|
|
5
|
+
status: archived
|
|
6
|
+
tasks:
|
|
7
|
+
- id: task-28c4e1d550
|
|
8
|
+
title: Accept authorize keyword in gate CLI
|
|
9
|
+
completed: true
|
|
10
|
+
- id: task-f5de85695c
|
|
11
|
+
title: Resolve cd-target repo in hook_entry
|
|
12
|
+
completed: true
|
|
13
|
+
- id: task-0764566491
|
|
14
|
+
title: Focused tests + golden refresh
|
|
15
|
+
completed: true
|
|
16
|
+
created_at: '2026-08-30T04:48:13+00:00'
|
|
17
|
+
updated_at: '2026-09-01T09:06:16+00:00'
|
|
18
|
+
completed_at: '2026-08-30T04:52:32+00:00'
|
|
19
|
+
archived_at: '2026-09-01T09:06:16+00:00'
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
schema_version: 1
|
|
2
|
+
id: HOTFIX-slim-20260901469666ef23a8
|
|
3
|
+
title: commit-gate misfires on docs/meta-only commits
|
|
4
|
+
spec_path: docs/specs/HOTFIX-slim-20260901469666ef23a8.md
|
|
5
|
+
status: archived
|
|
6
|
+
tasks:
|
|
7
|
+
- id: task-b98663e6af
|
|
8
|
+
title: 'Fix three defects: doc-only patterns miss repo meta files (.gitignore/.claude/.codex);
|
|
9
|
+
full-suite target hard-codes tests/unit/ with no tests/ fallback and counts exit
|
|
10
|
+
4/5 as RED; missing pytest module (pipx fallback) reads as RED instead of GateUnavailable.
|
|
11
|
+
From harness-backend 2026-09-01 friction.'
|
|
12
|
+
completed: true
|
|
13
|
+
created_at: '2026-09-01T08:29:59+00:00'
|
|
14
|
+
updated_at: '2026-09-01T09:06:16+00:00'
|
|
15
|
+
completed_at: '2026-09-01T08:50:16+00:00'
|
|
16
|
+
archived_at: '2026-09-01T09:06:16+00:00'
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
schema_version: 1
|
|
2
|
+
id: STORY-slim-202609025bc9246b6a54
|
|
3
|
+
title: commit-gate 计数解析鲁棒性:中和 repo addopts 干扰 + 真实失败文案
|
|
4
|
+
spec_path: docs/specs/STORY-slim-202609025bc9246b6a54.md
|
|
5
|
+
status: archived
|
|
6
|
+
tasks:
|
|
7
|
+
- id: task-941986cb31
|
|
8
|
+
title: R1 计数可得性——gate 的 pytest 调用不受 repo addopts 干扰(2026-09-02 harness-backend 事故:addopts=-q
|
|
9
|
+
与 gate -q 叠加成 -qq,pytest 9 在 -qq 下不打印 summary 行→解析永远全 0);候选 -o addopts= 清空 / --junitxml
|
|
10
|
+
机器可读计数,需权衡 addopts 中必要运行参数(如 --asyncio-mode=auto)不可被清空
|
|
11
|
+
completed: true
|
|
12
|
+
- id: task-9ec4d9781d
|
|
13
|
+
title: R2 文案真实化——rc≠0 且计数全 0 时按 exit code 报因:5=没跑、4=usage/collection、其余=跑了但 summary
|
|
14
|
+
不可解析(附 addopts 干扰提示),不再一律报 no tests collected
|
|
15
|
+
completed: true
|
|
16
|
+
- id: task-b654f21aa3
|
|
17
|
+
title: R3 回归测试——fixture repo 带 pyproject addopts=-q 复现事故场景,断言修复后计数解析正确、文案与事实一致
|
|
18
|
+
completed: true
|
|
19
|
+
- id: task-f95e26ae4b
|
|
20
|
+
title: R4 全量套件绿 + CHANGELOG/README 更新
|
|
21
|
+
completed: true
|
|
22
|
+
created_at: '2026-09-02T09:29:38+00:00'
|
|
23
|
+
updated_at: '2026-09-02T10:03:21+00:00'
|
|
24
|
+
completed_at: '2026-09-02T09:54:10+00:00'
|
|
25
|
+
archived_at: '2026-09-02T10:03:21+00:00'
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# HOTFIX-slim-20260830bbb5bc219d35: gate CLI syntax mismatch + push-gate cross-repo blind spot
|
|
2
|
+
|
|
3
|
+
| Field | Value |
|
|
4
|
+
|-------|-------|
|
|
5
|
+
| ID | HOTFIX-slim-20260830bbb5bc219d35 |
|
|
6
|
+
| Status | Done |
|
|
7
|
+
| Priority | P1 |
|
|
8
|
+
| Release | 2.25.1 |
|
|
9
|
+
|
|
10
|
+
## Background
|
|
11
|
+
|
|
12
|
+
Two defects surfaced during the 2.25.0 release run (post-tag, so they
|
|
13
|
+
ship in 2.25.1):
|
|
14
|
+
|
|
15
|
+
1. **auth-gate teaches a CLI form that does not exist.** The block
|
|
16
|
+
message (and the L1 Override Protocol prompt text, and
|
|
17
|
+
critical-rules.md on the user's machine) instructs
|
|
18
|
+
`pactkit gate authorize <scope>` — but the `gate` parser accepts only
|
|
19
|
+
the bare positional `pactkit gate <scope>`. The documented form fails
|
|
20
|
+
with "unrecognized arguments". Unit tests call `auth_gate.authorize()`
|
|
21
|
+
directly, so the CLI layer was never exercised. Every internal user
|
|
22
|
+
hits this on their first external-effect command.
|
|
23
|
+
2. **push-gate evaluates the wrong repository for cross-repo commands.**
|
|
24
|
+
`cd ~/other-repo && git push` is judged against the SESSION cwd's
|
|
25
|
+
enforcement config (payload `cwd`), not the target repo's — observed
|
|
26
|
+
live when the plugin-repo push was allowed by pactkit's own
|
|
27
|
+
`allow_direct_push: true` although the plugin repo has no config.
|
|
28
|
+
|
|
29
|
+
## Fix
|
|
30
|
+
|
|
31
|
+
1. `cli.py`: `gate` accepts both `pactkit gate authorize <scope>` and
|
|
32
|
+
`pactkit gate <scope>` (positional `scope` becomes `nargs="*"`; an
|
|
33
|
+
`authorize` keyword is normalized away). Help text documents both.
|
|
34
|
+
All existing message/prompt text becomes correct as-is.
|
|
35
|
+
2. `commit_gate.py`: `_command_root()` resolves the last `cd <dir>`
|
|
36
|
+
prefix target in the command (absolute, or relative to the payload
|
|
37
|
+
root; non-dirs ignored) and `hook_entry` evaluates gates against that
|
|
38
|
+
root — a `cd`-prefixed command is judged by the repo it operates on.
|
|
39
|
+
|
|
40
|
+
Verification: focused unit tests for both behaviors + full suite +
|
|
41
|
+
regenerated `gate.txt` help golden. Push to main only; no release, no
|
|
42
|
+
version bump, no adapter/plugin/site sync (deferred to 2.25.1).
|