pactkit 2.24.2__tar.gz → 2.25.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pactkit-2.24.2 → pactkit-2.25.1}/CHANGELOG.md +31 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/PKG-INFO +21 -5
- {pactkit-2.24.2 → pactkit-2.25.1}/README.md +18 -2
- pactkit-2.25.1/docs/architecture/governance/lessons/LESSON-20260828102433-81cd3e00a0.md +10 -0
- pactkit-2.25.1/docs/architecture/governance/lessons/LESSON-20260830034504-4f7d0f8c58.md +10 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/rules.md +1 -1
- pactkit-2.25.1/docs/product/stories/HOTFIX-slim-20260828ee6cde3108fb.yaml +13 -0
- pactkit-2.25.1/docs/product/stories/HOTFIX-slim-20260830bbb5bc219d35.yaml +19 -0
- pactkit-2.25.1/docs/product/stories/HOTFIX-slim-20260901469666ef23a8.yaml +16 -0
- pactkit-2.25.1/docs/product/stories/STORY-slim-20260828897396a935ab.yaml +31 -0
- pactkit-2.25.1/docs/product/stories/STORY-slim-202608289e83eeb30df4.yaml +31 -0
- pactkit-2.25.1/docs/product/stories/STORY-slim-20260828d43fae4edbb6.yaml +22 -0
- pactkit-2.25.1/docs/product/stories/STORY-slim-20260830c65491123af1.yaml +28 -0
- pactkit-2.25.1/docs/specs/HOTFIX-slim-20260828ee6cde3108fb.md +40 -0
- pactkit-2.25.1/docs/specs/HOTFIX-slim-20260830bbb5bc219d35.md +42 -0
- pactkit-2.25.1/docs/specs/HOTFIX-slim-20260901469666ef23a8.md +55 -0
- pactkit-2.25.1/docs/specs/STORY-slim-20260828897396a935ab.md +246 -0
- pactkit-2.25.1/docs/specs/STORY-slim-202608289e83eeb30df4.md +264 -0
- pactkit-2.25.1/docs/specs/STORY-slim-20260828d43fae4edbb6.md +155 -0
- pactkit-2.25.1/docs/specs/STORY-slim-20260830c65491123af1.md +178 -0
- pactkit-2.25.1/docs/test_cases/STORY-slim-20260828897396a935ab_case.md +56 -0
- pactkit-2.25.1/docs/test_cases/STORY-slim-20260830c65491123af1_case.md +43 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/pyproject.toml +2 -2
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/__init__.py +1 -1
- pactkit-2.25.1/src/pactkit/auth_gate.py +144 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/cleaners.py +35 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/cli.py +76 -4
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/commit_gate.py +482 -53
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/config.py +48 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/enforcement.py +89 -4
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/prompts/commands.py +4 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/prompts/rules.py +17 -2
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/regression.py +6 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/run_events.py +64 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/run_stats.py +66 -4
- pactkit-2.25.1/src/pactkit/secrets_gate.py +83 -0
- pactkit-2.25.1/src/pactkit/session_gate.py +54 -0
- pactkit-2.25.1/src/pactkit/tamper_guard.py +243 -0
- pactkit-2.25.1/src/pactkit/utils.py +92 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/__root__.txt +4 -2
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/commit-gate.txt +3 -1
- pactkit-2.25.1/tests/fixtures/cli_help_golden/gate.txt +16 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/config_golden/copy_claude.json +12 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/config_golden/copy_codex.json +12 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/config_golden/copy_github.json +12 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/config_golden/empty.json +12 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/config_golden/full_legacy.json +12 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/config_golden/minimal.json +12 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/config_golden/unknown_keys.json +12 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_commit_gate.py +40 -14
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_constitution_sharpening.py +5 -1
- pactkit-2.25.1/tests/unit/test_gate_telemetry.py +252 -0
- pactkit-2.25.1/tests/unit/test_hook_expansion.py +394 -0
- pactkit-2.25.1/tests/unit/test_hotfix_20260830_gate_cli.py +164 -0
- pactkit-2.25.1/tests/unit/test_hotfix_20260901_gate_docsonly.py +160 -0
- pactkit-2.25.1/tests/unit/test_push_gate.py +479 -0
- pactkit-2.25.1/tests/unit/test_stack_test_command.py +195 -0
- pactkit-2.24.2/src/pactkit/utils.py +0 -39
- {pactkit-2.24.2 → pactkit-2.25.1}/.codegraph/.gitignore +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/.coverage +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/.github/workflows/pactkit.yml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/.github/workflows/publish.yml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/.gitignore +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/AGENTS.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/CODE_OF_CONDUCT.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/CONTRIBUTING.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/LICENSE +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/SECURITY.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/archive/lessons_archive_202602.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/archive/lessons_archive_202603.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/archive/lessons_archive_202604.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/harness_audit.json +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260227-8e92f52c86.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260227-a21cacfde2.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260227-ccb19799ea.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260228-6e4b02ff08.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260228-b87245d5fc.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260302-8980b2512d.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260302-8f58fa2045.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260302-a3a1b7900e.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260303-3f65c0442b.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260304-23c605e495.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260304-8bd6c10219.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260305-129d1dea2a.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260305-48752d79c3.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260305-b9afdd8720.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260305-f93ee5b19f.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260306-7061390095.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260313-edf7807faf.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260316-091567c2bb.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260316-4661b3789a.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260316-7214dac8fc.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260317-3d8a855086.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260317-4ba69c35f0.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260317-6cd2a53ba5.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260317-7a0dd3407e.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260317-86927e3701.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260317-9a8025eaac.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260317-a0721cc066.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260317-a1f53d759b.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260317-a9f7897b36.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260317-ff430eaa29.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260318-fb0bcd928b.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260319-f320fbb5cc.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260320-b2d80c56b3.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260320-c102dbd6f8.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260320-e8f6ddae81.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260321-5e57da75b0.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260321-6a4a30628f.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260321-b5a58de3f9.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260321-e0138991ed.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260321-e49663fc95.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260322-4c0480e882.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260322-d1ece5c0d4.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260323-4bd30888ce.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260323-7a02b3eb85.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260323-8624e0d93a.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260323-a8faeea78c.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260324-075e3332b8.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260324-0f6f041a52.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260324-2dab5931de.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260324-8bcda73e9b.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260324-9e6238f0c8.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260324-a1cace9846.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260324-bf64dd9564.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260324-c344d7655c.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260324-e60c50dcc9.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260324-f5149caffe.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260325-1a5eeea04c.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-02460b22de.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-09de627b2b.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-204ea48f84.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-32e2fd3074.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-6c6dbfc365.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-7811ad7ff2.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-88e7123370.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-d2376010b1.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-e4f0eb8850.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-e68b8aa47f.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260326-fdd06ad981.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260327-e3c7f5abcb.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260330-eb1760def2.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260331-1b58a289ea.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260331-26e474753e.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260331-3028ab9cf5.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260331-350048862b.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260331-7d41cdf5a3.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260331-8e5558a077.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260331-c46df1c3b1.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260401-41515789f6.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260401-4453752dda.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260401-5a225a1c0a.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260401-90724b10f0.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260401-9e322eb76e.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260401-bd20019d3d.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260401-de035be681.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260401-f44c8f499e.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260401-fa52f596ff.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260402-5b063207c8.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260402-5e0913ec81.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260415-3d8b5e8f81.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260415-84219771ca.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260416-41d4564480.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260416-5cdc3cf53f.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260416-807c65a8e7.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260416-ade561c777.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260416-b78aaf129a.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260416-db8a5430a0.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260416-f5a765c496.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260417-f1d777e9c9.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260418-ee12f2ff0d.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260420-2260437be7.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260420-a35a083e29.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260420-fa7d958d56.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260421-309c998a10.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260422-6509ac4df0.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260422-8dd5ed6a24.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260423-b0890ad9c2.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260424-24cc1d5e19.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260424-39a99c887d.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260427-f7955d5775.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260507-7b75a5cab8.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260507-b26f97255d.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260525-1fe96d2ff4.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260525-717e18e190.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260525-df4853fa3f.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260526-4c230f3a9d.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260601-6d6b779a83.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260601-e65d3407ed.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260610-51c3cf895e.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260629-6171e54ac8.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260702-4616caa284.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260713-da6d40dcc0.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260723-d4c9801300.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260813-18efcf9687.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260813-1dc6e2e1c7.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260813-21d4da632f.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260817-3587ae1a22.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260817-5f08a6affa.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260817-800f717c9d.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260817-a2cd839a2d.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260822-9175485749.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260822105138-298451a42c.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260822105138-522c7e4af4.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260822105138-72cc1d0343.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260823015950-6b8cbea92e.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260823022240-d3570f57fb.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260823050717-9192db37f8.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260826072120-c6db5dd5b1.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260826074629-f5119ea78b.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260826080242-012107ada2.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260826082256-eff3747d60.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260827093143-3236113033.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260827095642-059a7e996b.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons/LESSON-20260827102057-e04522a6fc.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/lessons.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/architecture/governance/philosophy.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/assets/logo.png +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/e2e/journey.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/guides/codex-integration-preresearch.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/guides/tool-integration-checklist.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/archive/archive_202602.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/archive/archive_202603.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/archive/archive_202604.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/archive/archive_202605.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/archive/archive_202606.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/archive/archive_202607.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/archive/archive_202608.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/context.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/friction-log.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/harness-comparison-2026-08-27.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/prd.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/sprint_board.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/HOTFIX-slim-127.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/HOTFIX-slim-131.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/HOTFIX-slim-132.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-115.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-118.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-119.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-145.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-147.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-148.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-149.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-2026082381e832771d4e.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260823d854b0cf1875.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260823de7e85d6042a.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260825b1c83a046b4b.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-202608264cf429c75e22.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-2026082672b57c78fd67.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-202608267c3989223b4d.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-202608268fc379dbe6ef.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260826ac1f0bfe4148.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260826cb37edfdd4da.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260826ce35b77ce005.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260826f9492ab32c3d.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260827024e71df170f.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-2026082727cc4ab535e7.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-2026082730b5954cf538.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260827625b870eb7da.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-202608277ec1236a7b99.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260827833e7a200f9a.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260827855bf3efaec3.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-2026082799fa651655be.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260827c67e3add6af5.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260827d0ae0dfada51.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260827eddbe9669c87.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260827fb6291b717eb.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/product/stories/STORY-slim-20260827fc9de5542ad7.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-001.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-002.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-003.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-004.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-005.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-006.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-007.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-008.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-009.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-010.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-011.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-012.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-013.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-014.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-015.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-016.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-017.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-018.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-019.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-020.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-021.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-022.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-023.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-024.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-025.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-026.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-027.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-028.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-029.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-030.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-031.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-032.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-033.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-034.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-035.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-slim-001.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-slim-002.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-slim-003.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-slim-004.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-slim-005.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-slim-006.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-slim-089.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/BUG-slim-107.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-023.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-049.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-050.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-051.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-052.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-061.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-062.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-067.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-069.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-070.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-085.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-087.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-096.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-099.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-107.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-117.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-122.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-123.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-126.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-127.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-130.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-131.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/HOTFIX-slim-132.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-001.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-002.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-003.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-004.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-005.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-006.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-007.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-008.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-009.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-010.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-011.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-012.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-013.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-014.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-015.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-016.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-017.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-018.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-019.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-020.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-021.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-022.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-023.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-024.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-025.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-026.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-027.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-028.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-029.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-030.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-031.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-032.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-033.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-034.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-035.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-036.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-037.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-038.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-039.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-040.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-041.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-042.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-043.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-044.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-045.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-046.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-047.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-048.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-049.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-050.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-051.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-052.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-053.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-054.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-055.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-056.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-057.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-058.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-059.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-060.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-061.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-062.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-063.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-064.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-065.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-069.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-070.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-071.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-072.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-073.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-001.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-005.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-006.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-007.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-009.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-010.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-011.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-012.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-013.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-014.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-015.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-016.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-017.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-018.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-019.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-020.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-021.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-022.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-023.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-024.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-028.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-029.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-030.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-031.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-032.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-033.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-034.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-035.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-036.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-037.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-038.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-039.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-040.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-041.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-042.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-043.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-044.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-045.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-046.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-047.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-048.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-049.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-050.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-051.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-052.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-053.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-054.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-055.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-056.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-057.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-058.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-059.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-060.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-063.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-066.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-067.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-068.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-069.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-070.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-071.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-072.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-073.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-074.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-075.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-076.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-077.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-078.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-079.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-080.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-081.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-082.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-083.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-084.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-086.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-088.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-089.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-090.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-091.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-092.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-093.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-094.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-095.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-097.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-098.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-099.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-100.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-101.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-102.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-103.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-104.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-105.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-106.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-107.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-108.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-109.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-110.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-111.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-112.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-113.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-114.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-115.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-116.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-118.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-119.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-120.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-121.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-124.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-125.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-126.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-127.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-128.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-129.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-132.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-133.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-134.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-135.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-136.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-137.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-138.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-139.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-140.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-141.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-142.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-143.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-144.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-145.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-146.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-147.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-148.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-149.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-2026082381e832771d4e.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-20260823d854b0cf1875.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-20260823de7e85d6042a.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-2026082466c8670d9655.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-20260824dd23a0ed3b4c.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-20260825b1c83a046b4b.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-202608264cf429c75e22.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-2026082672b57c78fd67.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-202608267c3989223b4d.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-202608268fc379dbe6ef.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-20260826ac1f0bfe4148.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-20260826cb37edfdd4da.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-20260826ce35b77ce005.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-20260826f9492ab32c3d.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-20260827024e71df170f.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-20260827eddbe9669c87.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/specs/STORY-slim-20260827fc9de5542ad7.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/BUG-001_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/BUG-002_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-028_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-029_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-031_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-032_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-033_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-034_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-135_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-136_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-137_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-138_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-139_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-140_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-141_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-142_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-143_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-144_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-146_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-147_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-148_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-149_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-2026082381e832771d4e_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260823d854b0cf1875_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260823de7e85d6042a_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260825b1c83a046b4b_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-202608264cf429c75e22_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-2026082672b57c78fd67_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-202608267c3989223b4d_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-202608268fc379dbe6ef_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260826ac1f0bfe4148_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260826cb37edfdd4da_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260826ce35b77ce005_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260826f9492ab32c3d_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260827024e71df170f_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260827eddbe9669c87_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/docs/test_cases/STORY-slim-20260827fc9de5542ad7_case.md +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/opencode.json +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/__main__.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/audit.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/backfill.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/context_gen.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/continuation.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/coverage_gate.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/delivery_evidence.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/deploy_manifest.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/deployment_transaction.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/deps.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/doctor.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/done_verify.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/garden.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/generators/__init__.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/generators/claude_md.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/generators/command_ownership.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/generators/deploy_base.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/generators/deployer.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/governance.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/graph_query.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/guards.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/host_continuation.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/id_generator.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/invariants.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/issue_sync.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/lazy_visualize.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/legacy/__init__.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/legacy/host_continuation.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/legacy/usage.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/legacy/workflow_engine.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/lessons.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/lint_runner.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/observe.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/portable_methods.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/profiles.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/project_root.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/prompts/__init__.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/prompts/agents.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/prompts/guides.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/prompts/references.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/prompts/skills.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/prompts/workflows.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/protocols.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/risk_profile.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/schemas.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/scripts.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/sec_scope.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/skills/__init__.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/skills/analyzers/__init__.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/skills/analyzers/go_analyzer.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/skills/analyzers/java_analyzer.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/skills/analyzers/python_analyzer.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/skills/analyzers/ts_analyzer.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/skills/board.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/skills/interface_summary.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/skills/report.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/skills/scaffold.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/skills/spec_linter.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/skills/visualize.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/spec_graph.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/spec_preflight.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/spec_status.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/test_mapper.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/validators.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/workflow_engine.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/workflow_registry.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/src/pactkit/workflow_validators.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/conftest.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/e2e/__init__.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/e2e/cli/__init__.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/e2e/cli/test_cli_e2e.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/e2e/cli/test_story_slim146_cli.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/e2e/cli/test_story_slim147_workflow_cli.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/e2e/cli/test_story_slim148_governance_cli.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/e2e/cli/test_story_slim149_query_cli.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/agent_parser/agents_dir/researcher.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/agent_parser/agents_dir/writer.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/agent_parser/langgraph_app.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/agent_parser/mcp_settings.json +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/api_call_parser/axios_style.tsx +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/api_call_parser/dynamic.tsx +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/api_call_parser/page.tsx +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/audit.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/backfill-release.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/board.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/clean.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/context.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/continuation.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/coverage-gate.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/deps.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/doctor.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/done-verify.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/garden.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/generate-id.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/governance.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/guard.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/init.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/interface-summary.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/invariants-refresh.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/issue-sync.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/lesson-append.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/lint-context.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/lint-lessons.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/lint-testcase.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/lint.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/observe.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/query.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/redetect-stack.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/regression.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/report.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/schema.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/sec-scope.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/spec-graph.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/spec-lint.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/spec-preflight.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/spec-status.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/stats.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/sync.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/test-map.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/update.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/upgrade.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/version.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/visualize.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/work-unit.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/cli_help_golden/workflow.txt +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/config_golden/copy_claude.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/config_golden/copy_codex.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/config_golden/copy_github.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/config_golden/empty.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/config_golden/full_legacy.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/config_golden/minimal.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/fixtures/config_golden/unknown_keys.yaml +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/integration/__init__.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/integration/test_deploy_classic.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_agent_features.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_agent_frontmatter.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_agents_enrichment.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_audit.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_blast_radius.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_board_bug027.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_board_sections.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug001_skill_path.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug002_plugin_paths.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug003_multi_import.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug004_dead_set.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug005_archive_taskless.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug006_scan_excludes.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug007_stale_trace_refs.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug008_stale_command_refs.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug009_project_config_backfill.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug010_rewrite_yaml.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug011_stale_refs.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug012_call_graph_filter.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug013_config_single_source.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug014_version_hygiene.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug017_project_init_playbook.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug018_issue_tracker_verification.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug019_venv_deployment.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug020_claude_md_backup.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug025_release_delegation.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug026_version_sync.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug028_ghost_refs.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug029_stack_detection_fallback.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug030_spec_lint_cli.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug031_docstring_accuracy.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug034_plan_metadata_template.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug_021.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug_022.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug_023.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug_024.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug_slim001_env_detection.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug_slim002_instruction_collision.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug_slim003.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug_slim004.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug_slim005.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug_slim006.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_bug_slim089_global_claude_md.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_check_command.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_check_extensions_072_073.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_check_playbook_072_073.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_cli_help_surface.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_codex_hook_channel.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_command_frontmatter.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_command_ownership_v2.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_command_visualize_modes.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_complexity.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_config.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_config_auto_merge.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_config_sync_precedence.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_context_gen.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_continuation_hardening.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_create_skill.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_cross_flow_matrix.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_deploy_base.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_deploy_ownership_safety.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_deployer_cleanup.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_deployer_plugin.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_deployment_transaction.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_deps.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_design_command.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_done_gates.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_done_verify.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_draw_prompt.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_draw_references.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_drawio_mcp.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_enforcement.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_engine_robustness.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_garden.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_gate_fail_closed.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_home_path_fix.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_hotfix_command.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_hotfix_legacy_constitution.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_init_guard.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_init_playbook_074.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_interface_summary.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_lang_profiles.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_layer_violations.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_legacy_engine_freeze.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_lessons_rotation_075.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_list_stories.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_mcp_integration.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_model_config.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_modular_constitution.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_monorepo_detect.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_multi_prefix.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_observe.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_pdca_semantics_v2.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_pdca_slim.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_profiles.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_project_root.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_project_visibility.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_prompt_cli_contract.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_prompt_cli_refs.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_prompt_quality_075.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_prompt_structural_invariants.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_prompts_package.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_release.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_release_field.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_release_v110.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_render_prompt.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_report_parser.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_report_unified.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_resolve_scope.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_review_command.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_rule_registry_architecture.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_rules_enrichment.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_run_events.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_run_stats.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_scaffold.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_scaffold_developer_prefix.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_schemas.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_script_extraction.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_selective_deploy.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_session_context.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_skill_structure.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_skills_enrichment.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_slim_deps_088.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_smart_regression.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_solution_design_rule.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_spec_preflight.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_sprint_command.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_stack_references.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_status_command.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_statusline.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story014_release.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story015_ci_lint_gate.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story016_claude_md.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story017_init_claude_md.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story018_arch_staleness.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story019_bailout.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story020_horizon.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story021_rfc.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story022_decision_tree.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story023_test_quality.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story024_native_agent.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story025_ci_pipeline.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story026_issue_tracker.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story028_rule_scoping.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story029_doctor.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story030_lint.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story031_git_init_guard.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story032_greenfield_redirect.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story033_config_backfill.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story034_plan_config_refresh.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story035_readme_docs.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story037_regression_fix.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story038_call_graph_update.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story039_venv_config.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story040_layered_claude_md.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story042_spec_linter.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story043_active_clarify.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story044_consistency_check.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story045_auto_pr.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story047_enterprise_flags.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story048_worktree_isolation.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story049_community_standards.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story050_doc_only_shortcut.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story051_workflow_streamlining.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story052_conditional_github_release.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story053_impact_regression.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story055_commands.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story055_config.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story055_spec_linter.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story056_commands.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story056_config.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story057_implicit_cleanup.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story058_opencode_extraction.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story058_routing_fix.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story059_codex_removal.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story060_init_hang.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story061_remove_thinking.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story062_mcp_recommendations.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story063_prompt_slimming.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story064_venv_local_md.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story065_sprint_model.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story072_developer_prefix.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story106_lateral_scan.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story133_debug_skill.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_pdca_host_capsules.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_pdca_semantics_v2.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim009_lazy_rules.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim010_dry_refactor.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim011_command_rules.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim012_ci.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim014_clean.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim014_context.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim014_guard.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim014_lazy_viz.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim014_next_id.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim014_regression.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim014_sec_scope.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim014_validators.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim015_doctor.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim016_testmap_lint.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim017.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim018.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim019_plan_subphases.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim020_explore_stall_fix.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim021.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim022.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim023.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim024.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim025.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim026.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim027.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim028.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim029.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim030.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim031.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim032.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim033.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim034.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim035.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim036.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim037.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim038.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim039.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim040.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim041.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim042.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim043.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim044.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim045.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim046.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim047.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim048.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim049.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim051.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim052.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim053.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim054.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim055.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim056.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim060_codex_profile.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim063.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim065.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim076_multistack.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim077_monorepo_stack.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim078.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim079.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim080.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim081.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim082.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim083.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim084.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim095.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim098_pdca_nudge.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim099_act_context_ref.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim102_version_marker.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim104_should_semantics.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim107.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim109_journey_spec.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim111_playwright_assertion.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim112_rules_split.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim114_journey_sync.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim119.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim120.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim121.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim125.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim126.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim127_managed_block.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim128_engineering_concerns.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim132.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim134_no_model_in_frontmatter.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim135_config_schema.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim139_skill_manifest.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim141_manifest_hash.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim142_all_target_isolation.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim143_spec_graph.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim144_wave_mode.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim145.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim146.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim147.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim148.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim149.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim150.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim_stop_hook.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_story_slim_work_units.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_tools.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_topology_parsers_066.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_update_task.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_visualize_call_nested.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_visualize_chain_fix.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_visualize_modes.py +0 -0
- {pactkit-2.24.2 → pactkit-2.25.1}/tests/unit/test_visualize_multilang_chain.py +0 -0
|
@@ -1,5 +1,36 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.25.1] - 2026-09-01
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
- **`pactkit gate authorize <scope>` parses as documented** — 2.25.0's parser accepted only the bare positional form (`pactkit gate <scope>`), so the form printed by every block message and the L1 Override Protocol failed with "unrecognized arguments"; both forms now parse (HOTFIX-slim-20260830bbb5bc219d35).
|
|
7
|
+
- **Cross-repo commands are judged by the repo they operate on** — `cd <other-repo> && git push` was evaluated against the session cwd's enforcement config; `hook_entry` now resolves the last `cd` target before the git command and evaluates gates against that repository (HOTFIX-slim-20260830bbb5bc219d35).
|
|
8
|
+
- **commit-gate no longer misfires on docs/meta-only commits** — three defects that blocked a zero-code design-baseline commit three times and forced test-writing before allowing it (HOTFIX-slim-20260901469666ef23a8): `.gitignore`/`.claude/**`/`.codex/**` are now doc-only (repo/agent metadata carries no runtime code and no longer disqualifies the change set from the skip path); the full-suite target falls back from `tests/unit/` to `tests/` when only a flat layout exists, and a zero-collected run reports "no tests collected" instead of implying failures (still RED — the TDD contract is unchanged); "No module named pytest" from the venv-less fallback interpreter raises `GateUnavailable` → WARN + allow, matching the missing-binary path (R3 self-lock protection).
|
|
9
|
+
|
|
10
|
+
## [2.25.0] - 2026-08-30
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **Protected-branch push gate** — `git push` to a protected branch (default `main`/`master`) is intercepted across all three channels (PreToolUse, codex hooks.json, git pre-push) and blocked with an actionable message: the sanctioned path (feature branch + PR), the human bypass (`PACTKIT_ALLOW_DIRECT_PUSH=1` via the `!` prefix), and the repo-owner config (`enforcement.allow_direct_push`). Direct commits on protected branches block by default instead of merely running the full suite; `--no-verify` is no longer a free PreToolUse bypass (the agent can type it; only the env var proves a human channel). Every block and bypass is audited under `push_gate`.
|
|
14
|
+
- **Tamper guard** — agent modification of enforcement artifacts is blocked: `.git/hooks/**`, `.pactkit/enforcement/**`, `.codex/hooks.json` fully; `.claude/settings.json` only when the edit removes a gate registration. Bypass: `PACTKIT_ALLOW_CONFIG_EDIT=1` or `enforcement.tamper_guard: false`.
|
|
15
|
+
- **L1 Hard-Rule Override Protocol** — core rules now state that L1 rules are never waivable in conversation: a conflicting user instruction is refused (not obeyed), and editing rules/hooks/gate config to comply is itself L1 tampering. Sanctioned channels: do it the sanctioned way, the human runs the command via `!`, or the repo owner changes the config.
|
|
16
|
+
- **Stack-aware commit-gate test commands** — the gate runs the detected stack's real suite (`npm test` / `go test ./...` / `mvn|gradle test`) instead of forcing pytest onto Node/Go/Java repos; `pactkit doctor` probes report stack-specific availability. Python keeps the venv-aware pytest path verbatim (monorepos included).
|
|
17
|
+
- **Session context hooks** — `pactkit gate --hook session-start` regenerates `.pactkit/context.md` and prints it (SessionStart injects stdout as context; fires post-compaction too), `--hook pre-compact` refreshes state as a side effect and never blocks compaction. Cold-start orientation is deterministic instead of prompt-hoped.
|
|
18
|
+
- **Spec tampering guard** — during Act, editing a spec with an active preflight receipt is blocked ("Spec is Law", L1); Plan-phase spec writing is unaffected (no receipt exists yet). Bypass: `PACTKIT_ALLOW_SPEC_EDIT=1` or `pactkit gate authorize spec_edit`.
|
|
19
|
+
- **Authorization gate** — external-effect commands (`gh pr create`, `gh release create|delete|upload`, `gh repo create|delete`, `npm`/`pnpm`/`yarn`/`cargo publish`, `twine upload`, `docker push`) block until the user authorizes: ask first, then `pactkit gate authorize <scope>` opens a short-TTL audited window; the strict human channel is `PACTKIT_AUTHORIZED=1` via `!`. Read-only variants never match. Honest threat model: prevents forgetting, not malice — all uses leave records.
|
|
20
|
+
- **Secrets gate** — Bash commands containing literal credential material (AWS `AKIA…`, `ghp_`/`github_pat_`, `glpat-`, `xox?-`, `sk-…`, private keys, `password=`/`pwd=`/`passwd=` with a literal value) block by default; env-var indirection (`password=$DB_PASS`) is exempt as the sanctioned pattern. Bypass: `PACTKIT_ALLOW_SECRET=1` or `enforcement.secrets_gate: false`.
|
|
21
|
+
- **`pactkit gate` command** — one entry for session hooks and `authorize <scope> [--ttl-minutes N]` (token lives in the tamper-guard-protected `.pactkit/enforcement/`).
|
|
22
|
+
- **Gate telemetry** — gate blocks, authorizations, and Skill invocations feed the run-event stream (`gate_blocked` / `authorization_asked` / `authorization_granted` / `command_invoked`) so `pactkit stats` reflects real direct-PDCA usage, not only the workflow engine: per-gate block counts, per-command invocation counts, and the authorization pair at project scope. Telemetry is best-effort and never blocks a gate verdict.
|
|
23
|
+
- **`enforcement` config section** — `protected_branches` (default `[main, master]`), `allow_direct_push` (false), `tamper_guard` (true), `spec_guard` (true), `auth_gate` (true), `secrets_gate` (true), `auth_ttl_minutes` (30). Missing/malformed values fall back to safe defaults.
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
- **Git hooks no longer lock out machines without pactkit** — generated pre-commit/pre-push scripts probe `command -v pactkit` and WARN + allow when the binary is missing (was: exit 127 blocking every commit for teammates/CI in non-Python teams).
|
|
27
|
+
- **Audit records no longer persist credentials** — command-derived text is redacted (`[REDACTED:{pattern}]`) before any persistence (enforcement reasons, event details, stderr); `pactkit clean` scrubs legacy records once. Found in the 2026-08-30 fleet inspection: a blocked `PGPASSWORD=…` command had written the literal password into the on-disk audit record.
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
30
|
+
- **Behavior change (intentional)**: direct commits on `main`/`master` that previously "just ran more tests" now block by default — set `enforcement.allow_direct_push: true` (PactKit's own repo does) or use the bypass env var.
|
|
31
|
+
- `pactkit stats` output gains a project-scoped `Gate telemetry` section (JSON: `gate_telemetry`).
|
|
32
|
+
- Constitution baseline: core protocol word budget 735→900 (L1 Override Protocol + authorize channel).
|
|
33
|
+
|
|
3
34
|
## [2.24.2] - 2026-08-27
|
|
4
35
|
|
|
5
36
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: pactkit
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.25.1
|
|
4
4
|
Summary: Spec-driven agentic DevOps toolkit for AI coding assistants
|
|
5
5
|
Project-URL: Homepage, https://pactkit.dev
|
|
6
6
|
Project-URL: Repository, https://github.com/pactkit/pactkit-public
|
|
@@ -23,7 +23,7 @@ Classifier: Topic :: Software Development :: Quality Assurance
|
|
|
23
23
|
Requires-Python: >=3.10
|
|
24
24
|
Requires-Dist: pyyaml>=6.0
|
|
25
25
|
Provides-Extra: all
|
|
26
|
-
Requires-Dist: pactkit-codex<2.
|
|
26
|
+
Requires-Dist: pactkit-codex<2.26.0,>=2.25.0; extra == 'all'
|
|
27
27
|
Requires-Dist: pactkit-opencode>=2.9.0; extra == 'all'
|
|
28
28
|
Requires-Dist: ruff>=0.4; extra == 'all'
|
|
29
29
|
Requires-Dist: tree-sitter-go>=0.25; extra == 'all'
|
|
@@ -31,7 +31,7 @@ Requires-Dist: tree-sitter-java>=0.23; extra == 'all'
|
|
|
31
31
|
Requires-Dist: tree-sitter-typescript>=0.23; extra == 'all'
|
|
32
32
|
Requires-Dist: tree-sitter>=0.25; extra == 'all'
|
|
33
33
|
Provides-Extra: codex
|
|
34
|
-
Requires-Dist: pactkit-codex<2.
|
|
34
|
+
Requires-Dist: pactkit-codex<2.26.0,>=2.25.0; extra == 'codex'
|
|
35
35
|
Provides-Extra: lint
|
|
36
36
|
Requires-Dist: ruff>=0.4; extra == 'lint'
|
|
37
37
|
Provides-Extra: opencode
|
|
@@ -280,7 +280,7 @@ PactKit deploys 10 skills (3 scripted + 7 prompt-only), auto-invoked by commands
|
|
|
280
280
|
|
|
281
281
|
## CLI Subcommands
|
|
282
282
|
|
|
283
|
-
PactKit ships
|
|
283
|
+
PactKit ships 45 deterministic CLI subcommands — operations that were previously delegated to AI prompts are now enforced in Python code (the "C" in P.A.C.T.):
|
|
284
284
|
|
|
285
285
|
| Command | Purpose |
|
|
286
286
|
|---------|---------|
|
|
@@ -312,11 +312,27 @@ PactKit ships 36 deterministic CLI subcommands — operations that were previous
|
|
|
312
312
|
| `pactkit lint-lessons` | Validate lessons.md structure |
|
|
313
313
|
| `pactkit lint-testcase` | Validate test case structure |
|
|
314
314
|
| `pactkit done-verify` | Archive honesty gate: requirement→test evidence chain, checkbox↔case consistency, status machine (blocks `/project-done` on FAIL) |
|
|
315
|
-
| `pactkit commit-gate` | Pre-commit test gate with skip≠pass transparency; PreToolUse hook + git pre-commit channels, auto-installed per format |
|
|
315
|
+
| `pactkit commit-gate` | Pre-commit test gate with skip≠pass transparency; stack-aware (pytest/npm test/go test/mvn/gradle); PreToolUse hook + git pre-commit/pre-push channels, auto-installed per format |
|
|
316
|
+
| `pactkit gate` | Session context hooks (`--hook session-start/pre-compact`) + external-effect authorization (`pactkit gate <scope> [--ttl-minutes N]`) |
|
|
316
317
|
| `pactkit deps` | External dependency check (`deps check`) and guided install (`deps install`) for node/codegraph/gh |
|
|
317
318
|
| `pactkit schema config` | List every pactkit.yaml key with default, effective value, and source |
|
|
318
319
|
| `pactkit sync` | Sync codegraph index |
|
|
319
320
|
|
|
321
|
+
### Enforcement Gates (2.25.0)
|
|
322
|
+
|
|
323
|
+
The hook layer enforces the rules prompt text can only state — protected branches, specs, credentials, and external effects survive a conflicting instruction instead of losing to it:
|
|
324
|
+
|
|
325
|
+
| Gate | Blocks | Bypass (human/config only) |
|
|
326
|
+
|------|--------|---------------------------|
|
|
327
|
+
| `push_gate` | Direct push to a protected branch (default `main`/`master`) | `PACTKIT_ALLOW_DIRECT_PUSH=1` or `enforcement.allow_direct_push` |
|
|
328
|
+
| `commit_gate` | Commits on protected branches (default) and RED test suites | same as push_gate; `develop` keeps the full-suite rule |
|
|
329
|
+
| `spec_guard` | Editing a spec that has an active preflight receipt (Spec is Law during Act) | `PACTKIT_ALLOW_SPEC_EDIT=1` or `pactkit gate spec_edit` |
|
|
330
|
+
| `auth_gate` | External-effect commands (PR/release/publish/repo) until the user confirms | `pactkit gate <scope>` TTL token or `PACTKIT_AUTHORIZED=1` |
|
|
331
|
+
| `secrets_gate` | Literal credential material in commands (env-var indirection is exempt) | `PACTKIT_ALLOW_SECRET=1` |
|
|
332
|
+
| `tamper_guard` | Modifying enforcement artifacts (hooks, gate registrations, audit records) | `PACTKIT_ALLOW_CONFIG_EDIT=1` |
|
|
333
|
+
|
|
334
|
+
All blocks/bypasses are audited (`.pactkit/enforcement/`) and feed `pactkit stats` as gate telemetry (per-gate block counts, per-command invocation counts, authorization pairs) — the friction data that decides what to tune next.
|
|
335
|
+
|
|
320
336
|
## Deployment Architecture
|
|
321
337
|
|
|
322
338
|
PactKit supports three deployment formats:
|
|
@@ -235,7 +235,7 @@ PactKit deploys 10 skills (3 scripted + 7 prompt-only), auto-invoked by commands
|
|
|
235
235
|
|
|
236
236
|
## CLI Subcommands
|
|
237
237
|
|
|
238
|
-
PactKit ships
|
|
238
|
+
PactKit ships 45 deterministic CLI subcommands — operations that were previously delegated to AI prompts are now enforced in Python code (the "C" in P.A.C.T.):
|
|
239
239
|
|
|
240
240
|
| Command | Purpose |
|
|
241
241
|
|---------|---------|
|
|
@@ -267,11 +267,27 @@ PactKit ships 36 deterministic CLI subcommands — operations that were previous
|
|
|
267
267
|
| `pactkit lint-lessons` | Validate lessons.md structure |
|
|
268
268
|
| `pactkit lint-testcase` | Validate test case structure |
|
|
269
269
|
| `pactkit done-verify` | Archive honesty gate: requirement→test evidence chain, checkbox↔case consistency, status machine (blocks `/project-done` on FAIL) |
|
|
270
|
-
| `pactkit commit-gate` | Pre-commit test gate with skip≠pass transparency; PreToolUse hook + git pre-commit channels, auto-installed per format |
|
|
270
|
+
| `pactkit commit-gate` | Pre-commit test gate with skip≠pass transparency; stack-aware (pytest/npm test/go test/mvn/gradle); PreToolUse hook + git pre-commit/pre-push channels, auto-installed per format |
|
|
271
|
+
| `pactkit gate` | Session context hooks (`--hook session-start/pre-compact`) + external-effect authorization (`pactkit gate <scope> [--ttl-minutes N]`) |
|
|
271
272
|
| `pactkit deps` | External dependency check (`deps check`) and guided install (`deps install`) for node/codegraph/gh |
|
|
272
273
|
| `pactkit schema config` | List every pactkit.yaml key with default, effective value, and source |
|
|
273
274
|
| `pactkit sync` | Sync codegraph index |
|
|
274
275
|
|
|
276
|
+
### Enforcement Gates (2.25.0)
|
|
277
|
+
|
|
278
|
+
The hook layer enforces the rules prompt text can only state — protected branches, specs, credentials, and external effects survive a conflicting instruction instead of losing to it:
|
|
279
|
+
|
|
280
|
+
| Gate | Blocks | Bypass (human/config only) |
|
|
281
|
+
|------|--------|---------------------------|
|
|
282
|
+
| `push_gate` | Direct push to a protected branch (default `main`/`master`) | `PACTKIT_ALLOW_DIRECT_PUSH=1` or `enforcement.allow_direct_push` |
|
|
283
|
+
| `commit_gate` | Commits on protected branches (default) and RED test suites | same as push_gate; `develop` keeps the full-suite rule |
|
|
284
|
+
| `spec_guard` | Editing a spec that has an active preflight receipt (Spec is Law during Act) | `PACTKIT_ALLOW_SPEC_EDIT=1` or `pactkit gate spec_edit` |
|
|
285
|
+
| `auth_gate` | External-effect commands (PR/release/publish/repo) until the user confirms | `pactkit gate <scope>` TTL token or `PACTKIT_AUTHORIZED=1` |
|
|
286
|
+
| `secrets_gate` | Literal credential material in commands (env-var indirection is exempt) | `PACTKIT_ALLOW_SECRET=1` |
|
|
287
|
+
| `tamper_guard` | Modifying enforcement artifacts (hooks, gate registrations, audit records) | `PACTKIT_ALLOW_CONFIG_EDIT=1` |
|
|
288
|
+
|
|
289
|
+
All blocks/bypasses are audited (`.pactkit/enforcement/`) and feed `pactkit stats` as gate telemetry (per-gate block counts, per-command invocation counts, authorization pairs) — the friction data that decides what to tune next.
|
|
290
|
+
|
|
275
291
|
## Deployment Architecture
|
|
276
292
|
|
|
277
293
|
PactKit supports three deployment formats:
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 1
|
|
3
|
+
id: LESSON-20260828102433-81cd3e00a0
|
|
4
|
+
date: '2026-08-28'
|
|
5
|
+
story_id: STORY-slim-20260828897396a935ab
|
|
6
|
+
context: session_gate.py:pre_compact_entry
|
|
7
|
+
tags: []
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
SessionStart/PreCompact 契约不对称:前者 stdout 注入上下文且 compact 后触发,后者 stdout 只进 debug log——压缩前刷新状态文件必须做成副作用而非打印
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 1
|
|
3
|
+
id: LESSON-20260830034504-4f7d0f8c58
|
|
4
|
+
date: '2026-08-30'
|
|
5
|
+
story_id: STORY-slim-20260830c65491123af1
|
|
6
|
+
context: run_stats.py:collect_gate_telemetry
|
|
7
|
+
tags: []
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
计数器断线的根因是聚合端与发射端分离:run_stats 早已统计 authorization_asked/granted 但只有 workflow engine 发射——补遥测的正确切入点是 gate 拦截咽喉点(_record_gate/tamper_guard、check_command 各 gate)而非聚合层
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
## Invariants
|
|
17
17
|
|
|
18
|
-
1. All
|
|
18
|
+
1. All 4791+ tests must pass before any commit to `main`.
|
|
19
19
|
2. Specs (`docs/specs/`) are the source of truth — code conforms to specs, not the reverse.
|
|
20
20
|
3. CLI entry point is `pactkit` via `src/pactkit/cli.py:main`.
|
|
21
21
|
4. No runtime dependencies beyond `pyyaml`.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
schema_version: 1
|
|
2
|
+
id: HOTFIX-slim-20260828ee6cde3108fb
|
|
3
|
+
title: git hooks must not lock everyone out when pactkit is missing
|
|
4
|
+
spec_path: docs/specs/HOTFIX-slim-20260828ee6cde3108fb.md
|
|
5
|
+
status: archived
|
|
6
|
+
tasks:
|
|
7
|
+
- id: task-ce700c4d7c
|
|
8
|
+
title: PATH probe in generated pre-commit/pre-push scripts
|
|
9
|
+
completed: true
|
|
10
|
+
created_at: '2026-08-28T09:40:06+00:00'
|
|
11
|
+
updated_at: '2026-08-28T10:25:19+00:00'
|
|
12
|
+
completed_at: '2026-08-28T09:45:19+00:00'
|
|
13
|
+
archived_at: '2026-08-28T10:25:19+00:00'
|
|
@@ -0,0 +1,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,31 @@
|
|
|
1
|
+
schema_version: 1
|
|
2
|
+
id: STORY-slim-20260828897396a935ab
|
|
3
|
+
title: 'Hook coverage expansion: session context, spec/auth/secrets gates'
|
|
4
|
+
spec_path: docs/specs/STORY-slim-20260828897396a935ab.md
|
|
5
|
+
status: archived
|
|
6
|
+
tasks:
|
|
7
|
+
- id: task-88ef617a79
|
|
8
|
+
title: auth_gate module + TTL token
|
|
9
|
+
completed: true
|
|
10
|
+
- id: task-4fe2f5e463
|
|
11
|
+
title: secrets_gate credential patterns
|
|
12
|
+
completed: true
|
|
13
|
+
- id: task-3599c86e37
|
|
14
|
+
title: session_gate SessionStart/PreCompact
|
|
15
|
+
completed: true
|
|
16
|
+
- id: task-9ea9b99702
|
|
17
|
+
title: spec_guard in tamper_guard
|
|
18
|
+
completed: true
|
|
19
|
+
- id: task-dbae64cef8
|
|
20
|
+
title: dispatch wiring + install registration
|
|
21
|
+
completed: true
|
|
22
|
+
- id: task-58f20fc032
|
|
23
|
+
title: config/enforcement/cli extensions
|
|
24
|
+
completed: true
|
|
25
|
+
- id: task-fe4d5a6fb7
|
|
26
|
+
title: unit tests AC1-AC6
|
|
27
|
+
completed: true
|
|
28
|
+
created_at: '2026-08-28T10:12:42+00:00'
|
|
29
|
+
updated_at: '2026-08-28T10:25:19+00:00'
|
|
30
|
+
completed_at: '2026-08-28T10:23:54+00:00'
|
|
31
|
+
archived_at: '2026-08-28T10:25:19+00:00'
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
schema_version: 1
|
|
2
|
+
id: STORY-slim-202608289e83eeb30df4
|
|
3
|
+
title: Protected-branch push gate + L1 hard-rule override protocol
|
|
4
|
+
spec_path: docs/specs/STORY-slim-202608289e83eeb30df4.md
|
|
5
|
+
status: archived
|
|
6
|
+
tasks:
|
|
7
|
+
- id: task-ea1a074f1b
|
|
8
|
+
title: Extend hook_entry with git push matching + branch resolution + block/bypass
|
|
9
|
+
completed: true
|
|
10
|
+
- id: task-0697f734bc
|
|
11
|
+
title: Add enforcement config section to config.py
|
|
12
|
+
completed: true
|
|
13
|
+
- id: task-99362d5614
|
|
14
|
+
title: Install pre-push hook + tamper guard registration + ensure_gate_channel
|
|
15
|
+
completed: true
|
|
16
|
+
- id: task-642a8a34e6
|
|
17
|
+
title: Extend GATES + probe_push_gate + doctor output
|
|
18
|
+
completed: true
|
|
19
|
+
- id: task-0697d362c6
|
|
20
|
+
title: 'Upgrade prompts/rules.py: L1 entries + Override Protocol'
|
|
21
|
+
completed: true
|
|
22
|
+
- id: task-3957ff25e0
|
|
23
|
+
title: Write unit tests for AC1-AC8
|
|
24
|
+
completed: true
|
|
25
|
+
- id: task-4ae76ca85f
|
|
26
|
+
title: Set pactkit self-config allow_direct_push/tamper_guard
|
|
27
|
+
completed: true
|
|
28
|
+
created_at: '2026-08-28T07:32:17+00:00'
|
|
29
|
+
updated_at: '2026-08-28T10:25:19+00:00'
|
|
30
|
+
completed_at: '2026-08-28T09:37:23+00:00'
|
|
31
|
+
archived_at: '2026-08-28T10:25:19+00:00'
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
schema_version: 1
|
|
2
|
+
id: STORY-slim-20260828d43fae4edbb6
|
|
3
|
+
title: Stack-aware commit-gate test commands (node/go/java)
|
|
4
|
+
spec_path: docs/specs/STORY-slim-20260828d43fae4edbb6.md
|
|
5
|
+
status: archived
|
|
6
|
+
tasks:
|
|
7
|
+
- id: task-2f9bce4ef2
|
|
8
|
+
title: utils.stack_test_command marker resolution
|
|
9
|
+
completed: true
|
|
10
|
+
- id: task-f3ec4c758a
|
|
11
|
+
title: run_pytest stack dispatch + GateUnavailable
|
|
12
|
+
completed: true
|
|
13
|
+
- id: task-9fe787b9dd
|
|
14
|
+
title: probe_commit_gate stack-aware
|
|
15
|
+
completed: true
|
|
16
|
+
- id: task-8c24910f22
|
|
17
|
+
title: unit tests AC1-AC5
|
|
18
|
+
completed: true
|
|
19
|
+
created_at: '2026-08-28T09:43:04+00:00'
|
|
20
|
+
updated_at: '2026-08-28T10:25:19+00:00'
|
|
21
|
+
completed_at: '2026-08-28T09:45:19+00:00'
|
|
22
|
+
archived_at: '2026-08-28T10:25:19+00:00'
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
schema_version: 1
|
|
2
|
+
id: STORY-slim-20260830c65491123af1
|
|
3
|
+
title: Gate telemetry truthfulness + audit-record redaction
|
|
4
|
+
spec_path: docs/specs/STORY-slim-20260830c65491123af1.md
|
|
5
|
+
status: archived
|
|
6
|
+
tasks:
|
|
7
|
+
- id: task-e925929544
|
|
8
|
+
title: redact_command helper + persisted reason redaction
|
|
9
|
+
completed: true
|
|
10
|
+
- id: task-52f121ef11
|
|
11
|
+
title: EVENT_TYPES extension + gate event emission
|
|
12
|
+
completed: true
|
|
13
|
+
- id: task-14aa0a45c6
|
|
14
|
+
title: Skill matcher telemetry branch
|
|
15
|
+
completed: true
|
|
16
|
+
- id: task-c2d0f91cc2
|
|
17
|
+
title: run_stats gate/command counters
|
|
18
|
+
completed: true
|
|
19
|
+
- id: task-ca9189a213
|
|
20
|
+
title: clean-time legacy record scrub
|
|
21
|
+
completed: true
|
|
22
|
+
- id: task-31e039b53c
|
|
23
|
+
title: unit tests AC1-AC5
|
|
24
|
+
completed: true
|
|
25
|
+
created_at: '2026-08-30T03:29:00+00:00'
|
|
26
|
+
updated_at: '2026-08-30T03:46:05+00:00'
|
|
27
|
+
completed_at: '2026-08-30T03:35:56+00:00'
|
|
28
|
+
archived_at: '2026-08-30T03:46:05+00:00'
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# HOTFIX-slim-20260828ee6cde3108fb: git hooks must not lock everyone out when pactkit is missing
|
|
2
|
+
|
|
3
|
+
| Field | Value |
|
|
4
|
+
|-------|-------|
|
|
5
|
+
| ID | HOTFIX-slim-20260828ee6cde3108fb |
|
|
6
|
+
| Status | Done |
|
|
7
|
+
| Priority | P1 |
|
|
8
|
+
| Release | 2.25.0 |
|
|
9
|
+
|
|
10
|
+
## Background
|
|
11
|
+
|
|
12
|
+
The git hooks written by `install_git_hook` / `install_pre_push_hook`
|
|
13
|
+
(`src/pactkit/commit_gate.py`) call `exec pactkit commit-gate`. On a
|
|
14
|
+
machine without the pactkit binary on PATH (teammates, CI runners, docker
|
|
15
|
+
builds — the default state in Node.js teams that never install Python),
|
|
16
|
+
the shell exits 127 and git treats the failed hook as a block: **every
|
|
17
|
+
commit and push is locked out by a broken gate**, violating the R3
|
|
18
|
+
self-lock protection principle (a gate that cannot run must WARN and
|
|
19
|
+
allow, not masquerade as enforcement).
|
|
20
|
+
|
|
21
|
+
## Target
|
|
22
|
+
|
|
23
|
+
`src/pactkit/commit_gate.py` — `install_git_hook` (~:687) and
|
|
24
|
+
`install_pre_push_hook` (~:702): generated hook scripts gain a PATH probe
|
|
25
|
+
(`command -v pactkit`) that prints a WARN and exits 0 when the binary is
|
|
26
|
+
missing. The chain-onto-existing-hook path gets the same probe.
|
|
27
|
+
|
|
28
|
+
## Fix
|
|
29
|
+
|
|
30
|
+
Prepend to both generated scripts:
|
|
31
|
+
|
|
32
|
+
```sh
|
|
33
|
+
command -v pactkit >/dev/null 2>&1 || {
|
|
34
|
+
echo "[WARN] pactkit not on PATH — gate skipped (unavailable, not enforced)"
|
|
35
|
+
exit 0
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Verification: unit tests assert the probe is present in installed hook
|
|
40
|
+
scripts (`tests/unit/test_commit_gate.py`, `tests/unit/test_push_gate.py`).
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# HOTFIX-slim-20260830bbb5bc219d35: gate CLI syntax mismatch + push-gate cross-repo blind spot
|
|
2
|
+
|
|
3
|
+
| Field | Value |
|
|
4
|
+
|-------|-------|
|
|
5
|
+
| ID | HOTFIX-slim-20260830bbb5bc219d35 |
|
|
6
|
+
| Status | Done |
|
|
7
|
+
| Priority | P1 |
|
|
8
|
+
| Release | 2.25.1 |
|
|
9
|
+
|
|
10
|
+
## Background
|
|
11
|
+
|
|
12
|
+
Two defects surfaced during the 2.25.0 release run (post-tag, so they
|
|
13
|
+
ship in 2.25.1):
|
|
14
|
+
|
|
15
|
+
1. **auth-gate teaches a CLI form that does not exist.** The block
|
|
16
|
+
message (and the L1 Override Protocol prompt text, and
|
|
17
|
+
critical-rules.md on the user's machine) instructs
|
|
18
|
+
`pactkit gate authorize <scope>` — but the `gate` parser accepts only
|
|
19
|
+
the bare positional `pactkit gate <scope>`. The documented form fails
|
|
20
|
+
with "unrecognized arguments". Unit tests call `auth_gate.authorize()`
|
|
21
|
+
directly, so the CLI layer was never exercised. Every internal user
|
|
22
|
+
hits this on their first external-effect command.
|
|
23
|
+
2. **push-gate evaluates the wrong repository for cross-repo commands.**
|
|
24
|
+
`cd ~/other-repo && git push` is judged against the SESSION cwd's
|
|
25
|
+
enforcement config (payload `cwd`), not the target repo's — observed
|
|
26
|
+
live when the plugin-repo push was allowed by pactkit's own
|
|
27
|
+
`allow_direct_push: true` although the plugin repo has no config.
|
|
28
|
+
|
|
29
|
+
## Fix
|
|
30
|
+
|
|
31
|
+
1. `cli.py`: `gate` accepts both `pactkit gate authorize <scope>` and
|
|
32
|
+
`pactkit gate <scope>` (positional `scope` becomes `nargs="*"`; an
|
|
33
|
+
`authorize` keyword is normalized away). Help text documents both.
|
|
34
|
+
All existing message/prompt text becomes correct as-is.
|
|
35
|
+
2. `commit_gate.py`: `_command_root()` resolves the last `cd <dir>`
|
|
36
|
+
prefix target in the command (absolute, or relative to the payload
|
|
37
|
+
root; non-dirs ignored) and `hook_entry` evaluates gates against that
|
|
38
|
+
root — a `cd`-prefixed command is judged by the repo it operates on.
|
|
39
|
+
|
|
40
|
+
Verification: focused unit tests for both behaviors + full suite +
|
|
41
|
+
regenerated `gate.txt` help golden. Push to main only; no release, no
|
|
42
|
+
version bump, no adapter/plugin/site sync (deferred to 2.25.1).
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# HOTFIX-slim-20260901469666ef23a8: commit-gate misfires on docs/meta-only commits
|
|
2
|
+
|
|
3
|
+
| Field | Value |
|
|
4
|
+
|-------|-------|
|
|
5
|
+
| ID | HOTFIX-slim-20260901469666ef23a8 |
|
|
6
|
+
| Status | Done |
|
|
7
|
+
| Priority | P1 |
|
|
8
|
+
| Release | 2.25.1 |
|
|
9
|
+
|
|
10
|
+
## Background
|
|
11
|
+
|
|
12
|
+
A zero-code design-baseline commit (harness-backend root commit,
|
|
13
|
+
2026-09-01) was blocked three times by the commit gate with "FULL —
|
|
14
|
+
impact mapping empty — full unit suite (safe default)" and finally
|
|
15
|
+
forced the agent to write tests, move them to `tests/unit/`, and
|
|
16
|
+
bootstrap a venv before the commit went through. Three defects
|
|
17
|
+
conspired, each violating the gate's own documented intent:
|
|
18
|
+
|
|
19
|
+
1. **Repo meta files break doc-only classification.** `.gitignore` and
|
|
20
|
+
`.claude/settings.json` carry no runtime code, yet they disqualify
|
|
21
|
+
the whole change set from the doc-only skip
|
|
22
|
+
(`regression.py` `_DOC_ONLY_PATTERNS`), contradicting the module's
|
|
23
|
+
own "doc-only — safe to skip tests" contract.
|
|
24
|
+
2. **"Repo has no tests" is treated as "tests failed".** The full
|
|
25
|
+
strategy hard-codes `tests/unit/`; a repo whose tests live at
|
|
26
|
+
`tests/` (or that has none yet) yields exit 4/5, and `run_gate`
|
|
27
|
+
counts any nonzero returncode as RED — converting "nothing to
|
|
28
|
+
verify" into "write tests before any commit".
|
|
29
|
+
3. **Missing pytest module reads as RED, not unavailable.** With no
|
|
30
|
+
project venv, `pytest_command` falls back to the pipx interpreter;
|
|
31
|
+
`python -m pytest` exits 1 with "No module named pytest", which
|
|
32
|
+
`run_gate` reports as failing tests. This violates R3 self-lock
|
|
33
|
+
protection (a gate that cannot run must WARN and allow) and is
|
|
34
|
+
inconsistent with the existing `FileNotFoundError` → WARN path for
|
|
35
|
+
a missing pytest binary.
|
|
36
|
+
|
|
37
|
+
## Fix
|
|
38
|
+
|
|
39
|
+
1. `regression.py`: `_DOC_ONLY_PATTERNS` gains `.gitignore`,
|
|
40
|
+
`.claude/**`, `.codex/**` — agent/repo metadata with no runtime
|
|
41
|
+
code. Tamper guard is a separate channel and is unaffected.
|
|
42
|
+
2. `commit_gate.py run_pytest`: the full-suite target falls back from
|
|
43
|
+
`tests/unit/` to `tests/` when only the latter exists, so a
|
|
44
|
+
non-convention suite is still run instead of erroring. A repo with
|
|
45
|
+
no tests at all keeps the RED verdict — the TDD contract ("code
|
|
46
|
+
changes require tests") is untouched, but the verdict message now
|
|
47
|
+
says "no tests collected" instead of implying failures.
|
|
48
|
+
3. `commit_gate.py run_pytest`: output containing "No module named
|
|
49
|
+
pytest" raises `GateUnavailable` → WARN + allow, matching the
|
|
50
|
+
missing-binary path (R3).
|
|
51
|
+
|
|
52
|
+
Out of scope (unchanged): trunk full-suite rule, protected-branch
|
|
53
|
+
block rule, tamper guard, secrets gate.
|
|
54
|
+
|
|
55
|
+
Verification: focused unit tests for all three behaviors + full suite.
|