code-standards 8.117.0__tar.gz → 8.121.0__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 (199) hide show
  1. {code_standards-8.117.0 → code_standards-8.121.0}/PKG-INFO +4 -4
  2. {code_standards-8.117.0 → code_standards-8.121.0}/README.md +3 -3
  3. {code_standards-8.117.0 → code_standards-8.121.0}/pyproject.toml +1 -1
  4. code_standards-8.121.0/src/sarj_standards/configs/action-parser/LICENSE.actions +21 -0
  5. code_standards-8.121.0/src/sarj_standards/configs/action-parser/LICENSE.cronstrue +21 -0
  6. code_standards-8.121.0/src/sarj_standards/configs/action-parser/LICENSE.yaml +13 -0
  7. code_standards-8.121.0/src/sarj_standards/configs/action-parser/generate.mts +23 -0
  8. code_standards-8.121.0/src/sarj_standards/configs/action-parser/index.mts +92 -0
  9. code_standards-8.121.0/src/sarj_standards/configs/action-parser/package-lock.json +547 -0
  10. code_standards-8.121.0/src/sarj_standards/configs/action-parser/package.json +22 -0
  11. code_standards-8.121.0/src/sarj_standards/configs/action-parser/upstream.json +14 -0
  12. code_standards-8.121.0/src/sarj_standards/configs/action-parser.cjs +258 -0
  13. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/cli-reference.v1.json +1 -1
  14. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/adoption/devops.py +4 -0
  15. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/adoption/manifest.py +39 -4
  16. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/adoption/scaffold.py +1 -0
  17. code_standards-8.121.0/src/sarj_standards/libs/linting/action_metadata.py +130 -0
  18. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/devops_schema.py +3 -2
  19. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/devops_source.py +69 -17
  20. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/external.py +2 -0
  21. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/native_test_setup.py +6 -3
  22. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/docs.py +17 -8
  23. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/setup/repository.py +7 -9
  24. {code_standards-8.117.0 → code_standards-8.121.0}/.gitignore +0 -0
  25. {code_standards-8.117.0 → code_standards-8.121.0}/LICENSE +0 -0
  26. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/__init__.py +0 -0
  27. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/__main__.py +0 -0
  28. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/_meta.py +0 -0
  29. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/api.py +0 -0
  30. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/cli/__init__.py +0 -0
  31. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/cli/main.py +0 -0
  32. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/Mintfile.mobile.strict +0 -0
  33. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/actionlint.strict.yaml +0 -0
  34. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/basedpyright.python315-watch.json +0 -0
  35. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/basedpyright.strict.json +0 -0
  36. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/checkov.strict.yml +0 -0
  37. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/compile-eslint.mts +0 -0
  38. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/detekt.strict.yml +0 -0
  39. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/devops-verification.v1.json +0 -0
  40. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/doctor.config.json +0 -0
  41. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/eslint-compact-formatter.mts +0 -0
  42. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/eslint-required-policy.mts +0 -0
  43. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/eslint-selected-rules.mts +0 -0
  44. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/eslint.application.mjs +0 -0
  45. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/eslint.peers.json +0 -0
  46. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/eslint.strict.mjs +0 -0
  47. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/eslint.strict.ts +0 -0
  48. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/hadolint.strict.yaml +0 -0
  49. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/ktlint.strict.editorconfig +0 -0
  50. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/markdownlint.strict.yaml +0 -0
  51. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/mobile-tools.versions.json +0 -0
  52. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/mobsf.strict.yml +0 -0
  53. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/pyright.strict.json +0 -0
  54. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/ruff.application.toml +0 -0
  55. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/ruff.cast.toml +0 -0
  56. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/ruff.python315-watch.toml +0 -0
  57. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/ruff.required.toml +0 -0
  58. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/ruff.strict.toml +0 -0
  59. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/rule-calibration-campaign.v1.json +0 -0
  60. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/rule-inventory.v1.json +0 -0
  61. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/rule-ledger.json +0 -0
  62. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/rule-level-source.mts +0 -0
  63. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/schemas/SKAFFOLD-LICENSE +0 -0
  64. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/schemas/google-build-v1-schema.json +0 -0
  65. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/schemas/google-build-v1.LICENSE +0 -0
  66. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/schemas/skaffold-v4beta7.json +0 -0
  67. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/schemas/upstream-schemas.json +0 -0
  68. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/semgrep-overrides.txt +0 -0
  69. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/shellcheck.strict.rc +0 -0
  70. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/swiftformat.strict +0 -0
  71. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/swiftlint.strict.yml +0 -0
  72. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/taplo.strict.toml +0 -0
  73. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/tflint.strict.hcl +0 -0
  74. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/tflint.version.hcl +0 -0
  75. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/tool-json.mts +0 -0
  76. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/yamllint.strict.yaml +0 -0
  77. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/configs/zizmor.strict.yml +0 -0
  78. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/__init__.py +0 -0
  79. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/adoption/__init__.py +0 -0
  80. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/adoption/age_transition.py +0 -0
  81. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/adoption/configs.py +0 -0
  82. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/adoption/doctor.py +0 -0
  83. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/adoption/exclusions.py +0 -0
  84. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/adoption/hooks.py +0 -0
  85. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/adoption/launcher.py +0 -0
  86. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/adoption/lifecycle.py +0 -0
  87. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/adoption/native_bootstrap.py +0 -0
  88. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/adoption/packagemanager.py +0 -0
  89. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/adoption/repository_baseline.py +0 -0
  90. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/adoption/retired_suppressions.py +0 -0
  91. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/adoption/service.py +0 -0
  92. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/adoption/transaction.py +0 -0
  93. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/adoption/upgrade.py +0 -0
  94. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/adoption/uvtool.py +0 -0
  95. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/catalogs/__init__.py +0 -0
  96. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/catalogs/slack_automations.py +0 -0
  97. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/corpus/__init__.py +0 -0
  98. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/corpus/manifest.py +0 -0
  99. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/corpus/snapshot.py +0 -0
  100. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/diagnostics/__init__.py +0 -0
  101. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/diagnostics/analysis.schema.json +0 -0
  102. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/diagnostics/baseline.py +0 -0
  103. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/diagnostics/models.py +0 -0
  104. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/diagnostics/serialize.py +0 -0
  105. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/diagnostics/source.py +0 -0
  106. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/filesystem.py +0 -0
  107. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/json_boundary.py +0 -0
  108. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/__init__.py +0 -0
  109. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/analysis.py +0 -0
  110. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/chart_schemas.py +0 -0
  111. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/cloudbuild.py +0 -0
  112. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/cloudbuild_schema.py +0 -0
  113. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/complexity_baseline.py +0 -0
  114. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/devops_programs.py +0 -0
  115. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/devops_tools.py +0 -0
  116. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/duplicate_code.py +0 -0
  117. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/embedded_shell.py +0 -0
  118. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/kubernetes_context.py +0 -0
  119. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/library_policy.py +0 -0
  120. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/mobile_tools.py +0 -0
  121. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/policy.py +0 -0
  122. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/prepared_devops.py +0 -0
  123. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/prepared_kubernetes.py +0 -0
  124. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/repo_standards.py +0 -0
  125. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/runner.py +0 -0
  126. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/scheduling.py +0 -0
  127. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/security_tools.py +0 -0
  128. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/shell_ast.py +0 -0
  129. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/shell_format.py +0 -0
  130. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/shell_policy.py +0 -0
  131. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/test_value.py +0 -0
  132. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/text_rule_base.py +0 -0
  133. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/text_rules/__init__.py +0 -0
  134. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/text_rules/_registry.py +0 -0
  135. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/text_rules/cloudbuild_contract.py +0 -0
  136. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/textlint.py +0 -0
  137. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/toml_literals.py +0 -0
  138. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/linting/unused_modules.py +0 -0
  139. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/__init__.py +0 -0
  140. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/_values.py +0 -0
  141. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/artifacts.py +0 -0
  142. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/causality.py +0 -0
  143. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/changes.py +0 -0
  144. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/ci_artifacts.py +0 -0
  145. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/make_checks.py +0 -0
  146. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/metadata_verification.py +0 -0
  147. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/process.py +0 -0
  148. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/publish.py +0 -0
  149. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/registry.py +0 -0
  150. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/release_age.py +0 -0
  151. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/release_detect.py +0 -0
  152. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/retirement.py +0 -0
  153. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/reviewed_analysis.py +0 -0
  154. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/rollout.py +0 -0
  155. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/status.py +0 -0
  156. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/tags.py +0 -0
  157. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/test_selection.py +0 -0
  158. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/typescript.py +0 -0
  159. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/verification_process.py +0 -0
  160. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/release/wheel_tests.py +0 -0
  161. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/__init__.py +0 -0
  162. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/cli_reference_artifact.py +0 -0
  163. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/cloudbuild_schema_projection.py +0 -0
  164. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/comment_corpus.py +0 -0
  165. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/config_generation.py +0 -0
  166. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/hooks.py +0 -0
  167. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/immutable_git.py +0 -0
  168. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/ledger.py +0 -0
  169. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/repository.py +0 -0
  170. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/ruff_freshness.py +0 -0
  171. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/rule_authoring.py +0 -0
  172. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/rule_catalog_artifact.py +0 -0
  173. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/rule_changes.py +0 -0
  174. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/rule_checkout.py +0 -0
  175. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/rule_dependencies.py +0 -0
  176. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/rule_examples.py +0 -0
  177. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/rule_imports.mts +0 -0
  178. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/rule_inventory_artifact.py +0 -0
  179. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/rule_level_source.py +0 -0
  180. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/rule_lifecycle.py +0 -0
  181. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/rule_maintenance.py +0 -0
  182. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/rule_registration.py +0 -0
  183. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/shell_checks.py +0 -0
  184. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/repository/third_party_catalog_artifact.py +0 -0
  185. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/rules/__init__.py +0 -0
  186. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/rules/catalog.py +0 -0
  187. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/rules/contracts.py +0 -0
  188. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/rules/corpus_runner.py +0 -0
  189. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/rules/evaluation.py +0 -0
  190. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/schema_boundary.py +0 -0
  191. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/setup/__init__.py +0 -0
  192. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/typed_containers.py +0 -0
  193. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/libs/yaml_boundary.py +0 -0
  194. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/py.typed +0 -0
  195. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/schemas/__init__.py +0 -0
  196. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/schemas/_paths.py +0 -0
  197. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/schemas/rule-catalog.v1.json +0 -0
  198. {code_standards-8.117.0 → code_standards-8.121.0}/src/sarj_standards/schemas/rule-catalog.v1.schema.json +0 -0
  199. {code_standards-8.117.0 → code_standards-8.121.0}/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.117.0
3
+ Version: 8.121.0
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/
@@ -105,7 +105,7 @@ Unused private Python test helpers require `reportUnusedFunction` set to `warnin
105
105
 
106
106
  DevOps execution blocks may sequence existing commands without helper scripts. Keep interpreter source, control flow, logical chains, pipelines and substitutions in independently linted files; Python `-m` and script paths, and jq/awk `-f` files remain supported. SARJ310 is an error, including short inline programs. Cloud Build SARJ315 checks YAML and JSON for unique IDs, ordered step dependencies, script/argv exclusivity and untrusted substitutions in shell source; pass substitutions as quoted arguments to external scripts. JSON configs are discovered in operational directories or with `cloudbuild` in their filename; JSON syntax must be strict, with unique keys and finite numbers. Files named with `cloudbuild`, and Build-shaped files under a `cloudbuild` directory, use the bundled, digest-verified Google Build v1 field schema for field names, types, enums and protobuf durations/integers. The offline schema rejects output-only fields; trigger expansion, resource access and hosted admission require the deployment environment.
107
107
 
108
- The source gate uses pinned actionlint, shared ShellCheck, offline Zizmor, Hadolint and Skaffold v4beta7 schema validation. Cloud Deploy validation is a documented partial structural contract. Terraform validation and TFLint require explicit repository trust and prepared local providers; analysis never initializes or downloads them. Compose requires an exact consumer `[devops].compose_version`; its source check does not resolve environment inputs.
108
+ The source gate uses pinned actionlint, shared ShellCheck, offline Zizmor, Hadolint and Skaffold v4beta7 schema validation. Every selected `action.yml`/`action.yaml` uses GitHub's pinned action parser and converter offline, including composite steps, expression syntax and available contexts, runtime requirements, step IDs and action-reference forms. This uses the core Node runtime and needs no referencing workflow, consumer npm setup or security capability. Cloud Deploy validation is a documented partial structural contract. Terraform validation and TFLint require explicit repository trust and prepared local providers; analysis never initializes or downloads them. Compose requires an exact consumer `[devops].compose_version`; its source check does not resolve environment inputs. Declare `compose_projects = [["base.yaml", "overlays/production.yaml"]]` in `[devops]` to validate custom filenames and overlays in invocation order. Selecting any member checks the whole project; declared fragments are not checked independently. Undeclared conventional filenames remain standalone projects. Missing inputs and native field errors fail coverage. Source checks use Compose's partially resolved model; full consistency requires the actual deployment environment.
109
109
 
110
110
  File discovery, enabled capabilities and native validation each determine coverage. Check the selected paths and tool reports; a syntax check does not establish deployment validity.
111
111
 
@@ -114,10 +114,10 @@ File discovery, enabled capabilities and native validation each determine covera
114
114
  | Terraform `.tf`, `.tf.json` | Native validation, TFLint and applicable Sarj rules | Local providers and explicit trust required; JSON is never passed to `fmt` |
115
115
  | `.tfvars`, `.tftest.hcl` | Native Terraform formatting | Variable/test files do not select module validation or TFLint |
116
116
  | `.tfvars.json`, `.tftest.json`, other `.hcl` | Applicable Sarj rules | No native formatting; JSON semantic coverage is limited |
117
- | Actions workflows and composite actions | actionlint for workflows and referenced action metadata; Zizmor and shared execution checks | actionlint omits standalone metadata and composite steps; security capabilities may be disabled |
117
+ | Actions workflows and action metadata | actionlint for workflows; pinned GitHub action parser for all `action.yml`/`action.yaml` files, including composite steps; Zizmor and shared execution checks | Offline validation covers structure and expression syntax/contexts; expression values and runtime availability require GitHub; security capabilities may be disabled |
118
118
  | Cloud Build YAML/JSON | Pinned Google Build v1 field schema, SARJ315 and shared execution checks | Schema selection uses a `cloudbuild` filename or Build-shaped source in that directory; trigger inputs and hosted admission remain external |
119
119
  | Dockerfile variants | Hadolint and executable-field checks | Image-default entrypoints are not inferred |
120
- | `compose.yaml`, `compose.yml`, `docker-compose.yaml`, `docker-compose.yml` | Pinned native Compose source validation | Overlays and custom filenames need assembled native validation; embedded programs are checked by content |
120
+ | Conventional Compose filenames and declared `compose_projects` | Pinned native Compose validation of ordered file groups | Environment interpolation/resolution stays disabled; deployment must supply its actual environment inputs |
121
121
  | Skaffold and Cloud Deploy YAML | Pinned Skaffold schema; partial Cloud Deploy structure | Generated resources need prepared validation |
122
122
  | Helm charts, Kubernetes and CRDs | Prepared Helm lint/render, kubeconform and kube-linter | Receipts must bind the rendered artifacts and local schema closure |
123
123
  | Templates, systemd units, service-specific `.conf`/`.cfg` | Text rules for recognized templates and `.conf`/`.cfg`; units are not routed | Render templates and run the service's native validator; no general semantic coverage is claimed |
@@ -65,7 +65,7 @@ Unused private Python test helpers require `reportUnusedFunction` set to `warnin
65
65
 
66
66
  DevOps execution blocks may sequence existing commands without helper scripts. Keep interpreter source, control flow, logical chains, pipelines and substitutions in independently linted files; Python `-m` and script paths, and jq/awk `-f` files remain supported. SARJ310 is an error, including short inline programs. Cloud Build SARJ315 checks YAML and JSON for unique IDs, ordered step dependencies, script/argv exclusivity and untrusted substitutions in shell source; pass substitutions as quoted arguments to external scripts. JSON configs are discovered in operational directories or with `cloudbuild` in their filename; JSON syntax must be strict, with unique keys and finite numbers. Files named with `cloudbuild`, and Build-shaped files under a `cloudbuild` directory, use the bundled, digest-verified Google Build v1 field schema for field names, types, enums and protobuf durations/integers. The offline schema rejects output-only fields; trigger expansion, resource access and hosted admission require the deployment environment.
67
67
 
68
- The source gate uses pinned actionlint, shared ShellCheck, offline Zizmor, Hadolint and Skaffold v4beta7 schema validation. Cloud Deploy validation is a documented partial structural contract. Terraform validation and TFLint require explicit repository trust and prepared local providers; analysis never initializes or downloads them. Compose requires an exact consumer `[devops].compose_version`; its source check does not resolve environment inputs.
68
+ The source gate uses pinned actionlint, shared ShellCheck, offline Zizmor, Hadolint and Skaffold v4beta7 schema validation. Every selected `action.yml`/`action.yaml` uses GitHub's pinned action parser and converter offline, including composite steps, expression syntax and available contexts, runtime requirements, step IDs and action-reference forms. This uses the core Node runtime and needs no referencing workflow, consumer npm setup or security capability. Cloud Deploy validation is a documented partial structural contract. Terraform validation and TFLint require explicit repository trust and prepared local providers; analysis never initializes or downloads them. Compose requires an exact consumer `[devops].compose_version`; its source check does not resolve environment inputs. Declare `compose_projects = [["base.yaml", "overlays/production.yaml"]]` in `[devops]` to validate custom filenames and overlays in invocation order. Selecting any member checks the whole project; declared fragments are not checked independently. Undeclared conventional filenames remain standalone projects. Missing inputs and native field errors fail coverage. Source checks use Compose's partially resolved model; full consistency requires the actual deployment environment.
69
69
 
70
70
  File discovery, enabled capabilities and native validation each determine coverage. Check the selected paths and tool reports; a syntax check does not establish deployment validity.
71
71
 
@@ -74,10 +74,10 @@ File discovery, enabled capabilities and native validation each determine covera
74
74
  | Terraform `.tf`, `.tf.json` | Native validation, TFLint and applicable Sarj rules | Local providers and explicit trust required; JSON is never passed to `fmt` |
75
75
  | `.tfvars`, `.tftest.hcl` | Native Terraform formatting | Variable/test files do not select module validation or TFLint |
76
76
  | `.tfvars.json`, `.tftest.json`, other `.hcl` | Applicable Sarj rules | No native formatting; JSON semantic coverage is limited |
77
- | Actions workflows and composite actions | actionlint for workflows and referenced action metadata; Zizmor and shared execution checks | actionlint omits standalone metadata and composite steps; security capabilities may be disabled |
77
+ | Actions workflows and action metadata | actionlint for workflows; pinned GitHub action parser for all `action.yml`/`action.yaml` files, including composite steps; Zizmor and shared execution checks | Offline validation covers structure and expression syntax/contexts; expression values and runtime availability require GitHub; security capabilities may be disabled |
78
78
  | Cloud Build YAML/JSON | Pinned Google Build v1 field schema, SARJ315 and shared execution checks | Schema selection uses a `cloudbuild` filename or Build-shaped source in that directory; trigger inputs and hosted admission remain external |
79
79
  | Dockerfile variants | Hadolint and executable-field checks | Image-default entrypoints are not inferred |
80
- | `compose.yaml`, `compose.yml`, `docker-compose.yaml`, `docker-compose.yml` | Pinned native Compose source validation | Overlays and custom filenames need assembled native validation; embedded programs are checked by content |
80
+ | Conventional Compose filenames and declared `compose_projects` | Pinned native Compose validation of ordered file groups | Environment interpolation/resolution stays disabled; deployment must supply its actual environment inputs |
81
81
  | Skaffold and Cloud Deploy YAML | Pinned Skaffold schema; partial Cloud Deploy structure | Generated resources need prepared validation |
82
82
  | Helm charts, Kubernetes and CRDs | Prepared Helm lint/render, kubeconform and kube-linter | Receipts must bind the rendered artifacts and local schema closure |
83
83
  | Templates, systemd units, service-specific `.conf`/`.cfg` | Text rules for recognized templates and `.conf`/`.cfg`; units are not routed | Render templates and run the service's native validator; no general semantic coverage is claimed |
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "code-standards"
3
- version = "8.117.0"
3
+ version = "8.121.0"
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"
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright GitHub
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2017 Brady Holt
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,13 @@
1
+ Copyright Eemeli Aro <eemeli@gmail.com>
2
+
3
+ Permission to use, copy, modify, and/or distribute this software for any purpose
4
+ with or without fee is hereby granted, provided that the above copyright notice
5
+ and this permission notice appear in all copies.
6
+
7
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
8
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
9
+ FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
10
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
11
+ OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
12
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
13
+ THIS SOFTWARE.
@@ -0,0 +1,23 @@
1
+ import { buildSync } from 'esbuild';
2
+ import { readFileSync, writeFileSync } from 'node:fs';
3
+ import { fileURLToPath } from 'node:url';
4
+
5
+ const directory = fileURLToPath(new URL('.', import.meta.url));
6
+ const output = new URL('../action-parser.cjs', import.meta.url);
7
+ const result = buildSync({
8
+ absWorkingDir: directory,
9
+ entryPoints: ['index.mts'],
10
+ bundle: true,
11
+ platform: 'node',
12
+ target: 'node20',
13
+ format: 'cjs',
14
+ minify: true,
15
+ legalComments: 'inline',
16
+ write: false,
17
+ });
18
+ const bytes = result.outputFiles[0]!.contents;
19
+ if (process.argv.includes('--check')) {
20
+ if (!readFileSync(output).equals(bytes)) throw new Error('Run npm run build to refresh the pinned action parser bundle');
21
+ } else {
22
+ writeFileSync(output, bytes);
23
+ }
@@ -0,0 +1,92 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { getActionSchema } from '@actions/workflow-parser/actions/index';
3
+ import { convertToIfCondition } from '@actions/workflow-parser/model/converter/if-condition';
4
+ import { IdBuilder } from '@actions/workflow-parser/model/converter/id-builder';
5
+ import { TemplateContext, TemplateValidationErrors } from '@actions/workflow-parser/templates/template-context';
6
+ import { readTemplate } from '@actions/workflow-parser/templates/template-reader';
7
+ import { isMapping, isSequence, isString } from '@actions/workflow-parser/templates/tokens/type-guards';
8
+ import { ExpressionToken, type TemplateToken } from '@actions/workflow-parser/templates/tokens/index';
9
+ import { NoOperationTraceWriter } from '@actions/workflow-parser/templates/trace-writer';
10
+ import { YamlObjectReader } from '@actions/workflow-parser/workflows/yaml-object-reader';
11
+
12
+ interface Source {
13
+ path: string;
14
+ content: string;
15
+ }
16
+
17
+ // ActionManifestManager adds runtime requirements after the shared template reader.
18
+ function validateRuntime(context: TemplateContext, root: TemplateToken): void {
19
+ if (!isMapping(root)) return;
20
+ const runs = root.find('runs');
21
+ if (!runs || !isMapping(runs)) {
22
+ context.error(root, "Action requires a 'runs' mapping");
23
+ return;
24
+ }
25
+ if (runs.find('plugin')) return;
26
+ const using = runs.find('using');
27
+ if (!using || !isString(using)) {
28
+ context.error(runs, "Action requires 'runs.using'");
29
+ return;
30
+ }
31
+ const runtimes = context.schema.getScalarDefinitions(context.schema.getDefinition('using'));
32
+ if (!runtimes.some(runtime => runtime.isMatch(using))) {
33
+ context.error(using, `Unsupported action runtime '${using.value}'`);
34
+ return;
35
+ }
36
+ let required = 'main';
37
+ if (using.value === 'composite') required = 'steps';
38
+ if (using.value === 'docker') required = 'image';
39
+ if (!runs.find(required)) context.error(runs, `Action runtime '${using.value}' requires '${required}'`);
40
+ for (const key of ['pre-if', 'post-if']) {
41
+ const condition = runs.find(key);
42
+ if (!condition || !isString(condition)) continue;
43
+ try {
44
+ ExpressionToken.validateExpression(condition.value, context.schema.getDefinition('runs-if').readerContext);
45
+ } catch (error) {
46
+ context.error(condition, error);
47
+ }
48
+ }
49
+ const steps = runs.find('steps');
50
+ if (!steps || !isSequence(steps)) return;
51
+ const ids = new IdBuilder();
52
+ for (const step of steps) {
53
+ if (!isMapping(step)) continue;
54
+ const id = step.find('id');
55
+ if (id && isString(id)) {
56
+ // The runner compares known reference names without case sensitivity.
57
+ const error = ids.tryAddKnownId(id.value.toLowerCase());
58
+ if (error) context.error(id, error);
59
+ }
60
+ const condition = step.find('if');
61
+ if (condition) convertToIfCondition(context, condition);
62
+ const uses = step.find('uses');
63
+ if (!uses || !isString(uses) || uses.value.startsWith('./') || uses.value.startsWith('.\\') || uses.value.startsWith('$/') || uses.value.startsWith('docker://')) continue;
64
+ const [repository, ref, extra] = uses.value.split('@') as [string, ...string[]];
65
+ if (!ref || extra !== undefined || repository.split(/[\\/]/).filter(Boolean).length < 2) {
66
+ context.error(uses, "Action reference requires owner/repository[/path]@ref");
67
+ }
68
+ }
69
+ }
70
+
71
+ const sources = JSON.parse(readFileSync(process.argv[2]!, 'utf8')) as Source[];
72
+ const results = sources.map(({ path, content }) => {
73
+ const context = new TemplateContext(new TemplateValidationErrors(), getActionSchema(), new NoOperationTraceWriter());
74
+ const file = context.getFileId(path);
75
+ const reader = new YamlObjectReader(file, content);
76
+ for (const error of reader.errors) context.error(file, error.message, error.range);
77
+ // parseAction selects action-root-strict for public metadata. The native
78
+ // action-root contract matches the runner, including local actions without UI labels.
79
+ const value = reader.errors.length ? undefined : readTemplate(context, 'action-root', reader, file);
80
+ if (!context.errors.count && value) {
81
+ validateRuntime(context, value);
82
+ }
83
+ return {
84
+ path,
85
+ errors: context.errors.getErrors().map(error => ({
86
+ message: error.rawMessage,
87
+ line: error.range?.start.line ?? 1,
88
+ column: error.range?.start.column ?? 1,
89
+ })),
90
+ };
91
+ });
92
+ process.stdout.write(JSON.stringify(results));