code-standards 8.147.0__tar.gz → 8.150.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.
- {code_standards-8.147.0 → code_standards-8.150.0}/PKG-INFO +3 -3
- {code_standards-8.147.0 → code_standards-8.150.0}/pyproject.toml +3 -3
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/cli-reference.v1.json +2 -2
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/rule-calibration-campaign.v1.json +96 -0
- code_standards-8.150.0/src/sarj_standards/configs/rule-inventory.v1.json +1 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/rule-ledger.json +26 -2
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/adoption/manifest.py +2 -2
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/json_boundary.py +14 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/rollout.py +159 -36
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/rule_changes.py +3 -0
- code_standards-8.150.0/src/sarj_standards/schemas/rule-catalog.v1.json +1 -0
- code_standards-8.147.0/src/sarj_standards/configs/rule-inventory.v1.json +0 -1
- code_standards-8.147.0/src/sarj_standards/schemas/rule-catalog.v1.json +0 -1
- {code_standards-8.147.0 → code_standards-8.150.0}/.gitignore +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/LICENSE +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/README.md +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/__init__.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/__main__.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/_meta.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/api.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/cli/__init__.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/cli/main.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/Mintfile.mobile.strict +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/action-parser/LICENSE.actions +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/action-parser/LICENSE.cronstrue +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/action-parser/LICENSE.yaml +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/action-parser/generate.mts +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/action-parser/index.mts +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/action-parser/package-lock.json +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/action-parser/package.json +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/action-parser/upstream.json +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/action-parser.cjs +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/actionlint.strict.yaml +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/basedpyright.python315-watch.json +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/basedpyright.strict.json +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/checkov.strict.yml +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/compile-eslint.mts +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/detekt.strict.yml +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/devops-verification.v1.json +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/doctor.config.json +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/eslint-compact-formatter.mts +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/eslint-required-policy.mts +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/eslint-selected-rules.mts +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/eslint.application.mjs +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/eslint.peers.json +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/eslint.strict.mjs +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/eslint.strict.ts +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/hadolint.strict.yaml +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/ktlint.strict.editorconfig +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/markdownlint.strict.yaml +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/mobile-tools.versions.json +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/mobsf.strict.yml +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/pyright.strict.json +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/ruff.application.toml +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/ruff.cast.toml +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/ruff.python315-watch.toml +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/ruff.required.toml +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/ruff.strict.toml +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/rule-level-source.mts +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/schemas/SKAFFOLD-LICENSE +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/schemas/google-build-v1-schema.json +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/schemas/google-build-v1.LICENSE +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/schemas/skaffold-v4beta7.json +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/schemas/upstream-schemas.json +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/semgrep-overrides.txt +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/shellcheck.strict.rc +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/swiftformat.strict +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/swiftlint.strict.yml +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/taplo.strict.toml +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/tflint.strict.hcl +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/tflint.version.hcl +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/tool-json.mts +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/yamllint.strict.yaml +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/zizmor.strict.yml +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/__init__.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/adoption/__init__.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/adoption/age_transition.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/adoption/configs.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/adoption/devops.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/adoption/doctor.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/adoption/exclusions.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/adoption/hooks.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/adoption/launcher.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/adoption/lifecycle.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/adoption/native_bootstrap.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/adoption/packagemanager.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/adoption/repository_baseline.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/adoption/retired_suppressions.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/adoption/scaffold.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/adoption/service.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/adoption/transaction.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/adoption/upgrade.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/adoption/uvtool.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/catalogs/__init__.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/catalogs/slack_automations.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/corpus/__init__.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/corpus/manifest.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/corpus/snapshot.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/diagnostics/__init__.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/diagnostics/analysis.schema.json +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/diagnostics/baseline.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/diagnostics/initial_import.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/diagnostics/models.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/diagnostics/serialize.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/diagnostics/source.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/filesystem.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/__init__.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/_cloudbuild_autofix.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/action_metadata.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/analysis.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/autofix.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/chart_schemas.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/cloudbuild.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/cloudbuild_schema.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/complexity_baseline.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/devops_programs.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/devops_schema.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/devops_source.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/devops_tools.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/duplicate_code.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/embedded_shell.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/external.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/kubernetes_context.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/library_policy.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/mobile_tools.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/policy.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/prepared_devops.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/prepared_kubernetes.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/prepared_native.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/python_fixes.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/repo_standards.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/runner.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/scheduling.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/security_tools.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/shell_ast.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/shell_format.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/shell_policy.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/test_value.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/text_rule_base.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/text_rules/__init__.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/text_rules/_registry.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/text_rules/_slack_payload.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/text_rules/cloudbuild_contract.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/text_rules/slack_event_text_in_mrkdwn.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/textlint.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/toml_literals.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/linting/unused_modules.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/__init__.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/_values.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/artifacts.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/causality.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/changes.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/ci_artifacts.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/make_checks.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/metadata_verification.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/native_test_setup.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/process.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/publish.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/registry.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/release_age.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/release_detect.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/retirement.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/reviewed_analysis.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/status.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/tags.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/test_selection.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/typescript.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/verification_process.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/release/wheel_tests.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/__init__.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/cli_examples.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/cli_reference_artifact.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/cloudbuild_schema_projection.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/comment_corpus.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/config_generation.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/docs.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/hooks.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/immutable_git.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/ledger.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/repository.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/ruff_freshness.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/rule_authoring.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/rule_catalog_artifact.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/rule_checkout.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/rule_dependencies.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/rule_examples.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/rule_imports.mts +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/rule_inventory_artifact.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/rule_level_source.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/rule_lifecycle.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/rule_maintenance.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/rule_registration.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/shell_checks.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/repository/third_party_catalog_artifact.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/rules/__init__.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/rules/catalog.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/rules/contracts.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/rules/corpus_runner.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/rules/evaluation.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/schema_boundary.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/setup/__init__.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/setup/repository.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/typed_containers.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/yaml_boundary.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/py.typed +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/schemas/__init__.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/schemas/_paths.py +0 -0
- {code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/schemas/rule-catalog.v1.schema.json +0 -0
- {code_standards-8.147.0 → code_standards-8.150.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.
|
|
3
|
+
Version: 8.150.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/
|
|
@@ -31,9 +31,9 @@ Requires-Dist: referencing==0.37.0
|
|
|
31
31
|
Requires-Dist: repo-standards==6.14.0
|
|
32
32
|
Requires-Dist: ruff==0.17.2
|
|
33
33
|
Requires-Dist: sarj-iac-lint==0.30.3
|
|
34
|
-
Requires-Dist: sarj-python-lint==1.
|
|
34
|
+
Requires-Dist: sarj-python-lint==1.85.0
|
|
35
35
|
Requires-Dist: sarj-rule-contracts==0.4.2
|
|
36
|
-
Requires-Dist: sarj-sql-lint==0.
|
|
36
|
+
Requires-Dist: sarj-sql-lint==0.31.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.
|
|
3
|
+
version = "8.150.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"
|
|
@@ -32,8 +32,8 @@ dependencies = [
|
|
|
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
34
|
"sarj-iac-lint==0.30.3",
|
|
35
|
-
"sarj-python-lint==1.
|
|
36
|
-
"sarj-sql-lint==0.
|
|
35
|
+
"sarj-python-lint==1.85.0",
|
|
36
|
+
"sarj-sql-lint==0.31.0",
|
|
37
37
|
"typer==0.27.3",
|
|
38
38
|
]
|
|
39
39
|
|
{code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/cli-reference.v1.json
RENAMED
|
@@ -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.
|
|
3320
|
-
"version": "8.
|
|
3319
|
+
"summary": "Adopt, check, fix, diagnose, and update sarj-ai standards (v8.150.0).",
|
|
3320
|
+
"version": "8.150.0"
|
|
3321
3321
|
}
|
|
@@ -2949,6 +2949,102 @@
|
|
|
2949
2949
|
"state": "pending",
|
|
2950
2950
|
"evidence": "Known Any/object/JsonValue string mappings, unchecked JSON, local returns, aliases and chained reads have paired controls. Precise maps, TypedDicts, raw normalization callbacks and unproven receivers retain their documented boundaries. The pinned pre-integration record packages/python/benchmarks/typed-python-boundaries.json covers five affected rules with 111 valid labeled cases (51 TP, 60 TN, zero inspected FP/FN) and three explicit malformed-source rejections. Its repeated cold/warm measurements retain their historical source frame; they are not fleet-recall or combined-current-engine performance claims. Private source and identifying pins remain private. Broader field calibration remains pending.",
|
|
2951
2951
|
"outcome": "Ship SARJ535 at WARNING without autofix. Validate external data into named models and use precise trusted internal contracts. Preserve typed get calls and review missing-field/default behavior manually; field calibration remains pending."
|
|
2952
|
+
},
|
|
2953
|
+
{
|
|
2954
|
+
"task": "rule-audit/python/prefer-optional-composite",
|
|
2955
|
+
"family": "python",
|
|
2956
|
+
"ruleId": "prefer-optional-composite",
|
|
2957
|
+
"state": "pending",
|
|
2958
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover explicitly nullable field groups, annotation ownership, aliases, overlapping prefixes, and valid independent state. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
2959
|
+
"outcome": "SARJ541: Stage at WARNING without autofix. Review an optional composite without inferring joint presence from a name prefix; preserve public wire/schema contracts and independent nullability. Full campaign completion is not claimed."
|
|
2960
|
+
},
|
|
2961
|
+
{
|
|
2962
|
+
"task": "rule-audit/python/no-custom-control-flow-exception",
|
|
2963
|
+
"family": "python",
|
|
2964
|
+
"ruleId": "no-custom-control-flow-exception",
|
|
2965
|
+
"state": "pending",
|
|
2966
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover directly raised name-only local exceptions, stable identities, payload-bearing exceptions, validator protocols, and exact suppressions. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
2967
|
+
"outcome": "SARJ542: Stage at WARNING without autofix. Consider typed outcomes for expected domain failures while preserving framework validation, cancellation, unwinding, and genuine exceptional protocols. Full campaign completion is not claimed."
|
|
2968
|
+
},
|
|
2969
|
+
{
|
|
2970
|
+
"task": "rule-audit/python/no-redundant-sql-alias",
|
|
2971
|
+
"family": "python",
|
|
2972
|
+
"ruleId": "no-redundant-sql-alias",
|
|
2973
|
+
"state": "pending",
|
|
2974
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover direct same-name SQL aliases, quoted identifiers, recoverable Psycopg SQL, namespace mutations, and exact suppressions. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
2975
|
+
"outcome": "SARJ543: Stage at WARNING without autofix. Review only proven redundant projection or table aliases; preserve different output names, unresolved expressions, and dynamic SQL identities. Full campaign completion is not claimed."
|
|
2976
|
+
},
|
|
2977
|
+
{
|
|
2978
|
+
"task": "rule-audit/python/no-recording-store",
|
|
2979
|
+
"family": "python",
|
|
2980
|
+
"ruleId": "no-recording-store",
|
|
2981
|
+
"state": "pending",
|
|
2982
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover source-visible get/upsert contracts, recording implementations, value construction, delegated spies, unknown effects, and exact suppressions. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
2983
|
+
"outcome": "SARJ544: Stage at WARNING without autofix. Prefer isolated PostgreSQL fixtures for recording-only persistence doubles; preserve real delegation, SQL-backed stores, and unsupported contracts. Full campaign completion is not claimed."
|
|
2984
|
+
},
|
|
2985
|
+
{
|
|
2986
|
+
"task": "rule-audit/python/prefer-application-model-joins",
|
|
2987
|
+
"family": "python",
|
|
2988
|
+
"ruleId": "prefer-application-model-joins",
|
|
2989
|
+
"state": "pending",
|
|
2990
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover distinct concrete relations, same-relation joins, query ownership, unresolved fragments, lock-sensitive shapes, and exact suppressions. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
2991
|
+
"outcome": "SARJ545: Stage at WARNING without autofix. Treat distinct-relation joins as architecture review candidates; preserve atomicity, consistency, lock scope, and justified database joins. Full campaign completion is not claimed."
|
|
2992
|
+
},
|
|
2993
|
+
{
|
|
2994
|
+
"task": "rule-audit/python/store-mutation-command-fanout",
|
|
2995
|
+
"family": "python",
|
|
2996
|
+
"ruleId": "store-mutation-command-fanout",
|
|
2997
|
+
"state": "pending",
|
|
2998
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover model write commands beside mutation-method fanout, delegation, distinct contracts, unsupported method shapes, and exact suppressions. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
2999
|
+
"outcome": "SARJ546: Stage at WARNING without autofix. Review consolidation around the existing model write command while preserving update-only, partial-update, concurrency, and distinct command semantics. Full campaign completion is not claimed."
|
|
3000
|
+
},
|
|
3001
|
+
{
|
|
3002
|
+
"task": "rule-audit/python/store-insert-requires-explicit-conflict-policy",
|
|
3003
|
+
"family": "python",
|
|
3004
|
+
"ruleId": "store-insert-requires-explicit-conflict-policy",
|
|
3005
|
+
"state": "pending",
|
|
3006
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover store INSERTs without SQL ON CONFLICT, supported query wrappers, insert-select shapes, explicit policies, and exact suppressions. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
3007
|
+
"outcome": "SARJ547: Stage at WARNING without autofix. Require review of missing SQL ON CONFLICT regardless of the Python method name; choose conflict targets and duplicate behavior explicitly. Full campaign completion is not claimed."
|
|
3008
|
+
},
|
|
3009
|
+
{
|
|
3010
|
+
"task": "rule-audit/python/no-discarded-tagged-outcome",
|
|
3011
|
+
"family": "python",
|
|
3012
|
+
"ruleId": "no-discarded-tagged-outcome",
|
|
3013
|
+
"state": "pending",
|
|
3014
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover discarded module-function outcomes, string-tagged record proofs, prepared imports, rebinding, class shadows, async calls, and consumed values. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
3015
|
+
"outcome": "SARJ548: Stage at WARNING without autofix. Use or forward source-proven tagged outcomes; consuming a value does not prove exhaustive handling. Preserve unknown methods, generic contracts, and unresolved providers. Full campaign completion is not claimed."
|
|
3016
|
+
},
|
|
3017
|
+
{
|
|
3018
|
+
"task": "rule-audit/sql/combine-alter-table",
|
|
3019
|
+
"family": "sql",
|
|
3020
|
+
"ruleId": "combine-alter-table",
|
|
3021
|
+
"state": "pending",
|
|
3022
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover adjacent compatible ALTER actions, exact relation identity, transaction/section boundaries, modifiers, dependencies, and exact suppressions. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
3023
|
+
"outcome": "SARJ123: Retain the explicitly approved ERROR policy without autofix. Combine only proven compatible adjacent ALTER TABLE statements; preserve command, migration, relation, and dependency boundaries. Full campaign completion is not claimed."
|
|
3024
|
+
},
|
|
3025
|
+
{
|
|
3026
|
+
"task": "rule-audit/sql/no-null-comparison",
|
|
3027
|
+
"family": "sql",
|
|
3028
|
+
"ruleId": "no-null-comparison",
|
|
3029
|
+
"state": "pending",
|
|
3030
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover ordinary NULL comparisons, NULL-bearing scalar NOT IN lists, valid row cases, parser boundaries, and exact suppressions. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
3031
|
+
"outcome": "SARJ124: Stage at WARNING without autofix. Review explicit NULL intent while preserving PostgreSQL three-valued logic, row semantics, and unsupported expression boundaries. Full campaign completion is not claimed."
|
|
3032
|
+
},
|
|
3033
|
+
{
|
|
3034
|
+
"task": "rule-audit/sql/invalid-concurrent-ddl",
|
|
3035
|
+
"family": "sql",
|
|
3036
|
+
"ruleId": "invalid-concurrent-ddl",
|
|
3037
|
+
"state": "pending",
|
|
3038
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover complete concurrent DDL forms, explicit transaction contexts, multiple-index restrictions, valid options, and exact suppressions. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
3039
|
+
"outcome": "SARJ125: Stage at WARNING without autofix. Report source-proven invalid concurrent DDL contexts/options; preserve valid PostgreSQL forms and unknown caller or migration-runner contexts. Full campaign completion is not claimed."
|
|
3040
|
+
},
|
|
3041
|
+
{
|
|
3042
|
+
"task": "rule-audit/sql/invalid-postgres-ddl",
|
|
3043
|
+
"family": "sql",
|
|
3044
|
+
"ruleId": "invalid-postgres-ddl",
|
|
3045
|
+
"state": "pending",
|
|
3046
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover known invalid PostgreSQL index/constraint combinations, valid neighboring forms, unsupported syntax, and exact suppressions. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
3047
|
+
"outcome": "SARJ126: Stage at WARNING without autofix. Review only supported invalid PostgreSQL forms; preserve valid index/constraint options and avoid inventing an automatic schema rewrite. Full campaign completion is not claimed."
|
|
2952
3048
|
}
|
|
2953
3049
|
]
|
|
2954
3050
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"rules":[{"code":"SARJ202","family":"iac","id":"no-comment-cruft","source":"packages/iac/src/sarj_iac_lint/rules/no_comment_cruft.py","test":"packages/iac/tests/rules/test_no_comment_cruft.py"},{"code":"SARJ205","family":"iac","id":"no-dead-environment-input","source":"packages/iac/src/sarj_iac_lint/rules/no_dead_environment_input.py","test":"packages/iac/tests/rules/test_no_dead_environment_input.py"},{"code":"SARJ204","family":"iac","id":"no-environment-conditional","source":"packages/iac/src/sarj_iac_lint/rules/no_environment_conditional.py","test":"packages/iac/tests/rules/test_no_environment_conditional.py"},{"code":"SARJ211","family":"iac","id":"no-managed-service-account-key","source":"packages/iac/src/sarj_iac_lint/rules/no_managed_service_account_key.py","test":"packages/iac/tests/rules/test_no_managed_service_account_key.py"},{"code":"SARJ206","family":"iac","id":"no-mocked-terraform-test-oracle","source":"packages/iac/src/sarj_iac_lint/rules/no_mocked_terraform_test_oracle.py","test":"packages/iac/tests/rules/test_no_mocked_terraform_test_oracle.py"},{"code":"SARJ215","family":"iac","id":"no-nested-conditional","source":"packages/iac/src/sarj_iac_lint/rules/no_nested_conditional.py","test":"packages/iac/tests/rules/test_no_nested_conditional.py"},{"code":"SARJ214","family":"iac","id":"no-plaintext-secret-env","source":"packages/iac/src/sarj_iac_lint/rules/no_plaintext_secret_env.py","test":"packages/iac/tests/rules/test_no_plaintext_secret_env.py"},{"code":"SARJ212","family":"iac","id":"no-project-basic-privilege","source":"packages/iac/src/sarj_iac_lint/rules/no_project_basic_privilege.py","test":"packages/iac/tests/rules/test_no_project_basic_privilege.py"},{"code":"SARJ213","family":"iac","id":"no-project-secret-access-for-service-account","source":"packages/iac/src/sarj_iac_lint/rules/no_project_secret_access_for_service_account.py","test":"packages/iac/tests/rules/test_no_project_secret_access_for_service_account.py"},{"code":"SARJ209","family":"iac","id":"no-redundant-variable-validation","source":"packages/iac/src/sarj_iac_lint/rules/no_redundant_variable_validation.py","test":"packages/iac/tests/rules/test_no_redundant_variable_validation.py"},{"code":"SARJ207","family":"iac","id":"no-restated-comment","source":"packages/iac/src/sarj_iac_lint/rules/no_restated_comment.py","test":"packages/iac/tests/rules/test_no_restated_comment.py"},{"code":"SARJ210","family":"iac","id":"no-terraform-data-condition","source":"packages/iac/src/sarj_iac_lint/rules/no_terraform_data_condition.py","test":"packages/iac/tests/rules/test_no_terraform_data_condition.py"},{"code":"SARJ201","family":"iac","id":"require-deletion-protection","source":"packages/iac/src/sarj_iac_lint/rules/require_deletion_protection.py","test":"packages/iac/tests/rules/test_require_deletion_protection.py"},{"code":"SARJ203","family":"iac","id":"require-prevent-destroy-on-irreplaceable","source":"packages/iac/src/sarj_iac_lint/rules/require_prevent_destroy.py","test":"packages/iac/tests/rules/test_require_prevent_destroy.py"},{"code":"SARJ463","family":"python","id":"async-cleanup-registered-synchronously","source":"packages/python/src/sarj_python_lint/rules/async_cleanup_registered_synchronously.py","test":"packages/python/tests/rules/test_async_cleanup_registered_synchronously.py"},{"code":"SARJ540","family":"python","id":"async-executor-shutdown","source":"packages/python/src/sarj_python_lint/rules/async_executor_shutdown.py","test":"packages/python/tests/rules/test_async_executor_shutdown.py"},{"code":"SARJ456","family":"python","id":"async-mock-call-without-await-assertion","source":"packages/python/src/sarj_python_lint/rules/async_mock_call_without_await_assertion.py","test":"packages/python/tests/rules/test_async_mock_call_without_await_assertion.py"},{"code":"SARJ537","family":"python","id":"async-subprocess-cancellation-cleanup","source":"packages/python/src/sarj_python_lint/rules/async_subprocess_cancellation_cleanup.py","test":"packages/python/tests/rules/test_async_subprocess_cancellation_cleanup.py"},{"code":"SARJ536","family":"python","id":"cancel-owned-task-without-join","source":"packages/python/src/sarj_python_lint/rules/cancel_owned_task_without_join.py","test":"packages/python/tests/rules/test_cancel_owned_task_without_join.py"},{"code":"SARJ437","family":"python","id":"complex-postgres-query-requires-architecture-review","source":"packages/python/src/sarj_python_lint/rules/complex_postgres_query_requires_architecture_review.py","test":"packages/python/tests/rules/test_complex_postgres_query_requires_architecture_review.py"},{"code":"SARJ046","family":"python","id":"defect-xfail-requires-explicit-strict","source":"packages/python/src/sarj_python_lint/rules/defect_xfail_requires_explicit_strict.py","test":"packages/python/tests/rules/test_defect_xfail_requires_explicit_strict.py"},{"code":"SARJ506","family":"python","id":"delete-route-returns-no-content","source":"packages/python/src/sarj_python_lint/rules/delete_route_returns_no_content.py","test":"packages/python/tests/rules/test_delete_route_returns_no_content.py"},{"code":"SARJ086","family":"python","id":"docstring-args-restate-signature","source":"packages/python/src/sarj_python_lint/rules/docstring_args_restate_signature.py","test":"packages/python/tests/rules/test_docstring_args_restate_signature.py"},{"code":"SARJ087","family":"python","id":"docstring-returns-restate-signature","source":"packages/python/src/sarj_python_lint/rules/docstring_returns_restate_signature.py","test":"packages/python/tests/rules/test_docstring_returns_restate_signature.py"},{"code":"SARJ488","family":"python","id":"duplicate-adjacent-exception-handler","source":"packages/python/src/sarj_python_lint/rules/duplicate_adjacent_exception_handler.py","test":"packages/python/tests/rules/test_duplicate_adjacent_exception_handler.py"},{"code":"SARJ489","family":"python","id":"duplicate-closed-pure-helper","source":"packages/python/src/sarj_python_lint/rules/duplicate_closed_pure_helper.py","test":"packages/python/tests/rules/test_duplicate_closed_pure_helper.py"},{"code":"SARJ524","family":"python","id":"duplicate-pytest-fixture-params","source":"packages/python/src/sarj_python_lint/rules/duplicate_pytest_fixture_params.py","test":"packages/python/tests/rules/test_duplicate_pytest_fixture_params.py"},{"code":"SARJ434","family":"python","id":"excessive-commentary","source":"packages/python/src/sarj_python_lint/rules/excessive_commentary.py","test":"packages/python/tests/rules/test_excessive_commentary.py"},{"code":"SARJ538","family":"python","id":"failed-probe-zero-threshold","source":"packages/python/src/sarj_python_lint/rules/failed_probe_zero_threshold.py","test":"packages/python/tests/rules/test_failed_probe_zero_threshold.py"},{"code":"SARJ428","family":"python","id":"fakes-in-shared-location","source":"packages/python/src/sarj_python_lint/rules/fakes_in_shared_location.py","test":"packages/python/tests/rules/test_fakes_in_shared_location.py"},{"code":"SARJ451","family":"python","id":"fastapi-class-router-contract","source":"packages/python/src/sarj_python_lint/rules/fastapi_class_router_contract.py","test":"packages/python/tests/rules/test_fastapi_class_router_contract.py"},{"code":"SARJ094","family":"python","id":"fastapi-explicit-openapi-contract","source":"packages/python/src/sarj_python_lint/rules/fastapi_explicit_openapi_contract.py","test":"packages/python/tests/rules/test_fastapi_explicit_openapi_contract.py"},{"code":"SARJ412","family":"python","id":"iac-source-coupled-test","source":"packages/python/src/sarj_python_lint/rules/iac_source_coupled_test.py","test":"packages/python/tests/rules/test_iac_source_coupled_test.py"},{"code":"SARJ400","family":"python","id":"invalid-pydantic-field-default","source":"packages/python/src/sarj_python_lint/rules/invalid_pydantic_field_default.py","test":"packages/python/tests/rules/test_invalid_pydantic_field_default.py"},{"code":"SARJ040","family":"python","id":"mock-without-spec","source":"packages/python/src/sarj_python_lint/rules/mock_without_spec.py","test":"packages/python/tests/rules/test_mock_without_spec.py"},{"code":"SARJ008","family":"python","id":"named-record-at-boundaries","source":"packages/python/src/sarj_python_lint/rules/named_record_at_boundaries.py","test":"packages/python/tests/rules/test_named_record_at_boundaries.py"},{"code":"SARJ539","family":"python","id":"nan-hidden-by-builtin-min","source":"packages/python/src/sarj_python_lint/rules/nan_hidden_by_builtin_min.py","test":"packages/python/tests/rules/test_nan_hidden_by_builtin_min.py"},{"code":"SARJ408","family":"python","id":"negative-only-http-status-assertion","source":"packages/python/src/sarj_python_lint/rules/negative_only_http_status_assertion.py","test":"packages/python/tests/rules/test_negative_only_http_status_assertion.py"},{"code":"SARJ020","family":"python","id":"no-analytical-aggregation-in-postgres-store","source":"packages/python/src/sarj_python_lint/rules/no_analytical_aggregation_in_postgres_store.py","test":"packages/python/tests/rules/test_no_analytical_aggregation_in_postgres_store.py"},{"code":"SARJ447","family":"python","id":"no-any-mapping-types","source":"packages/python/src/sarj_python_lint/rules/no_any_mapping_types.py","test":"packages/python/tests/rules/test_no_any_mapping_types.py"},{"code":"SARJ507","family":"python","id":"no-async-function-cache","source":"packages/python/src/sarj_python_lint/rules/no_async_function_cache.py","test":"packages/python/tests/rules/test_no_async_function_cache.py"},{"code":"SARJ089","family":"python","id":"no-bare-test-phase-comments","source":"packages/python/src/sarj_python_lint/rules/phase_label_comment.py","test":"packages/python/tests/rules/test_phase_label_comment.py"},{"code":"SARJ482","family":"python","id":"no-before-validator-input-mutation","source":"packages/python/src/sarj_python_lint/rules/no_before_validator_input_mutation.py","test":"packages/python/tests/rules/test_no_before_validator_input_mutation.py"},{"code":"SARJ523","family":"python","id":"no-blanket-suppression","source":"packages/python/src/sarj_python_lint/rules/no_blanket_suppression.py","test":"packages/python/tests/rules/test_no_blanket_suppression.py"},{"code":"SARJ477","family":"python","id":"no-broad-keyword-capture","source":"packages/python/src/sarj_python_lint/rules/no_broad_keyword_capture.py","test":"packages/python/tests/rules/test_no_broad_keyword_capture.py"},{"code":"SARJ016","family":"python","id":"no-comment-cruft","source":"packages/python/src/sarj_python_lint/rules/no_comment_cruft.py","test":"packages/python/tests/rules/test_no_comment_cruft.py"},{"code":"SARJ493","family":"python","id":"no-conflicting-pydantic-alias-validation","source":"packages/python/src/sarj_python_lint/rules/no_conflicting_pydantic_alias_validation.py","test":"packages/python/tests/rules/test_no_conflicting_pydantic_alias_validation.py"},{"code":"SARJ426","family":"python","id":"no-conftest-test-module-import","source":"packages/python/src/sarj_python_lint/rules/no_conftest_test_module_import.py","test":"packages/python/tests/rules/test_no_conftest_test_module_import.py"},{"code":"SARJ513","family":"python","id":"no-contradictory-type-guard","source":"packages/python/src/sarj_python_lint/rules/no_contradictory_type_guard.py","test":"packages/python/tests/rules/test_no_contradictory_type_guard.py"},{"code":"SARJ084","family":"python","id":"no-copied-inherited-docstring","source":"packages/python/src/sarj_python_lint/rules/no_copied_inherited_docstring.py","test":"packages/python/tests/rules/test_no_copied_inherited_docstring.py"},{"code":"SARJ028","family":"python","id":"no-cors-wildcard-with-credentials","source":"packages/python/src/sarj_python_lint/rules/no_cors_wildcard_with_credentials.py","test":"packages/python/tests/rules/test_no_cors_wildcard_with_credentials.py"},{"code":"SARJ500","family":"python","id":"no-create-verb-in-post-path","source":"packages/python/src/sarj_python_lint/rules/no_create_verb_in_post_path.py","test":"packages/python/tests/rules/test_no_create_verb_in_post_path.py"},{"code":"SARJ542","family":"python","id":"no-custom-control-flow-exception","source":"packages/python/src/sarj_python_lint/rules/no_custom_control_flow_exception.py","test":"packages/python/tests/rules/test_no_custom_control_flow_exception.py"},{"code":"SARJ470","family":"python","id":"no-database-programmability","source":"packages/python/src/sarj_python_lint/rules/no_database_programmability.py","test":"packages/python/tests/rules/test_no_database_programmability.py"},{"code":"SARJ497","family":"python","id":"no-defaulted-environment-setting","source":"packages/python/src/sarj_python_lint/rules/no_defaulted_environment_setting.py","test":"packages/python/tests/rules/test_no_defaulted_environment_setting.py"},{"code":"SARJ442","family":"python","id":"no-delete-statement","source":"packages/python/src/sarj_python_lint/rules/no_delete_statement.py","test":"packages/python/tests/rules/test_no_delete_statement.py"},{"code":"SARJ548","family":"python","id":"no-discarded-tagged-outcome","source":"packages/python/src/sarj_python_lint/rules/no_discarded_tagged_outcome.py","test":"packages/python/tests/rules/test_no_discarded_tagged_outcome.py"},{"code":"SARJ519","family":"python","id":"no-discarded-validation-result","source":"packages/python/src/sarj_python_lint/rules/no_discarded_validation_result.py","test":"packages/python/tests/rules/test_no_discarded_validation_result.py"},{"code":"SARJ092","family":"python","id":"no-docstring-type-restatement","source":"packages/python/src/sarj_python_lint/rules/no_typed_doc_sections.py","test":"packages/python/tests/rules/test_no_typed_doc_sections.py"},{"code":"SARJ522","family":"python","id":"no-dual-shape-model-field-reader","source":"packages/python/src/sarj_python_lint/rules/no_dual_shape_model_field_reader.py","test":"packages/python/tests/rules/test_no_dual_shape_model_field_reader.py"},{"code":"SARJ438","family":"python","id":"no-dunder-all","source":"packages/python/src/sarj_python_lint/rules/no_dunder_all.py","test":"packages/python/tests/rules/test_no_dunder_all.py"},{"code":"SARJ098","family":"python","id":"no-duplicate-dunder-all-entry","source":"packages/python/src/sarj_python_lint/rules/no_duplicate_dunder_all_entry.py","test":"packages/python/tests/rules/test_no_duplicate_dunder_all_entry.py"},{"code":"SARJ496","family":"python","id":"no-duplicate-field-validator-body","source":"packages/python/src/sarj_python_lint/rules/no_duplicate_field_validator_body.py","test":"packages/python/tests/rules/test_no_duplicate_field_validator_body.py"},{"code":"SARJ505","family":"python","id":"no-exception-text-in-500-detail","source":"packages/python/src/sarj_python_lint/rules/no_exception_text_in_500_detail.py","test":"packages/python/tests/rules/test_no_exception_text_in_500_detail.py"},{"code":"SARJ444","family":"python","id":"no-excessive-cognitive-complexity","source":"packages/python/src/sarj_python_lint/rules/no_excessive_cognitive_complexity.py","test":"packages/python/tests/rules/test_no_excessive_cognitive_complexity.py"},{"code":"SARJ427","family":"python","id":"no-fastapi-on-event","source":"packages/python/src/sarj_python_lint/rules/no_fastapi_on_event.py","test":"packages/python/tests/rules/test_no_fastapi_on_event.py"},{"code":"SARJ054","family":"python","id":"no-file-level-escape-hatch-suppression","source":"packages/python/src/sarj_python_lint/rules/no_file_level_escape_hatch_suppression.py","test":"packages/python/tests/rules/test_no_file_level_escape_hatch_suppression.py"},{"code":"SARJ048","family":"python","id":"no-first-party-private-import","source":"packages/python/src/sarj_python_lint/rules/no_first_party_private_import.py","test":"packages/python/tests/rules/test_no_first_party_private_import.py"},{"code":"SARJ455","family":"python","id":"no-fixed-sleep-before-assert","source":"packages/python/src/sarj_python_lint/rules/no_fixed_sleep_before_assert.py","test":"packages/python/tests/rules/test_no_fixed_sleep_before_assert.py"},{"code":"SARJ485","family":"python","id":"no-fixed-sleep-in-loop","source":"packages/python/src/sarj_python_lint/rules/no_fixed_sleep_in_loop.py","test":"packages/python/tests/rules/test_no_fixed_sleep_in_loop.py"},{"code":"SARJ498","family":"python","id":"no-folded-bad-request-not-found","source":"packages/python/src/sarj_python_lint/rules/no_folded_bad_request_not_found.py","test":"packages/python/tests/rules/test_no_folded_bad_request_not_found.py"},{"code":"SARJ401","family":"python","id":"no-frozen-after-validator-field-write","source":"packages/python/src/sarj_python_lint/rules/no_frozen_after_validator_field_write.py","test":"packages/python/tests/rules/test_no_frozen_after_validator_field_write.py"},{"code":"SARJ022","family":"python","id":"no-generic-single-export-module","source":"packages/python/src/sarj_python_lint/rules/no_generic_single_export_module.py","test":"packages/python/tests/rules/test_no_generic_single_export_module.py"},{"code":"SARJ499","family":"python","id":"no-hasattr","source":"packages/python/src/sarj_python_lint/rules/no_hasattr.py","test":"packages/python/tests/rules/test_no_hasattr.py"},{"code":"SARJ095","family":"python","id":"no-hidden-constructor-fallback","source":"packages/python/src/sarj_python_lint/rules/no_hidden_constructor_fallback.py","test":"packages/python/tests/rules/test_no_hidden_constructor_fallback.py"},{"code":"SARJ491","family":"python","id":"no-impossible-pydantic-field-bounds","source":"packages/python/src/sarj_python_lint/rules/no_impossible_pydantic_field_bounds.py","test":"packages/python/tests/rules/test_no_impossible_pydantic_field_bounds.py"},{"code":"SARJ471","family":"python","id":"no-injected-module-loader","source":"packages/python/src/sarj_python_lint/rules/no_injected_module_loader.py","test":"packages/python/tests/rules/test_no_injected_module_loader.py"},{"code":"SARJ481","family":"python","id":"no-input-model-mutation","source":"packages/python/src/sarj_python_lint/rules/no_input_model_mutation.py","test":"packages/python/tests/rules/test_no_input_model_mutation.py"},{"code":"SARJ484","family":"python","id":"no-interpreter-source-arguments","source":"packages/python/src/sarj_python_lint/rules/no_interpreter_source_arguments.py","test":"packages/python/tests/rules/test_no_interpreter_source_arguments.py"},{"code":"SARJ448","family":"python","id":"no-invalid-argument-name-suppression","source":"packages/python/src/sarj_python_lint/rules/no_invalid_argument_name_suppression.py","test":"packages/python/tests/rules/test_no_invalid_argument_name_suppression.py"},{"code":"SARJ511","family":"python","id":"no-invalid-pydantic-bypass","source":"packages/python/src/sarj_python_lint/rules/no_invalid_pydantic_bypass.py","test":"packages/python/tests/rules/test_no_invalid_pydantic_bypass.py"},{"code":"SARJ515","family":"python","id":"no-invalid-pydantic-validator-return","source":"packages/python/src/sarj_python_lint/rules/no_invalid_pydantic_validator_return.py","test":"packages/python/tests/rules/test_no_invalid_pydantic_validator_return.py"},{"code":"SARJ508","family":"python","id":"no-loguru-exc-info","source":"packages/python/src/sarj_python_lint/rules/no_loguru_exc_info.py","test":"packages/python/tests/rules/test_no_loguru_exc_info.py"},{"code":"SARJ509","family":"python","id":"no-loguru-printf-format","source":"packages/python/src/sarj_python_lint/rules/no_loguru_printf_format.py","test":"packages/python/tests/rules/test_no_loguru_printf_format.py"},{"code":"SARJ479","family":"python","id":"no-mocked-pydantic-value-object","source":"packages/python/src/sarj_python_lint/rules/no_mocked_pydantic_value_object.py","test":"packages/python/tests/rules/test_no_mocked_pydantic_value_object.py"},{"code":"SARJ520","family":"python","id":"no-mutating-container-transform","source":"packages/python/src/sarj_python_lint/rules/no_mutating_container_transform.py","test":"packages/python/tests/rules/test_no_mutating_container_transform.py"},{"code":"SARJ425","family":"python","id":"no-nested-pydantic-field-validator","source":"packages/python/src/sarj_python_lint/rules/no_nested_pydantic_field_validator.py","test":"packages/python/tests/rules/test_no_nested_pydantic_field_validator.py"},{"code":"SARJ469","family":"python","id":"no-nullable-dependency-fallback","source":"packages/python/src/sarj_python_lint/rules/no_nullable_dependency_fallback.py","test":"packages/python/tests/rules/test_no_nullable_dependency_fallback.py"},{"code":"SARJ025","family":"python","id":"no-offset-pagination","source":"packages/python/src/sarj_python_lint/rules/no_offset_pagination.py","test":"packages/python/tests/rules/test_no_offset_pagination.py"},{"code":"SARJ512","family":"python","id":"no-partial-type-is","source":"packages/python/src/sarj_python_lint/rules/no_partial_type_is.py","test":"packages/python/tests/rules/test_no_partial_type_is.py"},{"code":"SARJ414","family":"python","id":"no-positional-psycopg-row-escape","source":"packages/python/src/sarj_python_lint/rules/no_positional_psycopg_row_escape.py","test":"packages/python/tests/rules/test_no_positional_psycopg_row_escape.py"},{"code":"SARJ026","family":"python","id":"no-positional-tuple-record","source":"packages/python/src/sarj_python_lint/rules/prefer_namedtuple_over_tuple_return.py","test":"packages/python/tests/rules/test_prefer_namedtuple_over_tuple_return.py"},{"code":"SARJ067","family":"python","id":"no-provably-dead-mock-configuration","source":"packages/python/src/sarj_python_lint/rules/unused_mock_setup.py","test":"packages/python/tests/rules/test_unused_mock_setup.py"},{"code":"SARJ415","family":"python","id":"no-psycopg-execution-outside-injected-owner","source":"packages/python/src/sarj_python_lint/rules/no_psycopg_execution_outside_injected_owner.py","test":"packages/python/tests/rules/test_no_psycopg_execution_outside_injected_owner.py"},{"code":"SARJ053","family":"python","id":"no-random-uuid-in-sql","source":"packages/python/src/sarj_python_lint/rules/no_random_uuid_in_sql.py","test":"packages/python/tests/rules/test_no_random_uuid_in_sql.py"},{"code":"SARJ429","family":"python","id":"no-raw-connection-in-tests","source":"packages/python/src/sarj_python_lint/rules/no_raw_connection_in_tests.py","test":"packages/python/tests/rules/test_no_raw_connection_in_tests.py"},{"code":"SARJ402","family":"python","id":"no-raw-source-text-test-oracle","source":"packages/python/src/sarj_python_lint/rules/no_raw_source_text_test_oracle.py","test":"packages/python/tests/rules/test_no_raw_source_text_test_oracle.py"},{"code":"SARJ544","family":"python","id":"no-recording-store","source":"packages/python/src/sarj_python_lint/rules/no_recording_store.py","test":"packages/python/tests/rules/test_no_recording_store.py"},{"code":"SARJ531","family":"python","id":"no-redundant-local-alias","source":"packages/python/src/sarj_python_lint/rules/no_redundant_local_alias.py","test":"packages/python/tests/rules/test_no_redundant_local_alias.py"},{"code":"SARJ440","family":"python","id":"no-redundant-module-alias-exports","source":"packages/python/src/sarj_python_lint/rules/no_redundant_module_alias_exports.py","test":"packages/python/tests/rules/test_no_redundant_module_alias_exports.py"},{"code":"SARJ543","family":"python","id":"no-redundant-sql-alias","source":"packages/python/src/sarj_python_lint/rules/no_redundant_sql_alias.py","test":"packages/python/tests/rules/test_no_redundant_sql_alias.py"},{"code":"SARJ024","family":"python","id":"no-repeated-structured-string-literal","source":"packages/python/src/sarj_python_lint/rules/no_repeated_string_literal.py","test":"packages/python/tests/rules/test_no_repeated_string_literal.py"},{"code":"SARJ066","family":"python","id":"no-repeated-test-body","source":"packages/python/src/sarj_python_lint/rules/no_repeated_test_body.py","test":"packages/python/tests/rules/test_no_repeated_test_body.py"},{"code":"SARJ410","family":"python","id":"no-repeated-unseeded-stdlib-random-in-test","source":"packages/python/src/sarj_python_lint/rules/uncontrolled_randomness_in_test.py","test":"packages/python/tests/rules/test_uncontrolled_randomness_in_test.py"},{"code":"SARJ423","family":"python","id":"no-restated-closed-domain-description","source":"packages/python/src/sarj_python_lint/rules/no_redundant_literal_description.py","test":"packages/python/tests/rules/test_no_redundant_literal_description.py"},{"code":"SARJ049","family":"python","id":"no-restated-comment","source":"packages/python/src/sarj_python_lint/rules/no_restated_comment.py","test":"packages/python/tests/rules/test_no_restated_comment.py"},{"code":"SARJ012","family":"python","id":"no-secret-in-log","source":"packages/python/src/sarj_python_lint/rules/no_secret_in_log.py","test":"packages/python/tests/rules/test_no_secret_in_log.py"},{"code":"SARJ021","family":"python","id":"no-select-star","source":"packages/python/src/sarj_python_lint/rules/no_select_star.py","test":"packages/python/tests/rules/test_no_select_star.py"},{"code":"SARJ441","family":"python","id":"no-service-behavior-in-settings","source":"packages/python/src/sarj_python_lint/rules/no_service_behavior_in_settings.py","test":"packages/python/tests/rules/test_no_service_behavior_in_settings.py"},{"code":"SARJ472","family":"python","id":"no-shallow-container-type-guard","source":"packages/python/src/sarj_python_lint/rules/no_shallow_container_type_guard.py","test":"packages/python/tests/rules/test_no_shallow_container_type_guard.py"},{"code":"SARJ514","family":"python","id":"no-shallow-record-type-guard","source":"packages/python/src/sarj_python_lint/rules/no_shallow_record_type_guard.py","test":"packages/python/tests/rules/test_no_shallow_record_type_guard.py"},{"code":"SARJ503","family":"python","id":"no-slash-collection-root-under-prefix","source":"packages/python/src/sarj_python_lint/rules/no_slash_collection_root_under_prefix.py","test":"packages/python/tests/rules/test_no_slash_collection_root_under_prefix.py"},{"code":"SARJ057","family":"python","id":"no-statically-truthy-assertion","source":"packages/python/src/sarj_python_lint/rules/no_tautological_expect.py","test":"packages/python/tests/rules/test_no_tautological_expect.py"},{"code":"SARJ002","family":"python","id":"no-string-concat-in-loop","source":"packages/python/src/sarj_python_lint/rules/no_string_concat_in_loop.py","test":"packages/python/tests/rules/test_no_string_concat_in_loop.py"},{"code":"SARJ458","family":"python","id":"no-swallowed-asyncio-cancellation","source":"packages/python/src/sarj_python_lint/rules/no_swallowed_asyncio_cancellation.py","test":"packages/python/tests/rules/test_no_swallowed_asyncio_cancellation.py"},{"code":"SARJ478","family":"python","id":"no-test-method-grafting","source":"packages/python/src/sarj_python_lint/rules/no_test_method_grafting.py","test":"packages/python/tests/rules/test_no_test_method_grafting.py"},{"code":"SARJ051","family":"python","id":"no-trailing-numeric-unit-assignment-comment","source":"packages/python/src/sarj_python_lint/rules/trailing_value_narration.py","test":"packages/python/tests/rules/test_trailing_value_narration.py"},{"code":"SARJ404","family":"python","id":"no-unique-violation-message-match","source":"packages/python/src/sarj_python_lint/rules/no_unique_violation_message_match.py","test":"packages/python/tests/rules/test_no_unique_violation_message_match.py"},{"code":"SARJ492","family":"python","id":"no-unknown-pydantic-validator-field","source":"packages/python/src/sarj_python_lint/rules/no_unknown_pydantic_validator_field.py","test":"packages/python/tests/rules/test_no_unknown_pydantic_validator_field.py"},{"code":"SARJ420","family":"python","id":"no-unnecessary-docstring","source":"packages/python/src/sarj_python_lint/rules/no_unnecessary_docstring.py","test":"packages/python/tests/rules/test_no_unnecessary_docstring.py"},{"code":"SARJ483","family":"python","id":"no-unused-copy-result","source":"packages/python/src/sarj_python_lint/rules/no_unused_copy_result.py","test":"packages/python/tests/rules/test_no_unused_copy_result.py"},{"code":"SARJ475","family":"python","id":"no-unused-underscored-keyword-parameter","source":"packages/python/src/sarj_python_lint/rules/no_unused_underscored_keyword_parameter.py","test":"packages/python/tests/rules/test_no_unused_underscored_keyword_parameter.py"},{"code":"SARJ452","family":"python","id":"no-unused-value-marker","source":"packages/python/src/sarj_python_lint/rules/no_unused_value_marker.py","test":"packages/python/tests/rules/test_no_unused_value_marker.py"},{"code":"SARJ419","family":"python","id":"no-vague-suppression-description","source":"packages/python/src/sarj_python_lint/rules/no_vague_suppression_description.py","test":"packages/python/tests/rules/test_no_vague_suppression_description.py"},{"code":"SARJ436","family":"python","id":"no-whole-request-response-payload-in-log","source":"packages/python/src/sarj_python_lint/rules/no_whole_request_response_payload_in_log.py","test":"packages/python/tests/rules/test_no_whole_request_response_payload_in_log.py"},{"code":"SARJ502","family":"python","id":"no-work-verb-get-route","source":"packages/python/src/sarj_python_lint/rules/no_work_verb_get_route.py","test":"packages/python/tests/rules/test_no_work_verb_get_route.py"},{"code":"SARJ042","family":"python","id":"opaque-parametrize-case-needs-id","source":"packages/python/src/sarj_python_lint/rules/opaque_parametrize_case_needs_id.py","test":"packages/python/tests/rules/test_opaque_parametrize_case_needs_id.py"},{"code":"SARJ062","family":"python","id":"over-mocked-test","source":"packages/python/src/sarj_python_lint/rules/over_mocked_test.py","test":"packages/python/tests/rules/test_over_mocked_test.py"},{"code":"SARJ545","family":"python","id":"prefer-application-model-joins","source":"packages/python/src/sarj_python_lint/rules/prefer_application_model_joins.py","test":"packages/python/tests/rules/test_prefer_application_model_joins.py"},{"code":"SARJ474","family":"python","id":"prefer-autospec-for-callable-mock","source":"packages/python/src/sarj_python_lint/rules/prefer_autospec_for_callable_mock.py","test":"packages/python/tests/rules/test_prefer_autospec_for_callable_mock.py"},{"code":"SARJ516","family":"python","id":"prefer-bulk-upsert","source":"packages/python/src/sarj_python_lint/rules/prefer_bulk_upsert.py","test":"packages/python/tests/rules/test_prefer_bulk_upsert.py"},{"code":"SARJ013","family":"python","id":"prefer-class-row","source":"packages/python/src/sarj_python_lint/rules/prefer_class_row.py","test":"packages/python/tests/rules/test_prefer_class_row.py"},{"code":"SARJ430","family":"python","id":"prefer-collection-comprehension","source":"packages/python/src/sarj_python_lint/rules/prefer_collection_comprehension.py","test":"packages/python/tests/rules/test_prefer_collection_comprehension.py"},{"code":"SARJ011","family":"python","id":"prefer-constant-time-secret-compare","source":"packages/python/src/sarj_python_lint/rules/prefer_constant_time_secret_compare.py","test":"packages/python/tests/rules/test_prefer_constant_time_secret_compare.py"},{"code":"SARJ494","family":"python","id":"prefer-declarative-batch-validation","source":"packages/python/src/sarj_python_lint/rules/prefer_declarative_batch_validation.py","test":"packages/python/tests/rules/test_prefer_declarative_batch_validation.py"},{"code":"SARJ529","family":"python","id":"prefer-direct-import-module","source":"packages/python/src/sarj_python_lint/rules/prefer_direct_import_module.py","test":"packages/python/tests/rules/test_prefer_direct_import_module.py"},{"code":"SARJ510","family":"python","id":"prefer-discriminated-model-union","source":"packages/python/src/sarj_python_lint/rules/prefer_discriminated_model_union.py","test":"packages/python/tests/rules/test_prefer_discriminated_model_union.py"},{"code":"SARJ068","family":"python","id":"prefer-fstring-over-concat","source":"packages/python/src/sarj_python_lint/rules/prefer_fstring_over_concat.py","test":"packages/python/tests/rules/test_prefer_fstring_over_concat.py"},{"code":"SARJ532","family":"python","id":"prefer-grouped-settings","source":"packages/python/src/sarj_python_lint/rules/prefer_grouped_settings.py","test":"packages/python/tests/rules/test_prefer_grouped_settings.py"},{"code":"SARJ096","family":"python","id":"prefer-immutable-module-constant","source":"packages/python/src/sarj_python_lint/rules/prefer_immutable_module_constant.py","test":"packages/python/tests/rules/test_prefer_immutable_module_constant.py"},{"code":"SARJ445","family":"python","id":"prefer-injected-dependency-over-monkeypatch","source":"packages/python/src/sarj_python_lint/rules/prefer_injected_dependency_over_monkeypatch.py","test":"packages/python/tests/rules/test_prefer_injected_dependency_over_monkeypatch.py"},{"code":"SARJ059","family":"python","id":"prefer-library-fake","source":"packages/python/src/sarj_python_lint/rules/prefer_library_fake.py","test":"packages/python/tests/rules/test_prefer_library_fake.py"},{"code":"SARJ032","family":"python","id":"prefer-match-assert-never","source":"packages/python/src/sarj_python_lint/rules/prefer_match_assert_never.py","test":"packages/python/tests/rules/test_prefer_match_assert_never.py"},{"code":"SARJ453","family":"python","id":"prefer-match-exception-dispatch","source":"packages/python/src/sarj_python_lint/rules/prefer_match_exception_dispatch.py","test":"packages/python/tests/rules/test_prefer_match_exception_dispatch.py"},{"code":"SARJ080","family":"python","id":"prefer-match-type-dispatch","source":"packages/python/src/sarj_python_lint/rules/prefer_match_type_dispatch.py","test":"packages/python/tests/rules/test_prefer_match_type_dispatch.py"},{"code":"SARJ439","family":"python","id":"prefer-match-value-dispatch","source":"packages/python/src/sarj_python_lint/rules/prefer_match_value_dispatch.py","test":"packages/python/tests/rules/test_prefer_match_value_dispatch.py"},{"code":"SARJ039","family":"python","id":"prefer-module-level-constant","source":"packages/python/src/sarj_python_lint/rules/prefer_module_level_constant.py","test":"packages/python/tests/rules/test_prefer_module_level_constant.py"},{"code":"SARJ446","family":"python","id":"prefer-monkeypatch-for-process-state-in-test","source":"packages/python/src/sarj_python_lint/rules/prefer_monkeypatch_for_process_state_in_test.py","test":"packages/python/tests/rules/test_prefer_monkeypatch_for_process_state_in_test.py"},{"code":"SARJ461","family":"python","id":"prefer-monotonic-for-elapsed-time","source":"packages/python/src/sarj_python_lint/rules/prefer_monotonic_for_elapsed_time.py","test":"packages/python/tests/rules/test_prefer_monotonic_for_elapsed_time.py"},{"code":"SARJ480","family":"python","id":"prefer-native-string-check","source":"packages/python/src/sarj_python_lint/rules/prefer_native_string_check.py","test":"packages/python/tests/rules/test_prefer_native_string_check.py"},{"code":"SARJ093","family":"python","id":"prefer-nominal-id-types","source":"packages/python/src/sarj_python_lint/rules/prefer_nominal_id_types.py","test":"packages/python/tests/rules/test_prefer_nominal_id_types.py"},{"code":"SARJ082","family":"python","id":"prefer-non-nullable-collection","source":"packages/python/src/sarj_python_lint/rules/prefer_non_nullable_collection.py","test":"packages/python/tests/rules/test_prefer_non_nullable_collection.py"},{"code":"SARJ541","family":"python","id":"prefer-optional-composite","source":"packages/python/src/sarj_python_lint/rules/prefer_optional_composite.py","test":"packages/python/tests/rules/test_prefer_optional_composite.py"},{"code":"SARJ070","family":"python","id":"prefer-or-pattern","source":"packages/python/src/sarj_python_lint/rules/prefer_or_pattern.py","test":"packages/python/tests/rules/test_prefer_or_pattern.py"},{"code":"SARJ528","family":"python","id":"prefer-precise-object-contract","source":"packages/python/src/sarj_python_lint/rules/prefer_precise_object_contract.py","test":"packages/python/tests/rules/test_prefer_precise_object_contract.py"},{"code":"SARJ518","family":"python","id":"prefer-psycopg-executemany","source":"packages/python/src/sarj_python_lint/rules/prefer_psycopg_executemany.py","test":"packages/python/tests/rules/test_prefer_psycopg_executemany.py"},{"code":"SARJ454","family":"python","id":"prefer-pydantic-json-value","source":"packages/python/src/sarj_python_lint/rules/prefer_pydantic_json_value.py","test":"packages/python/tests/rules/test_prefer_pydantic_json_value.py"},{"code":"SARJ527","family":"python","id":"prefer-pydantic-model-assertion","source":"packages/python/src/sarj_python_lint/rules/prefer_pydantic_model_assertion.py","test":"packages/python/tests/rules/test_prefer_pydantic_model_assertion.py"},{"code":"SARJ526","family":"python","id":"prefer-pytest-dependency-fixtures","source":"packages/python/src/sarj_python_lint/rules/prefer_pytest_dependency_fixtures.py","test":"packages/python/tests/rules/test_prefer_pytest_dependency_fixtures.py"},{"code":"SARJ476","family":"python","id":"prefer-pytest-fixture-injection","source":"packages/python/src/sarj_python_lint/rules/prefer_pytest_fixture_injection.py","test":"packages/python/tests/rules/test_prefer_pytest_fixture_injection.py"},{"code":"SARJ460","family":"python","id":"prefer-regex-fullmatch","source":"packages/python/src/sarj_python_lint/rules/prefer_regex_fullmatch.py","test":"packages/python/tests/rules/test_prefer_regex_fullmatch.py"},{"code":"SARJ468","family":"python","id":"prefer-required-constructor-parameters","source":"packages/python/src/sarj_python_lint/rules/prefer_required_constructor_parameters.py","test":"packages/python/tests/rules/test_prefer_required_constructor_parameters.py"},{"code":"SARJ534","family":"python","id":"prefer-runtime-validation","source":"packages/python/src/sarj_python_lint/rules/prefer_runtime_validation.py","test":"packages/python/tests/rules/test_prefer_runtime_validation.py"},{"code":"SARJ097","family":"python","id":"prefer-self-documenting-constant","source":"packages/python/src/sarj_python_lint/rules/prefer_self_documenting_constant.py","test":"packages/python/tests/rules/test_prefer_self_documenting_constant.py"},{"code":"SARJ078","family":"python","id":"prefer-self-type-annotation","source":"packages/python/src/sarj_python_lint/rules/prefer_self_type_annotation.py","test":"packages/python/tests/rules/test_prefer_self_type_annotation.py"},{"code":"SARJ431","family":"python","id":"prefer-set-isdisjoint","source":"packages/python/src/sarj_python_lint/rules/prefer_set_isdisjoint.py","test":"packages/python/tests/rules/test_prefer_set_isdisjoint.py"},{"code":"SARJ006","family":"python","id":"prefer-str-enum","source":"packages/python/src/sarj_python_lint/rules/prefer_str_enum.py","test":"packages/python/tests/rules/test_prefer_str_enum.py"},{"code":"SARJ015","family":"python","id":"prefer-struct-over-namedtuple","source":"packages/python/src/sarj_python_lint/rules/prefer_struct_over_namedtuple.py","test":"packages/python/tests/rules/test_prefer_struct_over_namedtuple.py"},{"code":"SARJ533","family":"python","id":"prefer-typed-cli","source":"packages/python/src/sarj_python_lint/rules/prefer_typed_cli.py","test":"packages/python/tests/rules/test_prefer_typed_cli.py"},{"code":"SARJ535","family":"python","id":"prefer-typed-mapping-get","source":"packages/python/src/sarj_python_lint/rules/prefer_typed_mapping_get.py","test":"packages/python/tests/rules/test_prefer_typed_mapping_get.py"},{"code":"SARJ530","family":"python","id":"prefer-typed-settings-field","source":"packages/python/src/sarj_python_lint/rules/prefer_typed_settings_field.py","test":"packages/python/tests/rules/test_prefer_typed_settings_field.py"},{"code":"SARJ432","family":"python","id":"prefer-walrus-awaited-none-guard","source":"packages/python/src/sarj_python_lint/rules/prefer_walrus_awaited_none_guard.py","test":"packages/python/tests/rules/test_prefer_walrus_awaited_none_guard.py"},{"code":"SARJ076","family":"python","id":"prefer-walrus-comprehension-filter","source":"packages/python/src/sarj_python_lint/rules/prefer_walrus_comprehension_filter.py","test":"packages/python/tests/rules/test_prefer_walrus_comprehension_filter.py"},{"code":"SARJ081","family":"python","id":"prefer-walrus-regex-match","source":"packages/python/src/sarj_python_lint/rules/prefer_walrus_regex_match.py","test":"packages/python/tests/rules/test_prefer_walrus_regex_match.py"},{"code":"SARJ077","family":"python","id":"prefer-walrus-stream-loop","source":"packages/python/src/sarj_python_lint/rules/prefer_walrus_stream_loop.py","test":"packages/python/tests/rules/test_prefer_walrus_stream_loop.py"},{"code":"SARJ409","family":"python","id":"production-derived-test-cases","source":"packages/python/src/sarj_python_lint/rules/production_derived_test_cases.py","test":"packages/python/tests/rules/test_production_derived_test_cases.py"},{"code":"SARJ044","family":"python","id":"pytest-fixture-returns-bare-tuple","source":"packages/python/src/sarj_python_lint/rules/pytest_fixture_returns_bare_tuple.py","test":"packages/python/tests/rules/test_pytest_fixture_returns_bare_tuple.py"},{"code":"SARJ525","family":"python","id":"pytest-fixture-returns-closed-resource","source":"packages/python/src/sarj_python_lint/rules/pytest_fixture_returns_closed_resource.py","test":"packages/python/tests/rules/test_pytest_fixture_returns_closed_resource.py"},{"code":"SARJ085","family":"python","id":"redundant-class-docstring","source":"packages/python/src/sarj_python_lint/rules/redundant_class_docstring.py","test":"packages/python/tests/rules/test_redundant_class_docstring.py"},{"code":"SARJ050","family":"python","id":"redundant-docstring","source":"packages/python/src/sarj_python_lint/rules/redundant_docstring.py","test":"packages/python/tests/rules/test_redundant_docstring.py"},{"code":"SARJ099","family":"python","id":"redundant-module-docstring","source":"packages/python/src/sarj_python_lint/rules/redundant_module_docstring.py","test":"packages/python/tests/rules/test_redundant_module_docstring.py"},{"code":"SARJ487","family":"python","id":"redundant-test-constructor-forwarder","source":"packages/python/src/sarj_python_lint/rules/redundant_test_constructor_forwarder.py","test":"packages/python/tests/rules/test_redundant_test_constructor_forwarder.py"},{"code":"SARJ045","family":"python","id":"repeated-kwarg-heavy-call-in-test","source":"packages/python/src/sarj_python_lint/rules/repeated_kwarg_heavy_call_in_test.py","test":"packages/python/tests/rules/test_repeated_kwarg_heavy_call_in_test.py"},{"code":"SARJ413","family":"python","id":"repeated-static-call-cases","source":"packages/python/src/sarj_python_lint/rules/repeated_static_call_cases.py","test":"packages/python/tests/rules/test_repeated_static_call_cases.py"},{"code":"SARJ457","family":"python","id":"repeated-test-composition","source":"packages/python/src/sarj_python_lint/rules/repeated_test_composition.py","test":"packages/python/tests/rules/test_repeated_test_composition.py"},{"code":"SARJ490","family":"python","id":"repeated-unimplemented-test-contract","source":"packages/python/src/sarj_python_lint/rules/repeated_unimplemented_test_contract.py","test":"packages/python/tests/rules/test_repeated_unimplemented_test_contract.py"},{"code":"SARJ018","family":"python","id":"replay-contract-insert-requires-duplicate-policy","source":"packages/python/src/sarj_python_lint/rules/store_insert_requires_on_conflict.py","test":"packages/python/tests/rules/test_store_insert_requires_on_conflict.py"},{"code":"SARJ504","family":"python","id":"require-exp-on-jwt-decode","source":"packages/python/src/sarj_python_lint/rules/require_exp_on_jwt_decode.py","test":"packages/python/tests/rules/test_require_exp_on_jwt_decode.py"},{"code":"SARJ467","family":"python","id":"require-explicit-contract-implementation","source":"packages/python/src/sarj_python_lint/rules/require_explicit_contract_implementation.py","test":"packages/python/tests/rules/test_require_explicit_contract_implementation.py"},{"code":"SARJ462","family":"python","id":"require-explicit-psycopg-transaction","source":"packages/python/src/sarj_python_lint/rules/require_explicit_psycopg_transaction.py","test":"packages/python/tests/rules/test_require_explicit_psycopg_transaction.py"},{"code":"SARJ465","family":"python","id":"require-explicit-service-contract","source":"packages/python/src/sarj_python_lint/rules/require_explicit_service_contract.py","test":"packages/python/tests/rules/test_require_explicit_service_contract.py"},{"code":"SARJ486","family":"python","id":"require-injectable-retry-sleep","source":"packages/python/src/sarj_python_lint/rules/require_injectable_retry_sleep.py","test":"packages/python/tests/rules/test_require_injectable_retry_sleep.py"},{"code":"SARJ034","family":"python","id":"require-keyword-only-swap-prone-params","source":"packages/python/src/sarj_python_lint/rules/require_keyword_only_swap_prone_params.py","test":"packages/python/tests/rules/test_require_keyword_only_swap_prone_params.py"},{"code":"SARJ424","family":"python","id":"require-nodecode-for-splitting-settings-field","source":"packages/python/src/sarj_python_lint/rules/require_nodecode_for_splitting_settings_field.py","test":"packages/python/tests/rules/test_require_nodecode_for_splitting_settings_field.py"},{"code":"SARJ071","family":"python","id":"require-port-for-service","source":"packages/python/src/sarj_python_lint/rules/require_port_for_service.py","test":"packages/python/tests/rules/test_require_port_for_service.py"},{"code":"SARJ473","family":"python","id":"require-precise-factory-signature","source":"packages/python/src/sarj_python_lint/rules/require_precise_factory_signature.py","test":"packages/python/tests/rules/test_require_precise_factory_signature.py"},{"code":"SARJ466","family":"python","id":"require-public-dependency-contract","source":"packages/python/src/sarj_python_lint/rules/require_public_dependency_contract.py","test":"packages/python/tests/rules/test_require_public_dependency_contract.py"},{"code":"SARJ411","family":"python","id":"require-pydantic-for-external-json","source":"packages/python/src/sarj_python_lint/rules/require_pydantic_for_external_json.py","test":"packages/python/tests/rules/test_require_pydantic_for_external_json.py"},{"code":"SARJ521","family":"python","id":"require-pydantic-for-mapping-shape","source":"packages/python/src/sarj_python_lint/rules/require_pydantic_for_mapping_shape.py","test":"packages/python/tests/rules/test_require_pydantic_for_mapping_shape.py"},{"code":"SARJ450","family":"python","id":"require-pydantic-for-structured-payload","source":"packages/python/src/sarj_python_lint/rules/require_pydantic_for_structured_payload.py","test":"packages/python/tests/rules/test_require_pydantic_for_structured_payload.py"},{"code":"SARJ418","family":"python","id":"require-pydantic-ordinal-lower-bound","source":"packages/python/src/sarj_python_lint/rules/require_pydantic_ordinal_lower_bound.py","test":"packages/python/tests/rules/test_require_pydantic_ordinal_lower_bound.py"},{"code":"SARJ088","family":"python","id":"restated-test-docstring","source":"packages/python/src/sarj_python_lint/rules/restated_test_docstring.py","test":"packages/python/tests/rules/test_restated_test_docstring.py"},{"code":"SARJ459","family":"python","id":"shared-mutable-pydantic-factory","source":"packages/python/src/sarj_python_lint/rules/shared_mutable_pydantic_factory.py","test":"packages/python/tests/rules/test_shared_mutable_pydantic_factory.py"},{"code":"SARJ023","family":"python","id":"stepdown","source":"packages/python/src/sarj_python_lint/rules/stepdown.py","test":"packages/python/tests/rules/test_stepdown.py"},{"code":"SARJ517","family":"python","id":"store-field-update-reuses-upsert","source":"packages/python/src/sarj_python_lint/rules/store_field_update_reuses_upsert.py","test":"packages/python/tests/rules/test_store_field_update_reuses_upsert.py"},{"code":"SARJ421","family":"python","id":"store-get-delegates-to-bulk-read","source":"packages/python/src/sarj_python_lint/rules/store_get_delegates_to_bulk_read.py","test":"packages/python/tests/rules/test_store_get_delegates_to_bulk_read.py"},{"code":"SARJ547","family":"python","id":"store-insert-requires-explicit-conflict-policy","source":"packages/python/src/sarj_python_lint/rules/store_insert_requires_explicit_conflict_policy.py","test":"packages/python/tests/rules/test_store_insert_requires_explicit_conflict_policy.py"},{"code":"SARJ546","family":"python","id":"store-mutation-command-fanout","source":"packages/python/src/sarj_python_lint/rules/store_mutation_command_fanout.py","test":"packages/python/tests/rules/test_store_mutation_command_fanout.py"},{"code":"SARJ464","family":"python","id":"subprocess-kill-without-reap","source":"packages/python/src/sarj_python_lint/rules/subprocess_kill_without_reap.py","test":"packages/python/tests/rules/test_subprocess_kill_without_reap.py"},{"code":"SARJ495","family":"python","id":"test-without-explicit-oracle","source":"packages/python/src/sarj_python_lint/rules/test_without_explicit_oracle.py","test":"packages/python/tests/rules/test_test_without_explicit_oracle.py"},{"code":"SARJ407","family":"python","id":"timestamp-order-requires-tiebreaker","source":"packages/python/src/sarj_python_lint/rules/timestamp_order_requires_tiebreaker.py","test":"packages/python/tests/rules/test_timestamp_order_requires_tiebreaker.py"},{"code":"SARJ435","family":"python","id":"typed-error-reasons","source":"packages/python/src/sarj_python_lint/rules/typed_error_reasons.py","test":"packages/python/tests/rules/test_typed_error_reasons.py"},{"code":"SARJ443","family":"python","id":"unused-test-factory-option","source":"packages/python/src/sarj_python_lint/rules/unused_test_factory_option.py","test":"packages/python/tests/rules/test_unused_test_factory_option.py"},{"code":"SARJ123","family":"sql","id":"combine-alter-table","source":"packages/sql/src/sarj_sql_lint/rules/combine_alter_table.py","test":"packages/sql/tests/rules/test_combine_alter_table.py"},{"code":"SARJ101","family":"sql","id":"enforce-timestamptz","source":"packages/sql/src/sarj_sql_lint/rules/enforce_timestamptz.py","test":"packages/sql/tests/rules/test_enforce_timestamptz.py"},{"code":"SARJ116","family":"sql","id":"excess-migration-index-requires-justification","source":"packages/sql/src/sarj_sql_lint/rules/index_budget.py","test":"packages/sql/tests/rules/test_index_budget.py"},{"code":"SARJ111","family":"sql","id":"existing-table-check-or-foreign-key-requires-not-valid","source":"packages/sql/src/sarj_sql_lint/rules/add_constraint_requires_not_valid.py","test":"packages/sql/tests/rules/test_add_constraint_requires_not_valid.py"},{"code":"SARJ102","family":"sql","id":"idempotent-ddl","source":"packages/sql/src/sarj_sql_lint/rules/idempotent_ddl.py","test":"packages/sql/tests/rules/test_idempotent_ddl.py"},{"code":"SARJ108","family":"sql","id":"index-concurrently","source":"packages/sql/src/sarj_sql_lint/rules/index_concurrently.py","test":"packages/sql/tests/rules/test_index_concurrently.py"},{"code":"SARJ105","family":"sql","id":"insert-requires-replay-policy","source":"packages/sql/src/sarj_sql_lint/rules/insert_requires_on_conflict.py","test":"packages/sql/tests/rules/test_insert_requires_on_conflict.py"},{"code":"SARJ125","family":"sql","id":"invalid-concurrent-ddl","source":"packages/sql/src/sarj_sql_lint/rules/invalid_concurrent_ddl.py","test":"packages/sql/tests/rules/test_invalid_concurrent_ddl.py"},{"code":"SARJ126","family":"sql","id":"invalid-postgres-ddl","source":"packages/sql/src/sarj_sql_lint/rules/invalid_postgres_ddl.py","test":"packages/sql/tests/rules/test_invalid_postgres_ddl.py"},{"code":"SARJ119","family":"sql","id":"mixed-migration-phases","source":"packages/sql/src/sarj_sql_lint/rules/mixed_migration_phases.py","test":"packages/sql/tests/rules/test_mixed_migration_phases.py"},{"code":"SARJ121","family":"sql","id":"new-table-inline-constraints","source":"packages/sql/src/sarj_sql_lint/rules/new_table_inline_constraints.py","test":"packages/sql/tests/rules/test_new_table_inline_constraints.py"},{"code":"SARJ122","family":"sql","id":"no-analytical-queries-in-transactional-db","source":"packages/sql/src/sarj_sql_lint/rules/no_analytical_queries_in_transactional_db.py","test":"packages/sql/tests/rules/test_no_analytical_queries_in_transactional_db.py"},{"code":"SARJ118","family":"sql","id":"no-application-schema-check","source":"packages/sql/src/sarj_sql_lint/rules/no_application_schema_check.py","test":"packages/sql/tests/rules/test_no_application_schema_check.py"},{"code":"SARJ120","family":"sql","id":"no-database-functions","source":"packages/sql/src/sarj_sql_lint/rules/no_database_functions.py","test":"packages/sql/tests/rules/test_no_database_functions.py"},{"code":"SARJ114","family":"sql","id":"no-database-triggers","source":"packages/sql/src/sarj_sql_lint/rules/no_create_trigger.py","test":"packages/sql/tests/rules/test_no_create_trigger.py"},{"code":"SARJ117","family":"sql","id":"no-duplicate-index","source":"packages/sql/src/sarj_sql_lint/rules/no_duplicate_index.py","test":"packages/sql/tests/rules/test_no_duplicate_index.py"},{"code":"SARJ115","family":"sql","id":"no-long-migration-narration","source":"packages/sql/src/sarj_sql_lint/rules/excessive_commentary.py","test":"packages/sql/tests/rules/test_excessive_commentary.py"},{"code":"SARJ113","family":"sql","id":"no-migration-comment-cruft","source":"packages/sql/src/sarj_sql_lint/rules/no_comment_cruft.py","test":"packages/sql/tests/rules/test_no_comment_cruft.py"},{"code":"SARJ124","family":"sql","id":"no-null-comparison","source":"packages/sql/src/sarj_sql_lint/rules/no_null_comparison.py","test":"packages/sql/tests/rules/test_no_null_comparison.py"},{"code":"SARJ107","family":"sql","id":"no-offset-pagination","source":"packages/sql/src/sarj_sql_lint/rules/no_offset_pagination.py","test":"packages/sql/tests/rules/test_no_offset_pagination.py"},{"code":"SARJ103","family":"sql","id":"no-pg-enum","source":"packages/sql/src/sarj_sql_lint/rules/no_pg_enum.py","test":"packages/sql/tests/rules/test_no_pg_enum.py"},{"code":"SARJ106","family":"sql","id":"prefer-jsonb","source":"packages/sql/src/sarj_sql_lint/rules/prefer_jsonb.py","test":"packages/sql/tests/rules/test_prefer_jsonb.py"},{"code":"SARJ104","family":"sql","id":"prefer-text-over-varchar","source":"packages/sql/src/sarj_sql_lint/rules/prefer_text_over_varchar.py","test":"packages/sql/tests/rules/test_prefer_text_over_varchar.py"},{"code":"SARJ109","family":"sql","id":"prefer-uuidv7-default","source":"packages/sql/src/sarj_sql_lint/rules/prefer_uuidv7_default.py","test":"packages/sql/tests/rules/test_prefer_uuidv7_default.py"},{"code":"SARJ112","family":"sql","id":"require-fk-index","source":"packages/sql/src/sarj_sql_lint/rules/require_fk_index.py","test":"packages/sql/tests/rules/test_require_fk_index.py"},{"code":"SARJ110","family":"sql","id":"require-lock-timeout","source":"packages/sql/src/sarj_sql_lint/rules/require_lock_timeout.py","test":"packages/sql/tests/rules/test_require_lock_timeout.py"},{"code":"SARJ315","family":"text","id":"cloudbuild-contract","source":"packages/standards/src/sarj_standards/libs/linting/text_rules/cloudbuild_contract.py","test":"packages/standards/tests/text_rules/test_cloudbuild_contract.py"},{"code":"SARJ301","family":"text","id":"commented-out-config","source":"packages/standards/src/sarj_standards/libs/linting/textlint.py","test":"packages/standards/tests/test_textlint.py"},{"code":"SARJ300","family":"text","id":"config-comment-wall","source":"packages/standards/src/sarj_standards/libs/linting/textlint.py","test":"packages/standards/tests/test_textlint.py"},{"code":"SARJ309","family":"text","id":"declarative-deployment-boundary","source":"packages/standards/src/sarj_standards/libs/linting/textlint.py","test":"packages/standards/tests/test_textlint.py"},{"code":"SARJ302","family":"text","id":"ephemeral-execution-artifact","source":"packages/standards/src/sarj_standards/libs/linting/textlint.py","test":"packages/standards/tests/test_textlint.py"},{"code":"SARJ306","family":"text","id":"exact-config-comment-restatement","source":"packages/standards/src/sarj_standards/libs/linting/textlint.py","test":"packages/standards/tests/test_textlint.py"},{"code":"SARJ305","family":"text","id":"hidden-markdown-heading","source":"packages/standards/src/sarj_standards/libs/linting/textlint.py","test":"packages/standards/tests/test_textlint.py"},{"code":"SARJ304","family":"text","id":"iac-source-coupled-test","source":"packages/standards/src/sarj_standards/libs/linting/textlint.py","test":"packages/standards/tests/test_textlint.py"},{"code":"SARJ311","family":"text","id":"large-shell-program","source":"packages/standards/src/sarj_standards/libs/linting/textlint.py","test":"packages/standards/tests/test_textlint.py"},{"code":"SARJ307","family":"text","id":"no-unsafe-command-argument-interpolation","source":"packages/standards/src/sarj_standards/libs/linting/textlint.py","test":"packages/standards/tests/test_textlint.py"},{"code":"SARJ308","family":"text","id":"no-wildcard-secret-read-permission","source":"packages/standards/src/sarj_standards/libs/linting/textlint.py","test":"packages/standards/tests/test_textlint.py"},{"code":"SARJ316","family":"text","id":"slack-event-text-in-mrkdwn","source":"packages/standards/src/sarj_standards/libs/linting/text_rules/slack_event_text_in_mrkdwn.py","test":"packages/standards/tests/text_rules/test_slack_event_text_in_mrkdwn.py"},{"code":"SARJ310","family":"text","id":"workflow-embedded-program","source":"packages/standards/src/sarj_standards/libs/linting/textlint.py","test":"packages/standards/tests/test_textlint.py"},{"code":"@sarj/duplicate-test-body","family":"typescript","id":"duplicate-test-body","source":"packages/typescript/src/rules/duplicate-test-body.ts","test":"packages/typescript/tests/rules/duplicate-test-body.test.ts"},{"code":"@sarj/enforce-file-structure","family":"typescript","id":"enforce-file-structure","source":"packages/typescript/src/rules/enforce-file-structure.ts","test":"packages/typescript/tests/rules/enforce-file-structure.test.ts"},{"code":"@sarj/excessive-commentary","family":"typescript","id":"excessive-commentary","source":"packages/typescript/src/rules/excessive-commentary.ts","test":"packages/typescript/tests/rules/excessive-commentary.test.ts"},{"code":"@sarj/iac-source-coupled-test","family":"typescript","id":"iac-source-coupled-test","source":"packages/typescript/src/rules/iac-source-coupled-test.ts","test":"packages/typescript/tests/rules/iac-source-coupled-test.test.ts"},{"code":"@sarj/interface-contract-members-private","family":"typescript","id":"interface-contract-members-private","source":"packages/typescript/src/rules/interface-contract-members-private.ts","test":"packages/typescript/tests/rules/interface-contract-members-private.test.ts"},{"code":"@sarj/named-child-schema-type","family":"typescript","id":"named-child-schema-type","source":"packages/typescript/src/rules/named-child-schema-type.ts","test":"packages/typescript/tests/rules/named-child-schema-type.test.ts"},{"code":"@sarj/no-bare-return-from-test-catch","family":"typescript","id":"no-bare-return-from-test-catch","source":"packages/typescript/src/rules/no-bare-return-from-test-catch.ts","test":"packages/typescript/tests/rules/no-bare-return-from-test-catch.test.ts"},{"code":"@sarj/no-bespoke-api-case-conversion","family":"typescript","id":"no-bespoke-api-case-conversion","source":"packages/typescript/src/rules/no-bespoke-api-case-conversion.ts","test":"packages/typescript/tests/rules/no-bespoke-api-case-conversion.test.ts"},{"code":"@sarj/no-boolean-selector-parameter","family":"typescript","id":"no-boolean-selector-parameter","source":"packages/typescript/src/rules/no-boolean-selector-parameter.ts","test":"packages/typescript/tests/rules/no-boolean-selector-parameter.test.ts"},{"code":"@sarj/no-broad-return-type","family":"typescript","id":"no-broad-return-type","source":"packages/typescript/src/rules/no-broad-return-type.ts","test":"packages/typescript/tests/rules/no-broad-return-type.test.ts"},{"code":"@sarj/no-client-side-data-fetching","family":"typescript","id":"no-client-side-data-fetching","source":"packages/typescript/src/rules/no-client-side-data-fetching.ts","test":"packages/typescript/tests/rules/no-client-side-data-fetching.test.ts"},{"code":"@sarj/no-comment-cruft","family":"typescript","id":"no-comment-cruft","source":"packages/typescript/src/rules/no-comment-cruft.ts","test":"packages/typescript/tests/rules/no-comment-cruft.test.ts"},{"code":"@sarj/no-conditional-empty-object-spread","family":"typescript","id":"no-conditional-empty-object-spread","source":"packages/typescript/src/rules/no-conditional-empty-object-spread.ts","test":"packages/typescript/tests/rules/no-conditional-empty-object-spread.test.ts"},{"code":"@sarj/no-contradictory-overload-return","family":"typescript","id":"no-contradictory-overload-return","source":"packages/typescript/src/rules/no-contradictory-overload-return.ts","test":"packages/typescript/tests/rules/no-contradictory-overload-return.test.ts"},{"code":"@sarj/no-contradictory-type-predicate","family":"typescript","id":"no-contradictory-type-predicate","source":"packages/typescript/src/rules/no-contradictory-type-predicate.ts","test":"packages/typescript/tests/rules/no-contradictory-type-predicate.test.ts"},{"code":"@sarj/no-cors-wildcard-with-credentials","family":"typescript","id":"no-cors-wildcard-with-credentials","source":"packages/typescript/src/rules/no-cors-wildcard-with-credentials.ts","test":"packages/typescript/tests/rules/no-cors-wildcard-with-credentials.test.ts"},{"code":"@sarj/no-credential-in-browser-storage","family":"typescript","id":"no-credential-in-browser-storage","source":"packages/typescript/src/rules/no-credential-in-browser-storage.ts","test":"packages/typescript/tests/rules/no-credential-in-browser-storage.test.ts"},{"code":"@sarj/no-dangerously-allow-svg","family":"typescript","id":"no-dangerously-allow-svg","source":"packages/typescript/src/rules/no-dangerously-allow-svg.ts","test":"packages/typescript/tests/rules/no-dangerously-allow-svg.test.ts"},{"code":"@sarj/no-declaration-comment-wall","family":"typescript","id":"no-declaration-comment-wall","source":"packages/typescript/src/rules/no-declaration-comment-wall.ts","test":"packages/typescript/tests/rules/no-declaration-comment-wall.test.ts"},{"code":"@sarj/no-detached-global-fetch","family":"typescript","id":"no-detached-global-fetch","source":"packages/typescript/src/rules/no-detached-global-fetch.ts","test":"packages/typescript/tests/rules/no-detached-global-fetch.test.ts"},{"code":"@sarj/no-duplicate-lifecycle-refresh-listeners","family":"typescript","id":"no-duplicate-lifecycle-refresh-listeners","source":"packages/typescript/src/rules/no-duplicate-lifecycle-refresh-listeners.ts","test":"packages/typescript/tests/rules/no-duplicate-lifecycle-refresh-listeners.test.ts"},{"code":"@sarj/no-duplicate-test-case","family":"typescript","id":"no-duplicate-test-case","source":"packages/typescript/src/rules/no-duplicate-test-case.ts","test":"packages/typescript/tests/rules/no-duplicate-test-case.test.ts"},{"code":"@sarj/no-dynamic-sql","family":"typescript","id":"no-dynamic-sql","source":"packages/typescript/src/rules/no-dynamic-sql.ts","test":"packages/typescript/tests/rules/no-dynamic-sql.test.ts"},{"code":"@sarj/no-enum","family":"typescript","id":"no-enum","source":"packages/typescript/src/rules/no-enum.ts","test":"packages/typescript/tests/rules/no-enum.test.ts"},{"code":"@sarj/no-exception-text-in-5xx-response","family":"typescript","id":"no-exception-text-in-5xx-response","source":"packages/typescript/src/rules/no-exception-text-in-5xx-response.ts","test":"packages/typescript/tests/rules/no-exception-text-in-5xx-response.test.ts"},{"code":"@sarj/no-excess-jsx-props","family":"typescript","id":"no-excess-jsx-props","source":"packages/typescript/src/rules/no-excess-jsx-props.ts","test":"packages/typescript/tests/rules/no-excess-jsx-props.test.ts"},{"code":"@sarj/no-excessive-cognitive-complexity","family":"typescript","id":"no-excessive-cognitive-complexity","source":"packages/typescript/src/rules/no-excessive-cognitive-complexity.ts","test":"packages/typescript/tests/rules/no-excessive-cognitive-complexity.test.ts"},{"code":"@sarj/no-fat-try-blocks","family":"typescript","id":"no-fat-try-blocks","source":"packages/typescript/src/rules/no-fat-try-blocks.ts","test":"packages/typescript/tests/rules/no-fat-try-blocks.test.ts"},{"code":"@sarj/no-first-party-module-mock","family":"typescript","id":"no-first-party-module-mock","source":"packages/typescript/src/rules/no-first-party-module-mock.ts","test":"packages/typescript/tests/rules/no-first-party-module-mock.test.ts"},{"code":"@sarj/no-generic-single-export-module","family":"typescript","id":"no-generic-single-export-module","source":"packages/typescript/src/rules/no-generic-single-export-module.ts","test":"packages/typescript/tests/rules/no-generic-single-export-module.test.ts"},{"code":"@sarj/no-hand-rolled-sleep","family":"typescript","id":"no-hand-rolled-sleep","source":"packages/typescript/src/rules/no-hand-rolled-sleep.ts","test":"packages/typescript/tests/rules/no-hand-rolled-sleep.test.ts"},{"code":"@sarj/no-hand-rolled-spinner","family":"typescript","id":"no-hand-rolled-spinner","source":"packages/typescript/src/rules/no-hand-rolled-spinner.ts","test":"packages/typescript/tests/rules/no-hand-rolled-spinner.test.ts"},{"code":"@sarj/no-impossible-zod-literal-bounds","family":"typescript","id":"no-impossible-zod-literal-bounds","source":"packages/typescript/src/rules/no-impossible-zod-literal-bounds.ts","test":"packages/typescript/tests/rules/no-impossible-zod-literal-bounds.test.ts"},{"code":"@sarj/no-in-operator-on-built-in-collections","family":"typescript","id":"no-in-operator-on-built-in-collections","source":"packages/typescript/src/rules/no-in-operator-on-built-in-collections.ts","test":"packages/typescript/tests/rules/no-in-operator-on-built-in-collections.test.ts"},{"code":"@sarj/no-insecure-random-id","family":"typescript","id":"no-insecure-random-id","source":"packages/typescript/src/rules/no-insecure-random-id.ts","test":"packages/typescript/tests/rules/no-insecure-random-id.test.ts"},{"code":"@sarj/no-invalid-typed-mutation","family":"typescript","id":"no-invalid-typed-mutation","source":"packages/typescript/src/rules/no-invalid-typed-mutation.ts","test":"packages/typescript/tests/rules/no-invalid-typed-mutation.test.ts"},{"code":"@sarj/no-invalid-zod-custom-parse","family":"typescript","id":"no-invalid-zod-custom-parse","source":"packages/typescript/src/rules/no-invalid-zod-custom-parse.ts","test":"packages/typescript/tests/rules/no-invalid-zod-custom-parse.test.ts"},{"code":"@sarj/no-json-stringify-error","family":"typescript","id":"no-json-stringify-error","source":"packages/typescript/src/rules/no-json-stringify-error.ts","test":"packages/typescript/tests/rules/no-json-stringify-error.test.ts"},{"code":"@sarj/no-json-stringify-object-equality","family":"typescript","id":"no-json-stringify-object-equality","source":"packages/typescript/src/rules/no-json-stringify-object-equality.ts","test":"packages/typescript/tests/rules/no-json-stringify-object-equality.test.ts"},{"code":"@sarj/no-known-value-widening","family":"typescript","id":"no-known-value-widening","source":"packages/typescript/src/rules/no-known-value-widening.ts","test":"packages/typescript/tests/rules/no-known-value-widening.test.ts"},{"code":"@sarj/no-log-only-catch","family":"typescript","id":"no-log-only-catch","source":"packages/typescript/src/rules/no-log-only-catch.ts","test":"packages/typescript/tests/rules/no-log-only-catch.test.ts"},{"code":"@sarj/no-long-comment","family":"typescript","id":"no-long-comment","source":"packages/typescript/src/rules/no-long-comment.ts","test":"packages/typescript/tests/rules/no-long-comment.test.ts"},{"code":"@sarj/no-numeric-search-param-coercion","family":"typescript","id":"no-numeric-search-param-coercion","source":"packages/typescript/src/rules/no-numeric-search-param-coercion.ts","test":"packages/typescript/tests/rules/no-numeric-search-param-coercion.test.ts"},{"code":"@sarj/no-offset-pagination","family":"typescript","id":"no-offset-pagination","source":"packages/typescript/src/rules/no-offset-pagination.ts","test":"packages/typescript/tests/rules/no-offset-pagination.test.ts"},{"code":"@sarj/no-partial-type-predicate","family":"typescript","id":"no-partial-type-predicate","source":"packages/typescript/src/rules/no-partial-type-predicate.ts","test":"packages/typescript/tests/rules/no-partial-type-predicate.test.ts"},{"code":"@sarj/no-positional-tuple-return","family":"typescript","id":"no-positional-tuple-return","source":"packages/typescript/src/rules/no-positional-tuple-return.ts","test":"packages/typescript/tests/rules/no-positional-tuple-return.test.ts"},{"code":"@sarj/no-production-browser-source-maps","family":"typescript","id":"no-production-browser-source-maps","source":"packages/typescript/src/rules/no-production-browser-source-maps.ts","test":"packages/typescript/tests/rules/no-production-browser-source-maps.test.ts"},{"code":"@sarj/no-raw-env","family":"typescript","id":"no-raw-env","source":"packages/typescript/src/rules/no-raw-env.ts","test":"packages/typescript/tests/rules/no-raw-env.test.ts"},{"code":"@sarj/no-raw-fetch-outside-clients","family":"typescript","id":"no-raw-fetch-outside-clients","source":"packages/typescript/src/rules/no-raw-fetch-outside-clients.ts","test":"packages/typescript/tests/rules/no-raw-fetch-outside-clients.test.ts"},{"code":"@sarj/no-reduce-accumulator-copy","family":"typescript","id":"no-reduce-accumulator-copy","source":"packages/typescript/src/rules/no-reduce-accumulator-copy.ts","test":"packages/typescript/tests/rules/no-reduce-accumulator-copy.test.ts"},{"code":"@sarj/no-redundant-consumer-union","family":"typescript","id":"no-redundant-consumer-union","source":"packages/typescript/src/rules/no-redundant-consumer-union.ts","test":"packages/typescript/tests/rules/no-redundant-consumer-union.test.ts"},{"code":"@sarj/no-redundant-optional-array-default","family":"typescript","id":"no-redundant-optional-array-default","source":"packages/typescript/src/rules/no-redundant-optional-array-default.ts","test":"packages/typescript/tests/rules/no-redundant-optional-array-default.test.ts"},{"code":"@sarj/no-repeated-string-literal","family":"typescript","id":"no-repeated-string-literal","source":"packages/typescript/src/rules/no-repeated-string-literal.ts","test":"packages/typescript/tests/rules/no-repeated-string-literal.test.ts"},{"code":"@sarj/no-restated-comment","family":"typescript","id":"no-restated-comment","source":"packages/typescript/src/rules/no-restated-comment.ts","test":"packages/typescript/tests/rules/no-restated-comment.test.ts"},{"code":"@sarj/no-restated-jsdoc","family":"typescript","id":"no-restated-jsdoc","source":"packages/typescript/src/rules/no-restated-jsdoc.ts","test":"packages/typescript/tests/rules/no-restated-jsdoc.test.ts"},{"code":"@sarj/no-restricted-library-load","family":"typescript","id":"no-restricted-library-load","source":"packages/typescript/src/rules/no-restricted-library-load.ts","test":"packages/typescript/tests/rules/no-restricted-library-load.test.ts"},{"code":"@sarj/no-router-refresh-polling","family":"typescript","id":"no-router-refresh-polling","source":"packages/typescript/src/rules/no-router-refresh-polling.ts","test":"packages/typescript/tests/rules/no-router-refresh-polling.test.ts"},{"code":"@sarj/no-secret-in-log","family":"typescript","id":"no-secret-in-log","source":"packages/typescript/src/rules/no-secret-in-log.ts","test":"packages/typescript/tests/rules/no-secret-in-log.test.ts"},{"code":"@sarj/no-select-star","family":"typescript","id":"no-select-star","source":"packages/typescript/src/rules/no-select-star.ts","test":"packages/typescript/tests/rules/no-select-star.test.ts"},{"code":"@sarj/no-sentinel-return-on-catch","family":"typescript","id":"no-sentinel-return-on-catch","source":"packages/typescript/src/rules/no-sentinel-return-on-catch.ts","test":"packages/typescript/tests/rules/no-sentinel-return-on-catch.test.ts"},{"code":"@sarj/no-server-env-in-client-component","family":"typescript","id":"no-server-env-in-client-component","source":"packages/typescript/src/rules/no-server-env-in-client-component.ts","test":"packages/typescript/tests/rules/no-server-env-in-client-component.test.ts"},{"code":"@sarj/no-silent-promise-catch","family":"typescript","id":"no-silent-promise-catch","source":"packages/typescript/src/rules/no-silent-promise-catch.ts","test":"packages/typescript/tests/rules/no-silent-promise-catch.test.ts"},{"code":"@sarj/no-sleep-in-test-body","family":"typescript","id":"no-sleep-in-test-body","source":"packages/typescript/src/rules/no-sleep-in-test-body.ts","test":"packages/typescript/tests/rules/no-sleep-in-test-body.test.ts"},{"code":"@sarj/no-storage-in-stateless-modules","family":"typescript","id":"no-storage-in-stateless-modules","source":"packages/typescript/src/rules/no-storage-in-stateless-modules.ts","test":"packages/typescript/tests/rules/no-storage-in-stateless-modules.test.ts"},{"code":"@sarj/no-string-concat-in-loop","family":"typescript","id":"no-string-concat-in-loop","source":"packages/typescript/src/rules/no-string-concat-in-loop.ts","test":"packages/typescript/tests/rules/no-string-concat-in-loop.test.ts"},{"code":"@sarj/no-tautological-expect","family":"typescript","id":"no-tautological-expect","source":"packages/typescript/src/rules/no-tautological-expect.ts","test":"packages/typescript/tests/rules/no-tautological-expect.test.ts"},{"code":"@sarj/no-trailing-value-narration","family":"typescript","id":"no-trailing-value-narration","source":"packages/typescript/src/rules/no-trailing-value-narration.ts","test":"packages/typescript/tests/rules/no-trailing-value-narration.test.ts"},{"code":"@sarj/no-type-member-comment-wall","family":"typescript","id":"no-type-member-comment-wall","source":"packages/typescript/src/rules/no-type-member-comment-wall.ts","test":"packages/typescript/tests/rules/no-type-member-comment-wall.test.ts"},{"code":"@sarj/no-typed-doc-sections","family":"typescript","id":"no-typed-doc-sections","source":"packages/typescript/src/rules/no-typed-doc-sections.ts","test":"packages/typescript/tests/rules/no-typed-doc-sections.test.ts"},{"code":"@sarj/no-union-in-comment","family":"typescript","id":"no-union-in-comment","source":"packages/typescript/src/rules/no-union-in-comment.ts","test":"packages/typescript/tests/rules/no-union-in-comment.test.ts"},{"code":"@sarj/no-unlocalized-jsx-attributes","family":"typescript","id":"no-unlocalized-jsx-attributes","source":"packages/typescript/src/rules/no-unlocalized-jsx-attributes.ts","test":"packages/typescript/tests/rules/no-unlocalized-jsx-attributes.test.ts"},{"code":"@sarj/no-unlocalized-jsx-text","family":"typescript","id":"no-unlocalized-jsx-text","source":"packages/typescript/src/rules/no-unlocalized-jsx-text.ts","test":"packages/typescript/tests/rules/no-unlocalized-jsx-text.test.ts"},{"code":"@sarj/no-unlocalized-toast","family":"typescript","id":"no-unlocalized-toast","source":"packages/typescript/src/rules/no-unlocalized-toast.ts","test":"packages/typescript/tests/rules/no-unlocalized-toast.test.ts"},{"code":"@sarj/no-unnecessary-use-client","family":"typescript","id":"no-unnecessary-use-client","source":"packages/typescript/src/rules/no-unnecessary-use-client.ts","test":"packages/typescript/tests/rules/no-unnecessary-use-client.test.ts"},{"code":"@sarj/no-unsafe-mock-casting","family":"typescript","id":"no-unsafe-mock-casting","source":"packages/typescript/src/rules/no-unsafe-mock-casting.ts","test":"packages/typescript/tests/rules/no-unsafe-mock-casting.test.ts"},{"code":"@sarj/no-unsafe-test-double-cast","family":"typescript","id":"no-unsafe-test-double-cast","source":"packages/typescript/src/rules/no-unsafe-test-double-cast.ts","test":"packages/typescript/tests/rules/no-unsafe-test-double-cast.test.ts"},{"code":"@sarj/no-vague-suppression-description","family":"typescript","id":"no-vague-suppression-description","source":"packages/typescript/src/rules/no-vague-suppression-description.ts","test":"packages/typescript/tests/rules/no-vague-suppression-description.test.ts"},{"code":"@sarj/no-zod-native-enum","family":"typescript","id":"no-zod-native-enum","source":"packages/typescript/src/rules/no-zod-native-enum.ts","test":"packages/typescript/tests/rules/no-zod-native-enum.test.ts"},{"code":"@sarj/prefer-await-in-async-return","family":"typescript","id":"prefer-await-in-async-return","source":"packages/typescript/src/rules/prefer-await-in-async-return.ts","test":"packages/typescript/tests/rules/prefer-await-in-async-return.test.ts"},{"code":"@sarj/prefer-constant-time-secret-compare","family":"typescript","id":"prefer-constant-time-secret-compare","source":"packages/typescript/src/rules/prefer-constant-time-secret-compare.ts","test":"packages/typescript/tests/rules/prefer-constant-time-secret-compare.test.ts"},{"code":"@sarj/prefer-discriminated-union","family":"typescript","id":"prefer-discriminated-union","source":"packages/typescript/src/rules/prefer-discriminated-union.ts","test":"packages/typescript/tests/rules/prefer-discriminated-union.test.ts"},{"code":"@sarj/prefer-ecmascript-private-members","family":"typescript","id":"prefer-ecmascript-private-members","source":"packages/typescript/src/rules/prefer-ecmascript-private-members.ts","test":"packages/typescript/tests/rules/prefer-ecmascript-private-members.test.ts"},{"code":"@sarj/prefer-immutable-module-constant","family":"typescript","id":"prefer-immutable-module-constant","source":"packages/typescript/src/rules/prefer-immutable-module-constant.ts","test":"packages/typescript/tests/rules/prefer-immutable-module-constant.test.ts"},{"code":"@sarj/prefer-input-group-search","family":"typescript","id":"prefer-input-group-search","source":"packages/typescript/src/rules/prefer-input-group-search.ts","test":"packages/typescript/tests/rules/prefer-input-group-search.test.ts"},{"code":"@sarj/prefer-logical-tailwind-utilities","family":"typescript","id":"prefer-logical-tailwind-utilities","source":"packages/typescript/src/rules/prefer-logical-tailwind-utilities.ts","test":"packages/typescript/tests/rules/prefer-logical-tailwind-utilities.test.ts"},{"code":"@sarj/prefer-millisecond-control-duration-schema","family":"typescript","id":"prefer-millisecond-control-duration-schema","source":"packages/typescript/src/rules/prefer-millisecond-control-duration-schema.ts","test":"packages/typescript/tests/rules/prefer-millisecond-control-duration-schema.test.ts"},{"code":"@sarj/prefer-minimal-parameter-contract","family":"typescript","id":"prefer-minimal-parameter-contract","source":"packages/typescript/src/rules/prefer-minimal-parameter-contract.ts","test":"packages/typescript/tests/rules/prefer-minimal-parameter-contract.test.ts"},{"code":"@sarj/prefer-module-level-constant","family":"typescript","id":"prefer-module-level-constant","source":"packages/typescript/src/rules/prefer-module-level-constant.ts","test":"packages/typescript/tests/rules/prefer-module-level-constant.test.ts"},{"code":"@sarj/prefer-module-level-refined-schema","family":"typescript","id":"prefer-module-level-refined-schema","source":"packages/typescript/src/rules/prefer-module-level-refined-schema.ts","test":"packages/typescript/tests/rules/prefer-module-level-refined-schema.test.ts"},{"code":"@sarj/prefer-module-level-schema","family":"typescript","id":"prefer-module-level-schema","source":"packages/typescript/src/rules/prefer-module-level-schema.ts","test":"packages/typescript/tests/rules/prefer-module-level-schema.test.ts"},{"code":"@sarj/prefer-multi-value-zod-literal","family":"typescript","id":"prefer-multi-value-zod-literal","source":"packages/typescript/src/rules/prefer-multi-value-zod-literal.ts","test":"packages/typescript/tests/rules/prefer-multi-value-zod-literal.test.ts"},{"code":"@sarj/prefer-named-callback-domain","family":"typescript","id":"prefer-named-callback-domain","source":"packages/typescript/src/rules/prefer-named-callback-domain.ts","test":"packages/typescript/tests/rules/prefer-named-callback-domain.test.ts"},{"code":"@sarj/prefer-named-complex-return-type","family":"typescript","id":"prefer-named-complex-return-type","source":"packages/typescript/src/rules/prefer-named-complex-return-type.ts","test":"packages/typescript/tests/rules/prefer-named-complex-return-type.test.ts"},{"code":"@sarj/prefer-native-fetch-in-server-actions","family":"typescript","id":"prefer-native-fetch-in-server-actions","source":"packages/typescript/src/rules/prefer-native-fetch-in-server-actions.ts","test":"packages/typescript/tests/rules/prefer-native-fetch-in-server-actions.test.ts"},{"code":"@sarj/prefer-native-random-uuid","family":"typescript","id":"prefer-native-random-uuid","source":"packages/typescript/src/rules/prefer-native-random-uuid.ts","test":"packages/typescript/tests/rules/prefer-native-random-uuid.test.ts"},{"code":"@sarj/prefer-node-crypto-hash","family":"typescript","id":"prefer-node-crypto-hash","source":"packages/typescript/src/rules/prefer-node-crypto-hash.ts","test":"packages/typescript/tests/rules/prefer-node-crypto-hash.test.ts"},{"code":"@sarj/prefer-node-fs-promises","family":"typescript","id":"prefer-node-fs-promises","source":"packages/typescript/src/rules/prefer-node-fs-promises.ts","test":"packages/typescript/tests/rules/prefer-node-fs-promises.test.ts"},{"code":"@sarj/prefer-nominal-id-types","family":"typescript","id":"prefer-nominal-id-types","source":"packages/typescript/src/rules/prefer-nominal-id-types.ts","test":"packages/typescript/tests/rules/prefer-nominal-id-types.test.ts"},{"code":"@sarj/prefer-non-nullable-collection","family":"typescript","id":"prefer-non-nullable-collection","source":"packages/typescript/src/rules/prefer-non-nullable-collection.ts","test":"packages/typescript/tests/rules/prefer-non-nullable-collection.test.ts"},{"code":"@sarj/prefer-nullish-filter-predicate","family":"typescript","id":"prefer-nullish-filter-predicate","source":"packages/typescript/src/rules/prefer-nullish-filter-predicate.ts","test":"packages/typescript/tests/rules/prefer-nullish-filter-predicate.test.ts"},{"code":"@sarj/prefer-schema-for-api-payload","family":"typescript","id":"prefer-schema-for-api-payload","source":"packages/typescript/src/rules/prefer-schema-for-api-payload.ts","test":"packages/typescript/tests/rules/prefer-schema-for-api-payload.test.ts"},{"code":"@sarj/prefer-semantic-colors","family":"typescript","id":"prefer-semantic-colors","source":"packages/typescript/src/rules/prefer-semantic-colors.ts","test":"packages/typescript/tests/rules/prefer-semantic-colors.test.ts"},{"code":"@sarj/prefer-server-actions","family":"typescript","id":"prefer-server-actions","source":"packages/typescript/src/rules/prefer-server-actions.ts","test":"packages/typescript/tests/rules/prefer-server-actions.test.ts"},{"code":"@sarj/prefer-shadcn-primitives","family":"typescript","id":"prefer-shadcn-primitives","source":"packages/typescript/src/rules/prefer-shadcn-primitives.ts","test":"packages/typescript/tests/rules/prefer-shadcn-primitives.test.ts"},{"code":"@sarj/prefer-shared-zod-enum","family":"typescript","id":"prefer-shared-zod-enum","source":"packages/typescript/src/rules/prefer-shared-zod-enum.ts","test":"packages/typescript/tests/rules/prefer-shared-zod-enum.test.ts"},{"code":"@sarj/prefer-switch-for-repeated-equality","family":"typescript","id":"prefer-switch-for-repeated-equality","source":"packages/typescript/src/rules/prefer-switch-for-repeated-equality.ts","test":"packages/typescript/tests/rules/prefer-switch-for-repeated-equality.test.ts"},{"code":"@sarj/prefer-typed-reflection","family":"typescript","id":"prefer-typed-reflection","source":"packages/typescript/src/rules/prefer-typed-reflection.ts","test":"packages/typescript/tests/rules/prefer-typed-reflection.test.ts"},{"code":"@sarj/prefer-whole-object-assertion","family":"typescript","id":"prefer-whole-object-assertion","source":"packages/typescript/src/rules/prefer-whole-object-assertion.ts","test":"packages/typescript/tests/rules/prefer-whole-object-assertion.test.ts"},{"code":"@sarj/prefer-zod-infer","family":"typescript","id":"prefer-zod-infer","source":"packages/typescript/src/rules/prefer-zod-infer.ts","test":"packages/typescript/tests/rules/prefer-zod-infer.test.ts"},{"code":"@sarj/prefer-zod-parse-output-type","family":"typescript","id":"prefer-zod-parse-output-type","source":"packages/typescript/src/rules/prefer-zod-parse-output-type.ts","test":"packages/typescript/tests/rules/prefer-zod-parse-output-type.test.ts"},{"code":"@sarj/repeated-static-call-cases","family":"typescript","id":"repeated-static-call-cases","source":"packages/typescript/src/rules/repeated-static-call-cases.ts","test":"packages/typescript/tests/rules/repeated-static-call-cases.test.ts"},{"code":"@sarj/require-assert-never","family":"typescript","id":"require-assert-never","source":"packages/typescript/src/rules/require-assert-never.ts","test":"packages/typescript/tests/rules/require-assert-never.test.ts"},{"code":"@sarj/require-button-accessible-name","family":"typescript","id":"require-button-accessible-name","source":"packages/typescript/src/rules/require-button-accessible-name.ts","test":"packages/typescript/tests/rules/require-button-accessible-name.test.ts"},{"code":"@sarj/require-camelcase-properties","family":"typescript","id":"require-camelcase-properties","source":"packages/typescript/src/rules/require-camelcase-properties.ts","test":"packages/typescript/tests/rules/require-camelcase-properties.test.ts"},{"code":"@sarj/require-explicit-contract-implementation","family":"typescript","id":"require-explicit-contract-implementation","source":"packages/typescript/src/rules/require-explicit-contract-implementation.ts","test":"packages/typescript/tests/rules/require-explicit-contract-implementation.test.ts"},{"code":"@sarj/require-explicit-service-contract","family":"typescript","id":"require-explicit-service-contract","source":"packages/typescript/src/rules/require-explicit-service-contract.ts","test":"packages/typescript/tests/rules/require-explicit-service-contract.test.ts"},{"code":"@sarj/require-fetch-timeout","family":"typescript","id":"require-fetch-timeout","source":"packages/typescript/src/rules/require-fetch-timeout.ts","test":"packages/typescript/tests/rules/require-fetch-timeout.test.ts"},{"code":"@sarj/require-interface-for-exported-class","family":"typescript","id":"require-interface-for-exported-class","source":"packages/typescript/src/rules/require-interface-for-exported-class.ts","test":"packages/typescript/tests/rules/require-interface-for-exported-class.test.ts"},{"code":"@sarj/require-pascal-case-zod-schema-name","family":"typescript","id":"require-pascal-case-zod-schema-name","source":"packages/typescript/src/rules/require-pascal-case-zod-schema-name.ts","test":"packages/typescript/tests/rules/require-pascal-case-zod-schema-name.test.ts"},{"code":"@sarj/require-port-for-service","family":"typescript","id":"require-port-for-service","source":"packages/typescript/src/rules/require-port-for-service.ts","test":"packages/typescript/tests/rules/require-port-for-service.test.ts"},{"code":"@sarj/require-sql-access-class","family":"typescript","id":"require-sql-access-class","source":"packages/typescript/src/rules/require-sql-access-class.ts","test":"packages/typescript/tests/rules/require-sql-access-class.test.ts"},{"code":"@sarj/require-static-next-matcher","family":"typescript","id":"require-static-next-matcher","source":"packages/typescript/src/rules/require-static-next-matcher.ts","test":"packages/typescript/tests/rules/require-static-next-matcher.test.ts"},{"code":"@sarj/require-svg-accessible-name","family":"typescript","id":"require-svg-accessible-name","source":"packages/typescript/src/rules/require-svg-accessible-name.ts","test":"packages/typescript/tests/rules/require-svg-accessible-name.test.ts"},{"code":"@sarj/require-use-form-default-values","family":"typescript","id":"require-use-form-default-values","source":"packages/typescript/src/rules/require-use-form-default-values.ts","test":"packages/typescript/tests/rules/require-use-form-default-values.test.ts"},{"code":"@sarj/require-use-server-in-actions-file","family":"typescript","id":"require-use-server-in-actions-file","source":"packages/typescript/src/rules/require-use-server-in-actions-file.ts","test":"packages/typescript/tests/rules/require-use-server-in-actions-file.test.ts"},{"code":"@sarj/require-zod-form-validation","family":"typescript","id":"require-zod-form-validation","source":"packages/typescript/src/rules/require-zod-form-validation.ts","test":"packages/typescript/tests/rules/require-zod-form-validation.test.ts"},{"code":"@sarj/sole-export-matches-filename","family":"typescript","id":"sole-export-matches-filename","source":"packages/typescript/src/rules/sole-export-matches-filename.ts","test":"packages/typescript/tests/rules/sole-export-matches-filename.test.ts"},{"code":"@sarj/source-coupled-test","family":"typescript","id":"source-coupled-test","source":"packages/typescript/src/rules/source-coupled-test.ts","test":"packages/typescript/tests/rules/source-coupled-test.test.ts"},{"code":"@sarj/stepdown","family":"typescript","id":"stepdown","source":"packages/typescript/src/rules/stepdown.ts","test":"packages/typescript/tests/rules/stepdown.test.ts"},{"code":"@sarj/store-insert-requires-on-conflict","family":"typescript","id":"store-insert-requires-on-conflict","source":"packages/typescript/src/rules/store-insert-requires-on-conflict.ts","test":"packages/typescript/tests/rules/store-insert-requires-on-conflict.test.ts"},{"code":"@sarj/test-loops-over-literal-cases","family":"typescript","id":"test-loops-over-literal-cases","source":"packages/typescript/src/rules/test-loops-over-literal-cases.ts","test":"packages/typescript/tests/rules/test-loops-over-literal-cases.test.ts"},{"code":"@sarj/test-phase-label-comment","family":"typescript","id":"test-phase-label-comment","source":"packages/typescript/src/rules/test-phase-label-comment.ts","test":"packages/typescript/tests/rules/test-phase-label-comment.test.ts"}],"schemaVersion":1}
|
{code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/configs/rule-ledger.json
RENAMED
|
@@ -62,9 +62,11 @@
|
|
|
62
62
|
"no-copied-inherited-docstring",
|
|
63
63
|
"no-cors-wildcard-with-credentials",
|
|
64
64
|
"no-create-verb-in-post-path",
|
|
65
|
+
"no-custom-control-flow-exception",
|
|
65
66
|
"no-database-programmability",
|
|
66
67
|
"no-defaulted-environment-setting",
|
|
67
68
|
"no-delete-statement",
|
|
69
|
+
"no-discarded-tagged-outcome",
|
|
68
70
|
"no-discarded-validation-result",
|
|
69
71
|
"no-docstring-type-restatement",
|
|
70
72
|
"no-dual-shape-model-field-reader",
|
|
@@ -105,8 +107,10 @@
|
|
|
105
107
|
"no-random-uuid-in-sql",
|
|
106
108
|
"no-raw-connection-in-tests",
|
|
107
109
|
"no-raw-source-text-test-oracle",
|
|
110
|
+
"no-recording-store",
|
|
108
111
|
"no-redundant-local-alias",
|
|
109
112
|
"no-redundant-module-alias-exports",
|
|
113
|
+
"no-redundant-sql-alias",
|
|
110
114
|
"no-repeated-structured-string-literal",
|
|
111
115
|
"no-repeated-test-body",
|
|
112
116
|
"no-repeated-unseeded-stdlib-random-in-test",
|
|
@@ -134,6 +138,7 @@
|
|
|
134
138
|
"no-work-verb-get-route",
|
|
135
139
|
"opaque-parametrize-case-needs-id",
|
|
136
140
|
"over-mocked-test",
|
|
141
|
+
"prefer-application-model-joins",
|
|
137
142
|
"prefer-autospec-for-callable-mock",
|
|
138
143
|
"prefer-bulk-upsert",
|
|
139
144
|
"prefer-class-row",
|
|
@@ -157,6 +162,7 @@
|
|
|
157
162
|
"prefer-native-string-check",
|
|
158
163
|
"prefer-nominal-id-types",
|
|
159
164
|
"prefer-non-nullable-collection",
|
|
165
|
+
"prefer-optional-composite",
|
|
160
166
|
"prefer-or-pattern",
|
|
161
167
|
"prefer-precise-object-contract",
|
|
162
168
|
"prefer-psycopg-executemany",
|
|
@@ -210,6 +216,8 @@
|
|
|
210
216
|
"stepdown",
|
|
211
217
|
"store-field-update-reuses-upsert",
|
|
212
218
|
"store-get-delegates-to-bulk-read",
|
|
219
|
+
"store-insert-requires-explicit-conflict-policy",
|
|
220
|
+
"store-mutation-command-fanout",
|
|
213
221
|
"subprocess-kill-without-reap",
|
|
214
222
|
"test-without-explicit-oracle",
|
|
215
223
|
"timestamp-order-requires-tiebreaker",
|
|
@@ -217,12 +225,15 @@
|
|
|
217
225
|
"unused-test-factory-option"
|
|
218
226
|
],
|
|
219
227
|
"sql": [
|
|
228
|
+
"combine-alter-table",
|
|
220
229
|
"enforce-timestamptz",
|
|
221
230
|
"excess-migration-index-requires-justification",
|
|
222
231
|
"existing-table-check-or-foreign-key-requires-not-valid",
|
|
223
232
|
"idempotent-ddl",
|
|
224
233
|
"index-concurrently",
|
|
225
234
|
"insert-requires-replay-policy",
|
|
235
|
+
"invalid-concurrent-ddl",
|
|
236
|
+
"invalid-postgres-ddl",
|
|
226
237
|
"mixed-migration-phases",
|
|
227
238
|
"new-table-inline-constraints",
|
|
228
239
|
"no-analytical-queries-in-transactional-db",
|
|
@@ -232,6 +243,7 @@
|
|
|
232
243
|
"no-duplicate-index",
|
|
233
244
|
"no-long-migration-narration",
|
|
234
245
|
"no-migration-comment-cruft",
|
|
246
|
+
"no-null-comparison",
|
|
235
247
|
"no-offset-pagination",
|
|
236
248
|
"no-pg-enum",
|
|
237
249
|
"prefer-jsonb",
|
|
@@ -598,7 +610,15 @@
|
|
|
598
610
|
"SARJ537",
|
|
599
611
|
"SARJ538",
|
|
600
612
|
"SARJ539",
|
|
601
|
-
"SARJ540"
|
|
613
|
+
"SARJ540",
|
|
614
|
+
"SARJ541",
|
|
615
|
+
"SARJ542",
|
|
616
|
+
"SARJ543",
|
|
617
|
+
"SARJ544",
|
|
618
|
+
"SARJ545",
|
|
619
|
+
"SARJ546",
|
|
620
|
+
"SARJ547",
|
|
621
|
+
"SARJ548"
|
|
602
622
|
],
|
|
603
623
|
"sql": [
|
|
604
624
|
"SARJ101",
|
|
@@ -622,7 +642,11 @@
|
|
|
622
642
|
"SARJ119",
|
|
623
643
|
"SARJ120",
|
|
624
644
|
"SARJ121",
|
|
625
|
-
"SARJ122"
|
|
645
|
+
"SARJ122",
|
|
646
|
+
"SARJ123",
|
|
647
|
+
"SARJ124",
|
|
648
|
+
"SARJ125",
|
|
649
|
+
"SARJ126"
|
|
626
650
|
],
|
|
627
651
|
"iac": [
|
|
628
652
|
"SARJ201",
|
{code_standards-8.147.0 → code_standards-8.150.0}/src/sarj_standards/libs/adoption/manifest.py
RENAMED
|
@@ -57,8 +57,8 @@ _PYTHON_LINT: Final = "sarj-python-lint"
|
|
|
57
57
|
SIBLING_PACKAGES: Final = (_PYTHON_LINT, "sarj-sql-lint", "sarj-iac-lint")
|
|
58
58
|
REPO_STANDARDS_VERSION: Final = "6.14.0"
|
|
59
59
|
# Actions can receive delivery fixes independently of the consumer topology policy.
|
|
60
|
-
REPO_STANDARDS_ACTION_VERSION: Final = "6.
|
|
61
|
-
REPO_STANDARDS_REVISION: Final = "
|
|
60
|
+
REPO_STANDARDS_ACTION_VERSION: Final = "6.14.0"
|
|
61
|
+
REPO_STANDARDS_REVISION: Final = "a71263817fa4ce54cddf096e9d47d2643e0a1266"
|
|
62
62
|
|
|
63
63
|
|
|
64
64
|
def adopted_version() -> str:
|