blockwatch-cli 0.15.0__tar.gz → 0.16.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/CHANGELOG.md +45 -0
  2. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/Cargo.lock +1 -1
  3. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/Cargo.toml +1 -1
  4. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/PKG-INFO +1 -1
  5. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/README.md +5 -4
  6. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/blockwatch.toml +1 -1
  7. blockwatch_cli-0.16.1/clippy.toml +11 -0
  8. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/docs/ci.md +2 -2
  9. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/docs/cli.md +13 -13
  10. blockwatch_cli-0.16.1/docs/symbols.md +482 -0
  11. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/docs/validators/check-ai.md +3 -0
  12. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/docs/validators/check-lua.md +3 -0
  13. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/docs/validators/keep-sorted.md +3 -0
  14. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/docs/validators/line-count.md +3 -0
  15. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/docs/validators/same-as.md +46 -26
  16. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/setup.py +1 -1
  17. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/blocks.rs +37 -3
  18. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/config.rs +11 -5
  19. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/fs.rs +5 -1
  20. blockwatch_cli-0.16.1/src/language_parsers/c.rs +1179 -0
  21. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/cpp.rs +4 -2
  22. blockwatch_cli-0.16.1/src/language_parsers/go.rs +635 -0
  23. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/javascript.rs +9 -2
  24. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/json.rs +2 -0
  25. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/markdown.rs +6 -5
  26. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/mdx.rs +5 -4
  27. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/mod.rs +63 -12
  28. blockwatch_cli-0.16.1/src/language_parsers/python.rs +635 -0
  29. blockwatch_cli-0.16.1/src/language_parsers/rust.rs +517 -0
  30. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/starlark.rs +9 -2
  31. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/toml.rs +6 -4
  32. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/tsx.rs +9 -2
  33. blockwatch_cli-0.16.1/src/language_parsers/typescript.rs +686 -0
  34. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/yaml.rs +6 -4
  35. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/lib.rs +3 -0
  36. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/path_arguments.rs +15 -3
  37. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/paths_glob.rs +66 -1
  38. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/scan.rs +6 -5
  39. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/settings.rs +17 -1
  40. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/skill.md +103 -25
  41. blockwatch_cli-0.16.1/src/symbols/code.rs +716 -0
  42. blockwatch_cli-0.15.0/src/symbols.rs → blockwatch_cli-0.16.1/src/symbols/mod.rs +192 -117
  43. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/validators/check_ai.rs +27 -1
  44. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/validators/check_lua.rs +33 -0
  45. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/validators/keep_sorted.rs +37 -1
  46. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/validators/line_count.rs +30 -1
  47. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/validators/mod.rs +80 -10
  48. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/validators/same_as.rs +313 -59
  49. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/virtual_blocks.rs +11 -6
  50. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/explain.rs +13 -5
  51. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/general.rs +2 -2
  52. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/same_as.rs +35 -0
  53. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/symbol_references.rs +70 -0
  54. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/check_lua/pattern.py +2 -2
  55. blockwatch_cli-0.16.1/tests/testdata/check_lua/pattern_many_matches.py +6 -0
  56. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/check_lua/pattern_no_match.py +1 -1
  57. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/general/custom_file_extension.python +1 -1
  58. blockwatch_cli-0.16.1/tests/testdata/symbol_references/bzl_source.rs +3 -0
  59. blockwatch_cli-0.16.1/tests/testdata/symbol_references/bzl_target.bzl +1 -0
  60. blockwatch_cli-0.16.1/tests/testdata/symbol_references/c_source.rs +3 -0
  61. blockwatch_cli-0.16.1/tests/testdata/symbol_references/c_target.c +1 -0
  62. blockwatch_cli-0.16.1/tests/testdata/symbol_references/cpp_source.rs +3 -0
  63. blockwatch_cli-0.16.1/tests/testdata/symbol_references/cpp_target.cpp +1 -0
  64. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/symbol_references/escapes_source.rs +4 -4
  65. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/symbol_references/filter_source.rs +2 -2
  66. blockwatch_cli-0.16.1/tests/testdata/symbol_references/go_source.rs +3 -0
  67. blockwatch_cli-0.16.1/tests/testdata/symbol_references/go_target.go +3 -0
  68. blockwatch_cli-0.16.1/tests/testdata/symbol_references/h_source.rs +3 -0
  69. blockwatch_cli-0.16.1/tests/testdata/symbol_references/h_target.h +1 -0
  70. blockwatch_cli-0.16.1/tests/testdata/symbol_references/js_source.rs +3 -0
  71. blockwatch_cli-0.16.1/tests/testdata/symbol_references/js_target.js +1 -0
  72. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/symbol_references/json_source.rs +2 -2
  73. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/symbol_references/jsonc_source.rs +2 -2
  74. blockwatch_cli-0.16.1/tests/testdata/symbol_references/markdown_source.rs +3 -0
  75. blockwatch_cli-0.16.1/tests/testdata/symbol_references/md_source.rs +3 -0
  76. blockwatch_cli-0.16.1/tests/testdata/symbol_references/mdx_source.rs +3 -0
  77. blockwatch_cli-0.16.1/tests/testdata/symbol_references/mixed_list_source.rs +6 -0
  78. blockwatch_cli-0.16.1/tests/testdata/symbol_references/py_source.rs +3 -0
  79. blockwatch_cli-0.16.1/tests/testdata/symbol_references/py_target.py +1 -0
  80. blockwatch_cli-0.16.1/tests/testdata/symbol_references/rs_source.rs +3 -0
  81. blockwatch_cli-0.16.1/tests/testdata/symbol_references/rs_target.rs +1 -0
  82. blockwatch_cli-0.16.1/tests/testdata/symbol_references/toml_source.rs +3 -0
  83. blockwatch_cli-0.16.1/tests/testdata/symbol_references/ts_source.rs +3 -0
  84. blockwatch_cli-0.16.1/tests/testdata/symbol_references/ts_target.ts +1 -0
  85. blockwatch_cli-0.16.1/tests/testdata/symbol_references/tsx_source.rs +3 -0
  86. blockwatch_cli-0.16.1/tests/testdata/symbol_references/tsx_target.tsx +1 -0
  87. blockwatch_cli-0.16.1/tests/testdata/symbol_references/yaml_source.rs +3 -0
  88. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/symbol_references/yml_source.rs +2 -2
  89. blockwatch_cli-0.15.0/clippy.toml +0 -5
  90. blockwatch_cli-0.15.0/docs/symbols.md +0 -238
  91. blockwatch_cli-0.15.0/src/language_parsers/c.rs +0 -85
  92. blockwatch_cli-0.15.0/src/language_parsers/go.rs +0 -239
  93. blockwatch_cli-0.15.0/src/language_parsers/python.rs +0 -79
  94. blockwatch_cli-0.15.0/src/language_parsers/rust.rs +0 -126
  95. blockwatch_cli-0.15.0/src/language_parsers/typescript.rs +0 -117
  96. blockwatch_cli-0.15.0/tests/testdata/check_lua/pattern_many_matches.py +0 -6
  97. blockwatch_cli-0.15.0/tests/testdata/symbol_references/markdown_source.rs +0 -3
  98. blockwatch_cli-0.15.0/tests/testdata/symbol_references/md_source.rs +0 -3
  99. blockwatch_cli-0.15.0/tests/testdata/symbol_references/mdx_source.rs +0 -3
  100. blockwatch_cli-0.15.0/tests/testdata/symbol_references/mixed_list_source.rs +0 -6
  101. blockwatch_cli-0.15.0/tests/testdata/symbol_references/toml_source.rs +0 -3
  102. blockwatch_cli-0.15.0/tests/testdata/symbol_references/yaml_source.rs +0 -3
  103. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/.agents/.claude-plugin/plugin.json +0 -0
  104. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/.agents/skills/blockwatch/SKILL.md +0 -0
  105. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/.claude-plugin/marketplace.json +0 -0
  106. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/.github/dependabot.yml +0 -0
  107. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/.github/workflows/blockwatch.yml +0 -0
  108. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/.github/workflows/codeql.yml +0 -0
  109. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/.github/workflows/markdownlint.yml +0 -0
  110. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/.github/workflows/pypi.yml +0 -0
  111. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/.github/workflows/release.yml +0 -0
  112. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/.github/workflows/rust.yml +0 -0
  113. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/.github/workflows/trusted-checks.yml +0 -0
  114. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/.gitignore +0 -0
  115. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/.markdownlint-cli2.yaml +0 -0
  116. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/.pre-commit-config.yaml +0 -0
  117. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/.pre-commit-hooks.yaml +0 -0
  118. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/AGENTS.md +0 -0
  119. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/CLAUDE.md +0 -0
  120. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/LICENSE +0 -0
  121. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/SECURITY.md +0 -0
  122. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/codecov.yml +0 -0
  123. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/demo.gif +0 -0
  124. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/dist-workspace.toml +0 -0
  125. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/docs/agents.md +0 -0
  126. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/docs/validators/README.md +0 -0
  127. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/docs/validators/affects.md +0 -0
  128. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/docs/validators/keep-unique.md +0 -0
  129. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/docs/validators/line-pattern.md +0 -0
  130. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/pypi/pyproject.toml +0 -0
  131. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/pyproject.toml +0 -0
  132. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/release.toml +0 -0
  133. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/scripts/check_language_count.lua +0 -0
  134. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/scripts/check_latest_gpt_nano_model.lua +0 -0
  135. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/block_parser.rs +0 -0
  136. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/cli.rs +0 -0
  137. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/diff_parser.rs +0 -0
  138. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/explain.rs +0 -0
  139. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/flags.rs +0 -0
  140. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/bash.rs +0 -0
  141. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/c_sharp.rs +0 -0
  142. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/cmake.rs +0 -0
  143. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/css.rs +0 -0
  144. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/dart.rs +0 -0
  145. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/dockerfile.rs +0 -0
  146. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/elixir.rs +0 -0
  147. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/graphql.rs +0 -0
  148. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/groovy.rs +0 -0
  149. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/hcl.rs +0 -0
  150. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/html.rs +0 -0
  151. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/java.rs +0 -0
  152. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/json.scm +0 -0
  153. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/kotlin.rs +0 -0
  154. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/lean.rs +0 -0
  155. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/lua.rs +0 -0
  156. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/makefile.rs +0 -0
  157. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/nix.rs +0 -0
  158. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/ocaml.rs +0 -0
  159. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/php.rs +0 -0
  160. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/proto.rs +0 -0
  161. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/ruby.rs +0 -0
  162. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/scala.rs +0 -0
  163. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/sql.rs +0 -0
  164. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/swift.rs +0 -0
  165. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/language_parsers/xml.rs +0 -0
  166. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/main.rs +0 -0
  167. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/repo_path.rs +0 -0
  168. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/report.rs +0 -0
  169. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/sarif.rs +0 -0
  170. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/symbol_path.rs +0 -0
  171. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/tag_parser.rs +0 -0
  172. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/target_reference.rs +0 -0
  173. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/validators/affects.rs +0 -0
  174. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/validators/keep_unique.rs +0 -0
  175. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/validators/line_pattern.rs +0 -0
  176. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/src/violation_address.rs +0 -0
  177. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/affects.rs +0 -0
  178. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/check_ai.rs +0 -0
  179. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/check_lua.rs +0 -0
  180. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/common/empty.toml +0 -0
  181. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/common/mod.rs +0 -0
  182. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/config.rs +0 -0
  183. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/encoding.rs +0 -0
  184. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/keep_sorted.rs +0 -0
  185. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/keep_unique.rs +0 -0
  186. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/line_count.rs +0 -0
  187. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/line_pattern.rs +0 -0
  188. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/list.rs +0 -0
  189. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/path_arguments.rs +0 -0
  190. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/repository_root.rs +0 -0
  191. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/sarif.rs +0 -0
  192. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/skill.rs +0 -0
  193. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/suppressions.rs +0 -0
  194. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/affects/cross_file_source.rs +0 -0
  195. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/affects/cross_file_target.md +0 -0
  196. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/affects/custom_ext_source.javascript +0 -0
  197. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/affects/custom_ext_target.javascript +0 -0
  198. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/affects/dangling.md +0 -0
  199. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/affects/missing_symbol.rs +0 -0
  200. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/affects/more_added_than_deleted.py +0 -0
  201. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/affects/multiline_tag_source.rs +0 -0
  202. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/affects/multiline_tag_target.rs +0 -0
  203. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/affects/nested_mapping_source.rs +0 -0
  204. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/affects/nested_mapping_target.yaml +0 -0
  205. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/affects/sibling.md +0 -0
  206. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/affects/symbol_source.rs +0 -0
  207. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/affects/symbol_target.json +0 -0
  208. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/affects/table_source.rs +0 -0
  209. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/affects/table_target.toml +0 -0
  210. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/affects/tag_and_content_source.ts +0 -0
  211. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/affects/tag_and_content_target.ts +0 -0
  212. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/affects/whole_file_source.rs +0 -0
  213. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/affects/whole_file_target.json +0 -0
  214. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/check_ai/two_blocks.py +0 -0
  215. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/check_lua/affects.lua +0 -0
  216. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/check_lua/affects.py +0 -0
  217. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/check_lua/affects_drift.py +0 -0
  218. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/check_lua/blocking_io.lua +0 -0
  219. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/check_lua/blocking_io.py +0 -0
  220. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/check_lua/echo.lua +0 -0
  221. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/check_lua/fail.lua +0 -0
  222. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/check_lua/mode.py +0 -0
  223. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/check_lua/os.lua +0 -0
  224. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/check_lua/pathfmt/report_path.lua +0 -0
  225. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/check_lua/pathfmt/source.py +0 -0
  226. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/check_lua/success.lua +0 -0
  227. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/check_lua/success_and_failure.py +0 -0
  228. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/config/glob_target/config.toml +0 -0
  229. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/config/glob_target/package.json +0 -0
  230. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/config/glob_target/plugins/blue/package.json +0 -0
  231. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/config/glob_target/plugins/green/package.json +0 -0
  232. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/config/glob_target/plugins/red/package.json +0 -0
  233. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/explain/a.py +0 -0
  234. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/explain/check.lua +0 -0
  235. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/general/block_selection.py +0 -0
  236. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/general/custom_file_extension.javascript +0 -0
  237. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/general/disable_enable.py +0 -0
  238. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/general/paths/invalid.py +0 -0
  239. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/general/paths/subdir/nested_invalid.py +0 -0
  240. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/general/paths/valid.py +0 -0
  241. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/general/severity.py +0 -0
  242. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/hidden/.github/workflows/ci.yml +0 -0
  243. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/keep_sorted/orderings.py +0 -0
  244. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/keep_unique/basic_and_pattern.py +0 -0
  245. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/line_count/equality_and_greater_than.py +0 -0
  246. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/line_pattern/forbidden_text.py +0 -0
  247. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/line_pattern/hex_and_word_patterns.py +0 -0
  248. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/list/.hg/.gitkeep +0 -0
  249. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/list/a.py +0 -0
  250. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/list/b.py +0 -0
  251. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/positions/unicode_columns.py +0 -0
  252. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/same_as/custom_ext_source.javascript +0 -0
  253. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/same_as/custom_ext_target.javascript +0 -0
  254. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/same_as/package.json +0 -0
  255. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/same_as/paths/alpha/item.txt +0 -0
  256. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/same_as/paths/beta/item.txt +0 -0
  257. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/same_as/paths_and_block_source.md +0 -0
  258. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/same_as/paths_source.md +0 -0
  259. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/same_as/sibling.rs +0 -0
  260. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/same_as/source.rs +0 -0
  261. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/same_as/split_table_source.rs +0 -0
  262. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/same_as/split_table_target.toml +0 -0
  263. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/same_as/symbol_mismatch_source.rs +0 -0
  264. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/same_as/symbol_source.rs +0 -0
  265. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/same_as/target.md +0 -0
  266. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/same_as/whole_file_mismatch_source.rs +0 -0
  267. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/same_as/whole_file_source.rs +0 -0
  268. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/same_as/whole_file_target.json +0 -0
  269. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/sarif/advisory.py +0 -0
  270. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/sarif/clean.py +0 -0
  271. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/sarif/sorted.py +0 -0
  272. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/sarif/unnamed.py +0 -0
  273. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/suppressions/commit_msg.txt +0 -0
  274. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/suppressions/commit_msg_gone_a.txt +0 -0
  275. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/suppressions/commit_msg_gone_b.txt +0 -0
  276. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/suppressions/commit_msg_lowercase_trailer.txt +0 -0
  277. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/suppressions/commit_msg_malformed.txt +0 -0
  278. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/suppressions/commit_msg_with_noise.txt +0 -0
  279. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/suppressions/dangling.py +0 -0
  280. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/suppressions/sorted.py +0 -0
  281. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/suppressions/symbol.py +0 -0
  282. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/suppressions/symbol_target.json +0 -0
  283. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/suppressions/two_rules.py +0 -0
  284. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/suppressions/unnamed.py +0 -0
  285. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/symbol_references/escapes_target.json +0 -0
  286. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/symbol_references/filter_target.yaml +0 -0
  287. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/symbol_references/json_target.json +0 -0
  288. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/symbol_references/jsonc_target.jsonc +0 -0
  289. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/symbol_references/markdown_target.markdown +0 -0
  290. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/symbol_references/md_target.md +0 -0
  291. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/symbol_references/mdx_target.mdx +0 -0
  292. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/symbol_references/mixed_list_target.json +0 -0
  293. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/symbol_references/toml_target.toml +0 -0
  294. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/symbol_references/yaml_target.yaml +0 -0
  295. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/symbol_references/yml_target.yml +0 -0
  296. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/verbosity/affects/pair.py +0 -0
  297. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/verbosity/clean/counted.py +0 -0
  298. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/verbosity/clean/noop.py +0 -0
  299. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/verbosity/clean/notes.txt +0 -0
  300. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/verbosity/clean/sorted.py +0 -0
  301. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/verbosity/diff/two_blocks.py +0 -0
  302. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/verbosity/failing/unsorted.py +0 -0
  303. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/testdata/verbosity/mixed/both_kinds.py +0 -0
  304. {blockwatch_cli-0.15.0 → blockwatch_cli-0.16.1}/tests/verbosity.rs +0 -0
@@ -12,6 +12,51 @@ Releases up to and including v0.3.11 predate this file. Their notes live on the
12
12
 
13
13
  ## [Unreleased] - ReleaseDate
14
14
 
15
+ ## [0.16.1] - 2026-10-28
16
+
17
+ ### Added
18
+
19
+ - Symbols in Go, C, C++, Python, Starlark, Rust, TypeScript and JavaScript files. `consts.go#/MaxPorts` points at a
20
+ top-level constant, variable, type or function, and `limits.h#/MAX_PORTS` at a macro. A value is the initializer as
21
+ written, such as `20 * 1024 * 1024`, so `same-as` can compare it with a constant in another file without a
22
+ `target-pattern`. A syntax error stops the run only for the names near it. See [Code files](docs/symbols.md#code-files),
23
+ [Go](docs/symbols.md#go), [C and C++](docs/symbols.md#c-and-c),
24
+ [Python and Starlark](docs/symbols.md#python-and-starlark), [Rust](docs/symbols.md#rust) and
25
+ [TypeScript and JavaScript](docs/symbols.md#typescript-and-javascript).
26
+
27
+ ## [0.16.0] - 2026-10-24
28
+
29
+ ### Changed
30
+
31
+ - Without `same-as-pattern`, `same-as` compares each line that isn't blank as one value. Before, the whole block was
32
+ one value, so `same-as-mode` and `same-as-format` didn't work on a block of several lines. For example,
33
+ `same-as-mode="single"` passed with two lines, `subset` failed on a line that the target had, and `numeric` reported
34
+ that `1` and `2` together are not a number ([#179](https://github.com/mennanov/blockwatch/issues/179)).
35
+ - Without `same-as-mode`, a block without `same-as-pattern` compares in `sequence` mode. So it still fails when its
36
+ lines differ from the target's or come in another order. A block with a pattern still compares in `set` mode.
37
+ - A block without `same-as-pattern` now fails when its target's pattern finds a value more than once, or in another
38
+ order: `["1.2.3"] != ["1.2.3", "1.2.3"]`. Before, the default `set` mode ignored this. To keep the old result, add
39
+ `same-as-mode="set"`, or `same-as-mode="subset"` when the target may hold other values too.
40
+ - `same-as` now fails on two empty blocks, as it does on a pattern that matches nothing. The message for both is
41
+ `this block or its target has no values to compare`.
42
+ - `same-as-paths` no longer needs `same-as-pattern`. Without one, each line of the block must be a path, in sorted
43
+ order.
44
+ - An attribute that changes how a validator works now stops the run on a block without the validator's main
45
+ attribute. Before, it did nothing there. For example, `same-as-mode="sequence"` on a target let values in another
46
+ order pass. The attributes are:
47
+ - `same-as-mode` and `same-as-format`, without `same-as` or `same-as-paths`;
48
+ - `same-as-pattern`, without `same-as`, `same-as-paths` or `name`, because only a block with a name can be a target;
49
+ - `keep-sorted-pattern` and `keep-sorted-format`, without `keep-sorted`;
50
+ - `line-count-pattern`, without `line-count`;
51
+ - `check-ai-pattern`, without `check-ai`;
52
+ - `check-lua-pattern` and `check-lua-timeout`, without `check-lua`.
53
+
54
+ ### Fixed
55
+
56
+ - An empty alternative in braces now matches, so `{,sub/}a.yml` matches both `a.yml` and `sub/a.yml`. Before, it
57
+ matched only `sub/a.yml`, with no error. This was true of every glob: a `[[block]]` target, `same-as-paths`, the
58
+ `ignore` setting and `--ignore`, and a path argument ([#177](https://github.com/mennanov/blockwatch/issues/177)).
59
+
15
60
  ## [0.15.0] - 2026-10-21
16
61
 
17
62
  ### Changed
@@ -274,7 +274,7 @@ checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06"
274
274
 
275
275
  [[package]]
276
276
  name = "blockwatch"
277
- version = "0.15.0"
277
+ version = "0.16.1"
278
278
  dependencies = [
279
279
  "anyhow",
280
280
  "assert-json-diff",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "blockwatch"
3
- version = "0.15.0"
3
+ version = "0.16.1"
4
4
  edition = "2024"
5
5
  repository = "https://github.com/mennanov/blockwatch"
6
6
  description = "Language agnostic linter that keeps your code and documentation in sync and valid"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: blockwatch-cli
3
- Version: 0.15.0
3
+ Version: 0.16.1
4
4
  Summary: Language agnostic linter that keeps your code and documentation in sync and valid
5
5
  Keywords: linter,sync,drift,comments,agents
6
6
  Home-Page: https://github.com/mennanov/blockwatch
@@ -88,9 +88,10 @@ Two validators work across files:
88
88
  - `affects` fails when a diff touches a block without also changing what it points to.
89
89
  - `same-as` fails when a block and its target hold different values. It needs no diff.
90
90
 
91
- Both can point to a block, a whole file, a specific value in a file like `package.json#/version`, or a section of a
92
- Markdown file (see [Symbols](docs/symbols.md)). The other validators check a single block on their own: the things
93
- you'd otherwise have to nitpick in code review.
91
+ Both can point to a block, a whole file, a specific value in a file like `package.json#/version`, a section of a
92
+ Markdown file, or a constant in a Go, C, C++, Python, Rust, TypeScript or JavaScript file (see
93
+ [Symbols](docs/symbols.md)). The other validators check a single block on their own: the things you'd otherwise have to
94
+ nitpick in code review.
94
95
 
95
96
  <!-- <block name="available-validators"
96
97
  same-as="src/validators/mod.rs:validator-registry, docs/validators/README.md:validators-index"
@@ -218,7 +219,7 @@ exclusions, and custom extension mappings.
218
219
 
219
220
  ```yaml
220
221
  - repo: https://github.com/mennanov/blockwatch
221
- rev: v0.15.0 # Use latest release
222
+ rev: v0.16.1 # Use latest release
222
223
  hooks:
223
224
  - id: blockwatch
224
225
  ```
@@ -50,4 +50,4 @@ same-as-pattern = '^\|\s*`(?P<value>[a-z-]+)`'
50
50
  [[block]]
51
51
  target = 'src/skill.md#/blockwatch/Symbols/Files with symbols'
52
52
  name = 'extensions-with-symbols'
53
- same-as-pattern = '`\.?(?P<value>[A-Za-z]+)`'
53
+ same-as-pattern = '`\.?(?P<value>[A-Za-z.]+)`'
@@ -0,0 +1,11 @@
1
+ # The integration tests run inside this repository, so a run would read its blockwatch.toml, which
2
+ # skips tests/testdata.
3
+ disallowed-macros = [
4
+ { path = "assert_cmd::cargo_bin_cmd", reason = "use common::cargo_bin_cmd!, which passes an empty config" },
5
+ ]
6
+ # globset drops an empty alternative in braces by default, so `{,sub/}a.yml` would not match
7
+ # `a.yml`.
8
+ disallowed-methods = [
9
+ { path = "globset::Glob::new", reason = "use paths_glob::glob_builder, which keeps an empty alternative" },
10
+ { path = "globset::GlobBuilder::new", reason = "use paths_glob::glob_builder, which keeps an empty alternative" },
11
+ ]
@@ -19,7 +19,7 @@ To use [pre-commit](https://pre-commit.com), add the hook to `.pre-commit-config
19
19
 
20
20
  ```yaml
21
21
  - repo: https://github.com/mennanov/blockwatch
22
- rev: v0.15.0 # Use latest release
22
+ rev: v0.16.1 # Use latest release
23
23
  hooks:
24
24
  - id: blockwatch
25
25
  ```
@@ -59,7 +59,7 @@ The `blockwatch` hook runs before the commit message exists, so it cannot see a
59
59
 
60
60
  ```yaml
61
61
  - repo: https://github.com/mennanov/blockwatch
62
- rev: v0.15.0 # Use latest release
62
+ rev: v0.16.1 # Use latest release
63
63
  hooks:
64
64
  - id: blockwatch-commit-msg
65
65
  ```
@@ -557,15 +557,15 @@ Nothing else about the run changes: the same violations are found, and the exit
557
557
  "tool": {
558
558
  "driver": {
559
559
  "name": "blockwatch",
560
- "version": "0.15.0",
561
- "semanticVersion": "0.15.0",
560
+ "version": "0.16.1",
561
+ "semanticVersion": "0.16.1",
562
562
  "informationUri": "https://github.com/mennanov/blockwatch",
563
563
  "rules": [
564
564
  {
565
565
  "id": "keep-sorted",
566
566
  "name": "keep-sorted",
567
567
  "shortDescription": { "text": "Requires the lines of a block to stay in order." },
568
- "helpUri": "https://github.com/mennanov/blockwatch/blob/v0.15.0/docs/validators/keep-sorted.md"
568
+ "helpUri": "https://github.com/mennanov/blockwatch/blob/v0.16.1/docs/validators/keep-sorted.md"
569
569
  }
570
570
  ]
571
571
  }
@@ -790,16 +790,16 @@ A trace stops where its validator stops, such as at the first line out of order.
790
790
  file, and `text` is that line trimmed, as the validator compares it. A key that holds what a violation reports has the
791
791
  name the violation's `data` gives it, such as `reason`.
792
792
 
793
- | Validator | What it shows |
794
- |----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
795
- | `same-as` | `records`: each match of `same-as-pattern` in the block, with its `line`, the text the regex matched (`match`), and each named group after `same-as-format` (`groups`). `targets`: the `records` of each target, and the `reason` of its violation, or `null` when the two agree. `paths`: with `same-as-paths`, the `glob`, the paths it `matched`, their `records` and the `reason`. |
796
- | `keep-sorted` | `lines`: each line read, with the `value` it compares, or `null` when `keep-sorted-pattern` skips the line. `format` and `order`. |
797
- | `keep-unique` | `lines`, as for `keep-sorted`. A repeated value has `duplicate_of`: the line where it first appeared. |
798
- | `line-pattern` | `lines`: each line read, with the text `line-pattern` matched (`match`). A line that fails has `fails`: the check it fails. `forbidden_match` is the text `line-pattern-forbidden` found. |
799
- | `line-count` | `lines`, as for `keep-sorted`. A line counts when its `value` isn't `null`. The number of lines counted (`actual`), and the rule (`op` and `expected`). |
800
- | `affects` | Whether the diff changed the block (`block_changed`). For each target: whether the diff `changed` it, or the `reason` it doesn't resolve. |
801
- | `check-lua` | The `content` and the `affects` the script got, and the message it returned (`lua_error`), or `null` when it passed. `affects` is `ctx.affects` without the content of each target. |
802
- | `check-ai` | The `model`, the `prompt` sent and the `response`. Both are `null` when `check-ai-pattern` matched nothing, so no request was sent. |
793
+ | Validator | What it shows |
794
+ |----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
795
+ | `same-as` | `records`: each match of `same-as-pattern` in the block, or each line without a pattern, with its `line`, the text the regex matched (`match`), and each named group after `same-as-format` (`groups`). `mode`: the `same-as-mode` it compared with. `targets`: the `records` of each target, and the `reason` of its violation, or `null` when the two agree. `paths`: with `same-as-paths`, the `glob`, the paths it `matched`, their `records` and the `reason`. |
796
+ | `keep-sorted` | `lines`: each line read, with the `value` it compares, or `null` when `keep-sorted-pattern` skips the line. `format` and `order`. |
797
+ | `keep-unique` | `lines`, as for `keep-sorted`. A repeated value has `duplicate_of`: the line where it first appeared. |
798
+ | `line-pattern` | `lines`: each line read, with the text `line-pattern` matched (`match`). A line that fails has `fails`: the check it fails. `forbidden_match` is the text `line-pattern-forbidden` found. |
799
+ | `line-count` | `lines`, as for `keep-sorted`. A line counts when its `value` isn't `null`. The number of lines counted (`actual`), and the rule (`op` and `expected`). |
800
+ | `affects` | Whether the diff changed the block (`block_changed`). For each target: whether the diff `changed` it, or the `reason` it doesn't resolve. |
801
+ | `check-lua` | The `content` and the `affects` the script got, and the message it returned (`lua_error`), or `null` when it passed. `affects` is `ctx.affects` without the content of each target. |
802
+ | `check-ai` | The `model`, the `prompt` sent and the `response`. Both are `null` when `check-ai-pattern` matched nothing, so no request was sent. |
803
803
 
804
804
  ## Run Reports
805
805