pactkit 2.3.3__tar.gz → 2.3.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (944) hide show
  1. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/pactkit.yaml +1 -1
  2. {pactkit-2.3.3 → pactkit-2.3.5}/CHANGELOG.md +14 -0
  3. {pactkit-2.3.3 → pactkit-2.3.5}/PKG-INFO +1 -1
  4. {pactkit-2.3.3 → pactkit-2.3.5}/pyproject.toml +1 -1
  5. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/__init__.py +1 -1
  6. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/config.py +15 -0
  7. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/skills/spec_linter.py +51 -0
  8. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_config.py +4 -4
  9. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_config_auto_merge.py +4 -0
  10. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story033_config_backfill.py +3 -2
  11. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story042_spec_linter.py +13 -13
  12. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim022.py +2 -0
  13. pactkit-2.3.5/tests/unit/test_story_slim024.py +283 -0
  14. {pactkit-2.3.3 → pactkit-2.3.5}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  15. {pactkit-2.3.3 → pactkit-2.3.5}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  16. {pactkit-2.3.3 → pactkit-2.3.5}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  17. {pactkit-2.3.3 → pactkit-2.3.5}/.github/dependabot.yml +0 -0
  18. {pactkit-2.3.3 → pactkit-2.3.5}/.github/workflows/ci.yml +0 -0
  19. {pactkit-2.3.3 → pactkit-2.3.5}/.github/workflows/pactkit.yml +0 -0
  20. {pactkit-2.3.3 → pactkit-2.3.5}/.gitignore +0 -0
  21. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/.gitignore +0 -0
  22. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/bun.lock +0 -0
  23. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/memory/.gitignore +0 -0
  24. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/memory/project.md +0 -0
  25. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/@opencode-ai/plugin/package.json +0 -0
  26. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/@opencode-ai/sdk/package.json +0 -0
  27. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/LICENSE +0 -0
  28. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/README.md +0 -0
  29. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/index.cjs +0 -0
  30. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/index.d.cts +0 -0
  31. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/index.d.ts +0 -0
  32. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/index.js +0 -0
  33. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/locales/index.cjs +0 -0
  34. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/locales/index.d.cts +0 -0
  35. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/locales/index.d.ts +0 -0
  36. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/locales/index.js +0 -0
  37. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/locales/package.json +0 -0
  38. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/mini/index.cjs +0 -0
  39. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/mini/index.d.cts +0 -0
  40. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/mini/index.d.ts +0 -0
  41. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/mini/index.js +0 -0
  42. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/mini/package.json +0 -0
  43. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/package.json +0 -0
  44. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/index.ts +0 -0
  45. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/locales/index.ts +0 -0
  46. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/mini/index.ts +0 -0
  47. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/ZodError.ts +0 -0
  48. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/benchmarks/datetime.ts +0 -0
  49. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +0 -0
  50. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/benchmarks/index.ts +0 -0
  51. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/benchmarks/ipv4.ts +0 -0
  52. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/benchmarks/object.ts +0 -0
  53. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/benchmarks/primitives.ts +0 -0
  54. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/benchmarks/realworld.ts +0 -0
  55. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/benchmarks/string.ts +0 -0
  56. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/benchmarks/union.ts +0 -0
  57. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/errors.ts +0 -0
  58. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/external.ts +0 -0
  59. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/helpers/enumUtil.ts +0 -0
  60. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/helpers/errorUtil.ts +0 -0
  61. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/helpers/parseUtil.ts +0 -0
  62. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/helpers/partialUtil.ts +0 -0
  63. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/helpers/typeAliases.ts +0 -0
  64. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/helpers/util.ts +0 -0
  65. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/index.ts +0 -0
  66. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/locales/en.ts +0 -0
  67. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/standard-schema.ts +0 -0
  68. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/Mocker.ts +0 -0
  69. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/all-errors.test.ts +0 -0
  70. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/anyunknown.test.ts +0 -0
  71. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/array.test.ts +0 -0
  72. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/async-parsing.test.ts +0 -0
  73. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/async-refinements.test.ts +0 -0
  74. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/base.test.ts +0 -0
  75. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/bigint.test.ts +0 -0
  76. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/branded.test.ts +0 -0
  77. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/catch.test.ts +0 -0
  78. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/coerce.test.ts +0 -0
  79. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/complex.test.ts +0 -0
  80. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/custom.test.ts +0 -0
  81. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/date.test.ts +0 -0
  82. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/deepmasking.test.ts +0 -0
  83. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/default.test.ts +0 -0
  84. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/description.test.ts +0 -0
  85. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +0 -0
  86. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/enum.test.ts +0 -0
  87. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/error.test.ts +0 -0
  88. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/firstparty.test.ts +0 -0
  89. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +0 -0
  90. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/function.test.ts +0 -0
  91. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/generics.test.ts +0 -0
  92. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/instanceof.test.ts +0 -0
  93. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/intersection.test.ts +0 -0
  94. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/language-server.source.ts +0 -0
  95. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/language-server.test.ts +0 -0
  96. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/literal.test.ts +0 -0
  97. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/map.test.ts +0 -0
  98. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/masking.test.ts +0 -0
  99. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/mocker.test.ts +0 -0
  100. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/nan.test.ts +0 -0
  101. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/nativeEnum.test.ts +0 -0
  102. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/nullable.test.ts +0 -0
  103. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/number.test.ts +0 -0
  104. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/object-augmentation.test.ts +0 -0
  105. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +0 -0
  106. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/object.test.ts +0 -0
  107. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/optional.test.ts +0 -0
  108. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/parseUtil.test.ts +0 -0
  109. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/parser.test.ts +0 -0
  110. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/partials.test.ts +0 -0
  111. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/pickomit.test.ts +0 -0
  112. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/pipeline.test.ts +0 -0
  113. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/preprocess.test.ts +0 -0
  114. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/primitive.test.ts +0 -0
  115. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/promise.test.ts +0 -0
  116. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/readonly.test.ts +0 -0
  117. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/record.test.ts +0 -0
  118. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/recursive.test.ts +0 -0
  119. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/refine.test.ts +0 -0
  120. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/safeparse.test.ts +0 -0
  121. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/set.test.ts +0 -0
  122. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/standard-schema.test.ts +0 -0
  123. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/string.test.ts +0 -0
  124. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/transformer.test.ts +0 -0
  125. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/tuple.test.ts +0 -0
  126. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/unions.test.ts +0 -0
  127. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/validations.test.ts +0 -0
  128. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/tests/void.test.ts +0 -0
  129. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v3/types.ts +0 -0
  130. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/checks.ts +0 -0
  131. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/coerce.ts +0 -0
  132. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/compat.ts +0 -0
  133. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/errors.ts +0 -0
  134. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/external.ts +0 -0
  135. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/index.ts +0 -0
  136. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/iso.ts +0 -0
  137. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/parse.ts +0 -0
  138. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/schemas.ts +0 -0
  139. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +0 -0
  140. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/array.test.ts +0 -0
  141. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/assignability.test.ts +0 -0
  142. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +0 -0
  143. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +0 -0
  144. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/base.test.ts +0 -0
  145. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/bigint.test.ts +0 -0
  146. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/brand.test.ts +0 -0
  147. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/catch.test.ts +0 -0
  148. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +0 -0
  149. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +0 -0
  150. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/codec.test.ts +0 -0
  151. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/coerce.test.ts +0 -0
  152. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/continuability.test.ts +0 -0
  153. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/custom.test.ts +0 -0
  154. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/date.test.ts +0 -0
  155. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/datetime.test.ts +0 -0
  156. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/default.test.ts +0 -0
  157. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/description.test.ts +0 -0
  158. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +0 -0
  159. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/enum.test.ts +0 -0
  160. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +0 -0
  161. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/error.test.ts +0 -0
  162. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/file.test.ts +0 -0
  163. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +0 -0
  164. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/function.test.ts +0 -0
  165. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/generics.test.ts +0 -0
  166. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/hash.test.ts +0 -0
  167. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/index.test.ts +0 -0
  168. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +0 -0
  169. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/intersection.test.ts +0 -0
  170. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/json.test.ts +0 -0
  171. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/lazy.test.ts +0 -0
  172. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/literal.test.ts +0 -0
  173. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/map.test.ts +0 -0
  174. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/nan.test.ts +0 -0
  175. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +0 -0
  176. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +0 -0
  177. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/nullable.test.ts +0 -0
  178. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/number.test.ts +0 -0
  179. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/object.test.ts +0 -0
  180. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/optional.test.ts +0 -0
  181. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/partial.test.ts +0 -0
  182. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +0 -0
  183. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/pipe.test.ts +0 -0
  184. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/prefault.test.ts +0 -0
  185. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +0 -0
  186. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/primitive.test.ts +0 -0
  187. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/promise.test.ts +0 -0
  188. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +0 -0
  189. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -0
  190. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/record.test.ts +0 -0
  191. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +0 -0
  192. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/refine.test.ts +0 -0
  193. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/registries.test.ts +0 -0
  194. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/set.test.ts +0 -0
  195. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +0 -0
  196. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +0 -0
  197. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/string.test.ts +0 -0
  198. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +0 -0
  199. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +0 -0
  200. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +0 -0
  201. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/transform.test.ts +0 -0
  202. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/tuple.test.ts +0 -0
  203. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/union.test.ts +0 -0
  204. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/validations.test.ts +0 -0
  205. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/classic/tests/void.test.ts +0 -0
  206. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/api.ts +0 -0
  207. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/checks.ts +0 -0
  208. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/config.ts +0 -0
  209. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/core.ts +0 -0
  210. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/doc.ts +0 -0
  211. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/errors.ts +0 -0
  212. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/index.ts +0 -0
  213. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/json-schema.ts +0 -0
  214. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/parse.ts +0 -0
  215. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/regexes.ts +0 -0
  216. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/registries.ts +0 -0
  217. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/schemas.ts +0 -0
  218. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/standard-schema.ts +0 -0
  219. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/tests/extend.test.ts +0 -0
  220. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/tests/index.test.ts +0 -0
  221. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/tests/locales/be.test.ts +0 -0
  222. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/tests/locales/en.test.ts +0 -0
  223. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/tests/locales/es.test.ts +0 -0
  224. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +0 -0
  225. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +0 -0
  226. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/to-json-schema.ts +0 -0
  227. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/util.ts +0 -0
  228. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/versions.ts +0 -0
  229. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/core/zsf.ts +0 -0
  230. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/index.ts +0 -0
  231. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/ar.ts +0 -0
  232. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/az.ts +0 -0
  233. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/be.ts +0 -0
  234. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/bg.ts +0 -0
  235. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/ca.ts +0 -0
  236. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/cs.ts +0 -0
  237. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/da.ts +0 -0
  238. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/de.ts +0 -0
  239. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/en.ts +0 -0
  240. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/eo.ts +0 -0
  241. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/es.ts +0 -0
  242. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/fa.ts +0 -0
  243. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/fi.ts +0 -0
  244. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/fr-CA.ts +0 -0
  245. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/fr.ts +0 -0
  246. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/he.ts +0 -0
  247. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/hu.ts +0 -0
  248. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/id.ts +0 -0
  249. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/index.ts +0 -0
  250. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/is.ts +0 -0
  251. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/it.ts +0 -0
  252. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/ja.ts +0 -0
  253. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/ka.ts +0 -0
  254. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/kh.ts +0 -0
  255. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/km.ts +0 -0
  256. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/ko.ts +0 -0
  257. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/lt.ts +0 -0
  258. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/mk.ts +0 -0
  259. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/ms.ts +0 -0
  260. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/nl.ts +0 -0
  261. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/no.ts +0 -0
  262. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/ota.ts +0 -0
  263. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/pl.ts +0 -0
  264. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/ps.ts +0 -0
  265. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/pt.ts +0 -0
  266. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/ru.ts +0 -0
  267. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/sl.ts +0 -0
  268. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/sv.ts +0 -0
  269. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/ta.ts +0 -0
  270. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/th.ts +0 -0
  271. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/tr.ts +0 -0
  272. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/ua.ts +0 -0
  273. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/uk.ts +0 -0
  274. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/ur.ts +0 -0
  275. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/vi.ts +0 -0
  276. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/yo.ts +0 -0
  277. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/zh-CN.ts +0 -0
  278. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/locales/zh-TW.ts +0 -0
  279. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/mini/checks.ts +0 -0
  280. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/mini/coerce.ts +0 -0
  281. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/mini/external.ts +0 -0
  282. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/mini/index.ts +0 -0
  283. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/mini/iso.ts +0 -0
  284. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/mini/parse.ts +0 -0
  285. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/mini/schemas.ts +0 -0
  286. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/mini/tests/assignability.test.ts +0 -0
  287. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/mini/tests/brand.test.ts +0 -0
  288. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/mini/tests/checks.test.ts +0 -0
  289. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/mini/tests/codec.test.ts +0 -0
  290. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/mini/tests/computed.test.ts +0 -0
  291. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/mini/tests/error.test.ts +0 -0
  292. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/mini/tests/functions.test.ts +0 -0
  293. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/mini/tests/index.test.ts +0 -0
  294. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/mini/tests/number.test.ts +0 -0
  295. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/mini/tests/object.test.ts +0 -0
  296. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +0 -0
  297. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +0 -0
  298. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4/mini/tests/string.test.ts +0 -0
  299. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/src/v4-mini/index.ts +0 -0
  300. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/ZodError.cjs +0 -0
  301. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/ZodError.d.cts +0 -0
  302. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/ZodError.d.ts +0 -0
  303. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/ZodError.js +0 -0
  304. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/errors.cjs +0 -0
  305. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/errors.d.cts +0 -0
  306. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/errors.d.ts +0 -0
  307. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/errors.js +0 -0
  308. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/external.cjs +0 -0
  309. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/external.d.cts +0 -0
  310. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/external.d.ts +0 -0
  311. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/external.js +0 -0
  312. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/enumUtil.cjs +0 -0
  313. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/enumUtil.d.cts +0 -0
  314. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/enumUtil.d.ts +0 -0
  315. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/enumUtil.js +0 -0
  316. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/errorUtil.cjs +0 -0
  317. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/errorUtil.d.cts +0 -0
  318. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/errorUtil.d.ts +0 -0
  319. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/errorUtil.js +0 -0
  320. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/parseUtil.cjs +0 -0
  321. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/parseUtil.d.cts +0 -0
  322. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/parseUtil.d.ts +0 -0
  323. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/parseUtil.js +0 -0
  324. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/partialUtil.cjs +0 -0
  325. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/partialUtil.d.cts +0 -0
  326. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/partialUtil.d.ts +0 -0
  327. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/partialUtil.js +0 -0
  328. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/typeAliases.cjs +0 -0
  329. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/typeAliases.d.cts +0 -0
  330. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/typeAliases.d.ts +0 -0
  331. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/typeAliases.js +0 -0
  332. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/util.cjs +0 -0
  333. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/util.d.cts +0 -0
  334. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/util.d.ts +0 -0
  335. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/helpers/util.js +0 -0
  336. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/index.cjs +0 -0
  337. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/index.d.cts +0 -0
  338. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/index.d.ts +0 -0
  339. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/index.js +0 -0
  340. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/locales/en.cjs +0 -0
  341. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/locales/en.d.cts +0 -0
  342. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/locales/en.d.ts +0 -0
  343. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/locales/en.js +0 -0
  344. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/package.json +0 -0
  345. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/standard-schema.cjs +0 -0
  346. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/standard-schema.d.cts +0 -0
  347. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/standard-schema.d.ts +0 -0
  348. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/standard-schema.js +0 -0
  349. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/types.cjs +0 -0
  350. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/types.d.cts +0 -0
  351. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/types.d.ts +0 -0
  352. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v3/types.js +0 -0
  353. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/checks.cjs +0 -0
  354. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/checks.d.cts +0 -0
  355. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/checks.d.ts +0 -0
  356. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/checks.js +0 -0
  357. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/coerce.cjs +0 -0
  358. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/coerce.d.cts +0 -0
  359. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/coerce.d.ts +0 -0
  360. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/coerce.js +0 -0
  361. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/compat.cjs +0 -0
  362. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/compat.d.cts +0 -0
  363. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/compat.d.ts +0 -0
  364. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/compat.js +0 -0
  365. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/errors.cjs +0 -0
  366. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/errors.d.cts +0 -0
  367. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/errors.d.ts +0 -0
  368. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/errors.js +0 -0
  369. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/external.cjs +0 -0
  370. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/external.d.cts +0 -0
  371. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/external.d.ts +0 -0
  372. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/external.js +0 -0
  373. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/index.cjs +0 -0
  374. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/index.d.cts +0 -0
  375. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/index.d.ts +0 -0
  376. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/index.js +0 -0
  377. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/iso.cjs +0 -0
  378. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/iso.d.cts +0 -0
  379. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/iso.d.ts +0 -0
  380. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/iso.js +0 -0
  381. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/package.json +0 -0
  382. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/parse.cjs +0 -0
  383. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/parse.d.cts +0 -0
  384. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/parse.d.ts +0 -0
  385. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/parse.js +0 -0
  386. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/schemas.cjs +0 -0
  387. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/schemas.d.cts +0 -0
  388. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/schemas.d.ts +0 -0
  389. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/classic/schemas.js +0 -0
  390. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/api.cjs +0 -0
  391. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/api.d.cts +0 -0
  392. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/api.d.ts +0 -0
  393. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/api.js +0 -0
  394. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/checks.cjs +0 -0
  395. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/checks.d.cts +0 -0
  396. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/checks.d.ts +0 -0
  397. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/checks.js +0 -0
  398. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/core.cjs +0 -0
  399. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/core.d.cts +0 -0
  400. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/core.d.ts +0 -0
  401. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/core.js +0 -0
  402. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/doc.cjs +0 -0
  403. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/doc.d.cts +0 -0
  404. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/doc.d.ts +0 -0
  405. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/doc.js +0 -0
  406. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/errors.cjs +0 -0
  407. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/errors.d.cts +0 -0
  408. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/errors.d.ts +0 -0
  409. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/errors.js +0 -0
  410. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/index.cjs +0 -0
  411. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/index.d.cts +0 -0
  412. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/index.d.ts +0 -0
  413. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/index.js +0 -0
  414. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/json-schema.cjs +0 -0
  415. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/json-schema.d.cts +0 -0
  416. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/json-schema.d.ts +0 -0
  417. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/json-schema.js +0 -0
  418. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/package.json +0 -0
  419. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/parse.cjs +0 -0
  420. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/parse.d.cts +0 -0
  421. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/parse.d.ts +0 -0
  422. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/parse.js +0 -0
  423. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/regexes.cjs +0 -0
  424. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/regexes.d.cts +0 -0
  425. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/regexes.d.ts +0 -0
  426. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/regexes.js +0 -0
  427. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/registries.cjs +0 -0
  428. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/registries.d.cts +0 -0
  429. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/registries.d.ts +0 -0
  430. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/registries.js +0 -0
  431. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/schemas.cjs +0 -0
  432. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/schemas.d.cts +0 -0
  433. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/schemas.d.ts +0 -0
  434. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/schemas.js +0 -0
  435. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/standard-schema.cjs +0 -0
  436. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/standard-schema.d.cts +0 -0
  437. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/standard-schema.d.ts +0 -0
  438. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/standard-schema.js +0 -0
  439. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/to-json-schema.cjs +0 -0
  440. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/to-json-schema.d.cts +0 -0
  441. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/to-json-schema.d.ts +0 -0
  442. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/to-json-schema.js +0 -0
  443. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/util.cjs +0 -0
  444. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/util.d.cts +0 -0
  445. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/util.d.ts +0 -0
  446. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/util.js +0 -0
  447. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/versions.cjs +0 -0
  448. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/versions.d.cts +0 -0
  449. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/versions.d.ts +0 -0
  450. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/core/versions.js +0 -0
  451. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/index.cjs +0 -0
  452. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/index.d.cts +0 -0
  453. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/index.d.ts +0 -0
  454. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/index.js +0 -0
  455. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ar.cjs +0 -0
  456. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ar.d.cts +0 -0
  457. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ar.d.ts +0 -0
  458. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ar.js +0 -0
  459. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/az.cjs +0 -0
  460. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/az.d.cts +0 -0
  461. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/az.d.ts +0 -0
  462. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/az.js +0 -0
  463. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/be.cjs +0 -0
  464. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/be.d.cts +0 -0
  465. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/be.d.ts +0 -0
  466. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/be.js +0 -0
  467. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/bg.cjs +0 -0
  468. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/bg.d.cts +0 -0
  469. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/bg.d.ts +0 -0
  470. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/bg.js +0 -0
  471. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ca.cjs +0 -0
  472. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ca.d.cts +0 -0
  473. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ca.d.ts +0 -0
  474. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ca.js +0 -0
  475. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/cs.cjs +0 -0
  476. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/cs.d.cts +0 -0
  477. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/cs.d.ts +0 -0
  478. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/cs.js +0 -0
  479. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/da.cjs +0 -0
  480. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/da.d.cts +0 -0
  481. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/da.d.ts +0 -0
  482. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/da.js +0 -0
  483. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/de.cjs +0 -0
  484. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/de.d.cts +0 -0
  485. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/de.d.ts +0 -0
  486. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/de.js +0 -0
  487. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/en.cjs +0 -0
  488. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/en.d.cts +0 -0
  489. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/en.d.ts +0 -0
  490. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/en.js +0 -0
  491. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/eo.cjs +0 -0
  492. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/eo.d.cts +0 -0
  493. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/eo.d.ts +0 -0
  494. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/eo.js +0 -0
  495. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/es.cjs +0 -0
  496. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/es.d.cts +0 -0
  497. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/es.d.ts +0 -0
  498. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/es.js +0 -0
  499. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/fa.cjs +0 -0
  500. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/fa.d.cts +0 -0
  501. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/fa.d.ts +0 -0
  502. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/fa.js +0 -0
  503. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/fi.cjs +0 -0
  504. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/fi.d.cts +0 -0
  505. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/fi.d.ts +0 -0
  506. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/fi.js +0 -0
  507. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/fr-CA.cjs +0 -0
  508. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/fr-CA.d.cts +0 -0
  509. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/fr-CA.d.ts +0 -0
  510. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/fr-CA.js +0 -0
  511. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/fr.cjs +0 -0
  512. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/fr.d.cts +0 -0
  513. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/fr.d.ts +0 -0
  514. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/fr.js +0 -0
  515. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/he.cjs +0 -0
  516. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/he.d.cts +0 -0
  517. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/he.d.ts +0 -0
  518. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/he.js +0 -0
  519. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/hu.cjs +0 -0
  520. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/hu.d.cts +0 -0
  521. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/hu.d.ts +0 -0
  522. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/hu.js +0 -0
  523. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/id.cjs +0 -0
  524. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/id.d.cts +0 -0
  525. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/id.d.ts +0 -0
  526. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/id.js +0 -0
  527. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/index.cjs +0 -0
  528. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/index.d.cts +0 -0
  529. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/index.d.ts +0 -0
  530. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/index.js +0 -0
  531. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/is.cjs +0 -0
  532. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/is.d.cts +0 -0
  533. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/is.d.ts +0 -0
  534. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/is.js +0 -0
  535. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/it.cjs +0 -0
  536. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/it.d.cts +0 -0
  537. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/it.d.ts +0 -0
  538. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/it.js +0 -0
  539. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ja.cjs +0 -0
  540. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ja.d.cts +0 -0
  541. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ja.d.ts +0 -0
  542. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ja.js +0 -0
  543. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ka.cjs +0 -0
  544. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ka.d.cts +0 -0
  545. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ka.d.ts +0 -0
  546. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ka.js +0 -0
  547. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/kh.cjs +0 -0
  548. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/kh.d.cts +0 -0
  549. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/kh.d.ts +0 -0
  550. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/kh.js +0 -0
  551. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/km.cjs +0 -0
  552. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/km.d.cts +0 -0
  553. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/km.d.ts +0 -0
  554. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/km.js +0 -0
  555. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ko.cjs +0 -0
  556. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ko.d.cts +0 -0
  557. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ko.d.ts +0 -0
  558. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ko.js +0 -0
  559. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/lt.cjs +0 -0
  560. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/lt.d.cts +0 -0
  561. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/lt.d.ts +0 -0
  562. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/lt.js +0 -0
  563. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/mk.cjs +0 -0
  564. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/mk.d.cts +0 -0
  565. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/mk.d.ts +0 -0
  566. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/mk.js +0 -0
  567. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ms.cjs +0 -0
  568. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ms.d.cts +0 -0
  569. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ms.d.ts +0 -0
  570. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ms.js +0 -0
  571. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/nl.cjs +0 -0
  572. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/nl.d.cts +0 -0
  573. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/nl.d.ts +0 -0
  574. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/nl.js +0 -0
  575. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/no.cjs +0 -0
  576. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/no.d.cts +0 -0
  577. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/no.d.ts +0 -0
  578. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/no.js +0 -0
  579. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ota.cjs +0 -0
  580. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ota.d.cts +0 -0
  581. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ota.d.ts +0 -0
  582. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ota.js +0 -0
  583. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/package.json +0 -0
  584. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/pl.cjs +0 -0
  585. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/pl.d.cts +0 -0
  586. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/pl.d.ts +0 -0
  587. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/pl.js +0 -0
  588. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ps.cjs +0 -0
  589. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ps.d.cts +0 -0
  590. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ps.d.ts +0 -0
  591. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ps.js +0 -0
  592. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/pt.cjs +0 -0
  593. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/pt.d.cts +0 -0
  594. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/pt.d.ts +0 -0
  595. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/pt.js +0 -0
  596. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ru.cjs +0 -0
  597. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ru.d.cts +0 -0
  598. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ru.d.ts +0 -0
  599. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ru.js +0 -0
  600. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/sl.cjs +0 -0
  601. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/sl.d.cts +0 -0
  602. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/sl.d.ts +0 -0
  603. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/sl.js +0 -0
  604. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/sv.cjs +0 -0
  605. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/sv.d.cts +0 -0
  606. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/sv.d.ts +0 -0
  607. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/sv.js +0 -0
  608. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ta.cjs +0 -0
  609. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ta.d.cts +0 -0
  610. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ta.d.ts +0 -0
  611. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ta.js +0 -0
  612. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/th.cjs +0 -0
  613. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/th.d.cts +0 -0
  614. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/th.d.ts +0 -0
  615. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/th.js +0 -0
  616. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/tr.cjs +0 -0
  617. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/tr.d.cts +0 -0
  618. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/tr.d.ts +0 -0
  619. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/tr.js +0 -0
  620. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ua.cjs +0 -0
  621. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ua.d.cts +0 -0
  622. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ua.d.ts +0 -0
  623. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ua.js +0 -0
  624. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/uk.cjs +0 -0
  625. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/uk.d.cts +0 -0
  626. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/uk.d.ts +0 -0
  627. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/uk.js +0 -0
  628. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ur.cjs +0 -0
  629. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ur.d.cts +0 -0
  630. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ur.d.ts +0 -0
  631. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/ur.js +0 -0
  632. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/vi.cjs +0 -0
  633. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/vi.d.cts +0 -0
  634. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/vi.d.ts +0 -0
  635. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/vi.js +0 -0
  636. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/yo.cjs +0 -0
  637. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/yo.d.cts +0 -0
  638. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/yo.d.ts +0 -0
  639. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/yo.js +0 -0
  640. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/zh-CN.cjs +0 -0
  641. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/zh-CN.d.cts +0 -0
  642. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/zh-CN.d.ts +0 -0
  643. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/zh-CN.js +0 -0
  644. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/zh-TW.cjs +0 -0
  645. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/zh-TW.d.cts +0 -0
  646. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/zh-TW.d.ts +0 -0
  647. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/locales/zh-TW.js +0 -0
  648. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/checks.cjs +0 -0
  649. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/checks.d.cts +0 -0
  650. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/checks.d.ts +0 -0
  651. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/checks.js +0 -0
  652. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/coerce.cjs +0 -0
  653. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/coerce.d.cts +0 -0
  654. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/coerce.d.ts +0 -0
  655. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/coerce.js +0 -0
  656. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/external.cjs +0 -0
  657. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/external.d.cts +0 -0
  658. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/external.d.ts +0 -0
  659. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/external.js +0 -0
  660. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/index.cjs +0 -0
  661. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/index.d.cts +0 -0
  662. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/index.d.ts +0 -0
  663. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/index.js +0 -0
  664. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/iso.cjs +0 -0
  665. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/iso.d.cts +0 -0
  666. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/iso.d.ts +0 -0
  667. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/iso.js +0 -0
  668. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/package.json +0 -0
  669. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/parse.cjs +0 -0
  670. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/parse.d.cts +0 -0
  671. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/parse.d.ts +0 -0
  672. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/parse.js +0 -0
  673. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/schemas.cjs +0 -0
  674. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/schemas.d.cts +0 -0
  675. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/schemas.d.ts +0 -0
  676. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/mini/schemas.js +0 -0
  677. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4/package.json +0 -0
  678. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4-mini/index.cjs +0 -0
  679. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4-mini/index.d.cts +0 -0
  680. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4-mini/index.d.ts +0 -0
  681. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4-mini/index.js +0 -0
  682. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/node_modules/zod/v4-mini/package.json +0 -0
  683. {pactkit-2.3.3 → pactkit-2.3.5}/.opencode/package.json +0 -0
  684. {pactkit-2.3.3 → pactkit-2.3.5}/AGENTS.md +0 -0
  685. {pactkit-2.3.3 → pactkit-2.3.5}/CODE_OF_CONDUCT.md +0 -0
  686. {pactkit-2.3.3 → pactkit-2.3.5}/CONTRIBUTING.md +0 -0
  687. {pactkit-2.3.3 → pactkit-2.3.5}/LICENSE +0 -0
  688. {pactkit-2.3.3 → pactkit-2.3.5}/README.md +0 -0
  689. {pactkit-2.3.3 → pactkit-2.3.5}/SECURITY.md +0 -0
  690. {pactkit-2.3.3 → pactkit-2.3.5}/docs/assets/logo.png +0 -0
  691. {pactkit-2.3.3 → pactkit-2.3.5}/docs/guides/codex-integration-preresearch.md +0 -0
  692. {pactkit-2.3.3 → pactkit-2.3.5}/docs/guides/tool-integration-checklist.md +0 -0
  693. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-001.md +0 -0
  694. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-002.md +0 -0
  695. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-003.md +0 -0
  696. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-004.md +0 -0
  697. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-005.md +0 -0
  698. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-006.md +0 -0
  699. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-007.md +0 -0
  700. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-008.md +0 -0
  701. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-009.md +0 -0
  702. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-010.md +0 -0
  703. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-011.md +0 -0
  704. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-012.md +0 -0
  705. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-013.md +0 -0
  706. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-014.md +0 -0
  707. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-015.md +0 -0
  708. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-016.md +0 -0
  709. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-017.md +0 -0
  710. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-018.md +0 -0
  711. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-019.md +0 -0
  712. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-020.md +0 -0
  713. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-021.md +0 -0
  714. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-022.md +0 -0
  715. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-023.md +0 -0
  716. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-024.md +0 -0
  717. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-025.md +0 -0
  718. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-026.md +0 -0
  719. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-027.md +0 -0
  720. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-028.md +0 -0
  721. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-029.md +0 -0
  722. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-030.md +0 -0
  723. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-031.md +0 -0
  724. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-032.md +0 -0
  725. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-033.md +0 -0
  726. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-034.md +0 -0
  727. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-035.md +0 -0
  728. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-slim-001.md +0 -0
  729. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-slim-002.md +0 -0
  730. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-slim-003.md +0 -0
  731. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-slim-004.md +0 -0
  732. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-slim-005.md +0 -0
  733. {pactkit-2.3.3 → pactkit-2.3.5}/docs/specs/BUG-slim-006.md +0 -0
  734. {pactkit-2.3.3 → pactkit-2.3.5}/docs/test_cases/BUG-001_case.md +0 -0
  735. {pactkit-2.3.3 → pactkit-2.3.5}/docs/test_cases/BUG-002_case.md +0 -0
  736. {pactkit-2.3.3 → pactkit-2.3.5}/opencode.json +0 -0
  737. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/backfill.py +0 -0
  738. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/cleaners.py +0 -0
  739. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/cli.py +0 -0
  740. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/context_gen.py +0 -0
  741. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/coverage_gate.py +0 -0
  742. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/doctor.py +0 -0
  743. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/generators/__init__.py +0 -0
  744. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/generators/adapter.py +0 -0
  745. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/generators/deployer.py +0 -0
  746. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/guards.py +0 -0
  747. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/id_generator.py +0 -0
  748. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/invariants.py +0 -0
  749. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/issue_sync.py +0 -0
  750. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/lazy_visualize.py +0 -0
  751. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/lessons.py +0 -0
  752. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/lint_runner.py +0 -0
  753. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/profiles.py +0 -0
  754. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/prompts/__init__.py +0 -0
  755. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/prompts/agents.py +0 -0
  756. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/prompts/commands.py +0 -0
  757. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/prompts/references.py +0 -0
  758. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/prompts/rules.py +0 -0
  759. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/prompts/skills.py +0 -0
  760. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/prompts/workflows.py +0 -0
  761. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/regression.py +0 -0
  762. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/schemas.py +0 -0
  763. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/scripts.py +0 -0
  764. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/sec_scope.py +0 -0
  765. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/skills/__init__.py +0 -0
  766. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/skills/board.py +0 -0
  767. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/skills/scaffold.py +0 -0
  768. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/skills/visualize.py +0 -0
  769. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/spec_status.py +0 -0
  770. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/test_mapper.py +0 -0
  771. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/utils.py +0 -0
  772. {pactkit-2.3.3 → pactkit-2.3.5}/src/pactkit/validators.py +0 -0
  773. {pactkit-2.3.3 → pactkit-2.3.5}/tests/conftest.py +0 -0
  774. {pactkit-2.3.3 → pactkit-2.3.5}/tests/e2e/__init__.py +0 -0
  775. {pactkit-2.3.3 → pactkit-2.3.5}/tests/e2e/cli/__init__.py +0 -0
  776. {pactkit-2.3.3 → pactkit-2.3.5}/tests/e2e/cli/test_cli_e2e.py +0 -0
  777. {pactkit-2.3.3 → pactkit-2.3.5}/tests/integration/__init__.py +0 -0
  778. {pactkit-2.3.3 → pactkit-2.3.5}/tests/integration/test_deploy_classic.py +0 -0
  779. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_agent_features.py +0 -0
  780. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_agent_frontmatter.py +0 -0
  781. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_agents_enrichment.py +0 -0
  782. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_board_bug027.py +0 -0
  783. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_board_sections.py +0 -0
  784. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug001_skill_path.py +0 -0
  785. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug002_plugin_paths.py +0 -0
  786. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug003_multi_import.py +0 -0
  787. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug004_dead_set.py +0 -0
  788. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug005_archive_taskless.py +0 -0
  789. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug006_scan_excludes.py +0 -0
  790. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug007_stale_trace_refs.py +0 -0
  791. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug008_stale_command_refs.py +0 -0
  792. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug009_project_config_backfill.py +0 -0
  793. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug010_rewrite_yaml.py +0 -0
  794. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug011_stale_refs.py +0 -0
  795. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug012_call_graph_filter.py +0 -0
  796. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug013_config_single_source.py +0 -0
  797. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug014_version_hygiene.py +0 -0
  798. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug017_project_init_playbook.py +0 -0
  799. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug018_issue_tracker_verification.py +0 -0
  800. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug019_venv_deployment.py +0 -0
  801. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug020_claude_md_backup.py +0 -0
  802. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug025_release_delegation.py +0 -0
  803. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug026_version_sync.py +0 -0
  804. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug028_ghost_refs.py +0 -0
  805. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug029_stack_detection_fallback.py +0 -0
  806. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug030_spec_lint_cli.py +0 -0
  807. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug031_docstring_accuracy.py +0 -0
  808. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug034_plan_metadata_template.py +0 -0
  809. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug035_opencode_dual_layer.py +0 -0
  810. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug_021.py +0 -0
  811. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug_022.py +0 -0
  812. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug_023.py +0 -0
  813. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug_024.py +0 -0
  814. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug_slim001_env_detection.py +0 -0
  815. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug_slim002_instruction_collision.py +0 -0
  816. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug_slim003.py +0 -0
  817. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug_slim004.py +0 -0
  818. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug_slim005.py +0 -0
  819. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_bug_slim006.py +0 -0
  820. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_check_command.py +0 -0
  821. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_command_frontmatter.py +0 -0
  822. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_command_visualize_modes.py +0 -0
  823. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_constitution_sharpening.py +0 -0
  824. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_create_skill.py +0 -0
  825. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_cross_flow_matrix.py +0 -0
  826. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_deploy_opencode_parity.py +0 -0
  827. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_deployer_cleanup.py +0 -0
  828. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_deployer_plugin.py +0 -0
  829. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_design_command.py +0 -0
  830. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_done_gates.py +0 -0
  831. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_draw_prompt.py +0 -0
  832. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_draw_references.py +0 -0
  833. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_drawio_mcp.py +0 -0
  834. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_home_path_fix.py +0 -0
  835. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_hotfix_command.py +0 -0
  836. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_init_guard.py +0 -0
  837. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_lang_profiles.py +0 -0
  838. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_list_stories.py +0 -0
  839. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_mcp_integration.py +0 -0
  840. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_model_config.py +0 -0
  841. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_modular_constitution.py +0 -0
  842. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_multi_prefix.py +0 -0
  843. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_pdca_slim.py +0 -0
  844. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_profiles.py +0 -0
  845. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_project_visibility.py +0 -0
  846. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_prompt_cli_refs.py +0 -0
  847. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_prompt_structural_invariants.py +0 -0
  848. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_prompts_package.py +0 -0
  849. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_release.py +0 -0
  850. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_release_field.py +0 -0
  851. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_release_v110.py +0 -0
  852. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_render_prompt.py +0 -0
  853. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_review_command.py +0 -0
  854. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_rules_enrichment.py +0 -0
  855. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_scaffold.py +0 -0
  856. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_scaffold_developer_prefix.py +0 -0
  857. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_schemas.py +0 -0
  858. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_script_extraction.py +0 -0
  859. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_selective_deploy.py +0 -0
  860. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_session_context.py +0 -0
  861. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_skill_structure.py +0 -0
  862. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_skills_enrichment.py +0 -0
  863. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_smart_regression.py +0 -0
  864. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_sprint_command.py +0 -0
  865. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_stack_references.py +0 -0
  866. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_status_command.py +0 -0
  867. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_statusline.py +0 -0
  868. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story014_release.py +0 -0
  869. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story015_ci_lint_gate.py +0 -0
  870. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story016_claude_md.py +0 -0
  871. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story017_init_claude_md.py +0 -0
  872. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story018_arch_staleness.py +0 -0
  873. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story019_bailout.py +0 -0
  874. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story020_horizon.py +0 -0
  875. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story021_rfc.py +0 -0
  876. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story022_decision_tree.py +0 -0
  877. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story023_test_quality.py +0 -0
  878. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story024_native_agent.py +0 -0
  879. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story025_ci_pipeline.py +0 -0
  880. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story026_issue_tracker.py +0 -0
  881. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story027_hooks.py +0 -0
  882. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story028_rule_scoping.py +0 -0
  883. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story029_doctor.py +0 -0
  884. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story030_lint.py +0 -0
  885. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story031_git_init_guard.py +0 -0
  886. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story032_greenfield_redirect.py +0 -0
  887. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story034_plan_config_refresh.py +0 -0
  888. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story035_readme_docs.py +0 -0
  889. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story037_regression_fix.py +0 -0
  890. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story038_call_graph_update.py +0 -0
  891. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story039_venv_config.py +0 -0
  892. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story040_layered_claude_md.py +0 -0
  893. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story043_active_clarify.py +0 -0
  894. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story044_consistency_check.py +0 -0
  895. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story045_auto_pr.py +0 -0
  896. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story046_agent_adapter.py +0 -0
  897. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story047_enterprise_flags.py +0 -0
  898. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story048_worktree_isolation.py +0 -0
  899. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story049_community_standards.py +0 -0
  900. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story050_doc_only_shortcut.py +0 -0
  901. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story051_workflow_streamlining.py +0 -0
  902. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story052_conditional_github_release.py +0 -0
  903. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story053_impact_regression.py +0 -0
  904. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story055_commands.py +0 -0
  905. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story055_config.py +0 -0
  906. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story055_spec_linter.py +0 -0
  907. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story056_commands.py +0 -0
  908. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story056_config.py +0 -0
  909. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story057_implicit_cleanup.py +0 -0
  910. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story058_routing_fix.py +0 -0
  911. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story060_init_hang.py +0 -0
  912. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story061_remove_thinking.py +0 -0
  913. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story062_mcp_recommendations.py +0 -0
  914. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story063_prompt_slimming.py +0 -0
  915. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story064_venv_local_md.py +0 -0
  916. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story065_sprint_model.py +0 -0
  917. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story069_opencode_format.py +0 -0
  918. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story070_opencode_compliance.py +0 -0
  919. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story071_opencode_config_parity.py +0 -0
  920. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story072_developer_prefix.py +0 -0
  921. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story073_command_model_routing.py +0 -0
  922. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim009_lazy_rules.py +0 -0
  923. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim010_dry_refactor.py +0 -0
  924. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim011_command_rules.py +0 -0
  925. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim012_ci.py +0 -0
  926. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim014_clean.py +0 -0
  927. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim014_context.py +0 -0
  928. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim014_guard.py +0 -0
  929. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim014_lazy_viz.py +0 -0
  930. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim014_next_id.py +0 -0
  931. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim014_regression.py +0 -0
  932. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim014_sec_scope.py +0 -0
  933. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim014_validators.py +0 -0
  934. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim015_doctor.py +0 -0
  935. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim016_testmap_lint.py +0 -0
  936. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim017.py +0 -0
  937. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim018.py +0 -0
  938. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim019_plan_subphases.py +0 -0
  939. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim020_explore_stall_fix.py +0 -0
  940. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim021.py +0 -0
  941. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_story_slim023.py +0 -0
  942. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_tools.py +0 -0
  943. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_update_task.py +0 -0
  944. {pactkit-2.3.3 → pactkit-2.3.5}/tests/unit/test_visualize_modes.py +0 -0
@@ -2,7 +2,7 @@
2
2
  # Edit this file to customize which components are deployed.
3
3
  # Remove items from a list to disable them. Default: all enabled.
4
4
 
5
- version: "2.3.3"
5
+ version: "2.3.4"
6
6
  stack: python
7
7
  root: .
8
8
  developer: "slim"
@@ -4,6 +4,20 @@ All notable changes to PactKit will be documented in this file.
4
4
 
5
5
  Format follows [Keep a Changelog](https://keepachangelog.com/).
6
6
 
7
+ ## [2.3.5] - 2026-03-23
8
+
9
+ ### Fixed
10
+ - **W007 RFC 2119 Detection** — W007 now detects all RFC 2119 keywords (MUST, SHOULD, MAY, SHALL, REQUIRED, RECOMMENDED, OPTIONAL) using canonical `SPEC_RFC_KEYWORDS` from schemas.py, instead of hardcoding only SHOULD.
11
+
12
+ ## [2.3.4] - 2026-03-23
13
+
14
+ ### Added
15
+ - **Spec Lint W007 — Req-AC Coverage** (STORY-slim-024) — New warning rule fires when `### R{N}:` requirements are not referenced by any `### AC{M}:` body. Helps catch SHOULD requirements that get overlooked. Message includes `(SHOULD)` indicator for unreferenced SHOULD requirements.
16
+
17
+ ### Fixed
18
+ - **E2E Config Fields** — `api_spec` and `compose_file` now included in `generate_default_yaml()` output (were commented out, breaking roundtrip tests).
19
+ - **Test Fixtures** — Updated test fixtures to include `e2e` section after HOTFIX-slim-025 added new fields.
20
+
7
21
  ## [2.3.3] - 2026-03-23
8
22
 
9
23
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pactkit
3
- Version: 2.3.3
3
+ Version: 2.3.5
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
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "pactkit"
7
- version = "2.3.3"
7
+ version = "2.3.5"
8
8
  description = "Spec-driven agentic DevOps toolkit for AI coding assistants"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -1,3 +1,3 @@
1
1
  """PactKit - Spec-driven agentic DevOps toolkit."""
2
2
 
3
- __version__ = "2.3.3"
3
+ __version__ = "2.3.5"
@@ -172,6 +172,8 @@ def get_default_config() -> dict:
172
172
  "blocking": False,
173
173
  "test_dir": "tests/e2e",
174
174
  "env_file": ".env.test",
175
+ "api_spec": "", # HOTFIX-slim-025: OpenAPI spec for frontend/backend E2E
176
+ "compose_file": "docker-compose.test.yml", # HOTFIX-slim-025: for fullstack E2E
175
177
  },
176
178
  "done": {
177
179
  "lesson_quality_threshold": 15,
@@ -830,6 +832,17 @@ def validate_config(config: dict) -> None:
830
832
  warnings.warn(
831
833
  f"e2e.env_file should be a string, got {type(e2e_env_file).__name__}"
832
834
  )
835
+ # HOTFIX-slim-025: validate api_spec and compose_file
836
+ e2e_api_spec = e2e.get("api_spec")
837
+ if e2e_api_spec is not None and not isinstance(e2e_api_spec, str):
838
+ warnings.warn(
839
+ f"e2e.api_spec should be a string, got {type(e2e_api_spec).__name__}"
840
+ )
841
+ e2e_compose_file = e2e.get("compose_file")
842
+ if e2e_compose_file is not None and not isinstance(e2e_compose_file, str):
843
+ warnings.warn(
844
+ f"e2e.compose_file should be a string, got {type(e2e_compose_file).__name__}"
845
+ )
833
846
 
834
847
  # enterprise section (STORY-047) — accepted without warnings
835
848
  # multi_agent field (STORY-046) — accepted without warnings
@@ -945,6 +958,8 @@ def generate_default_yaml() -> str:
945
958
  lines.append(f" blocking: {'true' if e2e.get('blocking') else 'false'}")
946
959
  lines.append(f" test_dir: {e2e.get('test_dir', 'tests/e2e')}")
947
960
  lines.append(f" env_file: {e2e.get('env_file', '.env.test')}")
961
+ lines.append(f" api_spec: \"{e2e.get('api_spec', '')}\" # OpenAPI spec path for frontend/backend")
962
+ lines.append(f" compose_file: {e2e.get('compose_file', 'docker-compose.test.yml')} # for fullstack")
948
963
 
949
964
  # Write command_models section (STORY-073)
950
965
  cmd_models = cfg.get("command_models", {})
@@ -23,6 +23,7 @@ try:
23
23
  SPEC_REQUIRED_METADATA_FIELDS,
24
24
  SPEC_REQUIRED_SECTIONS,
25
25
  SPEC_REQUIREMENT_PATTERN,
26
+ SPEC_RFC_KEYWORDS,
26
27
  SPEC_RFC_PATTERN,
27
28
  SPEC_VALID_STATUSES,
28
29
  )
@@ -34,6 +35,7 @@ except ImportError:
34
35
  SPEC_REQUIREMENT_PATTERN = r"### R\d+[:\s]"
35
36
  SPEC_AC_PATTERN = r"### AC\d+[:\s]|### Scenario\s+\d+[:\s]"
36
37
  SPEC_GIVEN_WHEN_THEN = ("Given", "When", "Then")
38
+ SPEC_RFC_KEYWORDS = ("MUST", "SHOULD", "MAY", "SHALL", "REQUIRED", "RECOMMENDED", "OPTIONAL")
37
39
  SPEC_RFC_PATTERN = re.compile(r"\b(MUST|SHOULD|MAY|SHALL|REQUIRED|RECOMMENDED|OPTIONAL)\b")
38
40
  SPEC_VALID_STATUSES = ("Draft", "In Progress", "Done")
39
41
 
@@ -197,6 +199,54 @@ def _check_acceptance_criteria(text: str, result: LintResult) -> None:
197
199
 
198
200
  _PIPE_TABLE_ROW = re.compile(r"^\|.+\|.+\|", re.MULTILINE)
199
201
 
202
+ # STORY-slim-024: R{N} ID extraction pattern
203
+ _REQ_ID_PATTERN = re.compile(r"###\s+(R\d+)[:\s]", re.MULTILINE)
204
+
205
+
206
+ def _extract_requirement_ids(req_section: str) -> dict[str, str]:
207
+ """Extract R{N} IDs and their body text from Requirements section.
208
+
209
+ Returns dict mapping R{N} (e.g., "R1") to the requirement body text.
210
+ """
211
+ result: dict[str, str] = {}
212
+ # Find all ### R{N}: headers
213
+ matches = list(_REQ_ID_PATTERN.finditer(req_section))
214
+ for i, m in enumerate(matches):
215
+ req_id = m.group(1).upper() # Normalize to uppercase (R1, R2, etc.)
216
+ # Body is from end of this header to start of next (or end of section)
217
+ start = m.end()
218
+ end = matches[i + 1].start() if i + 1 < len(matches) else len(req_section)
219
+ body = req_section[start:end].strip()
220
+ result[req_id] = body
221
+ return result
222
+
223
+
224
+ def _check_req_ac_coverage(text: str, result: LintResult) -> None:
225
+ """W007 — Check that all R{N} are referenced by at least one AC."""
226
+ req_section = _section_text(text, "Requirements")
227
+ ac_section = _section_text(text, "Acceptance Criteria")
228
+
229
+ if req_section is None or ac_section is None:
230
+ return # Missing sections are handled by E003/E005
231
+
232
+ # Extract all R{N} IDs and their bodies
233
+ req_map = _extract_requirement_ids(req_section)
234
+ if not req_map:
235
+ return # No requirements found (handled by E004)
236
+
237
+ # Check each R{N} for coverage in AC section
238
+ ac_lower = ac_section.lower()
239
+ for req_id, req_body in req_map.items():
240
+ # Case-insensitive search for R{N} as word boundary
241
+ if req_id.lower() not in ac_lower:
242
+ # Detect RFC 2119 keyword in requirement body (use canonical list from schemas)
243
+ req_upper = req_body.upper()
244
+ found_keyword = next((kw for kw in SPEC_RFC_KEYWORDS if kw in req_upper), None)
245
+ emphasis = f" ({found_keyword})" if found_keyword else ""
246
+ result.warnings.append(
247
+ LintIssue("W007", f"Requirement {req_id} has no corresponding AC reference{emphasis}")
248
+ )
249
+
200
250
 
201
251
  def _check_implementation_steps(text: str, result: LintResult) -> None:
202
252
  """W005 — Implementation Steps table format validation (STORY-055)."""
@@ -254,6 +304,7 @@ def validate_spec(spec_path: str) -> LintResult:
254
304
  _check_acceptance_criteria(text, result)
255
305
  _check_optional_sections(text, result)
256
306
  _check_implementation_steps(text, result)
307
+ _check_req_ac_coverage(text, result) # STORY-slim-024: W007
257
308
  return result
258
309
 
259
310
 
@@ -247,16 +247,16 @@ class TestCommonModeRemoved:
247
247
  test_dir = Path(__file__).resolve().parent
248
248
  assert not (test_dir / "test_common_user.py").exists()
249
249
 
250
- def test_cli_no_mode_flag(self):
251
-
252
- # Verify --mode is not in the CLI by checking the source
250
+ def test_cli_no_common_mode_flag(self):
251
+ # Verify common_user mode is not in the CLI
252
+ # Note: --mode exists for visualize (HOTFIX-slim-023), but common_user is removed
253
253
  import inspect
254
254
 
255
255
  from pactkit.cli import main
256
256
 
257
257
  source = inspect.getsource(main)
258
- assert "--mode" not in source
259
258
  assert "common_user" not in source
259
+ assert "common-user" not in source
260
260
 
261
261
 
262
262
  # ===========================================================================
@@ -281,6 +281,8 @@ class TestBackwardCompatibility:
281
281
  'hooks': {'pre_commit_lint': False, 'post_test_coverage': False, 'pre_push_check': False},
282
282
  'lint_blocking': False,
283
283
  'auto_fix': False,
284
+ 'e2e': {'type': 'none', 'blocking': False, 'test_dir': 'tests/e2e', 'env_file': '.env.test',
285
+ 'api_spec': '', 'compose_file': 'docker-compose.test.yml'},
284
286
  'venv': {'auto_detect': True},
285
287
  'release': {'github_release': False},
286
288
  'regression': {'strategy': 'impact', 'max_impact_tests': 50},
@@ -402,6 +404,8 @@ class TestDeployerIntegration:
402
404
  'hooks': {'pre_commit_lint': False, 'post_test_coverage': False, 'pre_push_check': False},
403
405
  'lint_blocking': False,
404
406
  'auto_fix': False,
407
+ 'e2e': {'type': 'none', 'blocking': False, 'test_dir': 'tests/e2e', 'env_file': '.env.test',
408
+ 'api_spec': '', 'compose_file': 'docker-compose.test.yml'},
405
409
  'venv': {'auto_detect': True},
406
410
  'release': {'github_release': False},
407
411
  'regression': {'strategy': 'impact', 'max_impact_tests': 50},
@@ -220,6 +220,7 @@ class TestAC4BackfillReport:
220
220
  'issue_tracker:\n provider: none\n'
221
221
  'lint_blocking: false\n'
222
222
  'auto_fix: false\n'
223
+ 'e2e:\n type: none\n'
223
224
  'venv:\n auto_detect: true\n'
224
225
  'release:\n github_release: false\n'
225
226
  'regression:\n strategy: impact\n max_impact_tests: 50\n'
@@ -236,8 +237,8 @@ class TestAC4BackfillReport:
236
237
  yaml_path.write_text('stack: python\nversion: "1.2.0"\nroot: .\n')
237
238
  result = auto_merge_config_file(yaml_path)
238
239
  section_reports = [r for r in result if r.startswith('section:')]
239
- # 4 list-type (agents, commands, skills, rules) + 10 non-list (ci, issue_tracker, hooks, lint_blocking, auto_fix, venv, release, regression, check, done)
240
- assert len(section_reports) == 14
240
+ # 4 list-type (agents, commands, skills, rules) + 11 non-list (ci, issue_tracker, hooks, lint_blocking, auto_fix, e2e, venv, release, regression, check, done)
241
+ assert len(section_reports) == 15
241
242
 
242
243
 
243
244
  # ===========================================================================
@@ -35,9 +35,9 @@ This requirement MUST be satisfied.
35
35
 
36
36
  ## Acceptance Criteria
37
37
 
38
- ### AC1: Happy Path
38
+ ### AC1: Happy Path (R1)
39
39
  **Given** a valid input
40
- **When** the action is taken
40
+ **When** R1 action is taken
41
41
  **Then** the result is correct
42
42
 
43
43
  ## Out of Scope
@@ -184,7 +184,7 @@ class TestE005AcceptanceCriteria:
184
184
  class TestE006ACSubsections:
185
185
  def test_no_AC_subsection_raises_E006(self, tmp_path):
186
186
  content = MINIMAL_VALID_SPEC.replace(
187
- "### AC1: Happy Path\n**Given** a valid input\n**When** the action is taken\n**Then** the result is correct\n",
187
+ "### AC1: Happy Path (R1)\n**Given** a valid input\n**When** R1 action is taken\n**Then** the result is correct\n",
188
188
  "Just some text.\n"
189
189
  )
190
190
  spec = write_spec(tmp_path, content)
@@ -194,8 +194,8 @@ class TestE006ACSubsections:
194
194
 
195
195
  def test_scenario_prefix_accepted_no_E006(self, tmp_path):
196
196
  content = MINIMAL_VALID_SPEC.replace(
197
- "### AC1: Happy Path\n**Given** a valid input\n**When** the action is taken\n**Then** the result is correct\n",
198
- "### Scenario 1: Happy Path\n**Given** a valid input\n**When** the action is taken\n**Then** the result is correct\n"
197
+ "### AC1: Happy Path (R1)\n**Given** a valid input\n**When** R1 action is taken\n**Then** the result is correct\n",
198
+ "### Scenario 1: Happy Path (R1)\n**Given** a valid input\n**When** R1 action is taken\n**Then** the result is correct\n"
199
199
  )
200
200
  spec = write_spec(tmp_path, content)
201
201
  result = validate_spec(str(spec))
@@ -216,8 +216,8 @@ class TestE006ACSubsections:
216
216
  class TestE007GivenWhenThen:
217
217
  def test_missing_given_raises_E007(self, tmp_path):
218
218
  content = MINIMAL_VALID_SPEC.replace(
219
- "**Given** a valid input\n**When** the action is taken\n**Then** the result is correct\n",
220
- "**When** the action is taken\n**Then** the result is correct\n"
219
+ "**Given** a valid input\n**When** R1 action is taken\n**Then** the result is correct\n",
220
+ "**When** R1 action is taken\n**Then** the result is correct\n"
221
221
  )
222
222
  spec = write_spec(tmp_path, content)
223
223
  result = validate_spec(str(spec))
@@ -226,8 +226,8 @@ class TestE007GivenWhenThen:
226
226
 
227
227
  def test_missing_when_raises_E007(self, tmp_path):
228
228
  content = MINIMAL_VALID_SPEC.replace(
229
- "**Given** a valid input\n**When** the action is taken\n**Then** the result is correct\n",
230
- "**Given** a valid input\n**Then** the result is correct\n"
229
+ "**Given** a valid input\n**When** R1 action is taken\n**Then** the result is correct\n",
230
+ "**Given** a valid input\n**Then** R1 result is correct\n"
231
231
  )
232
232
  spec = write_spec(tmp_path, content)
233
233
  result = validate_spec(str(spec))
@@ -236,8 +236,8 @@ class TestE007GivenWhenThen:
236
236
 
237
237
  def test_missing_then_raises_E007(self, tmp_path):
238
238
  content = MINIMAL_VALID_SPEC.replace(
239
- "**Given** a valid input\n**When** the action is taken\n**Then** the result is correct\n",
240
- "**Given** a valid input\n**When** the action is taken\n"
239
+ "**Given** a valid input\n**When** R1 action is taken\n**Then** the result is correct\n",
240
+ "**Given** a valid input\n**When** R1 action is taken\n"
241
241
  )
242
242
  spec = write_spec(tmp_path, content)
243
243
  result = validate_spec(str(spec))
@@ -246,8 +246,8 @@ class TestE007GivenWhenThen:
246
246
 
247
247
  def test_case_insensitive_keywords_no_E007(self, tmp_path):
248
248
  content = MINIMAL_VALID_SPEC.replace(
249
- "**Given** a valid input\n**When** the action is taken\n**Then** the result is correct\n",
250
- "given a valid input\nwhen the action is taken\nthen the result is correct\n"
249
+ "**Given** a valid input\n**When** R1 action is taken\n**Then** the result is correct\n",
250
+ "given a valid input\nwhen R1 action is taken\nthen the result is correct\n"
251
251
  )
252
252
  spec = write_spec(tmp_path, content)
253
253
  result = validate_spec(str(spec))
@@ -71,6 +71,8 @@ class TestR2DefaultConfig:
71
71
  "blocking": False,
72
72
  "test_dir": "tests/e2e",
73
73
  "env_file": ".env.test",
74
+ "api_spec": "", # HOTFIX-slim-025
75
+ "compose_file": "docker-compose.test.yml", # HOTFIX-slim-025
74
76
  }
75
77
 
76
78
 
@@ -0,0 +1,283 @@
1
+ """Tests for STORY-slim-024: Spec Lint W007 — Requirement-AC Coverage Check."""
2
+
3
+ import tempfile
4
+
5
+ from pactkit.skills.spec_linter import validate_spec
6
+
7
+
8
+ class TestAC1W007FiresOnUnreferencedRN:
9
+ """AC1: W007 fires when R{N} is not referenced by any AC."""
10
+
11
+ def test_unreferenced_r3_triggers_w007(self):
12
+ """R3 not referenced in any AC should trigger W007."""
13
+ spec = """\
14
+ | Field | Value |
15
+ |-------|-------|
16
+ | ID | TEST-001 |
17
+ | Status | Draft |
18
+ | Priority | P2 |
19
+ | Release | 1.0.0 |
20
+
21
+ ## Background
22
+ Test background.
23
+
24
+ ## Requirements
25
+
26
+ ### R1: First requirement
27
+ Something MUST happen.
28
+
29
+ ### R2: Second requirement
30
+ Something SHOULD happen.
31
+
32
+ ### R3: Third requirement
33
+ Something MAY happen.
34
+
35
+ ## Acceptance Criteria
36
+
37
+ ### AC1: Test R1
38
+ Given a condition
39
+ When R1 is tested
40
+ Then it passes
41
+
42
+ ### AC2: Test R2
43
+ Given another condition
44
+ When R2 is verified
45
+ Then it works
46
+ """
47
+ with tempfile.NamedTemporaryFile(mode="w", suffix=".md", delete=False) as f:
48
+ f.write(spec)
49
+ f.flush()
50
+ result = validate_spec(f.name)
51
+
52
+ w007_warnings = [w for w in result.warnings if w.rule_id == "W007"]
53
+ assert len(w007_warnings) == 1
54
+ assert "R3" in w007_warnings[0].message
55
+
56
+
57
+ class TestAC2NoW007WhenAllCovered:
58
+ """AC2: No W007 when all R{N} are covered by AC."""
59
+
60
+ def test_all_covered_no_w007(self):
61
+ """When every R{N} is referenced, no W007 should be emitted."""
62
+ spec = """\
63
+ | Field | Value |
64
+ |-------|-------|
65
+ | ID | TEST-002 |
66
+ | Status | Draft |
67
+ | Priority | P2 |
68
+ | Release | 1.0.0 |
69
+
70
+ ## Background
71
+ Test background.
72
+
73
+ ## Requirements
74
+
75
+ ### R1: First requirement
76
+ Something MUST happen.
77
+
78
+ ### R2: Second requirement
79
+ Something SHOULD happen.
80
+
81
+ ## Acceptance Criteria
82
+
83
+ ### AC1: Test R1 and R2
84
+ Given a condition
85
+ When R1 is tested and R2 is verified
86
+ Then both pass
87
+ """
88
+ with tempfile.NamedTemporaryFile(mode="w", suffix=".md", delete=False) as f:
89
+ f.write(spec)
90
+ f.flush()
91
+ result = validate_spec(f.name)
92
+
93
+ w007_warnings = [w for w in result.warnings if w.rule_id == "W007"]
94
+ assert len(w007_warnings) == 0
95
+
96
+
97
+ class TestAC3CaseInsensitiveMatching:
98
+ """AC3: R{N} matching should be case insensitive."""
99
+
100
+ def test_lowercase_r1_is_covered(self):
101
+ """'r1' in AC body should count as coverage for R1."""
102
+ spec = """\
103
+ | Field | Value |
104
+ |-------|-------|
105
+ | ID | TEST-003 |
106
+ | Status | Draft |
107
+ | Priority | P2 |
108
+ | Release | 1.0.0 |
109
+
110
+ ## Background
111
+ Test background.
112
+
113
+ ## Requirements
114
+
115
+ ### R1: First requirement
116
+ Something MUST happen.
117
+
118
+ ## Acceptance Criteria
119
+
120
+ ### AC1: Test lowercase reference
121
+ Given a condition
122
+ When r1 is tested (lowercase)
123
+ Then it passes
124
+ """
125
+ with tempfile.NamedTemporaryFile(mode="w", suffix=".md", delete=False) as f:
126
+ f.write(spec)
127
+ f.flush()
128
+ result = validate_spec(f.name)
129
+
130
+ w007_warnings = [w for w in result.warnings if w.rule_id == "W007"]
131
+ assert len(w007_warnings) == 0
132
+
133
+
134
+ class TestAC4W007DoesNotBlock:
135
+ """AC4: W007 is a warning, does not cause lint failure."""
136
+
137
+ def test_w007_does_not_fail(self):
138
+ """Spec with only W007 should still pass (warnings don't block)."""
139
+ spec = """\
140
+ | Field | Value |
141
+ |-------|-------|
142
+ | ID | TEST-004 |
143
+ | Status | Draft |
144
+ | Priority | P2 |
145
+ | Release | 1.0.0 |
146
+
147
+ ## Background
148
+ Test background.
149
+
150
+ ## Requirements
151
+
152
+ ### R1: First requirement
153
+ Something MUST happen.
154
+
155
+ ## Acceptance Criteria
156
+
157
+ ### AC1: Test something else
158
+ Given a condition
159
+ When something is tested
160
+ Then it passes
161
+ """
162
+ with tempfile.NamedTemporaryFile(mode="w", suffix=".md", delete=False) as f:
163
+ f.write(spec)
164
+ f.flush()
165
+ result = validate_spec(f.name)
166
+
167
+ # W007 should be emitted (R1 not referenced)
168
+ w007_warnings = [w for w in result.warnings if w.rule_id == "W007"]
169
+ assert len(w007_warnings) == 1
170
+ # But result should still pass (warnings don't block)
171
+ assert result.passed is True
172
+
173
+
174
+ class TestAC5RFC2119Emphasis:
175
+ """AC5: W007 message should indicate RFC 2119 keyword in unreferenced req."""
176
+
177
+ def test_should_indicator_in_message(self):
178
+ """Uncovered SHOULD requirement should have (SHOULD) in warning message."""
179
+ spec = """\
180
+ | Field | Value |
181
+ |-------|-------|
182
+ | ID | TEST-005 |
183
+ | Status | Draft |
184
+ | Priority | P2 |
185
+ | Release | 1.0.0 |
186
+
187
+ ## Background
188
+ Test background.
189
+
190
+ ## Requirements
191
+
192
+ ### R1: First requirement
193
+ Something MUST happen.
194
+
195
+ ### R2: Second requirement
196
+ Something SHOULD happen but might be forgotten.
197
+
198
+ ## Acceptance Criteria
199
+
200
+ ### AC1: Test R1 only
201
+ Given a condition
202
+ When R1 is tested
203
+ Then it passes
204
+ """
205
+ with tempfile.NamedTemporaryFile(mode="w", suffix=".md", delete=False) as f:
206
+ f.write(spec)
207
+ f.flush()
208
+ result = validate_spec(f.name)
209
+
210
+ w007_warnings = [w for w in result.warnings if w.rule_id == "W007"]
211
+ assert len(w007_warnings) == 1
212
+ assert "R2" in w007_warnings[0].message
213
+ assert "(SHOULD)" in w007_warnings[0].message
214
+
215
+ def test_must_indicator_in_message(self):
216
+ """Uncovered MUST requirement should have (MUST) in warning message."""
217
+ spec = """\
218
+ | Field | Value |
219
+ |-------|-------|
220
+ | ID | TEST-006 |
221
+ | Status | Draft |
222
+ | Priority | P2 |
223
+ | Release | 1.0.0 |
224
+
225
+ ## Background
226
+ Test background.
227
+
228
+ ## Requirements
229
+
230
+ ### R1: First requirement
231
+ Something MUST be implemented.
232
+
233
+ ## Acceptance Criteria
234
+
235
+ ### AC1: Test something else
236
+ Given a condition
237
+ When something unrelated is tested
238
+ Then it passes
239
+ """
240
+ with tempfile.NamedTemporaryFile(mode="w", suffix=".md", delete=False) as f:
241
+ f.write(spec)
242
+ f.flush()
243
+ result = validate_spec(f.name)
244
+
245
+ w007_warnings = [w for w in result.warnings if w.rule_id == "W007"]
246
+ assert len(w007_warnings) == 1
247
+ assert "R1" in w007_warnings[0].message
248
+ assert "(MUST)" in w007_warnings[0].message
249
+
250
+ def test_may_indicator_in_message(self):
251
+ """Uncovered MAY requirement should have (MAY) in warning message."""
252
+ spec = """\
253
+ | Field | Value |
254
+ |-------|-------|
255
+ | ID | TEST-007 |
256
+ | Status | Draft |
257
+ | Priority | P2 |
258
+ | Release | 1.0.0 |
259
+
260
+ ## Background
261
+ Test background.
262
+
263
+ ## Requirements
264
+
265
+ ### R1: Optional feature
266
+ Something MAY be implemented optionally.
267
+
268
+ ## Acceptance Criteria
269
+
270
+ ### AC1: Test something else
271
+ Given a condition
272
+ When something unrelated is tested
273
+ Then it passes
274
+ """
275
+ with tempfile.NamedTemporaryFile(mode="w", suffix=".md", delete=False) as f:
276
+ f.write(spec)
277
+ f.flush()
278
+ result = validate_spec(f.name)
279
+
280
+ w007_warnings = [w for w in result.warnings if w.rule_id == "W007"]
281
+ assert len(w007_warnings) == 1
282
+ assert "R1" in w007_warnings[0].message
283
+ assert "(MAY)" in w007_warnings[0].message
File without changes
File without changes
File without changes
File without changes