code-standards 8.49.1__tar.gz → 8.50.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 (178) hide show
  1. {code_standards-8.49.1 → code_standards-8.50.1}/PKG-INFO +2 -2
  2. {code_standards-8.49.1 → code_standards-8.50.1}/pyproject.toml +2 -2
  3. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/cli-reference.v1.json +1 -1
  4. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/rule-calibration-campaign.v1.json +12 -12
  5. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/devops_tools.py +5 -1
  6. code_standards-8.50.1/src/sarj_standards/schemas/rule-catalog.v1.json +1 -0
  7. code_standards-8.49.1/src/sarj_standards/schemas/rule-catalog.v1.json +0 -1
  8. {code_standards-8.49.1 → code_standards-8.50.1}/.gitignore +0 -0
  9. {code_standards-8.49.1 → code_standards-8.50.1}/LICENSE +0 -0
  10. {code_standards-8.49.1 → code_standards-8.50.1}/README.md +0 -0
  11. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/__init__.py +0 -0
  12. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/__main__.py +0 -0
  13. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/_meta.py +0 -0
  14. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/api.py +0 -0
  15. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/cli/__init__.py +0 -0
  16. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/cli/main.py +0 -0
  17. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/Mintfile.mobile.strict +0 -0
  18. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/actionlint.strict.yaml +0 -0
  19. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/basedpyright.python315-watch.json +0 -0
  20. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/basedpyright.strict.json +0 -0
  21. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/checkov.strict.yml +0 -0
  22. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/detekt.strict.yml +0 -0
  23. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/devops-verification.v1.json +0 -0
  24. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/doctor.config.json +0 -0
  25. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/eslint-compact-formatter.mjs +0 -0
  26. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/eslint-selected-rules.mjs +0 -0
  27. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/eslint.application.mjs +0 -0
  28. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/eslint.peers.json +0 -0
  29. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/eslint.strict.mjs +0 -0
  30. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/hadolint.strict.yaml +0 -0
  31. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/ktlint.strict.editorconfig +0 -0
  32. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/markdownlint.strict.yaml +0 -0
  33. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/mobile-tools.versions.json +0 -0
  34. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/mobsf.strict.yml +0 -0
  35. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/pyright.strict.json +0 -0
  36. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/ruff.application.toml +0 -0
  37. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/ruff.python315-watch.toml +0 -0
  38. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/ruff.strict.toml +0 -0
  39. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/rule-inventory.v1.json +0 -0
  40. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/rule-ledger.json +0 -0
  41. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/rule-level-source.mjs +0 -0
  42. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/schemas/SKAFFOLD-LICENSE +0 -0
  43. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/schemas/skaffold-v4beta7.json +0 -0
  44. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/schemas/upstream-schemas.json +0 -0
  45. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/semgrep-overrides.txt +0 -0
  46. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/shellcheck.strict.rc +0 -0
  47. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/swiftformat.strict +0 -0
  48. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/swiftlint.strict.yml +0 -0
  49. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/taplo.strict.toml +0 -0
  50. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/tflint.strict.hcl +0 -0
  51. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/tflint.version.hcl +0 -0
  52. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/yamllint.strict.yaml +0 -0
  53. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/configs/zizmor.strict.yml +0 -0
  54. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/__init__.py +0 -0
  55. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/adoption/__init__.py +0 -0
  56. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/adoption/age_transition.py +0 -0
  57. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/adoption/configs.py +0 -0
  58. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/adoption/devops.py +0 -0
  59. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/adoption/doctor.py +0 -0
  60. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/adoption/exclusions.py +0 -0
  61. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/adoption/hooks.py +0 -0
  62. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/adoption/launcher.py +0 -0
  63. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/adoption/lifecycle.py +0 -0
  64. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/adoption/manifest.py +0 -0
  65. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/adoption/native_bootstrap.py +0 -0
  66. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/adoption/packagemanager.py +0 -0
  67. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/adoption/repository_baseline.py +0 -0
  68. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/adoption/retired_suppressions.py +0 -0
  69. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/adoption/scaffold.py +0 -0
  70. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/adoption/service.py +0 -0
  71. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/adoption/transaction.py +0 -0
  72. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/adoption/upgrade.py +0 -0
  73. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/adoption/uvtool.py +0 -0
  74. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/catalogs/__init__.py +0 -0
  75. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/catalogs/slack_automations.py +0 -0
  76. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/corpus/__init__.py +0 -0
  77. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/corpus/manifest.py +0 -0
  78. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/corpus/snapshot.py +0 -0
  79. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/diagnostics/__init__.py +0 -0
  80. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/diagnostics/analysis.schema.json +0 -0
  81. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/diagnostics/baseline.py +0 -0
  82. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/diagnostics/models.py +0 -0
  83. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/diagnostics/serialize.py +0 -0
  84. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/diagnostics/source.py +0 -0
  85. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/filesystem.py +0 -0
  86. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/json_boundary.py +0 -0
  87. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/__init__.py +0 -0
  88. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/analysis.py +0 -0
  89. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/chart_schemas.py +0 -0
  90. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/cloudbuild.py +0 -0
  91. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/devops_programs.py +0 -0
  92. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/devops_schema.py +0 -0
  93. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/devops_source.py +0 -0
  94. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/duplicate_code.py +0 -0
  95. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/embedded_shell.py +0 -0
  96. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/external.py +0 -0
  97. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/kubernetes_context.py +0 -0
  98. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/library_policy.py +0 -0
  99. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/mobile_tools.py +0 -0
  100. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/policy.py +0 -0
  101. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/prepared_devops.py +0 -0
  102. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/prepared_kubernetes.py +0 -0
  103. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/repo_standards.py +0 -0
  104. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/runner.py +0 -0
  105. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/scheduling.py +0 -0
  106. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/security_tools.py +0 -0
  107. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/shell_ast.py +0 -0
  108. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/shell_format.py +0 -0
  109. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/shell_policy.py +0 -0
  110. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/text_rule_base.py +0 -0
  111. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/text_rules/__init__.py +0 -0
  112. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/text_rules/_registry.py +0 -0
  113. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/text_rules/cloudbuild_contract.py +0 -0
  114. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/textlint.py +0 -0
  115. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/toml_literals.py +0 -0
  116. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/linting/unused_modules.py +0 -0
  117. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/__init__.py +0 -0
  118. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/_values.py +0 -0
  119. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/artifacts.py +0 -0
  120. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/causality.py +0 -0
  121. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/changes.py +0 -0
  122. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/ci_artifacts.py +0 -0
  123. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/make_checks.py +0 -0
  124. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/metadata_verification.py +0 -0
  125. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/native_test_setup.py +0 -0
  126. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/process.py +0 -0
  127. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/publish.py +0 -0
  128. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/registry.py +0 -0
  129. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/release_age.py +0 -0
  130. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/release_detect.py +0 -0
  131. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/retirement.py +0 -0
  132. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/reviewed_analysis.py +0 -0
  133. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/rollout.py +0 -0
  134. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/status.py +0 -0
  135. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/tags.py +0 -0
  136. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/test_selection.py +0 -0
  137. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/typescript.py +0 -0
  138. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/verification_process.py +0 -0
  139. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/release/wheel_tests.py +0 -0
  140. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/__init__.py +0 -0
  141. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/cli_reference_artifact.py +0 -0
  142. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/comment_corpus.py +0 -0
  143. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/config_generation.py +0 -0
  144. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/docs.py +0 -0
  145. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/hooks.py +0 -0
  146. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/immutable_git.py +0 -0
  147. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/ledger.py +0 -0
  148. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/repository.py +0 -0
  149. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/ruff_freshness.py +0 -0
  150. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/rule_authoring.py +0 -0
  151. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/rule_catalog_artifact.py +0 -0
  152. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/rule_changes.py +0 -0
  153. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/rule_checkout.py +0 -0
  154. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/rule_dependencies.py +0 -0
  155. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/rule_examples.py +0 -0
  156. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/rule_imports.cjs +0 -0
  157. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/rule_inventory_artifact.py +0 -0
  158. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/rule_level_source.py +0 -0
  159. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/rule_lifecycle.py +0 -0
  160. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/rule_maintenance.py +0 -0
  161. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/rule_registration.py +0 -0
  162. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/shell_checks.py +0 -0
  163. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/repository/third_party_catalog_artifact.py +0 -0
  164. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/rules/__init__.py +0 -0
  165. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/rules/catalog.py +0 -0
  166. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/rules/contracts.py +0 -0
  167. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/rules/corpus_runner.py +0 -0
  168. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/rules/evaluation.py +0 -0
  169. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/schema_boundary.py +0 -0
  170. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/setup/__init__.py +0 -0
  171. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/setup/repository.py +0 -0
  172. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/typed_containers.py +0 -0
  173. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/libs/yaml_boundary.py +0 -0
  174. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/py.typed +0 -0
  175. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/schemas/__init__.py +0 -0
  176. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/schemas/_paths.py +0 -0
  177. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/schemas/rule-catalog.v1.schema.json +0 -0
  178. {code_standards-8.49.1 → code_standards-8.50.1}/src/sarj_standards/schemas/slack-automations.v1.schema.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: code-standards
3
- Version: 8.49.1
3
+ Version: 8.50.1
4
4
  Summary: One deterministic quality gate for Sarj Python, TypeScript, Swift, Kotlin, shell, SQL, IaC, and repository policy.
5
5
  Project-URL: Homepage, https://code-standards.sarj.ai/
6
6
  Project-URL: Documentation, https://code-standards.sarj.ai/cli/
@@ -31,7 +31,7 @@ Requires-Dist: referencing==0.37.0
31
31
  Requires-Dist: repo-standards==6.4.2
32
32
  Requires-Dist: ruff==0.16.10
33
33
  Requires-Dist: sarj-iac-lint==0.19.5
34
- Requires-Dist: sarj-python-lint==1.29.1
34
+ Requires-Dist: sarj-python-lint==1.30.0
35
35
  Requires-Dist: sarj-rule-contracts==0.2.3
36
36
  Requires-Dist: sarj-sql-lint==0.18.17
37
37
  Requires-Dist: shellcheck-py==0.11.0.1; (sys_platform == 'darwin' and platform_machine == 'arm64') or (sys_platform == 'darwin' and platform_machine == 'x86_64') or (sys_platform == 'linux' and platform_machine == 'x86_64') or (sys_platform == 'win32' and platform_machine == 'AMD64')
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "code-standards"
3
- version = "8.49.1"
3
+ version = "8.50.1"
4
4
  description = "One deterministic quality gate for Sarj Python, TypeScript, Swift, Kotlin, shell, SQL, IaC, and repository policy."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.14"
@@ -32,7 +32,7 @@ dependencies = [
32
32
  "ruff==0.16.10",
33
33
  "shellcheck-py==0.11.0.1; (sys_platform == 'darwin' and platform_machine == 'arm64') or (sys_platform == 'darwin' and platform_machine == 'x86_64') or (sys_platform == 'linux' and platform_machine == 'x86_64') or (sys_platform == 'win32' and platform_machine == 'AMD64')",
34
34
  "sarj-iac-lint==0.19.5",
35
- "sarj-python-lint==1.29.1",
35
+ "sarj-python-lint==1.30.0",
36
36
  "sarj-sql-lint==0.18.17",
37
37
  "typer==0.27.2",
38
38
  ]
@@ -1 +1 @@
1
- {"commands":[{"commands":[],"name":"commit-message","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"COMMIT_MSG_FILE","names":["message_file"],"repeatable":false,"required":true,"summary":"Git commit-message file supplied by the commit-msg hook"}],"path":["commit-message"],"summary":"enforce [(i/N) ][TICKET] type(scope)!: description with safe mechanical fixes","usage":"code-standards commit-message [-h] COMMIT_MSG_FILE"},{"commands":[],"name":"doctor","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":["text","json"],"kind":"option","metavar":"OUTPUT_FORMAT","names":["--format"],"repeatable":false,"required":false,"summary":"output format (default: text)"},{"choices":[],"kind":"option","metavar":null,"names":["--repair"],"repeatable":false,"required":false,"summary":"transactionally repair safe drift with the executing bundle, then re-diagnose"},{"choices":[],"kind":"option","metavar":null,"names":["--no-install"],"repeatable":false,"required":false,"summary":"with --repair, update configuration without installing dependencies or hooks"}],"path":["doctor"],"summary":"diagnose adoption health and optionally repair safe drift","usage":"code-standards doctor [-h] [--format OUTPUT_FORMAT] [--repair] [--no-install]"},{"commands":[],"name":"setup","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":["pre-commit","lefthook","none"],"kind":"option","metavar":"HOOKS","names":["--hooks"],"repeatable":false,"required":false,"summary":"hook manager (default: detect Lefthook, otherwise pre-commit)"},{"choices":[],"kind":"option","metavar":"PYTHON_DEST","names":["--python-dest"],"repeatable":false,"required":false,"summary":"the directory that owns pyproject.toml (default: detected)"},{"choices":[],"kind":"option","metavar":"TYPESCRIPT_DEST","names":["--typescript-dest"],"repeatable":false,"required":false,"summary":"the directory that owns the npm lockfile (default: detected)"},{"choices":[],"kind":"option","metavar":"SWIFT_DEST","names":["--swift-dest"],"repeatable":false,"required":false,"summary":"the directory that owns one reviewed Swift project (default: mobile project detection)"},{"choices":[],"kind":"option","metavar":"KOTLIN_DEST","names":["--kotlin-dest"],"repeatable":false,"required":false,"summary":"the directory that owns one reviewed Android/KMP project (default: detected)"},{"choices":[],"kind":"option","metavar":null,"names":["--dry-run"],"repeatable":false,"required":false,"summary":"print the complete plan without writing"},{"choices":[],"kind":"option","metavar":null,"names":["--force"],"repeatable":false,"required":false,"summary":"replace conflicting generated lint configuration after review"},{"choices":[],"kind":"option","metavar":null,"names":["--no-install"],"repeatable":false,"required":false,"summary":"write wiring without installing dependencies or hooks"},{"choices":[],"kind":"option","metavar":null,"names":["--tools-only"],"repeatable":false,"required":false,"summary":"install and attest pinned native tools for an adopted repository"},{"choices":[],"kind":"option","metavar":null,"names":["--commit-policy-only"],"repeatable":false,"required":false,"summary":"adopt only commit-message and PR-history policy without changing language tooling"},{"choices":["checkov","detekt","eslint","ktlint","markdownlint","mobile-security","pyright","ruff","shellcheck","swiftformat","swiftlint","taplo","yamllint","zizmor"],"kind":"option","metavar":"ONLY","names":["--config"],"repeatable":true,"required":false,"summary":"select one config explicitly (repeatable)"},{"choices":[],"kind":"option","metavar":"ENABLE_REPOSITORY_RULE","names":["--enable-repository-rule"],"repeatable":true,"required":false,"summary":"explicitly enable one reviewed, installed error-stage repository rule (repeatable); preserve existing rules and capped exceptions"}],"path":["setup"],"summary":"adopt or converge the repository in one idempotent operation","usage":"code-standards setup [-h] [--hooks HOOKS] [--python-dest PYTHON_DEST] [--typescript-dest TYPESCRIPT_DEST] [--swift-dest SWIFT_DEST] [--kotlin-dest KOTLIN_DEST] [--dry-run] [--force] [--no-install] [--tools-only] [--commit-policy-only] [--config ONLY ...] [--enable-repository-rule ENABLE_REPOSITORY_RULE ...]"},{"commands":[],"name":"analyze","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":null,"names":["--external"],"repeatable":false,"required":false,"summary":"run pinned upstream analyzers"},{"choices":[],"kind":"option","metavar":null,"names":["--prepared-only"],"repeatable":false,"required":false,"summary":"validate prepared artifacts; source analysis stays in the CI source gate"},{"choices":[],"kind":"option","metavar":null,"names":["--trust-repository-code"],"repeatable":false,"required":false,"summary":"allow prepared local Terraform provider/plugin validation"},{"choices":[],"kind":"option","metavar":"PREPARED_DEVOPS","names":["--prepared-devops"],"repeatable":true,"required":false,"summary":"data-only preparation receipt (repeatable)"},{"choices":[],"kind":"option","metavar":"PREPARED_TARGET","names":["--prepared-target"],"repeatable":true,"required":false,"summary":"select an exact declared target (repeatable)"},{"choices":["text","json","sarif","github"],"kind":"option","metavar":"OUTPUT_FORMAT","names":["--format"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":"OUTPUT","names":["--output"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"positional","metavar":"FILES","names":["files"],"repeatable":true,"required":false,"summary":"selected source paths"}],"path":["analyze"],"summary":"emit canonical diagnostics, including prepared DevOps artifacts","usage":"code-standards analyze [-h] [--external] [--prepared-only] [--trust-repository-code] [--prepared-devops PREPARED_DEVOPS ...] [--prepared-target PREPARED_TARGET ...] [--format OUTPUT_FORMAT] [--output OUTPUT] [FILES ...]"},{"commands":[],"name":"check","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":null,"names":["--trust-repository-code"],"repeatable":false,"required":false,"summary":"allow executable repository ESLint configuration (generated hooks and CI set this explicitly)"},{"choices":[],"kind":"option","metavar":"JOBS","names":["--jobs"],"repeatable":false,"required":false,"summary":"overlap native and external analysis (default: 2; 1 for serial debugging)"},{"choices":[],"kind":"option","metavar":null,"names":["--skip-python-type-check"],"repeatable":false,"required":false,"summary":"leave BasedPyright to the repository's own required CI; configs stay managed"},{"choices":[],"kind":"option","metavar":null,"names":["--staged"],"repeatable":false,"required":false,"summary":"run custom rules on hook-supplied paths, or discover staged files when none are supplied"},{"choices":[],"kind":"option","metavar":"SELECTED_RULES","names":["--rule"],"repeatable":true,"required":false,"summary":"check only this custom ENGINE:ID rule (repeatable)"},{"choices":["text","json","sarif","github"],"kind":"option","metavar":"OUTPUT_FORMAT","names":["--format"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":"OUTPUT","names":["--output"],"repeatable":false,"required":false,"summary":"write JSON or SARIF atomically to PATH"},{"choices":[],"kind":"option","metavar":"MAX_ANNOTATIONS_PER_LEVEL","names":["--max-annotations-per-level"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"positional","metavar":"FILES","names":["files"],"repeatable":true,"required":false,"summary":"selected paths; when omitted, check the complete repository"}],"path":["check"],"summary":"run the complete quality gate or check selected paths or custom rules","usage":"code-standards check [-h] [--trust-repository-code] [--jobs JOBS] [--skip-python-type-check] [--staged] [--rule SELECTED_RULES ...] [--format OUTPUT_FORMAT] [--output OUTPUT] [--max-annotations-per-level MAX_ANNOTATIONS_PER_LEVEL] [FILES ...]"},{"commands":[],"name":"validate-slack-automations","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"PATH","names":["slack_catalog"],"repeatable":false,"required":true,"summary":""}],"path":["validate-slack-automations"],"summary":"validate a versioned Slack automation catalog","usage":"code-standards validate-slack-automations [-h] PATH"},{"commands":[],"name":"observe","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"SELECTED_RULES","names":["--rule"],"repeatable":true,"required":true,"summary":"canonical ENGINE:ID selector (repeatable)"},{"choices":["text","json","sarif","github"],"kind":"option","metavar":"OUTPUT_FORMAT","names":["--format"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":"OUTPUT","names":["--output"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":null,"names":["--trust-repository-code"],"repeatable":false,"required":false,"summary":"allow repository ESLint configuration to execute"},{"choices":[],"kind":"option","metavar":"MAX_ANNOTATIONS_PER_LEVEL","names":["--max-annotations-per-level"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"positional","metavar":"FILES","names":["files"],"repeatable":true,"required":false,"summary":"selected paths; defaults to adopted verification paths"}],"path":["observe"],"summary":"report warning-stage findings with exit 0; invalid input or execution still exits 2","usage":"code-standards observe [-h] --rule SELECTED_RULES ... [--format OUTPUT_FORMAT] [--output OUTPUT] [--trust-repository-code] [--max-annotations-per-level MAX_ANNOTATIONS_PER_LEVEL] [FILES ...]"},{"commands":[],"name":"fix","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":null,"names":["--staged"],"repeatable":false,"required":false,"summary":"fix only files staged in Git"},{"choices":[],"kind":"positional","metavar":"FILES","names":["files"],"repeatable":true,"required":false,"summary":"selected paths; when omitted, fix the complete repository"}],"path":["fix"],"summary":"apply safe formatting and lint fixes","usage":"code-standards fix [-h] [--staged] [FILES ...]"},{"commands":[],"name":"update","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":null,"names":["--check"],"repeatable":false,"required":false,"summary":"preview without writing; exit 1 when changes exist"},{"choices":[],"kind":"option","metavar":null,"names":["--offline"],"repeatable":false,"required":false,"summary":"reconverge the executing bundle and skip every network-dependent install; does not resolve latest"},{"choices":[],"kind":"option","metavar":"VERSION","names":["--to"],"repeatable":false,"required":false,"summary":"resolve and apply exactly this immutable coherent bundle version"},{"choices":[],"kind":"option","metavar":null,"names":["--no-install"],"repeatable":false,"required":false,"summary":"do not install dependencies or hooks"}],"path":["update"],"summary":"upgrade to the latest published coherent Standards bundle","usage":"code-standards update [-h] [--check] [--offline] [--to VERSION] [--no-install]"},{"commands":[{"commands":[],"name":"init","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"JOBS","names":["--jobs"],"repeatable":false,"required":false,"summary":"overlap independent baseline scans"},{"choices":[],"kind":"option","metavar":"OUTPUT","names":["--output"],"repeatable":false,"required":false,"summary":"baseline JSON (default: diagnostic-baseline.json)"},{"choices":[],"kind":"option","metavar":null,"names":["--trust-repository-code"],"repeatable":false,"required":false,"summary":"run repository-local analyzers that execute project code"},{"choices":[],"kind":"positional","metavar":"FILES","names":["files"],"repeatable":true,"required":false,"summary":"paths to analyze (default: the whole repository)"}],"path":["baseline","init"],"summary":"record the first diagnostic baseline","usage":"code-standards baseline init [-h] [--jobs JOBS] [--output OUTPUT] [--trust-repository-code] [FILES ...]"},{"commands":[],"name":"update","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"JOBS","names":["--jobs"],"repeatable":false,"required":false,"summary":"overlap independent baseline scans"},{"choices":[],"kind":"option","metavar":"OUTPUT","names":["--output"],"repeatable":false,"required":false,"summary":"baseline JSON (default: diagnostic-baseline.json)"},{"choices":[],"kind":"option","metavar":null,"names":["--trust-repository-code"],"repeatable":false,"required":false,"summary":"run repository-local analyzers that execute project code"},{"choices":[],"kind":"option","metavar":"BASELINE_RULES","names":["--rule"],"repeatable":true,"required":false,"summary":"replace debt only for this newly promoted rule (repeatable; source:RULE is also accepted)"},{"choices":[],"kind":"positional","metavar":"FILES","names":["files"],"repeatable":true,"required":false,"summary":"paths to analyze (default: the whole repository)"}],"path":["baseline","update"],"summary":"re-record the diagnostic baseline after reviewed cleanup","usage":"code-standards baseline update [-h] [--jobs JOBS] [--output OUTPUT] [--trust-repository-code] [--rule BASELINE_RULES ...] [FILES ...]"}],"name":"baseline","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["baseline"],"summary":"grandfather today's findings so only new ones fail","usage":"code-standards baseline [-h] {init,update}"},{"commands":[{"commands":[],"name":"init","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"BASELINE","names":["--baseline"],"repeatable":false,"required":false,"summary":"budget JSON (default: suppression-baseline.json)"},{"choices":[],"kind":"option","metavar":"PACKAGE","names":["--package"],"repeatable":true,"required":false,"summary":"Python package root (repeatable)"},{"choices":[],"kind":"option","metavar":"EXCLUDE_SUBTREE","names":["--exclude-subtree"],"repeatable":true,"required":false,"summary":"generated or vendored subtree to persistently exclude (repeatable)"}],"path":["ratchet","init"],"summary":"create the first suppression budget","usage":"code-standards ratchet init [-h] [--baseline BASELINE] [--package PACKAGE ...] [--exclude-subtree EXCLUDE_SUBTREE ...]"},{"commands":[],"name":"check","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"BASELINE","names":["--baseline"],"repeatable":false,"required":false,"summary":"budget JSON (default: suppression-baseline.json)"},{"choices":[],"kind":"option","metavar":"PACKAGE","names":["--package"],"repeatable":true,"required":false,"summary":"Python package root (repeatable)"},{"choices":[],"kind":"option","metavar":"EXCLUDE_SUBTREE","names":["--exclude-subtree"],"repeatable":true,"required":false,"summary":"generated or vendored subtree to persistently exclude (repeatable)"}],"path":["ratchet","check"],"summary":"fail when suppression debt grows","usage":"code-standards ratchet check [-h] [--baseline BASELINE] [--package PACKAGE ...] [--exclude-subtree EXCLUDE_SUBTREE ...]"},{"commands":[],"name":"status","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"BASELINE","names":["--baseline"],"repeatable":false,"required":false,"summary":"budget JSON (default: suppression-baseline.json)"},{"choices":[],"kind":"option","metavar":"PACKAGE","names":["--package"],"repeatable":true,"required":false,"summary":"Python package root (repeatable)"},{"choices":[],"kind":"option","metavar":"EXCLUDE_SUBTREE","names":["--exclude-subtree"],"repeatable":true,"required":false,"summary":"generated or vendored subtree to persistently exclude (repeatable)"}],"path":["ratchet","status"],"summary":"show current suppression debt and available reductions","usage":"code-standards ratchet status [-h] [--baseline BASELINE] [--package PACKAGE ...] [--exclude-subtree EXCLUDE_SUBTREE ...]"},{"commands":[],"name":"update","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"BASELINE","names":["--baseline"],"repeatable":false,"required":false,"summary":"budget JSON (default: suppression-baseline.json)"},{"choices":[],"kind":"option","metavar":"PACKAGE","names":["--package"],"repeatable":true,"required":false,"summary":"Python package root (repeatable)"},{"choices":[],"kind":"option","metavar":"EXCLUDE_SUBTREE","names":["--exclude-subtree"],"repeatable":true,"required":false,"summary":"generated or vendored subtree to persistently exclude (repeatable)"},{"choices":[],"kind":"option","metavar":null,"names":["--allow-increase"],"repeatable":false,"required":false,"summary":"permit a reviewed increase in suppression debt"}],"path":["ratchet","update"],"summary":"lock in reviewed suppression-budget changes","usage":"code-standards ratchet update [-h] [--baseline BASELINE] [--package PACKAGE ...] [--exclude-subtree EXCLUDE_SUBTREE ...] [--allow-increase]"}],"name":"ratchet","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["ratchet"],"summary":"keep the Python suppression budget from growing","usage":"code-standards ratchet [-h] {init,check,status,update}"},{"commands":[{"commands":[],"name":"list","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["exclude","list"],"summary":"list the complete denylist","usage":"code-standards exclude list [-h]"},{"commands":[],"name":"add","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":["path","rule"],"kind":"positional","metavar":"{path,rule}","names":["exclude_kind"],"repeatable":false,"required":true,"summary":""},{"choices":[],"kind":"positional","metavar":"VALUE","names":["value"],"repeatable":false,"required":true,"summary":"repository-relative glob or canonical engine:rule selector"}],"path":["exclude","add"],"summary":"add one exact denylist entry","usage":"code-standards exclude add [-h] {path,rule} VALUE"},{"commands":[],"name":"remove","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":["path","rule"],"kind":"positional","metavar":"{path,rule}","names":["exclude_kind"],"repeatable":false,"required":true,"summary":""},{"choices":[],"kind":"positional","metavar":"VALUE","names":["value"],"repeatable":false,"required":true,"summary":"repository-relative glob or canonical engine:rule selector"}],"path":["exclude","remove"],"summary":"remove one exact denylist entry","usage":"code-standards exclude remove [-h] {path,rule} VALUE"}],"name":"exclude","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["exclude"],"summary":"inspect or change explicit path and rule exclusions","usage":"code-standards exclude [-h] {list,add,remove}"},{"commands":[{"commands":[],"name":"state","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["show","state"],"summary":"print detected adoption state as JSON","usage":"code-standards show state [-h]"},{"commands":[],"name":"configs","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["show","configs"],"summary":"list bundled configurations","usage":"code-standards show configs [-h]"},{"commands":[],"name":"config","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":["checkov","detekt","eslint","ktlint","markdownlint","mobile-security","pyright","ruff","shellcheck","swiftformat","swiftlint","taplo","yamllint","zizmor"],"kind":"positional","metavar":"NAME","names":["name"],"repeatable":false,"required":true,"summary":""}],"path":["show","config"],"summary":"print one bundled configuration path","usage":"code-standards show config [-h] NAME"},{"commands":[],"name":"peers","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["show","peers"],"summary":"show tested ESLint peer dependencies and install command","usage":"code-standards show peers [-h]"},{"commands":[],"name":"rules","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["show","rules"],"summary":"print the machine-readable custom-rule inventory","usage":"code-standards show rules [-h]"},{"commands":[],"name":"ci","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"OUTPUT","names":["--output"],"repeatable":false,"required":false,"summary":"write a managed workflow inside the repository"}],"path":["show","ci"],"summary":"print a complete versioned GitHub Actions standards workflow","usage":"code-standards show ci [-h] [--output OUTPUT]"}],"name":"show","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["show"],"summary":"print read-only package and adoption information","usage":"code-standards show [-h] {state,configs,config,peers,rules,ci}"},{"commands":[{"commands":[],"name":"setup","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":null,"names":["--check"],"repeatable":false,"required":false,"summary":"print the deterministic setup plan without executing it"}],"path":["maintain","setup"],"summary":"install every standards development environment and repository hook","usage":"code-standards maintain setup [-h] [--check]"},{"commands":[],"name":"check","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":["ci-history","file-conventions","private-refs","versions"],"kind":"option","metavar":"REPO_ONLY","names":["--only"],"repeatable":true,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":"COMMITS","names":["--commits"],"repeatable":false,"required":false,"summary":"also inspect commit messages in this revision range"},{"choices":[],"kind":"option","metavar":"POLICY_DEST","names":["--policy-root"],"repeatable":false,"required":false,"summary":"trusted repository policy root (default: --root)"},{"choices":[],"kind":"option","metavar":"PRIVATE_REFS_FILE","names":["--private-refs-file"],"repeatable":false,"required":false,"summary":"private-reference TOML outside the scanned repository"},{"choices":[],"kind":"option","metavar":null,"names":["--quiet"],"repeatable":false,"required":false,"summary":"hide finding details"}],"path":["maintain","check"],"summary":"run repository policy gates","usage":"code-standards maintain check [-h] [--only REPO_ONLY ...] [--commits COMMITS] [--policy-root POLICY_DEST] [--private-refs-file PRIVATE_REFS_FILE] [--quiet]"},{"commands":[],"name":"sync-ledger","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":null,"names":["--check"],"repeatable":false,"required":false,"summary":"report drift without writing"}],"path":["maintain","sync-ledger"],"summary":"synchronize the rule compatibility ledger","usage":"code-standards maintain sync-ledger [-h] [--check]"},{"commands":[],"name":"comment-corpus","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"ROOTS","names":["roots"],"repeatable":true,"required":true,"summary":""},{"choices":[],"kind":"option","metavar":"PRIVATE_JSONL","names":["--include-text"],"repeatable":false,"required":false,"summary":"write sensitive comment text to a new owner-readable file"}],"path":["maintain","comment-corpus"],"summary":"extract comments for calibration","usage":"code-standards maintain comment-corpus [-h] ROOTS ... [--include-text PRIVATE_JSONL]"},{"commands":[{"commands":[],"name":"check-tag","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"TAG","names":["tag"],"repeatable":false,"required":true,"summary":""}],"path":["maintain","release","check-tag"],"summary":"require a release tag to match its package manifest","usage":"code-standards maintain release check-tag [-h] TAG"},{"commands":[],"name":"verify-tags","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"RELEASE_COMMIT","names":["--commit"],"repeatable":false,"required":false,"summary":"also require existing tags to match this publishing commit or an unchanged package tree"}],"path":["maintain","release","verify-tags"],"summary":"verify all manifest release tags on origin","usage":"code-standards maintain release verify-tags [-h] [--commit RELEASE_COMMIT]"},{"commands":[],"name":"create-tags","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":["contracts","typescript","bootstrap","python","sql","iac","standards","tsconfig"],"kind":"positional","metavar":"RELEASE_TARGETS","names":["release_targets"],"repeatable":true,"required":true,"summary":""},{"choices":[],"kind":"option","metavar":"RELEASE_COMMIT","names":["--commit"],"repeatable":false,"required":true,"summary":"exact commit that was published"},{"choices":[],"kind":"option","metavar":"ATTEMPTS","names":["--attempts"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":"DELAY_SECONDS","names":["--delay-seconds"],"repeatable":false,"required":false,"summary":""}],"path":["maintain","release","create-tags"],"summary":"create and push manifest release tags","usage":"code-standards maintain release create-tags [-h] RELEASE_TARGETS ... --commit RELEASE_COMMIT [--attempts ATTEMPTS] [--delay-seconds DELAY_SECONDS]"},{"commands":[],"name":"changes","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"BEFORE","names":["--before"],"repeatable":false,"required":true,"summary":""},{"choices":[],"kind":"option","metavar":"AFTER","names":["--after"],"repeatable":false,"required":true,"summary":""},{"choices":[],"kind":"option","metavar":"GITHUB_OUTPUT","names":["--github-output"],"repeatable":false,"required":true,"summary":""}],"path":["maintain","release","changes"],"summary":"emit package version changes between Git revisions","usage":"code-standards maintain release changes [-h] --before BEFORE --after AFTER --github-output GITHUB_OUTPUT"},{"commands":[],"name":"causality","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"BEFORE","names":["--before"],"repeatable":false,"required":true,"summary":""},{"choices":[],"kind":"option","metavar":"AFTER","names":["--after"],"repeatable":false,"required":true,"summary":""}],"path":["maintain","release","causality"],"summary":"require every publishable package change to bump its version","usage":"code-standards maintain release causality [-h] --before BEFORE --after AFTER"},{"commands":[],"name":"lock-age","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"LOCKFILE","names":["lockfile"],"repeatable":false,"required":true,"summary":""},{"choices":[],"kind":"option","metavar":"MINIMUM_AGE","names":["--minimum-days"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":"RELEASE_EXCLUDE","names":["--exclude"],"repeatable":true,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":"RELEASE_EXCLUDE_FILE","names":["--exclude-file"],"repeatable":true,"required":false,"summary":"line-oriented exact package@version exceptions (repeatable)"}],"path":["maintain","release","lock-age"],"summary":"enforce npm lockfile minimum release age","usage":"code-standards maintain release lock-age [-h] LOCKFILE [--minimum-days MINIMUM_AGE] [--exclude RELEASE_EXCLUDE ...] [--exclude-file RELEASE_EXCLUDE_FILE ...]"},{"commands":[],"name":"typescript","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":["check","pack","publish"],"kind":"positional","metavar":"RELEASE_MODE","names":["release_mode"],"repeatable":false,"required":true,"summary":""},{"choices":[],"kind":"option","metavar":"OUTPUT","names":["--output"],"repeatable":false,"required":false,"summary":"artifact directory (required for pack)"}],"path":["maintain","release","typescript"],"summary":"check, pack, or publish the TypeScript package","usage":"code-standards maintain release typescript [-h] RELEASE_MODE [--output OUTPUT]"},{"commands":[],"name":"verify-wheel","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"WHEELS","names":["wheels"],"repeatable":true,"required":true,"summary":""}],"path":["maintain","release","verify-wheel"],"summary":"require non-empty license text in built Python wheels","usage":"code-standards maintain release verify-wheel [-h] WHEELS ..."},{"commands":[],"name":"status","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"RELEASE_COMMIT","names":["--commit"],"repeatable":false,"required":false,"summary":""},{"choices":["json","text"],"kind":"option","metavar":"OUTPUT_FORMAT","names":["--format"],"repeatable":false,"required":false,"summary":""}],"path":["maintain","release","status"],"summary":"show release stages and queue time for an exact revision","usage":"code-standards maintain release status [-h] [--commit RELEASE_COMMIT] [--format OUTPUT_FORMAT]"},{"commands":[],"name":"verify-publications","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"ATTEMPTS","names":["--attempts"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":"DELAY_SECONDS","names":["--delay-seconds"],"repeatable":false,"required":false,"summary":""}],"path":["maintain","release","verify-publications"],"summary":"wait for every exact sibling publication required by Standards","usage":"code-standards maintain release verify-publications [-h] [--attempts ATTEMPTS] [--delay-seconds DELAY_SECONDS]"},{"commands":[],"name":"publish","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":["contracts","typescript","bootstrap","python","sql","iac","standards","tsconfig"],"kind":"positional","metavar":"RELEASE_TARGET","names":["release_target"],"repeatable":false,"required":true,"summary":""}],"path":["maintain","release","publish"],"summary":"build and publish one package through its native client","usage":"code-standards maintain release publish [-h] RELEASE_TARGET"}],"name":"release","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","release"],"summary":"validate and build publishable release artifacts","usage":"code-standards maintain release [-h] {check-tag,verify-tags,create-tags,changes,causality,lock-age,typescript,verify-wheel,status,verify-publications,publish}"},{"commands":[{"commands":[],"name":"check","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","docs","check"],"summary":"","usage":"code-standards maintain docs check [-h]"},{"commands":[],"name":"sync","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","docs","sync"],"summary":"","usage":"code-standards maintain docs sync [-h]"}],"name":"docs","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","docs"],"summary":"check or synchronize source-derived documentation","usage":"code-standards maintain docs [-h] {check,sync}"},{"commands":[{"commands":[],"name":"install","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","hooks","install"],"summary":"install Lefthook","usage":"code-standards maintain hooks install [-h]"}],"name":"hooks","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","hooks"],"summary":"manage the pinned repository hooks","usage":"code-standards maintain hooks [-h] {install}"},{"commands":[{"commands":[],"name":"manifest","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","rules","manifest"],"summary":"print the shipped rule inventory","usage":"code-standards maintain rules manifest [-h]"},{"commands":[],"name":"check","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","rules","check"],"summary":"verify the shipped rule inventory matches live registries","usage":"code-standards maintain rules check [-h]"},{"commands":[],"name":"sync","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","rules","sync"],"summary":"update the shipped rule inventory from live registries","usage":"code-standards maintain rules sync [-h]"},{"commands":[],"name":"new","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"SELECTOR","names":["selector"],"repeatable":false,"required":true,"summary":"canonical ENGINE:ID selector"},{"choices":["architecture","correctness","maintainability","performance","security","style","testing"],"kind":"option","metavar":"RULE_CATEGORY","names":["--category"],"repeatable":false,"required":true,"summary":""},{"choices":[],"kind":"option","metavar":"RULE_SUMMARY","names":["--summary"],"repeatable":false,"required":true,"summary":""},{"choices":[],"kind":"option","metavar":null,"names":["--apply"],"repeatable":false,"required":false,"summary":"create the planned files"}],"path":["maintain","rules","new"],"summary":"plan or create author-owned rule and test skeletons","usage":"code-standards maintain rules new [-h] SELECTOR --category RULE_CATEGORY --summary RULE_SUMMARY [--apply]"},{"commands":[],"name":"stage-warning","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"SELECTOR","names":["selector"],"repeatable":false,"required":true,"summary":"canonical ENGINE:ID selector"},{"choices":[],"kind":"option","metavar":null,"names":["--check"],"repeatable":false,"required":false,"summary":"report required staging without writing"}],"path":["maintain","rules","stage-warning"],"summary":"prepare one registered rule for warning-first publication","usage":"code-standards maintain rules stage-warning [-h] SELECTOR [--check]"},{"commands":[],"name":"promote-error","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"SELECTOR","names":["selector"],"repeatable":false,"required":true,"summary":"canonical ENGINE:ID selector"},{"choices":[],"kind":"option","metavar":null,"names":["--check"],"repeatable":false,"required":false,"summary":"report required promotion without writing"}],"path":["maintain","rules","promote-error"],"summary":"promote one warning-staged rule to blocking error severity","usage":"code-standards maintain rules promote-error [-h] SELECTOR [--check]"},{"commands":[],"name":"prepare","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"SELECTOR","names":["selector"],"repeatable":false,"required":true,"summary":"canonical ENGINE:ID selector"},{"choices":[],"kind":"option","metavar":null,"names":["--check"],"repeatable":false,"required":false,"summary":"report required preparation without writing"}],"path":["maintain","rules","prepare"],"summary":"validate and prepare one registered rule for warning-first publication","usage":"code-standards maintain rules prepare [-h] SELECTOR [--check]"},{"commands":[],"name":"verify","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"SELECTOR","names":["selector"],"repeatable":false,"required":true,"summary":"canonical ENGINE:ID selector"}],"path":["maintain","rules","verify"],"summary":"validate one registered rule's authored files and public examples","usage":"code-standards maintain rules verify [-h] SELECTOR"},{"commands":[],"name":"bench","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"FILES","names":["files"],"repeatable":true,"required":true,"summary":"Python files or directories"},{"choices":[],"kind":"option","metavar":"REPEATS","names":["--repeats"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":"SELECTED_RULES","names":["--rule"],"repeatable":true,"required":false,"summary":"python:ID selector; defaults to all Python rules"}],"path":["maintain","rules","bench"],"summary":"measure native Python analysis with diagnostic and source digests","usage":"code-standards maintain rules bench [-h] FILES ... [--repeats REPEATS] [--rule SELECTED_RULES ...]"},{"commands":[],"name":"changes","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"BEFORE","names":["--before"],"repeatable":false,"required":true,"summary":""},{"choices":[],"kind":"option","metavar":"AFTER","names":["--after"],"repeatable":false,"required":true,"summary":""},{"choices":["json","text"],"kind":"option","metavar":"OUTPUT_FORMAT","names":["--format"],"repeatable":false,"required":false,"summary":""},{"choices":["warning"],"kind":"option","metavar":"REQUIRED_ADDED_LEVEL","names":["--require-added-level"],"repeatable":false,"required":false,"summary":"fail when an added rule does not start at this level"}],"path":["maintain","rules","changes"],"summary":"compare rule inventory and policy between two Git revisions","usage":"code-standards maintain rules changes [-h] --before BEFORE --after AFTER [--format OUTPUT_FORMAT] [--require-added-level REQUIRED_ADDED_LEVEL]"},{"commands":[],"name":"evaluate","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"SELECTED_RULES","names":["--rule"],"repeatable":true,"required":true,"summary":"canonical ENGINE:ID selector (repeatable)"},{"choices":[],"kind":"option","metavar":"CORPUS_MANIFEST","names":["--corpus-manifest"],"repeatable":false,"required":false,"summary":"evaluate immutable repositories declared by a public corpus manifest"},{"choices":[],"kind":"option","metavar":"PRIVATE_OVERLAY","names":["--private-overlay"],"repeatable":false,"required":false,"summary":"merge an owner-readable private corpus overlay (requires --corpus-manifest)"},{"choices":["corpus","effective"],"kind":"option","metavar":"EVALUATION_SCOPE","names":["--scope"],"repeatable":false,"required":false,"summary":"corpus ignores baselines/rule exclusions; effective applies adopted repository policy"},{"choices":["json","text"],"kind":"option","metavar":"OUTPUT_FORMAT","names":["--format"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":"OUTPUT","names":["--output"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":null,"names":["--trust-repository-code"],"repeatable":false,"required":false,"summary":"allow executable repository ESLint configuration"},{"choices":[],"kind":"positional","metavar":"FILES","names":["files"],"repeatable":true,"required":false,"summary":""}],"path":["maintain","rules","evaluate"],"summary":"calibrate selected custom rules; findings exit 1 and invalid input or execution exits 2","usage":"code-standards maintain rules evaluate [-h] --rule SELECTED_RULES ... [--corpus-manifest CORPUS_MANIFEST] [--private-overlay PRIVATE_OVERLAY] [--scope EVALUATION_SCOPE] [--format OUTPUT_FORMAT] [--output OUTPUT] [--trust-repository-code] [FILES ...]"}],"name":"rules","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","rules"],"summary":"inspect live custom rules","usage":"code-standards maintain rules [-h] {manifest,check,sync,new,stage-warning,promote-error,prepare,verify,bench,changes,evaluate}"},{"commands":[{"commands":[],"name":"check","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":null,"names":["--typescript-built"],"repeatable":false,"required":false,"summary":"reuse the TypeScript build completed by this verification run"}],"path":["maintain","catalog","check"],"summary":"verify the public catalog matches every live rule","usage":"code-standards maintain catalog check [-h] [--typescript-built]"},{"commands":[],"name":"sync","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","catalog","sync"],"summary":"update the public catalog from source-owned rule metadata","usage":"code-standards maintain catalog sync [-h]"}],"name":"catalog","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","catalog"],"summary":"maintain the source-derived public rule catalog","usage":"code-standards maintain catalog [-h] {check,sync}"},{"commands":[{"commands":[],"name":"check","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","cli-reference","check"],"summary":"verify the shipped reference matches the parser graph","usage":"code-standards maintain cli-reference check [-h]"},{"commands":[],"name":"sync","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","cli-reference","sync"],"summary":"update the shipped reference from the parser graph","usage":"code-standards maintain cli-reference sync [-h]"}],"name":"cli-reference","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","cli-reference"],"summary":"maintain the source-derived CLI reference","usage":"code-standards maintain cli-reference [-h] {check,sync}"}],"name":"maintain","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain"],"summary":"repository policy, hooks, rule ledgers, and releases","usage":"code-standards maintain [-h] {setup,check,sync-ledger,comment-corpus,release,docs,hooks,rules,catalog,cli-reference}"}],"epilog":"Start with `code-standards setup`, then use `code-standards check`.","globalOptions":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"DEST","names":["--root"],"repeatable":false,"required":false,"summary":"repository root shared by the selected command (default: current directory)"},{"choices":[],"kind":"option","metavar":null,"names":["--version"],"repeatable":false,"required":false,"summary":""}],"launcher":{"install":"uv tool install --python 3.15.0 code-standards","runLatest":"uvx --no-config --isolated --python 3.15.0 --from code-standards code-standards"},"program":"code-standards","schemaVersion":1,"summary":"Adopt, check, fix, diagnose, and update sarj-ai standards (v8.49.1).","version":"8.49.1"}
1
+ {"commands":[{"commands":[],"name":"commit-message","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"COMMIT_MSG_FILE","names":["message_file"],"repeatable":false,"required":true,"summary":"Git commit-message file supplied by the commit-msg hook"}],"path":["commit-message"],"summary":"enforce [(i/N) ][TICKET] type(scope)!: description with safe mechanical fixes","usage":"code-standards commit-message [-h] COMMIT_MSG_FILE"},{"commands":[],"name":"doctor","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":["text","json"],"kind":"option","metavar":"OUTPUT_FORMAT","names":["--format"],"repeatable":false,"required":false,"summary":"output format (default: text)"},{"choices":[],"kind":"option","metavar":null,"names":["--repair"],"repeatable":false,"required":false,"summary":"transactionally repair safe drift with the executing bundle, then re-diagnose"},{"choices":[],"kind":"option","metavar":null,"names":["--no-install"],"repeatable":false,"required":false,"summary":"with --repair, update configuration without installing dependencies or hooks"}],"path":["doctor"],"summary":"diagnose adoption health and optionally repair safe drift","usage":"code-standards doctor [-h] [--format OUTPUT_FORMAT] [--repair] [--no-install]"},{"commands":[],"name":"setup","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":["pre-commit","lefthook","none"],"kind":"option","metavar":"HOOKS","names":["--hooks"],"repeatable":false,"required":false,"summary":"hook manager (default: detect Lefthook, otherwise pre-commit)"},{"choices":[],"kind":"option","metavar":"PYTHON_DEST","names":["--python-dest"],"repeatable":false,"required":false,"summary":"the directory that owns pyproject.toml (default: detected)"},{"choices":[],"kind":"option","metavar":"TYPESCRIPT_DEST","names":["--typescript-dest"],"repeatable":false,"required":false,"summary":"the directory that owns the npm lockfile (default: detected)"},{"choices":[],"kind":"option","metavar":"SWIFT_DEST","names":["--swift-dest"],"repeatable":false,"required":false,"summary":"the directory that owns one reviewed Swift project (default: mobile project detection)"},{"choices":[],"kind":"option","metavar":"KOTLIN_DEST","names":["--kotlin-dest"],"repeatable":false,"required":false,"summary":"the directory that owns one reviewed Android/KMP project (default: detected)"},{"choices":[],"kind":"option","metavar":null,"names":["--dry-run"],"repeatable":false,"required":false,"summary":"print the complete plan without writing"},{"choices":[],"kind":"option","metavar":null,"names":["--force"],"repeatable":false,"required":false,"summary":"replace conflicting generated lint configuration after review"},{"choices":[],"kind":"option","metavar":null,"names":["--no-install"],"repeatable":false,"required":false,"summary":"write wiring without installing dependencies or hooks"},{"choices":[],"kind":"option","metavar":null,"names":["--tools-only"],"repeatable":false,"required":false,"summary":"install and attest pinned native tools for an adopted repository"},{"choices":[],"kind":"option","metavar":null,"names":["--commit-policy-only"],"repeatable":false,"required":false,"summary":"adopt only commit-message and PR-history policy without changing language tooling"},{"choices":["checkov","detekt","eslint","ktlint","markdownlint","mobile-security","pyright","ruff","shellcheck","swiftformat","swiftlint","taplo","yamllint","zizmor"],"kind":"option","metavar":"ONLY","names":["--config"],"repeatable":true,"required":false,"summary":"select one config explicitly (repeatable)"},{"choices":[],"kind":"option","metavar":"ENABLE_REPOSITORY_RULE","names":["--enable-repository-rule"],"repeatable":true,"required":false,"summary":"explicitly enable one reviewed, installed error-stage repository rule (repeatable); preserve existing rules and capped exceptions"}],"path":["setup"],"summary":"adopt or converge the repository in one idempotent operation","usage":"code-standards setup [-h] [--hooks HOOKS] [--python-dest PYTHON_DEST] [--typescript-dest TYPESCRIPT_DEST] [--swift-dest SWIFT_DEST] [--kotlin-dest KOTLIN_DEST] [--dry-run] [--force] [--no-install] [--tools-only] [--commit-policy-only] [--config ONLY ...] [--enable-repository-rule ENABLE_REPOSITORY_RULE ...]"},{"commands":[],"name":"analyze","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":null,"names":["--external"],"repeatable":false,"required":false,"summary":"run pinned upstream analyzers"},{"choices":[],"kind":"option","metavar":null,"names":["--prepared-only"],"repeatable":false,"required":false,"summary":"validate prepared artifacts; source analysis stays in the CI source gate"},{"choices":[],"kind":"option","metavar":null,"names":["--trust-repository-code"],"repeatable":false,"required":false,"summary":"allow prepared local Terraform provider/plugin validation"},{"choices":[],"kind":"option","metavar":"PREPARED_DEVOPS","names":["--prepared-devops"],"repeatable":true,"required":false,"summary":"data-only preparation receipt (repeatable)"},{"choices":[],"kind":"option","metavar":"PREPARED_TARGET","names":["--prepared-target"],"repeatable":true,"required":false,"summary":"select an exact declared target (repeatable)"},{"choices":["text","json","sarif","github"],"kind":"option","metavar":"OUTPUT_FORMAT","names":["--format"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":"OUTPUT","names":["--output"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"positional","metavar":"FILES","names":["files"],"repeatable":true,"required":false,"summary":"selected source paths"}],"path":["analyze"],"summary":"emit canonical diagnostics, including prepared DevOps artifacts","usage":"code-standards analyze [-h] [--external] [--prepared-only] [--trust-repository-code] [--prepared-devops PREPARED_DEVOPS ...] [--prepared-target PREPARED_TARGET ...] [--format OUTPUT_FORMAT] [--output OUTPUT] [FILES ...]"},{"commands":[],"name":"check","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":null,"names":["--trust-repository-code"],"repeatable":false,"required":false,"summary":"allow executable repository ESLint configuration (generated hooks and CI set this explicitly)"},{"choices":[],"kind":"option","metavar":"JOBS","names":["--jobs"],"repeatable":false,"required":false,"summary":"overlap native and external analysis (default: 2; 1 for serial debugging)"},{"choices":[],"kind":"option","metavar":null,"names":["--skip-python-type-check"],"repeatable":false,"required":false,"summary":"leave BasedPyright to the repository's own required CI; configs stay managed"},{"choices":[],"kind":"option","metavar":null,"names":["--staged"],"repeatable":false,"required":false,"summary":"run custom rules on hook-supplied paths, or discover staged files when none are supplied"},{"choices":[],"kind":"option","metavar":"SELECTED_RULES","names":["--rule"],"repeatable":true,"required":false,"summary":"check only this custom ENGINE:ID rule (repeatable)"},{"choices":["text","json","sarif","github"],"kind":"option","metavar":"OUTPUT_FORMAT","names":["--format"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":"OUTPUT","names":["--output"],"repeatable":false,"required":false,"summary":"write JSON or SARIF atomically to PATH"},{"choices":[],"kind":"option","metavar":"MAX_ANNOTATIONS_PER_LEVEL","names":["--max-annotations-per-level"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"positional","metavar":"FILES","names":["files"],"repeatable":true,"required":false,"summary":"selected paths; when omitted, check the complete repository"}],"path":["check"],"summary":"run the complete quality gate or check selected paths or custom rules","usage":"code-standards check [-h] [--trust-repository-code] [--jobs JOBS] [--skip-python-type-check] [--staged] [--rule SELECTED_RULES ...] [--format OUTPUT_FORMAT] [--output OUTPUT] [--max-annotations-per-level MAX_ANNOTATIONS_PER_LEVEL] [FILES ...]"},{"commands":[],"name":"validate-slack-automations","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"PATH","names":["slack_catalog"],"repeatable":false,"required":true,"summary":""}],"path":["validate-slack-automations"],"summary":"validate a versioned Slack automation catalog","usage":"code-standards validate-slack-automations [-h] PATH"},{"commands":[],"name":"observe","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"SELECTED_RULES","names":["--rule"],"repeatable":true,"required":true,"summary":"canonical ENGINE:ID selector (repeatable)"},{"choices":["text","json","sarif","github"],"kind":"option","metavar":"OUTPUT_FORMAT","names":["--format"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":"OUTPUT","names":["--output"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":null,"names":["--trust-repository-code"],"repeatable":false,"required":false,"summary":"allow repository ESLint configuration to execute"},{"choices":[],"kind":"option","metavar":"MAX_ANNOTATIONS_PER_LEVEL","names":["--max-annotations-per-level"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"positional","metavar":"FILES","names":["files"],"repeatable":true,"required":false,"summary":"selected paths; defaults to adopted verification paths"}],"path":["observe"],"summary":"report warning-stage findings with exit 0; invalid input or execution still exits 2","usage":"code-standards observe [-h] --rule SELECTED_RULES ... [--format OUTPUT_FORMAT] [--output OUTPUT] [--trust-repository-code] [--max-annotations-per-level MAX_ANNOTATIONS_PER_LEVEL] [FILES ...]"},{"commands":[],"name":"fix","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":null,"names":["--staged"],"repeatable":false,"required":false,"summary":"fix only files staged in Git"},{"choices":[],"kind":"positional","metavar":"FILES","names":["files"],"repeatable":true,"required":false,"summary":"selected paths; when omitted, fix the complete repository"}],"path":["fix"],"summary":"apply safe formatting and lint fixes","usage":"code-standards fix [-h] [--staged] [FILES ...]"},{"commands":[],"name":"update","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":null,"names":["--check"],"repeatable":false,"required":false,"summary":"preview without writing; exit 1 when changes exist"},{"choices":[],"kind":"option","metavar":null,"names":["--offline"],"repeatable":false,"required":false,"summary":"reconverge the executing bundle and skip every network-dependent install; does not resolve latest"},{"choices":[],"kind":"option","metavar":"VERSION","names":["--to"],"repeatable":false,"required":false,"summary":"resolve and apply exactly this immutable coherent bundle version"},{"choices":[],"kind":"option","metavar":null,"names":["--no-install"],"repeatable":false,"required":false,"summary":"do not install dependencies or hooks"}],"path":["update"],"summary":"upgrade to the latest published coherent Standards bundle","usage":"code-standards update [-h] [--check] [--offline] [--to VERSION] [--no-install]"},{"commands":[{"commands":[],"name":"init","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"JOBS","names":["--jobs"],"repeatable":false,"required":false,"summary":"overlap independent baseline scans"},{"choices":[],"kind":"option","metavar":"OUTPUT","names":["--output"],"repeatable":false,"required":false,"summary":"baseline JSON (default: diagnostic-baseline.json)"},{"choices":[],"kind":"option","metavar":null,"names":["--trust-repository-code"],"repeatable":false,"required":false,"summary":"run repository-local analyzers that execute project code"},{"choices":[],"kind":"positional","metavar":"FILES","names":["files"],"repeatable":true,"required":false,"summary":"paths to analyze (default: the whole repository)"}],"path":["baseline","init"],"summary":"record the first diagnostic baseline","usage":"code-standards baseline init [-h] [--jobs JOBS] [--output OUTPUT] [--trust-repository-code] [FILES ...]"},{"commands":[],"name":"update","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"JOBS","names":["--jobs"],"repeatable":false,"required":false,"summary":"overlap independent baseline scans"},{"choices":[],"kind":"option","metavar":"OUTPUT","names":["--output"],"repeatable":false,"required":false,"summary":"baseline JSON (default: diagnostic-baseline.json)"},{"choices":[],"kind":"option","metavar":null,"names":["--trust-repository-code"],"repeatable":false,"required":false,"summary":"run repository-local analyzers that execute project code"},{"choices":[],"kind":"option","metavar":"BASELINE_RULES","names":["--rule"],"repeatable":true,"required":false,"summary":"replace debt only for this newly promoted rule (repeatable; source:RULE is also accepted)"},{"choices":[],"kind":"positional","metavar":"FILES","names":["files"],"repeatable":true,"required":false,"summary":"paths to analyze (default: the whole repository)"}],"path":["baseline","update"],"summary":"re-record the diagnostic baseline after reviewed cleanup","usage":"code-standards baseline update [-h] [--jobs JOBS] [--output OUTPUT] [--trust-repository-code] [--rule BASELINE_RULES ...] [FILES ...]"}],"name":"baseline","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["baseline"],"summary":"grandfather today's findings so only new ones fail","usage":"code-standards baseline [-h] {init,update}"},{"commands":[{"commands":[],"name":"init","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"BASELINE","names":["--baseline"],"repeatable":false,"required":false,"summary":"budget JSON (default: suppression-baseline.json)"},{"choices":[],"kind":"option","metavar":"PACKAGE","names":["--package"],"repeatable":true,"required":false,"summary":"Python package root (repeatable)"},{"choices":[],"kind":"option","metavar":"EXCLUDE_SUBTREE","names":["--exclude-subtree"],"repeatable":true,"required":false,"summary":"generated or vendored subtree to persistently exclude (repeatable)"}],"path":["ratchet","init"],"summary":"create the first suppression budget","usage":"code-standards ratchet init [-h] [--baseline BASELINE] [--package PACKAGE ...] [--exclude-subtree EXCLUDE_SUBTREE ...]"},{"commands":[],"name":"check","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"BASELINE","names":["--baseline"],"repeatable":false,"required":false,"summary":"budget JSON (default: suppression-baseline.json)"},{"choices":[],"kind":"option","metavar":"PACKAGE","names":["--package"],"repeatable":true,"required":false,"summary":"Python package root (repeatable)"},{"choices":[],"kind":"option","metavar":"EXCLUDE_SUBTREE","names":["--exclude-subtree"],"repeatable":true,"required":false,"summary":"generated or vendored subtree to persistently exclude (repeatable)"}],"path":["ratchet","check"],"summary":"fail when suppression debt grows","usage":"code-standards ratchet check [-h] [--baseline BASELINE] [--package PACKAGE ...] [--exclude-subtree EXCLUDE_SUBTREE ...]"},{"commands":[],"name":"status","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"BASELINE","names":["--baseline"],"repeatable":false,"required":false,"summary":"budget JSON (default: suppression-baseline.json)"},{"choices":[],"kind":"option","metavar":"PACKAGE","names":["--package"],"repeatable":true,"required":false,"summary":"Python package root (repeatable)"},{"choices":[],"kind":"option","metavar":"EXCLUDE_SUBTREE","names":["--exclude-subtree"],"repeatable":true,"required":false,"summary":"generated or vendored subtree to persistently exclude (repeatable)"}],"path":["ratchet","status"],"summary":"show current suppression debt and available reductions","usage":"code-standards ratchet status [-h] [--baseline BASELINE] [--package PACKAGE ...] [--exclude-subtree EXCLUDE_SUBTREE ...]"},{"commands":[],"name":"update","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"BASELINE","names":["--baseline"],"repeatable":false,"required":false,"summary":"budget JSON (default: suppression-baseline.json)"},{"choices":[],"kind":"option","metavar":"PACKAGE","names":["--package"],"repeatable":true,"required":false,"summary":"Python package root (repeatable)"},{"choices":[],"kind":"option","metavar":"EXCLUDE_SUBTREE","names":["--exclude-subtree"],"repeatable":true,"required":false,"summary":"generated or vendored subtree to persistently exclude (repeatable)"},{"choices":[],"kind":"option","metavar":null,"names":["--allow-increase"],"repeatable":false,"required":false,"summary":"permit a reviewed increase in suppression debt"}],"path":["ratchet","update"],"summary":"lock in reviewed suppression-budget changes","usage":"code-standards ratchet update [-h] [--baseline BASELINE] [--package PACKAGE ...] [--exclude-subtree EXCLUDE_SUBTREE ...] [--allow-increase]"}],"name":"ratchet","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["ratchet"],"summary":"keep the Python suppression budget from growing","usage":"code-standards ratchet [-h] {init,check,status,update}"},{"commands":[{"commands":[],"name":"list","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["exclude","list"],"summary":"list the complete denylist","usage":"code-standards exclude list [-h]"},{"commands":[],"name":"add","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":["path","rule"],"kind":"positional","metavar":"{path,rule}","names":["exclude_kind"],"repeatable":false,"required":true,"summary":""},{"choices":[],"kind":"positional","metavar":"VALUE","names":["value"],"repeatable":false,"required":true,"summary":"repository-relative glob or canonical engine:rule selector"}],"path":["exclude","add"],"summary":"add one exact denylist entry","usage":"code-standards exclude add [-h] {path,rule} VALUE"},{"commands":[],"name":"remove","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":["path","rule"],"kind":"positional","metavar":"{path,rule}","names":["exclude_kind"],"repeatable":false,"required":true,"summary":""},{"choices":[],"kind":"positional","metavar":"VALUE","names":["value"],"repeatable":false,"required":true,"summary":"repository-relative glob or canonical engine:rule selector"}],"path":["exclude","remove"],"summary":"remove one exact denylist entry","usage":"code-standards exclude remove [-h] {path,rule} VALUE"}],"name":"exclude","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["exclude"],"summary":"inspect or change explicit path and rule exclusions","usage":"code-standards exclude [-h] {list,add,remove}"},{"commands":[{"commands":[],"name":"state","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["show","state"],"summary":"print detected adoption state as JSON","usage":"code-standards show state [-h]"},{"commands":[],"name":"configs","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["show","configs"],"summary":"list bundled configurations","usage":"code-standards show configs [-h]"},{"commands":[],"name":"config","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":["checkov","detekt","eslint","ktlint","markdownlint","mobile-security","pyright","ruff","shellcheck","swiftformat","swiftlint","taplo","yamllint","zizmor"],"kind":"positional","metavar":"NAME","names":["name"],"repeatable":false,"required":true,"summary":""}],"path":["show","config"],"summary":"print one bundled configuration path","usage":"code-standards show config [-h] NAME"},{"commands":[],"name":"peers","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["show","peers"],"summary":"show tested ESLint peer dependencies and install command","usage":"code-standards show peers [-h]"},{"commands":[],"name":"rules","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["show","rules"],"summary":"print the machine-readable custom-rule inventory","usage":"code-standards show rules [-h]"},{"commands":[],"name":"ci","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"OUTPUT","names":["--output"],"repeatable":false,"required":false,"summary":"write a managed workflow inside the repository"}],"path":["show","ci"],"summary":"print a complete versioned GitHub Actions standards workflow","usage":"code-standards show ci [-h] [--output OUTPUT]"}],"name":"show","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["show"],"summary":"print read-only package and adoption information","usage":"code-standards show [-h] {state,configs,config,peers,rules,ci}"},{"commands":[{"commands":[],"name":"setup","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":null,"names":["--check"],"repeatable":false,"required":false,"summary":"print the deterministic setup plan without executing it"}],"path":["maintain","setup"],"summary":"install every standards development environment and repository hook","usage":"code-standards maintain setup [-h] [--check]"},{"commands":[],"name":"check","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":["ci-history","file-conventions","private-refs","versions"],"kind":"option","metavar":"REPO_ONLY","names":["--only"],"repeatable":true,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":"COMMITS","names":["--commits"],"repeatable":false,"required":false,"summary":"also inspect commit messages in this revision range"},{"choices":[],"kind":"option","metavar":"POLICY_DEST","names":["--policy-root"],"repeatable":false,"required":false,"summary":"trusted repository policy root (default: --root)"},{"choices":[],"kind":"option","metavar":"PRIVATE_REFS_FILE","names":["--private-refs-file"],"repeatable":false,"required":false,"summary":"private-reference TOML outside the scanned repository"},{"choices":[],"kind":"option","metavar":null,"names":["--quiet"],"repeatable":false,"required":false,"summary":"hide finding details"}],"path":["maintain","check"],"summary":"run repository policy gates","usage":"code-standards maintain check [-h] [--only REPO_ONLY ...] [--commits COMMITS] [--policy-root POLICY_DEST] [--private-refs-file PRIVATE_REFS_FILE] [--quiet]"},{"commands":[],"name":"sync-ledger","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":null,"names":["--check"],"repeatable":false,"required":false,"summary":"report drift without writing"}],"path":["maintain","sync-ledger"],"summary":"synchronize the rule compatibility ledger","usage":"code-standards maintain sync-ledger [-h] [--check]"},{"commands":[],"name":"comment-corpus","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"ROOTS","names":["roots"],"repeatable":true,"required":true,"summary":""},{"choices":[],"kind":"option","metavar":"PRIVATE_JSONL","names":["--include-text"],"repeatable":false,"required":false,"summary":"write sensitive comment text to a new owner-readable file"}],"path":["maintain","comment-corpus"],"summary":"extract comments for calibration","usage":"code-standards maintain comment-corpus [-h] ROOTS ... [--include-text PRIVATE_JSONL]"},{"commands":[{"commands":[],"name":"check-tag","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"TAG","names":["tag"],"repeatable":false,"required":true,"summary":""}],"path":["maintain","release","check-tag"],"summary":"require a release tag to match its package manifest","usage":"code-standards maintain release check-tag [-h] TAG"},{"commands":[],"name":"verify-tags","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"RELEASE_COMMIT","names":["--commit"],"repeatable":false,"required":false,"summary":"also require existing tags to match this publishing commit or an unchanged package tree"}],"path":["maintain","release","verify-tags"],"summary":"verify all manifest release tags on origin","usage":"code-standards maintain release verify-tags [-h] [--commit RELEASE_COMMIT]"},{"commands":[],"name":"create-tags","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":["contracts","typescript","bootstrap","python","sql","iac","standards","tsconfig"],"kind":"positional","metavar":"RELEASE_TARGETS","names":["release_targets"],"repeatable":true,"required":true,"summary":""},{"choices":[],"kind":"option","metavar":"RELEASE_COMMIT","names":["--commit"],"repeatable":false,"required":true,"summary":"exact commit that was published"},{"choices":[],"kind":"option","metavar":"ATTEMPTS","names":["--attempts"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":"DELAY_SECONDS","names":["--delay-seconds"],"repeatable":false,"required":false,"summary":""}],"path":["maintain","release","create-tags"],"summary":"create and push manifest release tags","usage":"code-standards maintain release create-tags [-h] RELEASE_TARGETS ... --commit RELEASE_COMMIT [--attempts ATTEMPTS] [--delay-seconds DELAY_SECONDS]"},{"commands":[],"name":"changes","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"BEFORE","names":["--before"],"repeatable":false,"required":true,"summary":""},{"choices":[],"kind":"option","metavar":"AFTER","names":["--after"],"repeatable":false,"required":true,"summary":""},{"choices":[],"kind":"option","metavar":"GITHUB_OUTPUT","names":["--github-output"],"repeatable":false,"required":true,"summary":""}],"path":["maintain","release","changes"],"summary":"emit package version changes between Git revisions","usage":"code-standards maintain release changes [-h] --before BEFORE --after AFTER --github-output GITHUB_OUTPUT"},{"commands":[],"name":"causality","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"BEFORE","names":["--before"],"repeatable":false,"required":true,"summary":""},{"choices":[],"kind":"option","metavar":"AFTER","names":["--after"],"repeatable":false,"required":true,"summary":""}],"path":["maintain","release","causality"],"summary":"require every publishable package change to bump its version","usage":"code-standards maintain release causality [-h] --before BEFORE --after AFTER"},{"commands":[],"name":"lock-age","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"LOCKFILE","names":["lockfile"],"repeatable":false,"required":true,"summary":""},{"choices":[],"kind":"option","metavar":"MINIMUM_AGE","names":["--minimum-days"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":"RELEASE_EXCLUDE","names":["--exclude"],"repeatable":true,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":"RELEASE_EXCLUDE_FILE","names":["--exclude-file"],"repeatable":true,"required":false,"summary":"line-oriented exact package@version exceptions (repeatable)"}],"path":["maintain","release","lock-age"],"summary":"enforce npm lockfile minimum release age","usage":"code-standards maintain release lock-age [-h] LOCKFILE [--minimum-days MINIMUM_AGE] [--exclude RELEASE_EXCLUDE ...] [--exclude-file RELEASE_EXCLUDE_FILE ...]"},{"commands":[],"name":"typescript","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":["check","pack","publish"],"kind":"positional","metavar":"RELEASE_MODE","names":["release_mode"],"repeatable":false,"required":true,"summary":""},{"choices":[],"kind":"option","metavar":"OUTPUT","names":["--output"],"repeatable":false,"required":false,"summary":"artifact directory (required for pack)"}],"path":["maintain","release","typescript"],"summary":"check, pack, or publish the TypeScript package","usage":"code-standards maintain release typescript [-h] RELEASE_MODE [--output OUTPUT]"},{"commands":[],"name":"verify-wheel","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"WHEELS","names":["wheels"],"repeatable":true,"required":true,"summary":""}],"path":["maintain","release","verify-wheel"],"summary":"require non-empty license text in built Python wheels","usage":"code-standards maintain release verify-wheel [-h] WHEELS ..."},{"commands":[],"name":"status","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"RELEASE_COMMIT","names":["--commit"],"repeatable":false,"required":false,"summary":""},{"choices":["json","text"],"kind":"option","metavar":"OUTPUT_FORMAT","names":["--format"],"repeatable":false,"required":false,"summary":""}],"path":["maintain","release","status"],"summary":"show release stages and queue time for an exact revision","usage":"code-standards maintain release status [-h] [--commit RELEASE_COMMIT] [--format OUTPUT_FORMAT]"},{"commands":[],"name":"verify-publications","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"ATTEMPTS","names":["--attempts"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":"DELAY_SECONDS","names":["--delay-seconds"],"repeatable":false,"required":false,"summary":""}],"path":["maintain","release","verify-publications"],"summary":"wait for every exact sibling publication required by Standards","usage":"code-standards maintain release verify-publications [-h] [--attempts ATTEMPTS] [--delay-seconds DELAY_SECONDS]"},{"commands":[],"name":"publish","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":["contracts","typescript","bootstrap","python","sql","iac","standards","tsconfig"],"kind":"positional","metavar":"RELEASE_TARGET","names":["release_target"],"repeatable":false,"required":true,"summary":""}],"path":["maintain","release","publish"],"summary":"build and publish one package through its native client","usage":"code-standards maintain release publish [-h] RELEASE_TARGET"}],"name":"release","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","release"],"summary":"validate and build publishable release artifacts","usage":"code-standards maintain release [-h] {check-tag,verify-tags,create-tags,changes,causality,lock-age,typescript,verify-wheel,status,verify-publications,publish}"},{"commands":[{"commands":[],"name":"check","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","docs","check"],"summary":"","usage":"code-standards maintain docs check [-h]"},{"commands":[],"name":"sync","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","docs","sync"],"summary":"","usage":"code-standards maintain docs sync [-h]"}],"name":"docs","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","docs"],"summary":"check or synchronize source-derived documentation","usage":"code-standards maintain docs [-h] {check,sync}"},{"commands":[{"commands":[],"name":"install","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","hooks","install"],"summary":"install Lefthook","usage":"code-standards maintain hooks install [-h]"}],"name":"hooks","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","hooks"],"summary":"manage the pinned repository hooks","usage":"code-standards maintain hooks [-h] {install}"},{"commands":[{"commands":[],"name":"manifest","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","rules","manifest"],"summary":"print the shipped rule inventory","usage":"code-standards maintain rules manifest [-h]"},{"commands":[],"name":"check","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","rules","check"],"summary":"verify the shipped rule inventory matches live registries","usage":"code-standards maintain rules check [-h]"},{"commands":[],"name":"sync","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","rules","sync"],"summary":"update the shipped rule inventory from live registries","usage":"code-standards maintain rules sync [-h]"},{"commands":[],"name":"new","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"SELECTOR","names":["selector"],"repeatable":false,"required":true,"summary":"canonical ENGINE:ID selector"},{"choices":["architecture","correctness","maintainability","performance","security","style","testing"],"kind":"option","metavar":"RULE_CATEGORY","names":["--category"],"repeatable":false,"required":true,"summary":""},{"choices":[],"kind":"option","metavar":"RULE_SUMMARY","names":["--summary"],"repeatable":false,"required":true,"summary":""},{"choices":[],"kind":"option","metavar":null,"names":["--apply"],"repeatable":false,"required":false,"summary":"create the planned files"}],"path":["maintain","rules","new"],"summary":"plan or create author-owned rule and test skeletons","usage":"code-standards maintain rules new [-h] SELECTOR --category RULE_CATEGORY --summary RULE_SUMMARY [--apply]"},{"commands":[],"name":"stage-warning","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"SELECTOR","names":["selector"],"repeatable":false,"required":true,"summary":"canonical ENGINE:ID selector"},{"choices":[],"kind":"option","metavar":null,"names":["--check"],"repeatable":false,"required":false,"summary":"report required staging without writing"}],"path":["maintain","rules","stage-warning"],"summary":"prepare one registered rule for warning-first publication","usage":"code-standards maintain rules stage-warning [-h] SELECTOR [--check]"},{"commands":[],"name":"promote-error","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"SELECTOR","names":["selector"],"repeatable":false,"required":true,"summary":"canonical ENGINE:ID selector"},{"choices":[],"kind":"option","metavar":null,"names":["--check"],"repeatable":false,"required":false,"summary":"report required promotion without writing"}],"path":["maintain","rules","promote-error"],"summary":"promote one warning-staged rule to blocking error severity","usage":"code-standards maintain rules promote-error [-h] SELECTOR [--check]"},{"commands":[],"name":"prepare","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"SELECTOR","names":["selector"],"repeatable":false,"required":true,"summary":"canonical ENGINE:ID selector"},{"choices":[],"kind":"option","metavar":null,"names":["--check"],"repeatable":false,"required":false,"summary":"report required preparation without writing"}],"path":["maintain","rules","prepare"],"summary":"validate and prepare one registered rule for warning-first publication","usage":"code-standards maintain rules prepare [-h] SELECTOR [--check]"},{"commands":[],"name":"verify","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"SELECTOR","names":["selector"],"repeatable":false,"required":true,"summary":"canonical ENGINE:ID selector"}],"path":["maintain","rules","verify"],"summary":"validate one registered rule's authored files and public examples","usage":"code-standards maintain rules verify [-h] SELECTOR"},{"commands":[],"name":"bench","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"positional","metavar":"FILES","names":["files"],"repeatable":true,"required":true,"summary":"Python files or directories"},{"choices":[],"kind":"option","metavar":"REPEATS","names":["--repeats"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":"SELECTED_RULES","names":["--rule"],"repeatable":true,"required":false,"summary":"python:ID selector; defaults to all Python rules"}],"path":["maintain","rules","bench"],"summary":"measure native Python analysis with diagnostic and source digests","usage":"code-standards maintain rules bench [-h] FILES ... [--repeats REPEATS] [--rule SELECTED_RULES ...]"},{"commands":[],"name":"changes","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"BEFORE","names":["--before"],"repeatable":false,"required":true,"summary":""},{"choices":[],"kind":"option","metavar":"AFTER","names":["--after"],"repeatable":false,"required":true,"summary":""},{"choices":["json","text"],"kind":"option","metavar":"OUTPUT_FORMAT","names":["--format"],"repeatable":false,"required":false,"summary":""},{"choices":["warning"],"kind":"option","metavar":"REQUIRED_ADDED_LEVEL","names":["--require-added-level"],"repeatable":false,"required":false,"summary":"fail when an added rule does not start at this level"}],"path":["maintain","rules","changes"],"summary":"compare rule inventory and policy between two Git revisions","usage":"code-standards maintain rules changes [-h] --before BEFORE --after AFTER [--format OUTPUT_FORMAT] [--require-added-level REQUIRED_ADDED_LEVEL]"},{"commands":[],"name":"evaluate","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"SELECTED_RULES","names":["--rule"],"repeatable":true,"required":true,"summary":"canonical ENGINE:ID selector (repeatable)"},{"choices":[],"kind":"option","metavar":"CORPUS_MANIFEST","names":["--corpus-manifest"],"repeatable":false,"required":false,"summary":"evaluate immutable repositories declared by a public corpus manifest"},{"choices":[],"kind":"option","metavar":"PRIVATE_OVERLAY","names":["--private-overlay"],"repeatable":false,"required":false,"summary":"merge an owner-readable private corpus overlay (requires --corpus-manifest)"},{"choices":["corpus","effective"],"kind":"option","metavar":"EVALUATION_SCOPE","names":["--scope"],"repeatable":false,"required":false,"summary":"corpus ignores baselines/rule exclusions; effective applies adopted repository policy"},{"choices":["json","text"],"kind":"option","metavar":"OUTPUT_FORMAT","names":["--format"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":"OUTPUT","names":["--output"],"repeatable":false,"required":false,"summary":""},{"choices":[],"kind":"option","metavar":null,"names":["--trust-repository-code"],"repeatable":false,"required":false,"summary":"allow executable repository ESLint configuration"},{"choices":[],"kind":"positional","metavar":"FILES","names":["files"],"repeatable":true,"required":false,"summary":""}],"path":["maintain","rules","evaluate"],"summary":"calibrate selected custom rules; findings exit 1 and invalid input or execution exits 2","usage":"code-standards maintain rules evaluate [-h] --rule SELECTED_RULES ... [--corpus-manifest CORPUS_MANIFEST] [--private-overlay PRIVATE_OVERLAY] [--scope EVALUATION_SCOPE] [--format OUTPUT_FORMAT] [--output OUTPUT] [--trust-repository-code] [FILES ...]"}],"name":"rules","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","rules"],"summary":"inspect live custom rules","usage":"code-standards maintain rules [-h] {manifest,check,sync,new,stage-warning,promote-error,prepare,verify,bench,changes,evaluate}"},{"commands":[{"commands":[],"name":"check","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":null,"names":["--typescript-built"],"repeatable":false,"required":false,"summary":"reuse the TypeScript build completed by this verification run"}],"path":["maintain","catalog","check"],"summary":"verify the public catalog matches every live rule","usage":"code-standards maintain catalog check [-h] [--typescript-built]"},{"commands":[],"name":"sync","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","catalog","sync"],"summary":"update the public catalog from source-owned rule metadata","usage":"code-standards maintain catalog sync [-h]"}],"name":"catalog","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","catalog"],"summary":"maintain the source-derived public rule catalog","usage":"code-standards maintain catalog [-h] {check,sync}"},{"commands":[{"commands":[],"name":"check","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","cli-reference","check"],"summary":"verify the shipped reference matches the parser graph","usage":"code-standards maintain cli-reference check [-h]"},{"commands":[],"name":"sync","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","cli-reference","sync"],"summary":"update the shipped reference from the parser graph","usage":"code-standards maintain cli-reference sync [-h]"}],"name":"cli-reference","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain","cli-reference"],"summary":"maintain the source-derived CLI reference","usage":"code-standards maintain cli-reference [-h] {check,sync}"}],"name":"maintain","options":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."}],"path":["maintain"],"summary":"repository policy, hooks, rule ledgers, and releases","usage":"code-standards maintain [-h] {setup,check,sync-ledger,comment-corpus,release,docs,hooks,rules,catalog,cli-reference}"}],"epilog":"Start with `code-standards setup`, then use `code-standards check`.","globalOptions":[{"choices":[],"kind":"option","metavar":null,"names":["-h","--help"],"repeatable":false,"required":false,"summary":"Show this message and exit."},{"choices":[],"kind":"option","metavar":"DEST","names":["--root"],"repeatable":false,"required":false,"summary":"repository root shared by the selected command (default: current directory)"},{"choices":[],"kind":"option","metavar":null,"names":["--version"],"repeatable":false,"required":false,"summary":""}],"launcher":{"install":"uv tool install --python 3.15.0 code-standards","runLatest":"uvx --no-config --isolated --python 3.15.0 --from code-standards code-standards"},"program":"code-standards","schemaVersion":1,"summary":"Adopt, check, fix, diagnose, and update sarj-ai standards (v8.50.1).","version":"8.50.1"}
@@ -701,8 +701,8 @@
701
701
  "family": "python",
702
702
  "ruleId": "no-any-mapping-types",
703
703
  "state": "complete",
704
- "evidence": "Focused fixtures cover object, nested object, dict and Mapping with Any, forward references, precise named schemas, generated files, vendor files, local shadowing, and cycle-safe explicit alias chains. Three existing application corpora produced 2,706 findings; cluster sampling confirmed widespread pre-existing schema-erasure debt, so adoption requires shrink-only baselines. Follow-up alias resolution passed the 457-case combined suite and produced an identical 214-diagnostic, 86-file Platform baseline. The 2026-10-11 campaign adds eight negative regressions for Annotated metadata, Literal values, unknown generic parameter positions and metadata-only implicit aliases; 41 focused cases pass. Only actual type positions are traversed. Independent judge approves this precision repair; separate promotion gate remains pending.",
705
- "outcome": "Promoted after calibration. Reject proven string-keyed mappings whose values recursively contain typing.Any across annotations, explicit aliases, casts, TypeAdapter targets, and type comments. Preserve object and dict[str, object] as safe opaque boundary types requiring narrowing; recommend TypedDict first for fixed records, Pydantic models for untrusted runtime input, and pydantic.JsonValue for arbitrary JSON trees. Current authored catalog severity remains warning pending a separate promotion decision; native diagnostics already use error."
704
+ "evidence": "Forty targeted design/admission passes, 111 distinct warning-promotion admission reviews, five sequential independent judge rounds and regression-checked supplemental repairs. The final six-rule source has 372 focused cases and 1,054 independently verified integration/helper-client cases; native/catalog ERROR, exit 1, blocking baselines, suppression and precedence are checked. Repository verification passes 29,041 tests with nine existing skips, strict types, lint, dogfood and artifacts; remaining repository/shell gates pass after an environmental interpreter-cache retry. The 105-warning sweep retried one temporary ENOSPC failure on unchanged source and all suites pass. Three serialized performance pairs are within 2 ms/file, with a 1.173 ms/file median paired incremental cost; all 954 diagnostics exactly match the pre-cache scope. All 105 retained-warning suites pass and the independent judge approved the hold rationale with no additional helpful promotion. Verified local corpus has 954 Any-erasure matches; 53 deterministic cluster-covering samples reproduce, while API intent remains unclassified. Pydantic final-source corpus has four expected seed matches and zero natural matches. No universal precision or full-registry performance claim. See packages/python/benchmarks/strict-typing-promotions.json for final paired timing and exact gate state.",
705
+ "outcome": "Promote to ERROR without autofix after warning-first publication and source-owned contract/mutation/escape exclusions. External signatures, ambiguous provenance and valid cleanup ownership remain preserved; exact explained suppressions remain available. Six-rule semantic approval, full verification and the warning plateau are complete. Exact-head green CI is required before admin merge."
706
706
  },
707
707
  {
708
708
  "task": "rule-audit/python/require-pydantic-for-structured-payload",
@@ -2183,16 +2183,16 @@
2183
2183
  "family": "python",
2184
2184
  "ruleId": "async-cleanup-registered-synchronously",
2185
2185
  "state": "complete",
2186
- "evidence": "25 focused regression cases. No live corpus matches; zero hits are not evidence of correctness. Pinned read-only corpus: 3,048 tracked Python files, 25,601,555 bytes across four private sources; fresh processes capped at 250 files. Candidate runs took 9.80 and 9.13 seconds versus 8.73 and 8.80 seconds for the shipped regex rule alone. All four unchanged regex findings inspected; no observed false positives or duplicate locations. No full upstream public corpus evaluated; process peak memory was not measured.",
2187
- "outcome": "Ship warning without autofix. Runtime reproduction confirms callback drops async cleanup while push_async_callback awaits it. Only proven standard-library stacks and visible undecorated coroutine functions are supported. Unknown methods, decorators, escaped stacks and dynamic mutations are excluded."
2186
+ "evidence": "Forty targeted design/admission passes, 111 distinct warning-promotion admission reviews, five sequential independent judge rounds and regression-checked supplemental repairs. The final six-rule source has 372 focused cases and 1,054 independently verified integration/helper-client cases; native/catalog ERROR, exit 1, blocking baselines, suppression and precedence are checked. Repository verification passes 29,041 tests with nine existing skips, strict types, lint, dogfood and artifacts; remaining repository/shell gates pass after an environmental interpreter-cache retry. The 105-warning sweep retried one temporary ENOSPC failure on unchanged source and all suites pass. Three serialized performance pairs are within 2 ms/file, with a 1.173 ms/file median paired incremental cost; all 954 diagnostics exactly match the pre-cache scope. All 105 retained-warning suites pass and the independent judge approved the hold rationale with no additional helpful promotion. Verified local corpus has 954 Any-erasure matches; 53 deterministic cluster-covering samples reproduce, while API intent remains unclassified. Pydantic final-source corpus has four expected seed matches and zero natural matches. No universal precision or full-registry performance claim. See packages/python/benchmarks/strict-typing-promotions.json for final paired timing and exact gate state.",
2187
+ "outcome": "Promote to ERROR without autofix after warning-first publication and source-owned contract/mutation/escape exclusions. External signatures, ambiguous provenance and valid cleanup ownership remain preserved; exact explained suppressions remain available. Six-rule semantic approval, full verification and the warning plateau are complete. Exact-head green CI is required before admin merge."
2188
2188
  },
2189
2189
  {
2190
2190
  "task": "rule-audit/python/subprocess-kill-without-reap",
2191
2191
  "family": "python",
2192
2192
  "ruleId": "subprocess-kill-without-reap",
2193
2193
  "state": "complete",
2194
- "evidence": "24 focused regression cases. No live corpus matches; zero hits are not evidence of correctness. Pinned read-only corpus: 3,048 tracked Python files, 25,601,555 bytes across four private sources; fresh processes capped at 250 files. Candidate runs took 9.80 and 9.13 seconds versus 8.73 and 8.80 seconds for the shipped regex rule alone. All four unchanged regex findings inspected; no observed false positives or duplicate locations. No full upstream public corpus evaluated; process peak memory was not measured.",
2195
- "outcome": "Ship warning without autofix. Standard-library lifecycle requires waiting after kill. Only direct locally owned Popen timeout handlers ending in kill are supported; context managers, borrowed processes, callbacks, later cleanup and uncertain bindings are excluded. Choosing communicate versus wait requires output ownership review."
2194
+ "evidence": "Forty targeted design/admission passes, 111 distinct warning-promotion admission reviews, five sequential independent judge rounds and regression-checked supplemental repairs. The final six-rule source has 372 focused cases and 1,054 independently verified integration/helper-client cases; native/catalog ERROR, exit 1, blocking baselines, suppression and precedence are checked. Repository verification passes 29,041 tests with nine existing skips, strict types, lint, dogfood and artifacts; remaining repository/shell gates pass after an environmental interpreter-cache retry. The 105-warning sweep retried one temporary ENOSPC failure on unchanged source and all suites pass. Three serialized performance pairs are within 2 ms/file, with a 1.173 ms/file median paired incremental cost; all 954 diagnostics exactly match the pre-cache scope. All 105 retained-warning suites pass and the independent judge approved the hold rationale with no additional helpful promotion. Verified local corpus has 954 Any-erasure matches; 53 deterministic cluster-covering samples reproduce, while API intent remains unclassified. Pydantic final-source corpus has four expected seed matches and zero natural matches. No universal precision or full-registry performance claim. See packages/python/benchmarks/strict-typing-promotions.json for final paired timing and exact gate state.",
2195
+ "outcome": "Promote to ERROR without autofix after warning-first publication and source-owned contract/mutation/escape exclusions. External signatures, ambiguous provenance and valid cleanup ownership remain preserved; exact explained suppressions remain available. Six-rule semantic approval, full verification and the warning plateau are complete. Exact-head green CI is required before admin merge."
2196
2196
  },
2197
2197
  {
2198
2198
  "task": "rule-audit/python/require-explicit-psycopg-transaction",
@@ -2407,24 +2407,24 @@
2407
2407
  "family": "python",
2408
2408
  "ruleId": "no-impossible-pydantic-field-bounds",
2409
2409
  "state": "complete",
2410
- "evidence": "Forty targeted design/admission passes and five independent judge passes, followed by supplemental namespace-mutation regressions. 169 focused rule cases and20 precedence cases pass. Final pinned corpus rerun covers3,976 Python files and retains four expected public seed findings with no natural findings. Zero natural hits are not a broad precision guarantee. See packages/python/benchmarks/strict-typing-campaign.json for evidence, timings, limitations and final verification state. Supplemental independent review passes205 cases and approves warning-first publication; native severity, exit status, suppression and blocking-baseline precedence are confirmed. Final make verify passes28,865 tests with9 existing skips, all native lint/type/dogfood, generated artifacts/docs, repository policy and shell checks on integrated462303b8 main.",
2411
- "outcome": "Ship warning in source metadata and native diagnostics for the first release; promote separately after correctness, compatibility, corpus and severity review. No autofix. Dynamic or escaped imported objects and uncertain custom contracts abstain. Exact full verification and CI gate merge."
2410
+ "evidence": "Forty targeted design/admission passes, 111 distinct warning-promotion admission reviews, five sequential independent judge rounds and regression-checked supplemental repairs. The final six-rule source has 372 focused cases and 1,054 independently verified integration/helper-client cases; native/catalog ERROR, exit 1, blocking baselines, suppression and precedence are checked. Repository verification passes 29,041 tests with nine existing skips, strict types, lint, dogfood and artifacts; remaining repository/shell gates pass after an environmental interpreter-cache retry. The 105-warning sweep retried one temporary ENOSPC failure on unchanged source and all suites pass. Three serialized performance pairs are within 2 ms/file, with a 1.173 ms/file median paired incremental cost; all 954 diagnostics exactly match the pre-cache scope. All 105 retained-warning suites pass and the independent judge approved the hold rationale with no additional helpful promotion. Verified local corpus has 954 Any-erasure matches; 53 deterministic cluster-covering samples reproduce, while API intent remains unclassified. Pydantic final-source corpus has four expected seed matches and zero natural matches. No universal precision or full-registry performance claim. See packages/python/benchmarks/strict-typing-promotions.json for final paired timing and exact gate state.",
2411
+ "outcome": "Promote to ERROR without autofix after warning-first publication and source-owned contract/mutation/escape exclusions. External signatures, ambiguous provenance and valid cleanup ownership remain preserved; exact explained suppressions remain available. Six-rule semantic approval, full verification and the warning plateau are complete. Exact-head green CI is required before admin merge."
2412
2412
  },
2413
2413
  {
2414
2414
  "task": "rule-audit/python/no-unknown-pydantic-validator-field",
2415
2415
  "family": "python",
2416
2416
  "ruleId": "no-unknown-pydantic-validator-field",
2417
2417
  "state": "complete",
2418
- "evidence": "Forty targeted design/admission passes and five independent judge passes, followed by supplemental namespace-mutation regressions. 169 focused rule cases and20 precedence cases pass. Final pinned corpus rerun covers3,976 Python files and retains four expected public seed findings with no natural findings. Zero natural hits are not a broad precision guarantee. See packages/python/benchmarks/strict-typing-campaign.json for evidence, timings, limitations and final verification state. Supplemental independent review passes205 cases and approves warning-first publication; native severity, exit status, suppression and blocking-baseline precedence are confirmed. Final make verify passes28,865 tests with9 existing skips, all native lint/type/dogfood, generated artifacts/docs, repository policy and shell checks on integrated462303b8 main.",
2419
- "outcome": "Ship warning in source metadata and native diagnostics for the first release; promote separately after correctness, compatibility, corpus and severity review. No autofix. Dynamic or escaped imported objects and uncertain custom contracts abstain. Exact full verification and CI gate merge."
2418
+ "evidence": "Forty targeted design/admission passes, 111 distinct warning-promotion admission reviews, five sequential independent judge rounds and regression-checked supplemental repairs. The final six-rule source has 372 focused cases and 1,054 independently verified integration/helper-client cases; native/catalog ERROR, exit 1, blocking baselines, suppression and precedence are checked. Repository verification passes 29,041 tests with nine existing skips, strict types, lint, dogfood and artifacts; remaining repository/shell gates pass after an environmental interpreter-cache retry. The 105-warning sweep retried one temporary ENOSPC failure on unchanged source and all suites pass. Three serialized performance pairs are within 2 ms/file, with a 1.173 ms/file median paired incremental cost; all 954 diagnostics exactly match the pre-cache scope. All 105 retained-warning suites pass and the independent judge approved the hold rationale with no additional helpful promotion. Verified local corpus has 954 Any-erasure matches; 53 deterministic cluster-covering samples reproduce, while API intent remains unclassified. Pydantic final-source corpus has four expected seed matches and zero natural matches. No universal precision or full-registry performance claim. See packages/python/benchmarks/strict-typing-promotions.json for final paired timing and exact gate state.",
2419
+ "outcome": "Promote to ERROR without autofix after warning-first publication and source-owned contract/mutation/escape exclusions. External signatures, ambiguous provenance and valid cleanup ownership remain preserved; exact explained suppressions remain available. Six-rule semantic approval, full verification and the warning plateau are complete. Exact-head green CI is required before admin merge."
2420
2420
  },
2421
2421
  {
2422
2422
  "task": "rule-audit/python/no-conflicting-pydantic-alias-validation",
2423
2423
  "family": "python",
2424
2424
  "ruleId": "no-conflicting-pydantic-alias-validation",
2425
2425
  "state": "complete",
2426
- "evidence": "Forty targeted design/admission passes and five independent judge passes, followed by supplemental namespace-mutation regressions. 169 focused rule cases and20 precedence cases pass. Final pinned corpus rerun covers3,976 Python files and retains four expected public seed findings with no natural findings. Zero natural hits are not a broad precision guarantee. See packages/python/benchmarks/strict-typing-campaign.json for evidence, timings, limitations and final verification state. Supplemental independent review passes205 cases and approves warning-first publication; native severity, exit status, suppression and blocking-baseline precedence are confirmed. Final make verify passes28,865 tests with9 existing skips, all native lint/type/dogfood, generated artifacts/docs, repository policy and shell checks on integrated462303b8 main.",
2427
- "outcome": "Ship warning in source metadata and native diagnostics for the first release; promote separately after correctness, compatibility, corpus and severity review. No autofix. Dynamic or escaped imported objects and uncertain custom contracts abstain. Exact full verification and CI gate merge."
2426
+ "evidence": "Forty targeted design/admission passes, 111 distinct warning-promotion admission reviews, five sequential independent judge rounds and regression-checked supplemental repairs. The final six-rule source has 372 focused cases and 1,054 independently verified integration/helper-client cases; native/catalog ERROR, exit 1, blocking baselines, suppression and precedence are checked. Repository verification passes 29,041 tests with nine existing skips, strict types, lint, dogfood and artifacts; remaining repository/shell gates pass after an environmental interpreter-cache retry. The 105-warning sweep retried one temporary ENOSPC failure on unchanged source and all suites pass. Three serialized performance pairs are within 2 ms/file, with a 1.173 ms/file median paired incremental cost; all 954 diagnostics exactly match the pre-cache scope. All 105 retained-warning suites pass and the independent judge approved the hold rationale with no additional helpful promotion. Verified local corpus has 954 Any-erasure matches; 53 deterministic cluster-covering samples reproduce, while API intent remains unclassified. Pydantic final-source corpus has four expected seed matches and zero natural matches. No universal precision or full-registry performance claim. See packages/python/benchmarks/strict-typing-promotions.json for final paired timing and exact gate state.",
2427
+ "outcome": "Promote to ERROR without autofix after warning-first publication and source-owned contract/mutation/escape exclusions. External signatures, ambiguous provenance and valid cleanup ownership remain preserved; exact explained suppressions remain available. Six-rule semantic approval, full verification and the warning plateau are complete. Exact-head green CI is required before admin merge."
2428
2428
  }
2429
2429
  ]
2430
2430
  }
@@ -145,7 +145,11 @@ def _version_output(argv: Sequence[str], *, root: Path, runner: ProcessRunner) -
145
145
 
146
146
  def _version(tool: NativeTool, source: str) -> str:
147
147
  if tool.name == "docker":
148
- value = parse_json(source)
148
+ try:
149
+ value = parse_json(source)
150
+ except ValueError as error:
151
+ message = "Compose version protocol must be one JSON object"
152
+ raise NativeToolError(message) from error
149
153
  if not is_object_mapping(value) or set(value) != {"version"} or not isinstance(value.get("version"), str):
150
154
  message = "Compose version protocol must contain exactly one version string"
151
155
  raise NativeToolError(message)