code-standards 8.147.21__tar.gz → 8.151.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {code_standards-8.147.21 → code_standards-8.151.0}/PKG-INFO +7 -5
- {code_standards-8.147.21 → code_standards-8.151.0}/README.md +2 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/pyproject.toml +5 -5
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/api.py +19 -6
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/cli-reference.v1.json +2 -2
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/rule-calibration-campaign.v1.json +96 -0
- code_standards-8.151.0/src/sarj_standards/configs/rule-inventory.v1.json +1 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/rule-ledger.json +26 -2
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/adoption/devops.py +4 -4
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/adoption/manifest.py +2 -2
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/diagnostics/analysis.schema.json +2 -1
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/diagnostics/models.py +45 -14
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/diagnostics/serialize.py +5 -2
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/diagnostics/source.py +8 -2
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/action_metadata.py +6 -6
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/analysis.py +82 -23
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/devops_source.py +9 -9
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/devops_tools.py +17 -14
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/duplicate_code.py +3 -3
- code_standards-8.151.0/src/sarj_standards/libs/linting/execution_plan.py +59 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/external.py +300 -199
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/prepared_devops.py +17 -7
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/prepared_native.py +3 -3
- code_standards-8.151.0/src/sarj_standards/libs/linting/process.py +114 -0
- code_standards-8.151.0/src/sarj_standards/libs/linting/scheduling.py +38 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/unused_modules.py +3 -3
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/docs.py +17 -2
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/rule_changes.py +3 -0
- code_standards-8.151.0/src/sarj_standards/schemas/rule-catalog.v1.json +1 -0
- code_standards-8.147.21/src/sarj_standards/configs/rule-inventory.v1.json +0 -1
- code_standards-8.147.21/src/sarj_standards/libs/linting/scheduling.py +0 -41
- code_standards-8.147.21/src/sarj_standards/schemas/rule-catalog.v1.json +0 -1
- {code_standards-8.147.21 → code_standards-8.151.0}/.gitignore +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/LICENSE +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/__init__.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/__main__.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/_meta.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/cli/__init__.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/cli/main.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/Mintfile.mobile.strict +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/action-parser/LICENSE.actions +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/action-parser/LICENSE.cronstrue +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/action-parser/LICENSE.yaml +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/action-parser/generate.mts +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/action-parser/index.mts +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/action-parser/package-lock.json +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/action-parser/package.json +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/action-parser/upstream.json +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/action-parser.cjs +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/actionlint.strict.yaml +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/basedpyright.python315-watch.json +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/basedpyright.strict.json +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/checkov.strict.yml +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/compile-eslint.mts +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/detekt.strict.yml +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/devops-verification.v1.json +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/doctor.config.json +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/eslint-compact-formatter.mts +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/eslint-required-policy.mts +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/eslint-selected-rules.mts +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/eslint.application.mjs +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/eslint.peers.json +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/eslint.strict.mjs +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/eslint.strict.ts +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/hadolint.strict.yaml +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/ktlint.strict.editorconfig +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/markdownlint.strict.yaml +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/mobile-tools.versions.json +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/mobsf.strict.yml +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/pyright.strict.json +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/ruff.application.toml +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/ruff.cast.toml +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/ruff.python315-watch.toml +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/ruff.required.toml +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/ruff.strict.toml +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/rule-level-source.mts +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/schemas/SKAFFOLD-LICENSE +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/schemas/google-build-v1-schema.json +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/schemas/google-build-v1.LICENSE +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/schemas/skaffold-v4beta7.json +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/schemas/upstream-schemas.json +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/semgrep-overrides.txt +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/shellcheck.strict.rc +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/swiftformat.strict +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/swiftlint.strict.yml +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/taplo.strict.toml +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/tflint.strict.hcl +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/tflint.version.hcl +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/tool-json.mts +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/yamllint.strict.yaml +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/configs/zizmor.strict.yml +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/__init__.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/adoption/__init__.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/adoption/age_transition.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/adoption/configs.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/adoption/doctor.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/adoption/exclusions.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/adoption/hooks.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/adoption/launcher.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/adoption/lifecycle.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/adoption/native_bootstrap.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/adoption/packagemanager.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/adoption/repository_baseline.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/adoption/retired_suppressions.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/adoption/scaffold.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/adoption/service.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/adoption/transaction.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/adoption/upgrade.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/adoption/uvtool.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/catalogs/__init__.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/catalogs/slack_automations.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/corpus/__init__.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/corpus/manifest.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/corpus/snapshot.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/diagnostics/__init__.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/diagnostics/baseline.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/diagnostics/initial_import.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/filesystem.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/json_boundary.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/__init__.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/_cloudbuild_autofix.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/autofix.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/chart_schemas.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/cloudbuild.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/cloudbuild_schema.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/complexity_baseline.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/devops_programs.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/devops_schema.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/embedded_shell.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/kubernetes_context.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/library_policy.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/mobile_tools.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/policy.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/prepared_kubernetes.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/python_fixes.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/repo_standards.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/runner.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/security_tools.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/shell_ast.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/shell_format.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/shell_policy.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/test_value.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/text_rule_base.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/text_rules/__init__.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/text_rules/_registry.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/text_rules/_slack_payload.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/text_rules/cloudbuild_contract.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/text_rules/slack_event_text_in_mrkdwn.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/textlint.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/linting/toml_literals.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/__init__.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/_values.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/artifacts.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/causality.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/changes.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/ci_artifacts.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/make_checks.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/metadata_verification.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/native_test_setup.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/process.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/publish.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/registry.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/release_age.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/release_detect.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/retirement.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/reviewed_analysis.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/rollout.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/status.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/tags.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/test_selection.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/typescript.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/verification_process.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/release/wheel_tests.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/__init__.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/cli_examples.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/cli_reference_artifact.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/cloudbuild_schema_projection.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/comment_corpus.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/config_generation.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/hooks.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/immutable_git.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/ledger.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/repository.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/ruff_freshness.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/rule_authoring.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/rule_catalog_artifact.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/rule_checkout.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/rule_dependencies.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/rule_examples.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/rule_imports.mts +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/rule_inventory_artifact.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/rule_level_source.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/rule_lifecycle.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/rule_maintenance.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/rule_registration.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/shell_checks.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/repository/third_party_catalog_artifact.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/rules/__init__.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/rules/catalog.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/rules/contracts.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/rules/corpus_runner.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/rules/evaluation.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/schema_boundary.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/setup/__init__.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/setup/repository.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/typed_containers.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/libs/yaml_boundary.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/py.typed +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/schemas/__init__.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/schemas/_paths.py +0 -0
- {code_standards-8.147.21 → code_standards-8.151.0}/src/sarj_standards/schemas/rule-catalog.v1.schema.json +0 -0
- {code_standards-8.147.21 → code_standards-8.151.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.151.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/
|
|
@@ -30,10 +30,10 @@ Requires-Dist: pyyaml==6.0.3
|
|
|
30
30
|
Requires-Dist: referencing==0.37.0
|
|
31
31
|
Requires-Dist: repo-standards==6.14.0
|
|
32
32
|
Requires-Dist: ruff==0.17.2
|
|
33
|
-
Requires-Dist: sarj-iac-lint==0.
|
|
34
|
-
Requires-Dist: sarj-python-lint==1.
|
|
35
|
-
Requires-Dist: sarj-rule-contracts==0.
|
|
36
|
-
Requires-Dist: sarj-sql-lint==0.
|
|
33
|
+
Requires-Dist: sarj-iac-lint==0.31.0
|
|
34
|
+
Requires-Dist: sarj-python-lint==1.88.0
|
|
35
|
+
Requires-Dist: sarj-rule-contracts==0.5.0
|
|
36
|
+
Requires-Dist: sarj-sql-lint==0.33.0
|
|
37
37
|
Requires-Dist: shellcheck-py==0.11.0.1; (sys_platform == 'darwin' and platform_machine == 'arm64') or (sys_platform == 'darwin' and platform_machine == 'x86_64') or (sys_platform == 'linux' and platform_machine == 'x86_64') or (sys_platform == 'win32' and platform_machine == 'AMD64')
|
|
38
38
|
Requires-Dist: typer==0.27.3
|
|
39
39
|
Description-Content-Type: text/markdown
|
|
@@ -105,6 +105,8 @@ Unused private Python test helpers require `reportUnusedFunction` set to `warnin
|
|
|
105
105
|
|
|
106
106
|
`check --jobs 2` overlaps native analysis with the external-tool pipeline. The default is `--jobs 1`; external tools remain sequential and report ordering is deterministic.
|
|
107
107
|
|
|
108
|
+
Public Python suggested edits retain `expected_source_hash`, the lowercase SHA-256 digest of the exact captured source bytes, alongside `expected_text_hash` for the replaced slice. Use `to_json(report, include_fix_source_hashes=True)` or the same keyword on report, diagnostic, fix or edit `as_dict` to emit `expectedSourceHash`. The default JSON output is unchanged. Opted-in JSON requires the updated bundled `analysis.schema.json`; older strict v1 schemas reject the added field. This provenance does not apply edits or validate a current file, and SARIF output is unchanged.
|
|
109
|
+
|
|
108
110
|
DevOps execution blocks may sequence existing commands without helper scripts. Keep interpreter source, control flow, logical chains, pipelines and substitutions in independently linted files; Python `-m` and script paths, and jq/awk `-f` files remain supported. SARJ310 is an error, including short inline programs. Cloud Build SARJ315 checks YAML and JSON for unique IDs, ordered step dependencies, script/argv exclusivity and untrusted substitutions in shell source; pass substitutions as quoted arguments to external scripts. JSON configs are discovered in operational directories or with `cloudbuild` in their filename; JSON syntax must be strict, with unique keys and finite numbers. Files named with `cloudbuild`, and Build-shaped files under a `cloudbuild` directory, use the bundled, digest-verified Google Build v1 field schema for field names, types, enums and protobuf durations/integers. The offline schema rejects output-only fields; trigger expansion, resource access and hosted admission require the deployment environment.
|
|
109
111
|
|
|
110
112
|
The source gate uses pinned actionlint, shared ShellCheck, offline Zizmor, Hadolint and Skaffold v4beta7 schema validation. Every selected `action.yml`/`action.yaml` uses GitHub's pinned action parser and converter offline, including composite steps, expression syntax and available contexts, runtime requirements, step IDs and action-reference forms. This uses the core Node runtime and needs no referencing workflow, consumer npm setup or security capability. Cloud Deploy validation is a documented partial structural contract. Terraform validation and TFLint require explicit repository trust and prepared local providers; analysis never initializes or downloads them. Compose requires an exact consumer `[devops].compose_version`; its source check does not resolve environment inputs. Declare `compose_projects = [["base.yaml", "overlays/production.yaml"]]` in `[devops]` to validate custom filenames and overlays in invocation order. Selecting any member checks the whole project; declared fragments are not checked independently. Undeclared conventional filenames remain standalone projects. Missing inputs and native field errors fail coverage. Source checks use Compose's partially resolved model; full consistency requires the actual deployment environment.
|
|
@@ -65,6 +65,8 @@ Unused private Python test helpers require `reportUnusedFunction` set to `warnin
|
|
|
65
65
|
|
|
66
66
|
`check --jobs 2` overlaps native analysis with the external-tool pipeline. The default is `--jobs 1`; external tools remain sequential and report ordering is deterministic.
|
|
67
67
|
|
|
68
|
+
Public Python suggested edits retain `expected_source_hash`, the lowercase SHA-256 digest of the exact captured source bytes, alongside `expected_text_hash` for the replaced slice. Use `to_json(report, include_fix_source_hashes=True)` or the same keyword on report, diagnostic, fix or edit `as_dict` to emit `expectedSourceHash`. The default JSON output is unchanged. Opted-in JSON requires the updated bundled `analysis.schema.json`; older strict v1 schemas reject the added field. This provenance does not apply edits or validate a current file, and SARIF output is unchanged.
|
|
69
|
+
|
|
68
70
|
DevOps execution blocks may sequence existing commands without helper scripts. Keep interpreter source, control flow, logical chains, pipelines and substitutions in independently linted files; Python `-m` and script paths, and jq/awk `-f` files remain supported. SARJ310 is an error, including short inline programs. Cloud Build SARJ315 checks YAML and JSON for unique IDs, ordered step dependencies, script/argv exclusivity and untrusted substitutions in shell source; pass substitutions as quoted arguments to external scripts. JSON configs are discovered in operational directories or with `cloudbuild` in their filename; JSON syntax must be strict, with unique keys and finite numbers. Files named with `cloudbuild`, and Build-shaped files under a `cloudbuild` directory, use the bundled, digest-verified Google Build v1 field schema for field names, types, enums and protobuf durations/integers. The offline schema rejects output-only fields; trigger expansion, resource access and hosted admission require the deployment environment.
|
|
69
71
|
|
|
70
72
|
The source gate uses pinned actionlint, shared ShellCheck, offline Zizmor, Hadolint and Skaffold v4beta7 schema validation. Every selected `action.yml`/`action.yaml` uses GitHub's pinned action parser and converter offline, including composite steps, expression syntax and available contexts, runtime requirements, step IDs and action-reference forms. This uses the core Node runtime and needs no referencing workflow, consumer npm setup or security capability. Cloud Deploy validation is a documented partial structural contract. Terraform validation and TFLint require explicit repository trust and prepared local providers; analysis never initializes or downloads them. Compose requires an exact consumer `[devops].compose_version`; its source check does not resolve environment inputs. Declare `compose_projects = [["base.yaml", "overlays/production.yaml"]]` in `[devops]` to validate custom filenames and overlays in invocation order. Selecting any member checks the whole project; declared fragments are not checked independently. Undeclared conventional filenames remain standalone projects. Missing inputs and native field errors fail coverage. Source checks use Compose's partially resolved model; full consistency requires the actual deployment environment.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "code-standards"
|
|
3
|
-
version = "8.
|
|
3
|
+
version = "8.151.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"
|
|
@@ -17,7 +17,7 @@ classifiers = [
|
|
|
17
17
|
"Topic :: Software Development :: Quality Assurance",
|
|
18
18
|
]
|
|
19
19
|
dependencies = [
|
|
20
|
-
"sarj-rule-contracts==0.
|
|
20
|
+
"sarj-rule-contracts==0.5.0",
|
|
21
21
|
"pathspec==1.1.1",
|
|
22
22
|
"basedpyright==1.40.2",
|
|
23
23
|
"deptry==0.25.1",
|
|
@@ -31,9 +31,9 @@ dependencies = [
|
|
|
31
31
|
"repo-standards==6.14.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
|
-
"sarj-iac-lint==0.
|
|
35
|
-
"sarj-python-lint==1.
|
|
36
|
-
"sarj-sql-lint==0.
|
|
34
|
+
"sarj-iac-lint==0.31.0",
|
|
35
|
+
"sarj-python-lint==1.88.0",
|
|
36
|
+
"sarj-sql-lint==0.33.0",
|
|
37
37
|
"typer==0.27.3",
|
|
38
38
|
]
|
|
39
39
|
|
|
@@ -56,6 +56,7 @@ from .libs.diagnostics import (
|
|
|
56
56
|
from .libs.filesystem import is_link_like
|
|
57
57
|
from .libs.linting.analysis import analyze as analyze_paths, report_from_tools
|
|
58
58
|
from .libs.linting.complexity_baseline import ComplexityBaselineResolver
|
|
59
|
+
from .libs.linting.execution_plan import analysis_jobs
|
|
59
60
|
from .libs.linting.external import UpstreamESLintRules, analyze_external
|
|
60
61
|
from .libs.linting.library_policy import (
|
|
61
62
|
ManifestPolicyError,
|
|
@@ -137,6 +138,17 @@ class Result:
|
|
|
137
138
|
changes: tuple[Change, ...] = ()
|
|
138
139
|
exit_code: int = 0
|
|
139
140
|
|
|
141
|
+
def __post_init__(self) -> None:
|
|
142
|
+
if type(self.status) is not Status:
|
|
143
|
+
msg = "result status must be a Status"
|
|
144
|
+
raise TypeError(msg)
|
|
145
|
+
if isinstance(self.exit_code, bool) or not isinstance(self.exit_code, int): # pyright: ignore[reportUnnecessaryIsInstance] -- validate untyped public constructor and dataclass replacement calls as well as typed callers.
|
|
146
|
+
msg = "result exit code must be an integer"
|
|
147
|
+
raise TypeError(msg)
|
|
148
|
+
if (self.status in {Status.OK, Status.CHANGED}) != (self.exit_code == 0):
|
|
149
|
+
msg = "result status and exit code must agree on success"
|
|
150
|
+
raise ValueError(msg)
|
|
151
|
+
|
|
140
152
|
@property
|
|
141
153
|
def ok(self) -> bool:
|
|
142
154
|
return self.exit_code == 0
|
|
@@ -269,10 +281,9 @@ class Standards:
|
|
|
269
281
|
) -> AnalysisReport:
|
|
270
282
|
try:
|
|
271
283
|
import_context = initial_import.load(self.root, staged=staged)
|
|
284
|
+
analysis_jobs(jobs)
|
|
272
285
|
except ValueError as exc:
|
|
273
286
|
return _failed_analysis(self.root, "invalid-input", str(exc))
|
|
274
|
-
if jobs not in {1, 2}:
|
|
275
|
-
return _failed_analysis(self.root, "invalid-input", "analysis jobs must be 1 or 2")
|
|
276
287
|
external = external or bool(upstream_rules.ids)
|
|
277
288
|
try:
|
|
278
289
|
normalized_trust = TrustMode(trust)
|
|
@@ -300,7 +311,7 @@ class Standards:
|
|
|
300
311
|
try:
|
|
301
312
|
selection_policy = _selection_policy(self.root, adopted, normalized_mode)
|
|
302
313
|
rule_selection = _rule_selection(rules)
|
|
303
|
-
selected = _analysis_inputs(self.root, paths, mode=normalized_mode)
|
|
314
|
+
selected = _analysis_inputs(self.root, paths, adopted=adopted, mode=normalized_mode)
|
|
304
315
|
except (OSError, TypeError, ValueError) as exc:
|
|
305
316
|
return _failed_analysis(self.root, "invalid-input", str(exc))
|
|
306
317
|
try:
|
|
@@ -512,7 +523,8 @@ class Standards:
|
|
|
512
523
|
)
|
|
513
524
|
return Result(Status.FAILED, findings=(finding,), exit_code=1)
|
|
514
525
|
finding = Finding("update.latest.failed", "error", output or "latest standards update failed")
|
|
515
|
-
|
|
526
|
+
status = Status.INTERRUPTED if completed.returncode == _INTERRUPTED_EXIT else Status.FAILED
|
|
527
|
+
return Result(status, findings=(finding,), exit_code=completed.returncode)
|
|
516
528
|
|
|
517
529
|
def inspect(self) -> Inspection:
|
|
518
530
|
return inspect(self.root)
|
|
@@ -823,13 +835,14 @@ def _with_coverage(report: AnalysisReport, coverage: Sequence[CoverageNotice]) -
|
|
|
823
835
|
return AnalysisReport(report.root, completion, conclusion, report.tools, notices)
|
|
824
836
|
|
|
825
837
|
|
|
826
|
-
def _analysis_inputs(
|
|
838
|
+
def _analysis_inputs(
|
|
839
|
+
root: Path, paths: Sequence[str] | None, *, adopted: Manifest | None, mode: AnalysisMode
|
|
840
|
+
) -> list[str]:
|
|
827
841
|
if paths is not None:
|
|
828
842
|
selected = _contained_paths(root, paths)
|
|
829
843
|
return selected if mode is AnalysisMode.RAW else _with_tracked_terraform_tests(root, selected)
|
|
830
844
|
if mode is AnalysisMode.RAW:
|
|
831
845
|
return [str(root)]
|
|
832
|
-
adopted = load_manifest(root)
|
|
833
846
|
verify_paths = adopted.verify_paths if adopted is not None else (".",)
|
|
834
847
|
return _with_tracked_terraform_tests(root, [str(root / path) for path in verify_paths])
|
|
835
848
|
|
{code_standards-8.147.21 → code_standards-8.151.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.151.0).",
|
|
3320
|
+
"version": "8.151.0"
|
|
3321
3321
|
}
|
|
@@ -2949,6 +2949,102 @@
|
|
|
2949
2949
|
"state": "pending",
|
|
2950
2950
|
"evidence": "Known Any/object/JsonValue string mappings, unchecked JSON, local returns, aliases and chained reads have paired controls. Precise maps, TypedDicts, raw normalization callbacks and unproven receivers retain their documented boundaries. The pinned pre-integration record packages/python/benchmarks/typed-python-boundaries.json covers five affected rules with 111 valid labeled cases (51 TP, 60 TN, zero inspected FP/FN) and three explicit malformed-source rejections. Its repeated cold/warm measurements retain their historical source frame; they are not fleet-recall or combined-current-engine performance claims. Private source and identifying pins remain private. Broader field calibration remains pending.",
|
|
2951
2951
|
"outcome": "Ship SARJ535 at WARNING without autofix. Validate external data into named models and use precise trusted internal contracts. Preserve typed get calls and review missing-field/default behavior manually; field calibration remains pending."
|
|
2952
|
+
},
|
|
2953
|
+
{
|
|
2954
|
+
"task": "rule-audit/python/prefer-optional-composite",
|
|
2955
|
+
"family": "python",
|
|
2956
|
+
"ruleId": "prefer-optional-composite",
|
|
2957
|
+
"state": "pending",
|
|
2958
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover explicitly nullable field groups, annotation ownership, aliases, overlapping prefixes, and valid independent state. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
2959
|
+
"outcome": "SARJ541: Stage at WARNING without autofix. Review an optional composite without inferring joint presence from a name prefix; preserve public wire/schema contracts and independent nullability. Full campaign completion is not claimed."
|
|
2960
|
+
},
|
|
2961
|
+
{
|
|
2962
|
+
"task": "rule-audit/python/no-custom-control-flow-exception",
|
|
2963
|
+
"family": "python",
|
|
2964
|
+
"ruleId": "no-custom-control-flow-exception",
|
|
2965
|
+
"state": "pending",
|
|
2966
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover directly raised name-only local exceptions, stable identities, payload-bearing exceptions, validator protocols, and exact suppressions. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
2967
|
+
"outcome": "SARJ542: Stage at WARNING without autofix. Consider typed outcomes for expected domain failures while preserving framework validation, cancellation, unwinding, and genuine exceptional protocols. Full campaign completion is not claimed."
|
|
2968
|
+
},
|
|
2969
|
+
{
|
|
2970
|
+
"task": "rule-audit/python/no-redundant-sql-alias",
|
|
2971
|
+
"family": "python",
|
|
2972
|
+
"ruleId": "no-redundant-sql-alias",
|
|
2973
|
+
"state": "pending",
|
|
2974
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover direct same-name SQL aliases, quoted identifiers, recoverable Psycopg SQL, namespace mutations, and exact suppressions. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
2975
|
+
"outcome": "SARJ543: Stage at WARNING without autofix. Review only proven redundant projection or table aliases; preserve different output names, unresolved expressions, and dynamic SQL identities. Full campaign completion is not claimed."
|
|
2976
|
+
},
|
|
2977
|
+
{
|
|
2978
|
+
"task": "rule-audit/python/no-recording-store",
|
|
2979
|
+
"family": "python",
|
|
2980
|
+
"ruleId": "no-recording-store",
|
|
2981
|
+
"state": "pending",
|
|
2982
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover source-visible get/upsert contracts, recording implementations, value construction, delegated spies, unknown effects, and exact suppressions. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
2983
|
+
"outcome": "SARJ544: Stage at WARNING without autofix. Prefer isolated PostgreSQL fixtures for recording-only persistence doubles; preserve real delegation, SQL-backed stores, and unsupported contracts. Full campaign completion is not claimed."
|
|
2984
|
+
},
|
|
2985
|
+
{
|
|
2986
|
+
"task": "rule-audit/python/prefer-application-model-joins",
|
|
2987
|
+
"family": "python",
|
|
2988
|
+
"ruleId": "prefer-application-model-joins",
|
|
2989
|
+
"state": "pending",
|
|
2990
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover distinct concrete relations, same-relation joins, query ownership, unresolved fragments, lock-sensitive shapes, and exact suppressions. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
2991
|
+
"outcome": "SARJ545: Stage at WARNING without autofix. Treat distinct-relation joins as architecture review candidates; preserve atomicity, consistency, lock scope, and justified database joins. Full campaign completion is not claimed."
|
|
2992
|
+
},
|
|
2993
|
+
{
|
|
2994
|
+
"task": "rule-audit/python/store-mutation-command-fanout",
|
|
2995
|
+
"family": "python",
|
|
2996
|
+
"ruleId": "store-mutation-command-fanout",
|
|
2997
|
+
"state": "pending",
|
|
2998
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover model write commands beside mutation-method fanout, delegation, distinct contracts, unsupported method shapes, and exact suppressions. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
2999
|
+
"outcome": "SARJ546: Stage at WARNING without autofix. Review consolidation around the existing model write command while preserving update-only, partial-update, concurrency, and distinct command semantics. Full campaign completion is not claimed."
|
|
3000
|
+
},
|
|
3001
|
+
{
|
|
3002
|
+
"task": "rule-audit/python/store-insert-requires-explicit-conflict-policy",
|
|
3003
|
+
"family": "python",
|
|
3004
|
+
"ruleId": "store-insert-requires-explicit-conflict-policy",
|
|
3005
|
+
"state": "pending",
|
|
3006
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover store INSERTs without SQL ON CONFLICT, supported query wrappers, insert-select shapes, explicit policies, and exact suppressions. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
3007
|
+
"outcome": "SARJ547: Stage at WARNING without autofix. Require review of missing SQL ON CONFLICT regardless of the Python method name; choose conflict targets and duplicate behavior explicitly. Full campaign completion is not claimed."
|
|
3008
|
+
},
|
|
3009
|
+
{
|
|
3010
|
+
"task": "rule-audit/python/no-discarded-tagged-outcome",
|
|
3011
|
+
"family": "python",
|
|
3012
|
+
"ruleId": "no-discarded-tagged-outcome",
|
|
3013
|
+
"state": "pending",
|
|
3014
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover discarded module-function outcomes, string-tagged record proofs, prepared imports, rebinding, class shadows, async calls, and consumed values. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
3015
|
+
"outcome": "SARJ548: Stage at WARNING without autofix. Use or forward source-proven tagged outcomes; consuming a value does not prove exhaustive handling. Preserve unknown methods, generic contracts, and unresolved providers. Full campaign completion is not claimed."
|
|
3016
|
+
},
|
|
3017
|
+
{
|
|
3018
|
+
"task": "rule-audit/sql/combine-alter-table",
|
|
3019
|
+
"family": "sql",
|
|
3020
|
+
"ruleId": "combine-alter-table",
|
|
3021
|
+
"state": "pending",
|
|
3022
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover adjacent compatible ALTER actions, exact relation identity, transaction/section boundaries, modifiers, dependencies, and exact suppressions. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
3023
|
+
"outcome": "SARJ123: Retain the explicitly approved ERROR policy without autofix. Combine only proven compatible adjacent ALTER TABLE statements; preserve command, migration, relation, and dependency boundaries. Full campaign completion is not claimed."
|
|
3024
|
+
},
|
|
3025
|
+
{
|
|
3026
|
+
"task": "rule-audit/sql/no-null-comparison",
|
|
3027
|
+
"family": "sql",
|
|
3028
|
+
"ruleId": "no-null-comparison",
|
|
3029
|
+
"state": "pending",
|
|
3030
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover ordinary NULL comparisons, NULL-bearing scalar NOT IN lists, valid row cases, parser boundaries, and exact suppressions. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
3031
|
+
"outcome": "SARJ124: Stage at WARNING without autofix. Review explicit NULL intent while preserving PostgreSQL three-valued logic, row semantics, and unsupported expression boundaries. Full campaign completion is not claimed."
|
|
3032
|
+
},
|
|
3033
|
+
{
|
|
3034
|
+
"task": "rule-audit/sql/invalid-concurrent-ddl",
|
|
3035
|
+
"family": "sql",
|
|
3036
|
+
"ruleId": "invalid-concurrent-ddl",
|
|
3037
|
+
"state": "pending",
|
|
3038
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover complete concurrent DDL forms, explicit transaction contexts, multiple-index restrictions, valid options, and exact suppressions. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
3039
|
+
"outcome": "SARJ125: Stage at WARNING without autofix. Report source-proven invalid concurrent DDL contexts/options; preserve valid PostgreSQL forms and unknown caller or migration-runner contexts. Full campaign completion is not claimed."
|
|
3040
|
+
},
|
|
3041
|
+
{
|
|
3042
|
+
"task": "rule-audit/sql/invalid-postgres-ddl",
|
|
3043
|
+
"family": "sql",
|
|
3044
|
+
"ruleId": "invalid-postgres-ddl",
|
|
3045
|
+
"state": "pending",
|
|
3046
|
+
"evidence": "2026-10-28 bounded SQL/model review. Focused examples and regressions cover known invalid PostgreSQL index/constraint combinations, valid neighboring forms, unsupported syntax, and exact suppressions. The shared immutable 35-file comparison against published 8.147.0 reports 71 reviewed additions, zero removals or duplicates, and six repaired false-positive controls clear across the affected owners. These aggregate observations are not per-rule precision or recall estimates. Broader field calibration remains pending.",
|
|
3047
|
+
"outcome": "SARJ126: Stage at WARNING without autofix. Review only supported invalid PostgreSQL forms; preserve valid index/constraint options and avoid inventing an automatic schema rewrite. Full campaign completion is not claimed."
|
|
2952
3048
|
}
|
|
2953
3049
|
]
|
|
2954
3050
|
}
|