code-standards 8.135.5__tar.gz → 8.136.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. {code_standards-8.135.5 → code_standards-8.136.2}/PKG-INFO +5 -5
  2. {code_standards-8.135.5 → code_standards-8.136.2}/pyproject.toml +5 -5
  3. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/_meta.py +1 -1
  4. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/api.py +7 -3
  5. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/cli/main.py +18 -34
  6. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/cli-reference.v1.json +2 -2
  7. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/rule-calibration-campaign.v1.json +8 -0
  8. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/rule-inventory.v1.json +1 -1
  9. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/rule-ledger.json +2 -0
  10. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/adoption/configs.py +1 -3
  11. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/adoption/doctor.py +7 -6
  12. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/adoption/hooks.py +40 -19
  13. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/adoption/manifest.py +8 -3
  14. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/adoption/packagemanager.py +14 -10
  15. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/adoption/retired_suppressions.py +10 -9
  16. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/adoption/scaffold.py +64 -43
  17. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/adoption/transaction.py +1 -1
  18. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/adoption/upgrade.py +2 -4
  19. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/catalogs/slack_automations.py +2 -2
  20. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/corpus/manifest.py +7 -1
  21. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/diagnostics/baseline.py +18 -9
  22. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/diagnostics/models.py +113 -23
  23. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/diagnostics/serialize.py +64 -59
  24. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/json_boundary.py +4 -4
  25. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/_cloudbuild_autofix.py +18 -4
  26. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/action_metadata.py +0 -2
  27. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/analysis.py +14 -2
  28. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/autofix.py +0 -2
  29. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/cloudbuild.py +1 -3
  30. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/cloudbuild_schema.py +18 -7
  31. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/devops_programs.py +46 -17
  32. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/devops_source.py +5 -1
  33. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/devops_tools.py +1 -3
  34. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/duplicate_code.py +0 -2
  35. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/embedded_shell.py +0 -4
  36. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/external.py +21 -33
  37. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/library_policy.py +9 -3
  38. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/prepared_devops.py +33 -17
  39. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/prepared_kubernetes.py +51 -16
  40. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/repo_standards.py +7 -6
  41. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/runner.py +1 -1
  42. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/scheduling.py +0 -2
  43. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/security_tools.py +14 -6
  44. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/shell_ast.py +11 -10
  45. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/textlint.py +6 -2
  46. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/toml_literals.py +28 -8
  47. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/unused_modules.py +0 -2
  48. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/_values.py +5 -1
  49. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/metadata_verification.py +4 -1
  50. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/registry.py +1 -1
  51. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/release_age.py +18 -10
  52. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/rollout.py +24 -21
  53. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/tags.py +6 -3
  54. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/test_selection.py +1 -2
  55. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/typescript.py +12 -4
  56. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/verification_process.py +1 -2
  57. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/wheel_tests.py +20 -2
  58. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/cli_examples.py +8 -1
  59. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/cloudbuild_schema_projection.py +13 -14
  60. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/config_generation.py +1 -1
  61. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/docs.py +8 -2
  62. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/repository.py +33 -7
  63. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/ruff_freshness.py +5 -1
  64. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/rule_authoring.py +2 -4
  65. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/rule_catalog_artifact.py +17 -15
  66. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/rule_changes.py +18 -17
  67. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/rule_dependencies.py +1 -1
  68. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/rule_maintenance.py +30 -18
  69. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/rule_registration.py +5 -1
  70. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/rules/catalog.py +14 -7
  71. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/rules/corpus_runner.py +1 -1
  72. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/schema_boundary.py +26 -7
  73. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/yaml_boundary.py +8 -2
  74. code_standards-8.136.2/src/sarj_standards/schemas/rule-catalog.v1.json +1 -0
  75. code_standards-8.135.5/src/sarj_standards/schemas/rule-catalog.v1.json +0 -1
  76. {code_standards-8.135.5 → code_standards-8.136.2}/.gitignore +0 -0
  77. {code_standards-8.135.5 → code_standards-8.136.2}/LICENSE +0 -0
  78. {code_standards-8.135.5 → code_standards-8.136.2}/README.md +0 -0
  79. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/__init__.py +0 -0
  80. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/__main__.py +0 -0
  81. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/cli/__init__.py +0 -0
  82. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/Mintfile.mobile.strict +0 -0
  83. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/action-parser/LICENSE.actions +0 -0
  84. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/action-parser/LICENSE.cronstrue +0 -0
  85. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/action-parser/LICENSE.yaml +0 -0
  86. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/action-parser/generate.mts +0 -0
  87. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/action-parser/index.mts +0 -0
  88. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/action-parser/package-lock.json +0 -0
  89. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/action-parser/package.json +0 -0
  90. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/action-parser/upstream.json +0 -0
  91. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/action-parser.cjs +0 -0
  92. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/actionlint.strict.yaml +0 -0
  93. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/basedpyright.python315-watch.json +0 -0
  94. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/basedpyright.strict.json +0 -0
  95. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/checkov.strict.yml +0 -0
  96. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/compile-eslint.mts +0 -0
  97. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/detekt.strict.yml +0 -0
  98. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/devops-verification.v1.json +0 -0
  99. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/doctor.config.json +0 -0
  100. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/eslint-compact-formatter.mts +0 -0
  101. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/eslint-required-policy.mts +0 -0
  102. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/eslint-selected-rules.mts +0 -0
  103. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/eslint.application.mjs +0 -0
  104. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/eslint.peers.json +0 -0
  105. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/eslint.strict.mjs +0 -0
  106. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/eslint.strict.ts +0 -0
  107. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/hadolint.strict.yaml +0 -0
  108. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/ktlint.strict.editorconfig +0 -0
  109. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/markdownlint.strict.yaml +0 -0
  110. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/mobile-tools.versions.json +0 -0
  111. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/mobsf.strict.yml +0 -0
  112. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/pyright.strict.json +0 -0
  113. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/ruff.application.toml +0 -0
  114. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/ruff.cast.toml +0 -0
  115. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/ruff.python315-watch.toml +0 -0
  116. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/ruff.required.toml +0 -0
  117. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/ruff.strict.toml +0 -0
  118. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/rule-level-source.mts +0 -0
  119. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/schemas/SKAFFOLD-LICENSE +0 -0
  120. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/schemas/google-build-v1-schema.json +0 -0
  121. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/schemas/google-build-v1.LICENSE +0 -0
  122. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/schemas/skaffold-v4beta7.json +0 -0
  123. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/schemas/upstream-schemas.json +0 -0
  124. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/semgrep-overrides.txt +0 -0
  125. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/shellcheck.strict.rc +0 -0
  126. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/swiftformat.strict +0 -0
  127. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/swiftlint.strict.yml +0 -0
  128. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/taplo.strict.toml +0 -0
  129. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/tflint.strict.hcl +0 -0
  130. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/tflint.version.hcl +0 -0
  131. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/tool-json.mts +0 -0
  132. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/yamllint.strict.yaml +0 -0
  133. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/configs/zizmor.strict.yml +0 -0
  134. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/__init__.py +0 -0
  135. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/adoption/__init__.py +0 -0
  136. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/adoption/age_transition.py +0 -0
  137. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/adoption/devops.py +0 -0
  138. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/adoption/exclusions.py +0 -0
  139. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/adoption/launcher.py +0 -0
  140. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/adoption/lifecycle.py +0 -0
  141. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/adoption/native_bootstrap.py +0 -0
  142. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/adoption/repository_baseline.py +0 -0
  143. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/adoption/service.py +0 -0
  144. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/adoption/uvtool.py +0 -0
  145. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/catalogs/__init__.py +0 -0
  146. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/corpus/__init__.py +0 -0
  147. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/corpus/snapshot.py +0 -0
  148. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/diagnostics/__init__.py +0 -0
  149. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/diagnostics/analysis.schema.json +0 -0
  150. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/diagnostics/source.py +0 -0
  151. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/filesystem.py +0 -0
  152. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/__init__.py +0 -0
  153. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/chart_schemas.py +0 -0
  154. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/complexity_baseline.py +0 -0
  155. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/devops_schema.py +0 -0
  156. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/kubernetes_context.py +0 -0
  157. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/mobile_tools.py +0 -0
  158. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/policy.py +0 -0
  159. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/prepared_native.py +0 -0
  160. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/python_fixes.py +0 -0
  161. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/shell_format.py +0 -0
  162. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/shell_policy.py +0 -0
  163. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/test_value.py +0 -0
  164. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/text_rule_base.py +0 -0
  165. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/text_rules/__init__.py +0 -0
  166. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/text_rules/_registry.py +0 -0
  167. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/linting/text_rules/cloudbuild_contract.py +0 -0
  168. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/__init__.py +0 -0
  169. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/artifacts.py +0 -0
  170. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/causality.py +0 -0
  171. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/changes.py +0 -0
  172. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/ci_artifacts.py +0 -0
  173. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/make_checks.py +0 -0
  174. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/native_test_setup.py +0 -0
  175. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/process.py +0 -0
  176. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/publish.py +0 -0
  177. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/release_detect.py +0 -0
  178. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/retirement.py +0 -0
  179. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/reviewed_analysis.py +0 -0
  180. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/release/status.py +0 -0
  181. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/__init__.py +0 -0
  182. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/cli_reference_artifact.py +0 -0
  183. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/comment_corpus.py +0 -0
  184. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/hooks.py +0 -0
  185. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/immutable_git.py +0 -0
  186. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/ledger.py +0 -0
  187. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/rule_checkout.py +0 -0
  188. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/rule_examples.py +0 -0
  189. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/rule_imports.mts +0 -0
  190. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/rule_inventory_artifact.py +0 -0
  191. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/rule_level_source.py +0 -0
  192. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/rule_lifecycle.py +0 -0
  193. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/shell_checks.py +0 -0
  194. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/repository/third_party_catalog_artifact.py +0 -0
  195. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/rules/__init__.py +0 -0
  196. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/rules/contracts.py +0 -0
  197. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/rules/evaluation.py +0 -0
  198. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/setup/__init__.py +0 -0
  199. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/setup/repository.py +0 -0
  200. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/libs/typed_containers.py +0 -0
  201. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/py.typed +0 -0
  202. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/schemas/__init__.py +0 -0
  203. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/schemas/_paths.py +0 -0
  204. {code_standards-8.135.5 → code_standards-8.136.2}/src/sarj_standards/schemas/rule-catalog.v1.schema.json +0 -0
  205. {code_standards-8.135.5 → code_standards-8.136.2}/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.135.5
3
+ Version: 8.136.2
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/
@@ -30,10 +30,10 @@ Requires-Dist: pyyaml==6.0.3
30
30
  Requires-Dist: referencing==0.37.0
31
31
  Requires-Dist: repo-standards==6.12.9
32
32
  Requires-Dist: ruff==0.17.2
33
- Requires-Dist: sarj-iac-lint==0.30.1
34
- Requires-Dist: sarj-python-lint==1.79.0
35
- Requires-Dist: sarj-rule-contracts==0.4.1
36
- Requires-Dist: sarj-sql-lint==0.28.0
33
+ Requires-Dist: sarj-iac-lint==0.30.2
34
+ Requires-Dist: sarj-python-lint==1.81.0
35
+ Requires-Dist: sarj-rule-contracts==0.4.2
36
+ Requires-Dist: sarj-sql-lint==0.29.0
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')
38
38
  Requires-Dist: typer==0.27.3
39
39
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "code-standards"
3
- version = "8.135.5"
3
+ version = "8.136.2"
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"
@@ -17,7 +17,7 @@ classifiers = [
17
17
  "Topic :: Software Development :: Quality Assurance",
18
18
  ]
19
19
  dependencies = [
20
- "sarj-rule-contracts==0.4.1",
20
+ "sarj-rule-contracts==0.4.2",
21
21
  "pathspec==1.1.1",
22
22
  "basedpyright==1.40.2",
23
23
  "deptry==0.25.1",
@@ -31,9 +31,9 @@ dependencies = [
31
31
  "repo-standards==6.12.9",
32
32
  "ruff==0.17.2",
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
- "sarj-iac-lint==0.30.1",
35
- "sarj-python-lint==1.79.0",
36
- "sarj-sql-lint==0.28.0",
34
+ "sarj-iac-lint==0.30.2",
35
+ "sarj-python-lint==1.81.0",
36
+ "sarj-sql-lint==0.29.0",
37
37
  "typer==0.27.3",
38
38
  ]
39
39
 
@@ -6,7 +6,7 @@ from pathlib import Path
6
6
 
7
7
  try:
8
8
  __version__ = version("code-standards")
9
- except PackageNotFoundError: # running from an uninstalled source tree
9
+ except PackageNotFoundError:
10
10
  __version__ = "0.0.0.dev0"
11
11
 
12
12
  CONFIGS_DIR: Path = Path(__file__).resolve().parent / "configs"
@@ -109,8 +109,7 @@ def _analysis_manifest(root: Path, mode: AnalysisMode) -> Manifest | None:
109
109
  try:
110
110
  return load_manifest(root)
111
111
  except ValueError:
112
- # Corpus evaluation is intentionally portable across consumer manifest
113
- # generations. Current manifests still contribute path exclusions.
112
+ # Legacy manifests may still supply path exclusions.
114
113
  return None
115
114
 
116
115
 
@@ -1213,7 +1212,12 @@ def _sync_target_changes(source: Path, destination: Path) -> bool:
1213
1212
  return True
1214
1213
 
1215
1214
 
1216
- def _object_list(value: object, label: str) -> list[object]:
1215
+ def _object_list(
1216
+ value: object, # sarj-noqa: SARJ528 -- Shallow validation preserves unchecked array elements.
1217
+ label: str,
1218
+ ) -> list[ # sarj-noqa: SARJ528 -- Shallow validation preserves unchecked array elements.
1219
+ object
1220
+ ]:
1217
1221
  if not is_object_list(value):
1218
1222
  msg = f"{label} must be an array"
1219
1223
  raise TypeError(msg)
@@ -15,10 +15,10 @@ import subprocess # ruff: ignore[suspicious-subprocess-import] -- repository co
15
15
  import sys
16
16
  import tempfile
17
17
  from types import MappingProxyType
18
- from typing import TYPE_CHECKING, Annotated, Final, NoReturn, TypeIs
18
+ from typing import TYPE_CHECKING, Annotated, Final, NoReturn
19
19
 
20
20
  from packaging.version import InvalidVersion, Version
21
- from pydantic import BaseModel, ValidationError
21
+ from pydantic import BaseModel, JsonValue, ValidationError
22
22
  from repo_standards.core.commit_message import check_local_commit_message_file
23
23
  import typer
24
24
 
@@ -29,7 +29,6 @@ from sarj_standards.libs.adoption.configs import CONFIG_NAMES
29
29
  from sarj_standards.libs.filesystem import is_link_like
30
30
  from sarj_standards.libs.linting.policy import Policy
31
31
  from sarj_standards.libs.rules import RuleSelector
32
- from sarj_standards.libs.typed_containers import is_object_mapping
33
32
 
34
33
 
35
34
  _TEXT_DIAGNOSTIC_LIMIT: Final = 50
@@ -46,7 +45,7 @@ if TYPE_CHECKING:
46
45
 
47
46
 
48
47
  class _CorpusLintReport(BaseModel):
49
- diagnostics: list[dict[str, object]]
48
+ diagnostics: list[dict[str, JsonValue]]
50
49
 
51
50
 
52
51
  _NEXT_STEPS = (
@@ -1551,7 +1550,7 @@ def _cmd_rule_evaluate_manifest(args: _Args, root: Path) -> int:
1551
1550
 
1552
1551
  command = _corpus_evaluation_command(args)
1553
1552
 
1554
- diagnostics: list[dict[str, object]] = []
1553
+ diagnostics: list[dict[str, JsonValue]] = []
1555
1554
  batches: list[dict[str, object]] = []
1556
1555
 
1557
1556
  def observe(source: object, batch: object, stdout: bytes, _stderr: bytes) -> None:
@@ -1634,19 +1633,18 @@ def _corpus_evaluation_command(args: _Args) -> list[str]:
1634
1633
 
1635
1634
 
1636
1635
  def _corpus_diagnostic(
1637
- diagnostic: dict[str, object],
1636
+ diagnostic: dict[str, JsonValue],
1638
1637
  corpus: str,
1639
1638
  *,
1640
1639
  private: bool,
1641
- ) -> dict[str, object]:
1642
- def rewrite(value: object) -> object:
1643
- if _is_object_list(value):
1640
+ ) -> dict[str, JsonValue]:
1641
+ def rewrite(value: JsonValue) -> JsonValue:
1642
+ if isinstance(value, list):
1644
1643
  return [rewrite(item) for item in value]
1645
- table = _object_table(value)
1646
- if table is None:
1644
+ if not isinstance(value, dict):
1647
1645
  return value
1648
- rewritten: dict[str, object] = {}
1649
- for key, item in table.items():
1646
+ rewritten: dict[str, JsonValue] = {}
1647
+ for key, item in value.items():
1650
1648
  if key == "path" and isinstance(item, str):
1651
1649
  rewritten[key] = "<private-corpus-file>" if private else f"{corpus}/{item}"
1652
1650
  else:
@@ -1654,21 +1652,10 @@ def _corpus_diagnostic(
1654
1652
  return rewritten
1655
1653
 
1656
1654
  rendered = rewrite(diagnostic)
1657
- table = _object_table(rendered)
1658
- if table is None: # pragma: no cover - input is a dictionary.
1655
+ if not isinstance(rendered, dict): # pragma: no cover - input is a dictionary.
1659
1656
  msg = "corpus diagnostic rendering failed"
1660
1657
  raise TypeError(msg)
1661
- return table
1662
-
1663
-
1664
- def _is_object_list(value: object) -> TypeIs[list[object]]:
1665
- return isinstance(value, list)
1666
-
1667
-
1668
- def _object_table(value: object) -> dict[str, object] | None:
1669
- if not is_object_mapping(value):
1670
- return None
1671
- return {key: item for key, item in value.items() if isinstance(key, str)}
1658
+ return rendered
1672
1659
 
1673
1660
 
1674
1661
  def cmd_observe(args: _Args) -> int:
@@ -1829,7 +1816,7 @@ def _validate_analysis_output(args: _Args, root: Path) -> bool:
1829
1816
  return False
1830
1817
 
1831
1818
 
1832
- def _machine_adoption_gate(root: Path) -> object | None:
1819
+ def _machine_adoption_gate(root: Path) -> AnalysisReport | None:
1833
1820
  from sarj_standards.libs.adoption import doctor, service # ruff: ignore[import-outside-top-level] -- load sarj_standards.libs.adoption only when this selected operation executes.
1834
1821
  from sarj_standards.libs.diagnostics import ( # ruff: ignore[import-outside-top-level] -- load sarj_standards.libs.diagnostics only when this selected operation executes.
1835
1822
  Completion,
@@ -1939,7 +1926,7 @@ def _merge_sync_findings(
1939
1926
  return _SyncFindings(diagnostics=diagnostics, issues=issues)
1940
1927
 
1941
1928
 
1942
- def _machine_input_error(root: Path, message: str) -> object:
1929
+ def _machine_input_error(root: Path, message: str) -> AnalysisReport:
1943
1930
  from sarj_standards.libs.diagnostics import ( # ruff: ignore[import-outside-top-level] -- machine formats stay lazy
1944
1931
  Completion,
1945
1932
  ExecutionIssue,
@@ -2020,8 +2007,7 @@ def _prepare_report_parent(root: Path, output: Path) -> None:
2020
2007
 
2021
2008
 
2022
2009
  def _write_report(root: Path, output: Path, payload: str, *, output_format: str) -> None:
2023
- # Revalidate immediately before the write as a defense against a parent path
2024
- # being replaced after the pre-analysis check.
2010
+ # Recheck the parent path immediately before writing to prevent replacement races.
2025
2011
  destination = _report_destination(root, output, output_format=output_format)
2026
2012
  parent = destination.parent
2027
2013
  descriptor, temporary_name = tempfile.mkstemp(prefix=f".{destination.name}.", suffix=".tmp", dir=parent)
@@ -2582,8 +2568,7 @@ def _baseline_analysis_reports(args: _Args, root: Path, selected: list[str] | No
2582
2568
  operations.append(partial(_baseline_external_report, root, selected, trust, "shellcheck"))
2583
2569
  if args.jobs == 1 or len(operations) <= 1:
2584
2570
  return [operation() for operation in operations]
2585
- # Multiple operations share one bounded pool with serial inner analyzers;
2586
- # a single operation uses its own worker budget. Check every result first.
2571
+ # Inner analyzers run serially under this shared worker budget.
2587
2572
  with ThreadPoolExecutor(max_workers=args.jobs, thread_name_prefix="baseline") as workers:
2588
2573
  pending = [workers.submit(operation) for operation in operations]
2589
2574
  return [result.result() for result in pending]
@@ -2599,8 +2584,7 @@ def _baseline_scan_rules(args: _Args) -> _BaselineScanRules:
2599
2584
  scoped_rules = _analysis_rules_for_baseline(args.baseline_rules) if args.baseline_cmd == "update" else None
2600
2585
  upstream_eslint = bool(_upstream_eslint_rules_for_baseline(args.baseline_rules))
2601
2586
  if upstream_eslint and scoped_rules is not None:
2602
- # One selected ESLint scan below covers both upstream and custom
2603
- # findings. Validate custom selectors before removing that duplicate scan.
2587
+ # Validate selectors before combining their upstream and custom scans.
2604
2588
  for selector in scoped_rules:
2605
2589
  if (
2606
2590
  selector.startswith("eslint:")
@@ -3316,6 +3316,6 @@
3316
3316
  },
3317
3317
  "program": "code-standards",
3318
3318
  "schemaVersion": 1,
3319
- "summary": "Adopt, check, fix, diagnose, and update sarj-ai standards (v8.135.5).",
3320
- "version": "8.135.5"
3319
+ "summary": "Adopt, check, fix, diagnose, and update sarj-ai standards (v8.136.2).",
3320
+ "version": "8.136.2"
3321
3321
  }
@@ -2862,6 +2862,14 @@
2862
2862
  "evidence": "Twenty-eight focused settings checks cover repeated Python field namespaces, environment-alias independence, owned and inherited fields, ClassVar and Final metadata, private fields, generated and test exclusions, imported BaseSettings ancestry, stable locations and exact suppressions. Private source, paths and identifying pins stay outside public artifacts. Follow-up: packages/python/benchmarks/service-contracts-and-ids-100-passes.json records 100 distinct semantic cases (39 true positives, 61 true negatives, no labeled false positives/negatives), five exact motivating blocking findings, deterministic three-trial cold/warm measurements on 296 guarded sample files, and completed local canonical gates. Private source and identifying pins remain local. Exact-head CI and broader review remain separate gates. The second post-merge audit passed 100 distinct native checks against the actual published sarj-python-lint 1.76.0 wheel, 25 per repaired rule, with zero failures or skips.",
2863
2863
  "outcome": "Stage SARJ532 at WARNING without autofix. At least two directly owned public BaseSettings fields must share a complete Python namespace token; environment aliases alone do not qualify. Forty-four matching groups in the private sample remain API/environment review advisories. Preserve existing loading, aliases, defaults and source precedence when grouping manually."
2864
2864
  },
2865
+ {
2866
+ "task": "rule-audit/sql/new-table-inline-constraints",
2867
+ "family": "sql",
2868
+ "ruleId": "new-table-inline-constraints",
2869
+ "state": "pending",
2870
+ "evidence": "Authored semantic fixtures cover primary keys, uniqueness, foreign keys, checks and plain unique column indexes on proven fresh tables. Near-miss controls preserve existing-table and online-validation migrations, forward foreign-key dependencies, transaction and migration-section boundaries, quoted identifiers, malformed input and indexes with separate PostgreSQL contracts. Final canonical verification and exact-head CI remain required; private source, paths and identifying pins remain local.",
2871
+ "outcome": "Enforce SARJ121 as an error at the explicit user request, without autofix. Preserve constraint names and options when moving eligible declarations into CREATE TABLE. Ordinary, partial, expression, concurrent and option-bearing indexes remain separate; conditional or unproved table freshness abstains. Calibration remains pending rather than claiming completed release qualification."
2872
+ },
2865
2873
  {
2866
2874
  "task": "rule-audit/sql/no-analytical-queries-in-transactional-db",
2867
2875
  "family": "sql",