code-standards 8.136.2__tar.gz → 8.141.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.136.2 → code_standards-8.141.0}/PKG-INFO +3 -3
- {code_standards-8.136.2 → code_standards-8.141.0}/pyproject.toml +3 -3
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/cli-reference.v1.json +2 -2
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/eslint.peers.json +2 -2
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/rule-calibration-campaign.v1.json +50 -2
- code_standards-8.141.0/src/sarj_standards/configs/rule-inventory.v1.json +1 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/rule-ledger.json +14 -2
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/adoption/manifest.py +3 -3
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/text_rules/_registry.py +4 -1
- code_standards-8.141.0/src/sarj_standards/libs/linting/text_rules/_slack_payload.py +412 -0
- code_standards-8.141.0/src/sarj_standards/libs/linting/text_rules/slack_event_text_in_mrkdwn.py +309 -0
- code_standards-8.141.0/src/sarj_standards/schemas/rule-catalog.v1.json +1 -0
- code_standards-8.136.2/src/sarj_standards/configs/rule-inventory.v1.json +0 -1
- code_standards-8.136.2/src/sarj_standards/schemas/rule-catalog.v1.json +0 -1
- {code_standards-8.136.2 → code_standards-8.141.0}/.gitignore +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/LICENSE +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/README.md +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/__init__.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/__main__.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/_meta.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/api.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/cli/__init__.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/cli/main.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/Mintfile.mobile.strict +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/action-parser/LICENSE.actions +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/action-parser/LICENSE.cronstrue +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/action-parser/LICENSE.yaml +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/action-parser/generate.mts +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/action-parser/index.mts +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/action-parser/package-lock.json +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/action-parser/package.json +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/action-parser/upstream.json +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/action-parser.cjs +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/actionlint.strict.yaml +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/basedpyright.python315-watch.json +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/basedpyright.strict.json +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/checkov.strict.yml +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/compile-eslint.mts +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/detekt.strict.yml +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/devops-verification.v1.json +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/doctor.config.json +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/eslint-compact-formatter.mts +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/eslint-required-policy.mts +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/eslint-selected-rules.mts +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/eslint.application.mjs +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/eslint.strict.mjs +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/eslint.strict.ts +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/hadolint.strict.yaml +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/ktlint.strict.editorconfig +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/markdownlint.strict.yaml +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/mobile-tools.versions.json +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/mobsf.strict.yml +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/pyright.strict.json +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/ruff.application.toml +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/ruff.cast.toml +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/ruff.python315-watch.toml +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/ruff.required.toml +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/ruff.strict.toml +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/rule-level-source.mts +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/schemas/SKAFFOLD-LICENSE +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/schemas/google-build-v1-schema.json +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/schemas/google-build-v1.LICENSE +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/schemas/skaffold-v4beta7.json +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/schemas/upstream-schemas.json +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/semgrep-overrides.txt +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/shellcheck.strict.rc +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/swiftformat.strict +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/swiftlint.strict.yml +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/taplo.strict.toml +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/tflint.strict.hcl +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/tflint.version.hcl +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/tool-json.mts +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/yamllint.strict.yaml +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/zizmor.strict.yml +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/__init__.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/adoption/__init__.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/adoption/age_transition.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/adoption/configs.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/adoption/devops.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/adoption/doctor.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/adoption/exclusions.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/adoption/hooks.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/adoption/launcher.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/adoption/lifecycle.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/adoption/native_bootstrap.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/adoption/packagemanager.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/adoption/repository_baseline.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/adoption/retired_suppressions.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/adoption/scaffold.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/adoption/service.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/adoption/transaction.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/adoption/upgrade.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/adoption/uvtool.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/catalogs/__init__.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/catalogs/slack_automations.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/corpus/__init__.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/corpus/manifest.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/corpus/snapshot.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/diagnostics/__init__.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/diagnostics/analysis.schema.json +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/diagnostics/baseline.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/diagnostics/models.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/diagnostics/serialize.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/diagnostics/source.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/filesystem.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/json_boundary.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/__init__.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/_cloudbuild_autofix.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/action_metadata.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/analysis.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/autofix.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/chart_schemas.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/cloudbuild.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/cloudbuild_schema.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/complexity_baseline.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/devops_programs.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/devops_schema.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/devops_source.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/devops_tools.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/duplicate_code.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/embedded_shell.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/external.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/kubernetes_context.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/library_policy.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/mobile_tools.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/policy.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/prepared_devops.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/prepared_kubernetes.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/prepared_native.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/python_fixes.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/repo_standards.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/runner.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/scheduling.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/security_tools.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/shell_ast.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/shell_format.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/shell_policy.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/test_value.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/text_rule_base.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/text_rules/__init__.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/text_rules/cloudbuild_contract.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/textlint.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/toml_literals.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/linting/unused_modules.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/__init__.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/_values.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/artifacts.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/causality.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/changes.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/ci_artifacts.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/make_checks.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/metadata_verification.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/native_test_setup.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/process.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/publish.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/registry.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/release_age.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/release_detect.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/retirement.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/reviewed_analysis.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/rollout.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/status.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/tags.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/test_selection.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/typescript.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/verification_process.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/release/wheel_tests.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/__init__.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/cli_examples.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/cli_reference_artifact.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/cloudbuild_schema_projection.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/comment_corpus.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/config_generation.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/docs.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/hooks.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/immutable_git.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/ledger.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/repository.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/ruff_freshness.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/rule_authoring.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/rule_catalog_artifact.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/rule_changes.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/rule_checkout.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/rule_dependencies.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/rule_examples.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/rule_imports.mts +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/rule_inventory_artifact.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/rule_level_source.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/rule_lifecycle.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/rule_maintenance.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/rule_registration.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/shell_checks.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/repository/third_party_catalog_artifact.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/rules/__init__.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/rules/catalog.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/rules/contracts.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/rules/corpus_runner.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/rules/evaluation.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/schema_boundary.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/setup/__init__.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/setup/repository.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/typed_containers.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/libs/yaml_boundary.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/py.typed +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/schemas/__init__.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/schemas/_paths.py +0 -0
- {code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/schemas/rule-catalog.v1.schema.json +0 -0
- {code_standards-8.136.2 → code_standards-8.141.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.141.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/
|
|
@@ -28,10 +28,10 @@ Requires-Dist: pre-commit==4.7.0
|
|
|
28
28
|
Requires-Dist: pydantic==2.14.1
|
|
29
29
|
Requires-Dist: pyyaml==6.0.3
|
|
30
30
|
Requires-Dist: referencing==0.37.0
|
|
31
|
-
Requires-Dist: repo-standards==6.
|
|
31
|
+
Requires-Dist: repo-standards==6.13.0
|
|
32
32
|
Requires-Dist: ruff==0.17.2
|
|
33
33
|
Requires-Dist: sarj-iac-lint==0.30.2
|
|
34
|
-
Requires-Dist: sarj-python-lint==1.
|
|
34
|
+
Requires-Dist: sarj-python-lint==1.82.0
|
|
35
35
|
Requires-Dist: sarj-rule-contracts==0.4.2
|
|
36
36
|
Requires-Dist: sarj-sql-lint==0.29.0
|
|
37
37
|
Requires-Dist: shellcheck-py==0.11.0.1; (sys_platform == 'darwin' and platform_machine == 'arm64') or (sys_platform == 'darwin' and platform_machine == 'x86_64') or (sys_platform == 'linux' and platform_machine == 'x86_64') or (sys_platform == 'win32' and platform_machine == 'AMD64')
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "code-standards"
|
|
3
|
-
version = "8.
|
|
3
|
+
version = "8.141.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"
|
|
@@ -28,11 +28,11 @@ dependencies = [
|
|
|
28
28
|
"PyYAML==6.0.3",
|
|
29
29
|
"jsonschema==4.26.0",
|
|
30
30
|
"referencing==0.37.0",
|
|
31
|
-
"repo-standards==6.
|
|
31
|
+
"repo-standards==6.13.0",
|
|
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.2",
|
|
35
|
-
"sarj-python-lint==1.
|
|
35
|
+
"sarj-python-lint==1.82.0",
|
|
36
36
|
"sarj-sql-lint==0.29.0",
|
|
37
37
|
"typer==0.27.3",
|
|
38
38
|
]
|
{code_standards-8.136.2 → code_standards-8.141.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.141.0).",
|
|
3320
|
+
"version": "8.141.0"
|
|
3321
3321
|
}
|
{code_standards-8.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/eslint.peers.json
RENAMED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"@eslint-community/eslint-plugin-eslint-comments": "4.8.1",
|
|
20
20
|
"@eslint/compat": "2.1.1",
|
|
21
21
|
"@eslint/js": "10.0.1",
|
|
22
|
-
"@sarj/eslint-plugin": "16.
|
|
22
|
+
"@sarj/eslint-plugin": "16.31.0",
|
|
23
23
|
"@shadcn/lint": "0.2.3",
|
|
24
24
|
"@typescript/native": "npm:typescript@7.0.2",
|
|
25
25
|
"@vitest/eslint-plugin": "1.6.28",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"eslint-plugin-regexp": "3.3.1"
|
|
46
46
|
},
|
|
47
47
|
"ageGatePreapprovals": {
|
|
48
|
-
"@sarj/eslint-plugin": "16.
|
|
48
|
+
"@sarj/eslint-plugin": "16.31.0"
|
|
49
49
|
},
|
|
50
50
|
"yarnIdentityPins": {
|
|
51
51
|
"@typescript-eslint/eslint-plugin": "8.72.0",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"family": "typescript",
|
|
80
80
|
"ruleId": "no-partial-type-predicate",
|
|
81
81
|
"state": "complete",
|
|
82
|
-
"evidence": "Fifty substantive guard-design review decisions completed with reproducible counterexamples and valid-boundary controls. An explicit broad primitive predicate can reject a valid member and make its false branch unsafe. Numeric enum witnesses must belong to the actual input domain; preserve overloads, contextual/public callable contracts, refinements, ambient and transformed functions. Exact TS5.0.4 replay175/175 and native6.0.3 proofs pass. Corpus findings, final source hashes and performance are recorded in packages/standards/benchmarks/type-guard-design-50-passes.json.",
|
|
82
|
+
"evidence": "Fifty substantive guard-design review decisions completed with reproducible counterexamples and valid-boundary controls. An explicit broad primitive predicate can reject a valid member and make its false branch unsafe. Numeric enum witnesses must belong to the actual input domain; preserve overloads, contextual/public callable contracts, refinements, ambient and transformed functions. Exact TS5.0.4 replay175/175 and native6.0.3 proofs pass. Corpus findings, final source hashes and performance are recorded in packages/standards/benchmarks/type-guard-design-50-passes.json. 2026-10-27 extension: UUID parse-success predicates claiming broad string use a local official native-schema witness; every admitted safeParse call requires one direct non-spread argument, with exported-schema assumptions and mutation exclusions explicit. Fresh revision 3 qualification inspects all nine findings: seven new true positives across six cases and two preserved response findings, with no inspected false positives, duplicates, unclassified findings or non-target changes. Seven labeled safe cases, one support module, two unsupported positives, four boundary abstentions, two actual suppression controls and one deliberate parser gap remain separate. All 40 hash-ranked sample zeroes are unlabeled; 37 have compiler/dependency profile gaps. Three paired rounds retain all observations: the cold median rises 13.95%, the warm median falls 9.33%, and process RSS is near baseline under shared-VM variation. No speedup or general overhead bound is claimed. The full affected native TypeScript suite passes 316 cases with clean lint/types and original/repaired probes. See packages/standards/benchmarks/source-audit-typescript-qualification-20261026.json. Canonical verification, independent commit review and required head CI remain separate delivery gates; new coverage stays WARNING without new autofix and field calibration remains pending. A later upstream integration changes only project/tooling incremental build-state flags in the TypeScript frame. A normal native build and pinned input checks prove identical emitted JavaScript; revision 3 runtime measurements retain their original baseline and timestamps with explicit reuse limits. A subsequent supervised normal build after scoped-React integration preserves all four emitted JS/CJS files, six declarations and recorded TypeScript runtime, compiler, dependency, fixture and tool inputs under the documented unchanged locked-installation assumption. Revision 3 retains its original frame and timing values. The exact two-path Makefile/mise verification-only follow-up permits only the reviewed Makefile transition among 491 tracked execution inputs, requires empty PYTEST_ARGS and PYTEST_ADDOPTS, and preserves the historical native wrapper and supervisor; it is not a new build, corpus run or whole-make completion claim.",
|
|
83
83
|
"outcome": "Ship at warning severity without autofix. Use an ordinary boolean filter for value selection or prove both branches of a narrowing predicate. Canonical verification and exact-head CI must pass before administrative merge."
|
|
84
84
|
},
|
|
85
85
|
{
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
"family": "typescript",
|
|
144
144
|
"ruleId": "no-exception-text-in-5xx-response",
|
|
145
145
|
"state": "complete",
|
|
146
|
-
"evidence": "Five review passes cover failure admission, independent precision/API review, simplicity and strict types, pinned corpus/performance, and atomic integration. All 85 labeled TypeScript and native JavaScript parser cases (29 positives, 56 negatives), one native Response.json runtime check, 21 independent flow probes, 28 API/import controls and 16 cross-parser controls pass. A verified 3,373-file / 26,544,477-byte corpus runs in 16 fresh processes of at most 250 files: one inspected live true positive, 11 seeded positives and 12 seeded negatives; zero known false positives, misses, fatal parse errors or duplicate locations. Full 120 Sarj + one core rule typed integration reports only the 11 expected warnings; exact suppression and no-fix convergence pass. A 144-file / 1,408,276-byte panel uses 12 fresh processes with one cold and two warm loops: combined warm callback median 29.44 ms, normal native cold medians 2.201/2.081 s and warm medians 1.062/1.089 s under shared load. No causal speedup or stable latency claim. All canonical verification targets pass, covering 30,145 unique package tests with nine skips. Native header examples-link and docs workspace lock metadata were corrected without weakening assertions; the final comment-only header change produces byte-identical compiled rule output. Final catalog and formatted projections are synchronized together. Private source and pins remain owner-only.",
|
|
146
|
+
"evidence": "Five review passes cover failure admission, independent precision/API review, simplicity and strict types, pinned corpus/performance, and atomic integration. All 85 labeled TypeScript and native JavaScript parser cases (29 positives, 56 negatives), one native Response.json runtime check, 21 independent flow probes, 28 API/import controls and 16 cross-parser controls pass. A verified 3,373-file / 26,544,477-byte corpus runs in 16 fresh processes of at most 250 files: one inspected live true positive, 11 seeded positives and 12 seeded negatives; zero known false positives, misses, fatal parse errors or duplicate locations. Full 120 Sarj + one core rule typed integration reports only the 11 expected warnings; exact suppression and no-fix convergence pass. A 144-file / 1,408,276-byte panel uses 12 fresh processes with one cold and two warm loops: combined warm callback median 29.44 ms, normal native cold medians 2.201/2.081 s and warm medians 1.062/1.089 s under shared load. No causal speedup or stable latency claim. All canonical verification targets pass, covering 30,145 unique package tests with nine skips. Native header examples-link and docs workspace lock metadata were corrected without weakening assertions; the final comment-only header change produces byte-identical compiled rule output. Final catalog and formatted projections are synchronized together. Private source and pins remain owner-only. 2026-10-27 extension: Exported Server Action result sinks use escaping-return and pure local-helper/native Error proofs. Returns nested in for-in/of bodies, including async iteration, abstain. Fresh revision 3 qualification inspects all nine findings: seven new true positives across six cases and two preserved response findings, with no inspected false positives, duplicates, unclassified findings or non-target changes. Seven labeled safe cases, one support module, two unsupported positives, four boundary abstentions, two actual suppression controls and one deliberate parser gap remain separate. All 40 hash-ranked sample zeroes are unlabeled; 37 have compiler/dependency profile gaps. Three paired rounds retain all observations: the cold median rises 13.95%, the warm median falls 9.33%, and process RSS is near baseline under shared-VM variation. No speedup or general overhead bound is claimed. The full affected native TypeScript suite passes 316 cases with clean lint/types and original/repaired probes. See packages/standards/benchmarks/source-audit-typescript-qualification-20261026.json. Canonical verification, independent commit review and required head CI remain separate delivery gates; new coverage stays WARNING without new autofix and field calibration remains pending. A later upstream integration changes only project/tooling incremental build-state flags in the TypeScript frame. A normal native build and pinned input checks prove identical emitted JavaScript; revision 3 runtime measurements retain their original baseline and timestamps with explicit reuse limits. A subsequent supervised normal build after scoped-React integration preserves all four emitted JS/CJS files, six declarations and recorded TypeScript runtime, compiler, dependency, fixture and tool inputs under the documented unchanged locked-installation assumption. Revision 3 retains its original frame and timing values. The exact two-path Makefile/mise verification-only follow-up permits only the reviewed Makefile transition among 491 tracked execution inputs, requires empty PYTEST_ARGS and PYTEST_ADDOPTS, and preserves the historical native wrapper and supervisor; it is not a new build, corpus run or whole-make completion claim.",
|
|
147
147
|
"outcome": "Stage a warning without autofix for directly returned native Response.json or named NextResponse imports, literal integer 500\u2013599 status, stable caught message/stack fields and explicit literal payload paths. Preserve public 4xx contracts, dynamic statuses, sanitizers, uncertain properties/serializers, mutable or escaped values/factories, tests and generated files. Interprocedural mutation, runtime monkeypatches, factory aliases and response wrappers remain manual-review boundaries. A warning does not prove a secret or observed production disclosure; finite calibration does not establish universal precision or performance."
|
|
148
148
|
},
|
|
149
149
|
{
|
|
@@ -2877,6 +2877,54 @@
|
|
|
2877
2877
|
"state": "complete",
|
|
2878
2878
|
"evidence": "Native semantic fixtures cover DISTINCT and DISTINCT ON, grouping without aggregates, built-in aggregates including JSON, CTEs, nested writes, views, windows, placeholders, comments and values, scalar lookalikes, analytical dialects, physical locations, malformed input and exact suppressions. Broader corpus and performance qualification is recorded separately; private sources and identifying pins remain local. Final native qualification compared three before/after trials with cold/warm analyses over 3,956 files per trial, with unchanged semantic input closures and deterministic complete diagnostic tuples. All 367 labeled cases passed (200 positives, 167 controls); all 47 actual consumer findings were independently inspected or reconciled against identical previously inspected source and full tuples, with zero known false positives. Namespace, declared dependency, generated-provider and re-export ownership, quoted function identity, executing EXPLAIN, metadata-free aggregates, dialect-native comment/identifier masking and multi-statement suppression boundaries are covered. See packages/python/benchmarks/transactional-sql-policy.json for redacted counts, observed performance and scope limits.",
|
|
2879
2879
|
"outcome": "Ship SARJ122 as an error at the explicit user request to ban transactional SQL aggregation. PostgreSQL is the SQL linter default, MySQL and SQLite select native parsers, and declared analytical dialects or database directories remain valid. Treat this as an organization datastore policy, not a cost estimator; preserve atomicity and require an exact reviewed exception for an unavoidable transactional invariant."
|
|
2880
|
+
},
|
|
2881
|
+
{
|
|
2882
|
+
"task": "rule-audit/python/failed-probe-zero-threshold",
|
|
2883
|
+
"family": "python",
|
|
2884
|
+
"ruleId": "failed-probe-zero-threshold",
|
|
2885
|
+
"state": "pending",
|
|
2886
|
+
"evidence": "A proven failed subprocess probe returning zero can pass a zero threshold. The supported synchronous motivating source and direct controls are caught; deeper async wrapper provenance remains an explicit false negative. Fresh revision 4 matched full-registry qualification after the upstream Python/SQL runtime integration of the six new owners has 14 inspected true-positive findings, six labeled true-negative cases and two unsupported numeric positives. There are no inspected false positives, unclassified target findings, returned duplicate tuples, non-target changes or legacy-owner changes. Fifty hash-ranked Python files, ten workflows and nine retained historical self-source controls have no target hits and remain unlabeled, not negatives or recall proof. All 34 workers and 68 analyses complete. Native preflight passes 1,729 Python metadata/new/legacy cases and 584 text cases including 91 Slack cases, with clean strict types and no blocking lint findings. All timing pairs and available process/child RSS are retained; shared-VM variation supplies no causal speedup or general overhead bound. See packages/standards/benchmarks/source-audit-python-slack-qualification-20261026.json. Canonical verification, independent commit review and required head CI remain separate delivery gates; field calibration stays pending. Earlier revision 3 raw observations remain historical. Bytecode caches are not normalized, so first-analysis and cold-total timings do not establish cold-start costs or causal speedups. A later incoming scoped-React parser change is qualified by a separate fresh workflow-only revision5 against its exact new baseline. All10workers/20analyses complete with the same originalSlack1/repair0,1TP/1TN,ten unlabeled sample zeroes and no inspectedFP/non-target changes/unknown/parser failures/duplicate tuples/repeat drift. These confirm existing cases and do not increase combined14TP/6TN totals. Three paired workflow rounds retain all timing/RSS observations; shared-VM and unnormalized caches prevent causal speedup or a worst-case bound. Original Pythonv4/TSv3 and the original full report retain their exact historical timing frames; old Python startup timers also hash changed Standards source, so whole-worker current equivalence is not claimed. Incoming complete native2file lint/types and364React tests pass; full direct canonical verification, normal hooks, immutable-commit review and exact-head requiredCI remain separate. A subsequent two-path verification-only Makefile/mise integration preserves every measured runtime/fixture/worker byte and actualnpm12.2.1 identity. Workflowrevision5 retains its d4d baseline/timestamps; no second benchmark or timing repin is claimed. Qualification preserves the original make's three successful native phases, six completed test groups, exit code 2 and failed fourth phase at their original tree. An exact upstream input comparison carries forward only source-compatible completed checks; fresh affected preflights, Standards tests, TypeScript configuration and repository/privacy/shell checks complete under the current final shared native lease. Every test group was actually executed; an older TypeScript result was not substituted. Inputs outside the reviewed transition remain unchanged. PYTEST_ARGS and PYTEST_ADDOPTS remain empty. The earlier evidence-only tree is linked by an exact scalar transition and fresh metadata checks. A subsequent authored-ESLint hook helper and regression-test repair suppresses only native file-ignored notices; real rule warnings and errors remain blocking. Exact input comparisons and fresh targeted native checks qualify that verification-only repair and these evidence clarifications without repeating unchanged engine tests. No earlier make is claimed to have executed these later changes. Earlier qualification counts and measurements remain historical; see post_a5_reconciliation in source-audit-rule-admission-20261026.json for the integrated source scope and separate verification requirements.",
|
|
2887
|
+
"outcome": "Stage SARJ538 at WARNING without autofix. Prove the subprocess error sentinel and numeric success comparison; preserve explicit zero-baseline skip policies."
|
|
2888
|
+
},
|
|
2889
|
+
{
|
|
2890
|
+
"task": "rule-audit/python/nan-hidden-by-builtin-min",
|
|
2891
|
+
"family": "python",
|
|
2892
|
+
"ruleId": "nan-hidden-by-builtin-min",
|
|
2893
|
+
"state": "pending",
|
|
2894
|
+
"evidence": "Native min/max witnesses reproduce order-dependent masking of a floating NaN before a result-only finiteness check. Prior validation and deliberate NaN-ignoring APIs remain excluded. External encoder/array floating provenance remains an explicit false negative. Fresh revision 4 matched full-registry qualification after the upstream Python/SQL runtime integration of the six new owners has 14 inspected true-positive findings, six labeled true-negative cases and two unsupported numeric positives. There are no inspected false positives, unclassified target findings, returned duplicate tuples, non-target changes or legacy-owner changes. Fifty hash-ranked Python files, ten workflows and nine retained historical self-source controls have no target hits and remain unlabeled, not negatives or recall proof. All 34 workers and 68 analyses complete. Native preflight passes 1,729 Python metadata/new/legacy cases and 584 text cases including 91 Slack cases, with clean strict types and no blocking lint findings. All timing pairs and available process/child RSS are retained; shared-VM variation supplies no causal speedup or general overhead bound. See packages/standards/benchmarks/source-audit-python-slack-qualification-20261026.json. Canonical verification, independent commit review and required head CI remain separate delivery gates; field calibration stays pending. Earlier revision 3 raw observations remain historical. Bytecode caches are not normalized, so first-analysis and cold-total timings do not establish cold-start costs or causal speedups. A later incoming scoped-React parser change is qualified by a separate fresh workflow-only revision5 against its exact new baseline. All10workers/20analyses complete with the same originalSlack1/repair0,1TP/1TN,ten unlabeled sample zeroes and no inspectedFP/non-target changes/unknown/parser failures/duplicate tuples/repeat drift. These confirm existing cases and do not increase combined14TP/6TN totals. Three paired workflow rounds retain all timing/RSS observations; shared-VM and unnormalized caches prevent causal speedup or a worst-case bound. Original Pythonv4/TSv3 and the original full report retain their exact historical timing frames; old Python startup timers also hash changed Standards source, so whole-worker current equivalence is not claimed. Incoming complete native2file lint/types and364React tests pass; full direct canonical verification, normal hooks, immutable-commit review and exact-head requiredCI remain separate. A subsequent two-path verification-only Makefile/mise integration preserves every measured runtime/fixture/worker byte and actualnpm12.2.1 identity. Workflowrevision5 retains its d4d baseline/timestamps; no second benchmark or timing repin is claimed. Qualification preserves the original make's three successful native phases, six completed test groups, exit code 2 and failed fourth phase at their original tree. An exact upstream input comparison carries forward only source-compatible completed checks; fresh affected preflights, Standards tests, TypeScript configuration and repository/privacy/shell checks complete under the current final shared native lease. Every test group was actually executed; an older TypeScript result was not substituted. Inputs outside the reviewed transition remain unchanged. PYTEST_ARGS and PYTEST_ADDOPTS remain empty. The earlier evidence-only tree is linked by an exact scalar transition and fresh metadata checks. A subsequent authored-ESLint hook helper and regression-test repair suppresses only native file-ignored notices; real rule warnings and errors remain blocking. Exact input comparisons and fresh targeted native checks qualify that verification-only repair and these evidence clarifications without repeating unchanged engine tests. No earlier make is claimed to have executed these later changes. Earlier qualification counts and measurements remain historical; see post_a5_reconciliation in source-audit-rule-admission-20261026.json for the integrated source scope and separate verification requirements.",
|
|
2895
|
+
"outcome": "Stage SARJ539 at WARNING without autofix. Require known floating candidates and a result-only finiteness rejection guard; preserve prior validation and deliberate NaN-ignoring APIs."
|
|
2896
|
+
},
|
|
2897
|
+
{
|
|
2898
|
+
"task": "rule-audit/python/async-executor-shutdown",
|
|
2899
|
+
"family": "python",
|
|
2900
|
+
"ruleId": "async-executor-shutdown",
|
|
2901
|
+
"state": "pending",
|
|
2902
|
+
"evidence": "Import-proven executor construction and a direct waiting shutdown in an async body supply the bounded event-loop blocking proof. Custom receivers, opaque mutation, offloaded calls and nonwaiting policies remain excluded. Fresh revision 4 matched full-registry qualification after the upstream Python/SQL runtime integration of the six new owners has 14 inspected true-positive findings, six labeled true-negative cases and two unsupported numeric positives. There are no inspected false positives, unclassified target findings, returned duplicate tuples, non-target changes or legacy-owner changes. Fifty hash-ranked Python files, ten workflows and nine retained historical self-source controls have no target hits and remain unlabeled, not negatives or recall proof. All 34 workers and 68 analyses complete. Native preflight passes 1,729 Python metadata/new/legacy cases and 584 text cases including 91 Slack cases, with clean strict types and no blocking lint findings. All timing pairs and available process/child RSS are retained; shared-VM variation supplies no causal speedup or general overhead bound. See packages/standards/benchmarks/source-audit-python-slack-qualification-20261026.json. Canonical verification, independent commit review and required head CI remain separate delivery gates; field calibration stays pending. Earlier revision 3 raw observations remain historical. Bytecode caches are not normalized, so first-analysis and cold-total timings do not establish cold-start costs or causal speedups. A later incoming scoped-React parser change is qualified by a separate fresh workflow-only revision5 against its exact new baseline. All10workers/20analyses complete with the same originalSlack1/repair0,1TP/1TN,ten unlabeled sample zeroes and no inspectedFP/non-target changes/unknown/parser failures/duplicate tuples/repeat drift. These confirm existing cases and do not increase combined14TP/6TN totals. Three paired workflow rounds retain all timing/RSS observations; shared-VM and unnormalized caches prevent causal speedup or a worst-case bound. Original Pythonv4/TSv3 and the original full report retain their exact historical timing frames; old Python startup timers also hash changed Standards source, so whole-worker current equivalence is not claimed. Incoming complete native2file lint/types and364React tests pass; full direct canonical verification, normal hooks, immutable-commit review and exact-head requiredCI remain separate. A subsequent two-path verification-only Makefile/mise integration preserves every measured runtime/fixture/worker byte and actualnpm12.2.1 identity. Workflowrevision5 retains its d4d baseline/timestamps; no second benchmark or timing repin is claimed. Qualification preserves the original make's three successful native phases, six completed test groups, exit code 2 and failed fourth phase at their original tree. An exact upstream input comparison carries forward only source-compatible completed checks; fresh affected preflights, Standards tests, TypeScript configuration and repository/privacy/shell checks complete under the current final shared native lease. Every test group was actually executed; an older TypeScript result was not substituted. Inputs outside the reviewed transition remain unchanged. PYTEST_ARGS and PYTEST_ADDOPTS remain empty. The earlier evidence-only tree is linked by an exact scalar transition and fresh metadata checks. A subsequent authored-ESLint hook helper and regression-test repair suppresses only native file-ignored notices; real rule warnings and errors remain blocking. Exact input comparisons and fresh targeted native checks qualify that verification-only repair and these evidence clarifications without repeating unchanged engine tests. No earlier make is claimed to have executed these later changes. Earlier qualification counts and measurements remain historical; see post_a5_reconciliation in source-audit-rule-admission-20261026.json for the integrated source scope and separate verification requirements.",
|
|
2903
|
+
"outcome": "Stage SARJ540 at WARNING without autofix. Require import-proven executor construction and a direct waiting shutdown in an async body; preserve custom receivers and offloaded or nonwaiting policies."
|
|
2904
|
+
},
|
|
2905
|
+
{
|
|
2906
|
+
"task": "rule-audit/python/cancel-owned-task-without-join",
|
|
2907
|
+
"family": "python",
|
|
2908
|
+
"ruleId": "cancel-owned-task-without-join",
|
|
2909
|
+
"state": "pending",
|
|
2910
|
+
"evidence": "A locally owned native task is cancelled without a proven settlement boundary. Escapes, borrowed handles, observations, joins, eager factories and opaque supervision remain excluded. Cleanup errors and repeated-cancellation policy require manual review. Fresh revision 4 matched full-registry qualification after the upstream Python/SQL runtime integration of the six new owners has 14 inspected true-positive findings, six labeled true-negative cases and two unsupported numeric positives. There are no inspected false positives, unclassified target findings, returned duplicate tuples, non-target changes or legacy-owner changes. Fifty hash-ranked Python files, ten workflows and nine retained historical self-source controls have no target hits and remain unlabeled, not negatives or recall proof. All 34 workers and 68 analyses complete. Native preflight passes 1,729 Python metadata/new/legacy cases and 584 text cases including 91 Slack cases, with clean strict types and no blocking lint findings. All timing pairs and available process/child RSS are retained; shared-VM variation supplies no causal speedup or general overhead bound. See packages/standards/benchmarks/source-audit-python-slack-qualification-20261026.json. Canonical verification, independent commit review and required head CI remain separate delivery gates; field calibration stays pending. Earlier revision 3 raw observations remain historical. Bytecode caches are not normalized, so first-analysis and cold-total timings do not establish cold-start costs or causal speedups. A later incoming scoped-React parser change is qualified by a separate fresh workflow-only revision5 against its exact new baseline. All10workers/20analyses complete with the same originalSlack1/repair0,1TP/1TN,ten unlabeled sample zeroes and no inspectedFP/non-target changes/unknown/parser failures/duplicate tuples/repeat drift. These confirm existing cases and do not increase combined14TP/6TN totals. Three paired workflow rounds retain all timing/RSS observations; shared-VM and unnormalized caches prevent causal speedup or a worst-case bound. Original Pythonv4/TSv3 and the original full report retain their exact historical timing frames; old Python startup timers also hash changed Standards source, so whole-worker current equivalence is not claimed. Incoming complete native2file lint/types and364React tests pass; full direct canonical verification, normal hooks, immutable-commit review and exact-head requiredCI remain separate. A subsequent two-path verification-only Makefile/mise integration preserves every measured runtime/fixture/worker byte and actualnpm12.2.1 identity. Workflowrevision5 retains its d4d baseline/timestamps; no second benchmark or timing repin is claimed. Qualification preserves the original make's three successful native phases, six completed test groups, exit code 2 and failed fourth phase at their original tree. An exact upstream input comparison carries forward only source-compatible completed checks; fresh affected preflights, Standards tests, TypeScript configuration and repository/privacy/shell checks complete under the current final shared native lease. Every test group was actually executed; an older TypeScript result was not substituted. Inputs outside the reviewed transition remain unchanged. PYTEST_ARGS and PYTEST_ADDOPTS remain empty. The earlier evidence-only tree is linked by an exact scalar transition and fresh metadata checks. A subsequent authored-ESLint hook helper and regression-test repair suppresses only native file-ignored notices; real rule warnings and errors remain blocking. Exact input comparisons and fresh targeted native checks qualify that verification-only repair and these evidence clarifications without repeating unchanged engine tests. No earlier make is claimed to have executed these later changes. Earlier qualification counts and measurements remain historical; see post_a5_reconciliation in source-audit-rule-admission-20261026.json for the integrated source scope and separate verification requirements.",
|
|
2911
|
+
"outcome": "Stage SARJ536 at WARNING without autofix. Advise settlement of a proven locally owned child; cleanup error and repeated-cancellation policy require manual review."
|
|
2912
|
+
},
|
|
2913
|
+
{
|
|
2914
|
+
"task": "rule-audit/text/slack-event-text-in-mrkdwn",
|
|
2915
|
+
"family": "text",
|
|
2916
|
+
"ruleId": "slack-event-text-in-mrkdwn",
|
|
2917
|
+
"state": "pending",
|
|
2918
|
+
"evidence": "A closed PR-event environment binding flows through one unchanged jq constructor/output into an official Slack action section-markup sink. Literal invocation boundaries, raw builder bytes and native constructor whitespace have precision controls; public bad/good examples use maintained companion scripts and pass the strict all-rule example suite. Arbitrary mrkdwn fields, unknown transformations and dynamic transports remain unsupported; the workflow sample contains no literal official Slack action and does not measure the positive Slack flow. Fresh revision 4 matched full-registry qualification after the upstream Python/SQL runtime integration of the six new owners has 14 inspected true-positive findings, six labeled true-negative cases and two unsupported numeric positives. There are no inspected false positives, unclassified target findings, returned duplicate tuples, non-target changes or legacy-owner changes. Fifty hash-ranked Python files, ten workflows and nine retained historical self-source controls have no target hits and remain unlabeled, not negatives or recall proof. All 34 workers and 68 analyses complete. Native preflight passes 1,729 Python metadata/new/legacy cases and 584 text cases including 91 Slack cases, with clean strict types and no blocking lint findings. All timing pairs and available process/child RSS are retained; shared-VM variation supplies no causal speedup or general overhead bound. See packages/standards/benchmarks/source-audit-python-slack-qualification-20261026.json. Canonical verification, independent commit review and required head CI remain separate delivery gates; field calibration stays pending. Earlier revision 3 raw observations remain historical. Bytecode caches are not normalized, so first-analysis and cold-total timings do not establish cold-start costs or causal speedups. A later incoming scoped-React parser change is qualified by a separate fresh workflow-only revision5 against its exact new baseline. All10workers/20analyses complete with the same originalSlack1/repair0,1TP/1TN,ten unlabeled sample zeroes and no inspectedFP/non-target changes/unknown/parser failures/duplicate tuples/repeat drift. These confirm existing cases and do not increase combined14TP/6TN totals. Three paired workflow rounds retain all timing/RSS observations; shared-VM and unnormalized caches prevent causal speedup or a worst-case bound. Original Pythonv4/TSv3 and the original full report retain their exact historical timing frames; old Python startup timers also hash changed Standards source, so whole-worker current equivalence is not claimed. Incoming complete native2file lint/types and364React tests pass; full direct canonical verification, normal hooks, immutable-commit review and exact-head requiredCI remain separate. A subsequent two-path verification-only Makefile/mise integration preserves every measured runtime/fixture/worker byte and actualnpm12.2.1 identity. Workflowrevision5 retains its d4d baseline/timestamps; no second benchmark or timing repin is claimed. Qualification preserves the original make's three successful native phases, six completed test groups, exit code 2 and failed fourth phase at their original tree. An exact upstream input comparison carries forward only source-compatible completed checks; fresh affected preflights, Standards tests, TypeScript configuration and repository/privacy/shell checks complete under the current final shared native lease. Every test group was actually executed; an older TypeScript result was not substituted. Inputs outside the reviewed transition remain unchanged. PYTEST_ARGS and PYTEST_ADDOPTS remain empty. The earlier evidence-only tree is linked by an exact scalar transition and fresh metadata checks. A subsequent authored-ESLint hook helper and regression-test repair suppresses only native file-ignored notices; real rule warnings and errors remain blocking. Exact input comparisons and fresh targeted native checks qualify that verification-only repair and these evidence clarifications without repeating unchanged engine tests. No earlier make is claimed to have executed these later changes. Earlier qualification counts and measurements remain historical; see post_a5_reconciliation in source-audit-rule-admission-20261026.json for the integrated source scope and separate verification requirements.",
|
|
2919
|
+
"outcome": "Stage SARJ316 at WARNING without autofix. Prove event input through the unchanged jq output to Slack section markup; arbitrary JSON mrkdwn fields do not qualify. Unknown transformations and unselected workflow callers remain unsupported."
|
|
2920
|
+
},
|
|
2921
|
+
{
|
|
2922
|
+
"task": "rule-audit/python/async-subprocess-cancellation-cleanup",
|
|
2923
|
+
"family": "python",
|
|
2924
|
+
"ruleId": "async-subprocess-cancellation-cleanup",
|
|
2925
|
+
"state": "pending",
|
|
2926
|
+
"evidence": "Locally owned asyncio children need cancellation settlement under the application policy. Standalone warning owner SARJ537 preserves the byte-identical synchronous SARJ464 ERROR owner and its native public-example contract. The corpus contains no legacy synchronous finding; preservation also relies on the separate native controls. There is no automatic termination or pipe-handling rewrite. Fresh revision 4 matched full-registry qualification after the upstream Python/SQL runtime integration of the six new owners has 14 inspected true-positive findings, six labeled true-negative cases and two unsupported numeric positives. There are no inspected false positives, unclassified target findings, returned duplicate tuples, non-target changes or legacy-owner changes. Fifty hash-ranked Python files, ten workflows and nine retained historical self-source controls have no target hits and remain unlabeled, not negatives or recall proof. All 34 workers and 68 analyses complete. Native preflight passes 1,729 Python metadata/new/legacy cases and 584 text cases including 91 Slack cases, with clean strict types and no blocking lint findings. All timing pairs and available process/child RSS are retained; shared-VM variation supplies no causal speedup or general overhead bound. See packages/standards/benchmarks/source-audit-python-slack-qualification-20261026.json. Canonical verification, independent commit review and required head CI remain separate delivery gates; field calibration stays pending. Earlier revision 3 raw observations remain historical. Bytecode caches are not normalized, so first-analysis and cold-total timings do not establish cold-start costs or causal speedups. A later incoming scoped-React parser change is qualified by a separate fresh workflow-only revision5 against its exact new baseline. All10workers/20analyses complete with the same originalSlack1/repair0,1TP/1TN,ten unlabeled sample zeroes and no inspectedFP/non-target changes/unknown/parser failures/duplicate tuples/repeat drift. These confirm existing cases and do not increase combined14TP/6TN totals. Three paired workflow rounds retain all timing/RSS observations; shared-VM and unnormalized caches prevent causal speedup or a worst-case bound. Original Pythonv4/TSv3 and the original full report retain their exact historical timing frames; old Python startup timers also hash changed Standards source, so whole-worker current equivalence is not claimed. Incoming complete native2file lint/types and364React tests pass; full direct canonical verification, normal hooks, immutable-commit review and exact-head requiredCI remain separate. A subsequent two-path verification-only Makefile/mise integration preserves every measured runtime/fixture/worker byte and actualnpm12.2.1 identity. Workflowrevision5 retains its d4d baseline/timestamps; no second benchmark or timing repin is claimed. Qualification preserves the original make's three successful native phases, six completed test groups, exit code 2 and failed fourth phase at their original tree. An exact upstream input comparison carries forward only source-compatible completed checks; fresh affected preflights, Standards tests, TypeScript configuration and repository/privacy/shell checks complete under the current final shared native lease. Every test group was actually executed; an older TypeScript result was not substituted. Inputs outside the reviewed transition remain unchanged. PYTEST_ARGS and PYTEST_ADDOPTS remain empty. The earlier evidence-only tree is linked by an exact scalar transition and fresh metadata checks. A subsequent authored-ESLint hook helper and regression-test repair suppresses only native file-ignored notices; real rule warnings and errors remain blocking. Exact input comparisons and fresh targeted native checks qualify that verification-only repair and these evidence clarifications without repeating unchanged engine tests. No earlier make is claimed to have executed these later changes. Earlier qualification counts and measurements remain historical; see post_a5_reconciliation in source-audit-rule-admission-20261026.json for the integrated source scope and separate verification requirements.",
|
|
2927
|
+
"outcome": "Stage SARJ537 at WARNING without autofix. Prove exclusive ownership, preserve all cancellation/provenance exclusions, verify registry/ledger/public examples, and require native qualification, canonical checks, independent exact-commit review and exact-head CI. Field calibration remains pending."
|
|
2880
2928
|
}
|
|
2881
2929
|
]
|
|
2882
2930
|
}
|
|
@@ -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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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.136.2 → code_standards-8.141.0}/src/sarj_standards/configs/rule-ledger.json
RENAMED
|
@@ -25,7 +25,10 @@
|
|
|
25
25
|
"rules": {
|
|
26
26
|
"python": [
|
|
27
27
|
"async-cleanup-registered-synchronously",
|
|
28
|
+
"async-executor-shutdown",
|
|
28
29
|
"async-mock-call-without-await-assertion",
|
|
30
|
+
"async-subprocess-cancellation-cleanup",
|
|
31
|
+
"cancel-owned-task-without-join",
|
|
29
32
|
"complex-postgres-query-requires-architecture-review",
|
|
30
33
|
"defect-xfail-requires-explicit-strict",
|
|
31
34
|
"delete-route-returns-no-content",
|
|
@@ -35,6 +38,7 @@
|
|
|
35
38
|
"duplicate-closed-pure-helper",
|
|
36
39
|
"duplicate-pytest-fixture-params",
|
|
37
40
|
"excessive-commentary",
|
|
41
|
+
"failed-probe-zero-threshold",
|
|
38
42
|
"fakes-in-shared-location",
|
|
39
43
|
"fastapi-class-router-contract",
|
|
40
44
|
"fastapi-explicit-openapi-contract",
|
|
@@ -42,6 +46,7 @@
|
|
|
42
46
|
"invalid-pydantic-field-default",
|
|
43
47
|
"mock-without-spec",
|
|
44
48
|
"named-record-at-boundaries",
|
|
49
|
+
"nan-hidden-by-builtin-min",
|
|
45
50
|
"negative-only-http-status-assertion",
|
|
46
51
|
"no-analytical-aggregation-in-postgres-store",
|
|
47
52
|
"no-any-mapping-types",
|
|
@@ -394,6 +399,7 @@
|
|
|
394
399
|
"large-shell-program",
|
|
395
400
|
"no-unsafe-command-argument-interpolation",
|
|
396
401
|
"no-wildcard-secret-read-permission",
|
|
402
|
+
"slack-event-text-in-mrkdwn",
|
|
397
403
|
"workflow-embedded-program"
|
|
398
404
|
]
|
|
399
405
|
},
|
|
@@ -581,7 +587,12 @@
|
|
|
581
587
|
"SARJ529",
|
|
582
588
|
"SARJ530",
|
|
583
589
|
"SARJ531",
|
|
584
|
-
"SARJ532"
|
|
590
|
+
"SARJ532",
|
|
591
|
+
"SARJ536",
|
|
592
|
+
"SARJ537",
|
|
593
|
+
"SARJ538",
|
|
594
|
+
"SARJ539",
|
|
595
|
+
"SARJ540"
|
|
585
596
|
],
|
|
586
597
|
"sql": [
|
|
587
598
|
"SARJ101",
|
|
@@ -635,7 +646,8 @@
|
|
|
635
646
|
"SARJ309",
|
|
636
647
|
"SARJ310",
|
|
637
648
|
"SARJ311",
|
|
638
|
-
"SARJ315"
|
|
649
|
+
"SARJ315",
|
|
650
|
+
"SARJ316"
|
|
639
651
|
]
|
|
640
652
|
},
|
|
641
653
|
"retired": [
|