{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "scanner-086d72024c5a242e", "name": "Possibly dead Python function: field_is_required", "shortDescription": {"text": "Possibly dead Python function: field_is_required"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3e63041006191c60", "name": "Possibly dead Python function: model_parse", "shortDescription": {"text": "Possibly dead Python function: model_parse"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3b740f42dea773a3", "name": "Possibly dead Python function: text", "shortDescription": {"text": "Possibly dead Python function: text"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5de20c330c75a85e", "name": "Possibly dead Python function: write_to_file", "shortDescription": {"text": "Possibly dead Python function: write_to_file"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-08d560c5a322b49d", "name": "Possibly dead Python function: stream_to_file", "shortDescription": {"text": "Possibly dead Python function: stream_to_file"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f7b78c616ef9cd7a", "name": "Possibly dead Python function: to_custom_streamed_response_wrapper", "shortDescription": {"text": "Possibly dead Python function: to_custom_streamed_response_wrapper"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e1e8206c586f1642", "name": "Possibly dead Python function: async_to_custom_streamed_response_wrapper", "shortDescription": {"text": "Possibly dead Python function: async_to_custom_streamed_response_wrapper"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4d1c784ed4117396", "name": "Possibly dead Python function: to_custom_raw_response_wrapper", "shortDescription": {"text": "Possibly dead Python function: to_custom_raw_response_wrapper"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ff776a7e3e2313f4", "name": "Possibly dead Python function: async_to_custom_raw_response_wrapper", "shortDescription": {"text": "Possibly dead Python function: async_to_custom_raw_response_wrapper"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3b58a75d2cfdb5d0", "name": "Possibly dead Python function: construct_type_unchecked", "shortDescription": {"text": "Possibly dead Python function: construct_type_unchecked"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-772e9d6726a88fc0", "name": "Possibly dead Python function: set_pydantic_config", "shortDescription": {"text": "Possibly dead Python function: set_pydantic_config"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b44ec16f844daffa", "name": "Possibly dead Python function: put", "shortDescription": {"text": "Possibly dead Python function: put"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-60f5cd9f6e20a131", "name": "Possibly dead Python function: is_tuple", "shortDescription": {"text": "Possibly dead Python function: is_tuple"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-64efbc7bd06f0fed", "name": "Possibly dead Python function: is_sequence", "shortDescription": {"text": "Possibly dead Python function: is_sequence"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-154a826f2689626e", "name": "Possibly dead Python function: inner", "shortDescription": {"text": "Possibly dead Python function: inner"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f9f6840f97166721", "name": "Possibly dead Python function: maybe_coerce_integer", "shortDescription": {"text": "Possibly dead Python function: maybe_coerce_integer"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f9564d83ad5b4968", "name": "Possibly dead Python function: maybe_coerce_float", "shortDescription": {"text": "Possibly dead Python function: maybe_coerce_float"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b4662238d21facc7", "name": "Possibly dead Python function: maybe_coerce_boolean", "shortDescription": {"text": "Possibly dead Python function: maybe_coerce_boolean"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5a850f53d94d20df", "name": "Possibly dead Python function: removeprefix", "shortDescription": {"text": "Possibly dead Python function: removeprefix"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4462fe4a7a64f996", "name": "Possibly dead Python function: removesuffix", "shortDescription": {"text": "Possibly dead Python function: removesuffix"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eac62ffaae31c2d3", "name": "Possibly dead Python function: setup_logging", "shortDescription": {"text": "Possibly dead Python function: setup_logging"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fca2b93141cb2509", "name": "Possibly dead Python function: consume_sync_iterator", "shortDescription": {"text": "Possibly dead Python function: consume_sync_iterator"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa7e2f950927342b", "name": "Possibly dead Python function: consume_async_iterator", "shortDescription": {"text": "Possibly dead Python function: consume_async_iterator"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a2b88abf8a61512c", "name": "Possibly dead Python function: function_has_argument", "shortDescription": {"text": "Possibly dead Python function: function_has_argument"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ea8a8fd10c4e02d", "name": "Possibly dead Python function: assert_signatures_in_sync", "shortDescription": {"text": "Possibly dead Python function: assert_signatures_in_sync"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c67dd7aeac25f04", "name": "Possibly dead Python function: wrapper", "shortDescription": {"text": "Possibly dead Python function: wrapper"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c9c8522741c191fe", "name": "DS-0026: No HEALTHCHECK defined \u2014 .devcontainer/Dockerfile", "shortDescription": {"text": "DS-0026: No HEALTHCHECK defined \u2014 .devcontainer/Dockerfile"}, "fullDescription": {"text": "No HEALTHCHECK defined\n\nAdd HEALTHCHECK instruction in your Dockerfile\n\nRule: DS-0026\nSeverity: LOW\nTarget: .devcontainer/Dockerfile"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4544f9b9aca8b299", "name": "Docker base image is tag-pinned but not digest-pinned: mcr.microsoft.com/vscode/devcontainers/python:0-${VARIANT}", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: mcr.microsoft.com/vscode/devcontainers/python:0-${VARIANT}"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-42222223b4a3450e", "name": "Dockerfile pipes a remote installer into a shell", "shortDescription": {"text": "Dockerfile pipes a remote installer into a shell"}, "fullDescription": {"text": "Executing downloaded code during image build gives the remote endpoint build-time code execution. Prefer pinned packages or verify downloaded installers by checksum/signature."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cc2b4ad0a1e18eea", "name": "Very large file: tests/test_client.py (1542 lines)", "shortDescription": {"text": "Very large file: tests/test_client.py (1542 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8c2fbdc0719b9ced", "name": "Very large file: src/met_museum/_base_client.py (1969 lines)", "shortDescription": {"text": "Very large file: src/met_museum/_base_client.py (1969 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dc196f644071c5ee", "name": "Legacy-named symbol `test_pydantic_v1` in noxfile.py:5", "shortDescription": {"text": "Legacy-named symbol `test_pydantic_v1` in noxfile.py:5"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ff62fe34572583f4", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/utils/ruffen-docs.py:108", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/utils/ruffen-docs.py:108"}, "fullDescription": {"text": "`subprocess.check_output(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-f9497d801cb3adbe", "name": "Legacy-named symbol `reportDeprecated` in src/met_museum/_compat.py:83", "shortDescription": {"text": "Legacy-named symbol `reportDeprecated` in src/met_museum/_compat.py:83"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8359ae2d661423bb", "name": "Legacy-named symbol `reportDeprecated` in src/met_museum/_models.py:96", "shortDescription": {"text": "Legacy-named symbol `reportDeprecated` in src/met_museum/_models.py:96"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9ba0bdafb9af8783", "name": "Legacy-named symbol `model_copy` in src/met_museum/_base_client.py:62", "shortDescription": {"text": "Legacy-named symbol `model_copy` in src/met_museum/_base_client.py:62"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f5f82a5a36cab09c", "name": "Stub function `custom_auth` (body is just `pass`/`return`) \u2014 src/met_museum/_base_client.py:598", "shortDescription": {"text": "Stub function `custom_auth` (body is just `pass`/`return`) \u2014 src/met_museum/_base_client.py:598"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same substantial AST body hash:\nsrc/met_museum/_client.py:114:copy, src/met_museum/_client.py:263:copy\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/30821"}, "properties": {"repository": "mpatankar/met-museum", "repoUrl": "https://github.com/mpatankar/met-museum", "branch": "main"}, "results": [{"ruleId": "scanner-086d72024c5a242e", "level": "note", "message": {"text": "Possibly dead Python function: field_is_required"}, "properties": {"repobilityId": "40accc911207cab1", "scanner": "scanner-primary", "fingerprint": "086d72024c5a242e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_compat.py:86"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3e63041006191c60", "level": "note", "message": {"text": "Possibly dead Python function: model_parse"}, "properties": {"repobilityId": "3d3a31aad23f7fdc", "scanner": "scanner-primary", "fingerprint": "3e63041006191c60", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_compat.py:161"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3b740f42dea773a3", "level": "note", "message": {"text": "Possibly dead Python function: text"}, "properties": {"repobilityId": "34f689a360dc78e0", "scanner": "scanner-primary", "fingerprint": "3b740f42dea773a3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_response.py:434"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5de20c330c75a85e", "level": "note", "message": {"text": "Possibly dead Python function: write_to_file"}, "properties": {"repobilityId": "310aa1868802e0d2", "scanner": "scanner-primary", "fingerprint": "5de20c330c75a85e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_response.py:507"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-08d560c5a322b49d", "level": "note", "message": {"text": "Possibly dead Python function: stream_to_file"}, "properties": {"repobilityId": "04faa9b1ffb2fa1e", "scanner": "scanner-primary", "fingerprint": "08d560c5a322b49d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_response.py:542"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f7b78c616ef9cd7a", "level": "note", "message": {"text": "Possibly dead Python function: to_custom_streamed_response_wrapper"}, "properties": {"repobilityId": "71f8a10ac031addf", "scanner": "scanner-primary", "fingerprint": "f7b78c616ef9cd7a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_response.py:687"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e1e8206c586f1642", "level": "note", "message": {"text": "Possibly dead Python function: async_to_custom_streamed_response_wrapper"}, "properties": {"repobilityId": "de0c9be3b46d3d9f", "scanner": "scanner-primary", "fingerprint": "e1e8206c586f1642", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_response.py:712"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4d1c784ed4117396", "level": "note", "message": {"text": "Possibly dead Python function: to_custom_raw_response_wrapper"}, "properties": {"repobilityId": "931b5eb81e3559af", "scanner": "scanner-primary", "fingerprint": "4d1c784ed4117396", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_response.py:771"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ff776a7e3e2313f4", "level": "note", "message": {"text": "Possibly dead Python function: async_to_custom_raw_response_wrapper"}, "properties": {"repobilityId": "8b45c751a2a5099f", "scanner": "scanner-primary", "fingerprint": "ff776a7e3e2313f4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_response.py:794"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3b58a75d2cfdb5d0", "level": "note", "message": {"text": "Possibly dead Python function: construct_type_unchecked"}, "properties": {"repobilityId": "522e4e0c1489e048", "scanner": "scanner-primary", "fingerprint": "3b58a75d2cfdb5d0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_models.py:415"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-772e9d6726a88fc0", "level": "note", "message": {"text": "Possibly dead Python function: set_pydantic_config"}, "properties": {"repobilityId": "011459d04edb0d25", "scanner": "scanner-primary", "fingerprint": "772e9d6726a88fc0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_models.py:673"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b44ec16f844daffa", "level": "note", "message": {"text": "Possibly dead Python function: put"}, "properties": {"repobilityId": "9e24832ee4fa369f", "scanner": "scanner-primary", "fingerprint": "b44ec16f844daffa", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_base_client.py:1749"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-60f5cd9f6e20a131", "level": "note", "message": {"text": "Possibly dead Python function: is_tuple"}, "properties": {"repobilityId": "9dbfb947e9556aa3", "scanner": "scanner-primary", "fingerprint": "60f5cd9f6e20a131", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_utils/_utils.py:136"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-64efbc7bd06f0fed", "level": "note", "message": {"text": "Possibly dead Python function: is_sequence"}, "properties": {"repobilityId": "406c7c14365ca331", "scanner": "scanner-primary", "fingerprint": "64efbc7bd06f0fed", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_utils/_utils.py:144"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-154a826f2689626e", "level": "note", "message": {"text": "Possibly dead Python function: inner"}, "properties": {"repobilityId": "d48a210cecd2a9b7", "scanner": "scanner-primary", "fingerprint": "154a826f2689626e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_utils/_utils.py:229"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f9f6840f97166721", "level": "note", "message": {"text": "Possibly dead Python function: maybe_coerce_integer"}, "properties": {"repobilityId": "19650e5960c08913", "scanner": "scanner-primary", "fingerprint": "f9f6840f97166721", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_utils/_utils.py:321"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f9564d83ad5b4968", "level": "note", "message": {"text": "Possibly dead Python function: maybe_coerce_float"}, "properties": {"repobilityId": "a60cf5daaf086964", "scanner": "scanner-primary", "fingerprint": "f9564d83ad5b4968", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_utils/_utils.py:327"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b4662238d21facc7", "level": "note", "message": {"text": "Possibly dead Python function: maybe_coerce_boolean"}, "properties": {"repobilityId": "853702f9c4184e17", "scanner": "scanner-primary", "fingerprint": "b4662238d21facc7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_utils/_utils.py:333"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5a850f53d94d20df", "level": "note", "message": {"text": "Possibly dead Python function: removeprefix"}, "properties": {"repobilityId": "380d986250168cf5", "scanner": "scanner-primary", "fingerprint": "5a850f53d94d20df", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_utils/_utils.py:339"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4462fe4a7a64f996", "level": "note", "message": {"text": "Possibly dead Python function: removesuffix"}, "properties": {"repobilityId": "7fc220794d6ce94e", "scanner": "scanner-primary", "fingerprint": "4462fe4a7a64f996", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_utils/_utils.py:349"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-eac62ffaae31c2d3", "level": "note", "message": {"text": "Possibly dead Python function: setup_logging"}, "properties": {"repobilityId": "e79074b18f293f2b", "scanner": "scanner-primary", "fingerprint": "eac62ffaae31c2d3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_utils/_logs.py:16"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fca2b93141cb2509", "level": "note", "message": {"text": "Possibly dead Python function: consume_sync_iterator"}, "properties": {"repobilityId": "78e9eb768b001821", "scanner": "scanner-primary", "fingerprint": "fca2b93141cb2509", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_utils/_streams.py:5"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa7e2f950927342b", "level": "note", "message": {"text": "Possibly dead Python function: consume_async_iterator"}, "properties": {"repobilityId": "7a2331ed74ebb27a", "scanner": "scanner-primary", "fingerprint": "aa7e2f950927342b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_utils/_streams.py:10"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a2b88abf8a61512c", "level": "note", "message": {"text": "Possibly dead Python function: function_has_argument"}, "properties": {"repobilityId": "e02d5ce804a95b27", "scanner": "scanner-primary", "fingerprint": "a2b88abf8a61512c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_utils/_reflection.py:7"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ea8a8fd10c4e02d", "level": "note", "message": {"text": "Possibly dead Python function: assert_signatures_in_sync"}, "properties": {"repobilityId": "9cd120dfde399b83", "scanner": "scanner-primary", "fingerprint": "3ea8a8fd10c4e02d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_utils/_reflection.py:13"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5c67dd7aeac25f04", "level": "note", "message": {"text": "Possibly dead Python function: wrapper"}, "properties": {"repobilityId": "1dc9acbcc8ce537d", "scanner": "scanner-primary", "fingerprint": "5c67dd7aeac25f04", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/met_museum/_utils/_sync.py:83"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c9c8522741c191fe", "level": "note", "message": {"text": "DS-0026: No HEALTHCHECK defined \u2014 .devcontainer/Dockerfile"}, "properties": {"repobilityId": "b92ce3048e4ec526", "scanner": "scanner-primary", "fingerprint": "c9c8522741c191fe", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["trivy", "misconfig"]}}, {"ruleId": "scanner-4544f9b9aca8b299", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: mcr.microsoft.com/vscode/devcontainers/python:0-${VARIANT}"}, "properties": {"repobilityId": "469c710cf0777e45", "scanner": "scanner-primary", "fingerprint": "4544f9b9aca8b299", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".devcontainer/Dockerfile"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-42222223b4a3450e", "level": "error", "message": {"text": "Dockerfile pipes a remote installer into a shell"}, "properties": {"repobilityId": "9e219050cfc5534a", "scanner": "scanner-primary", "fingerprint": "42222223b4a3450e", "layer": "hardware", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "docker", "remote-installer"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".devcontainer/Dockerfile"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-cc2b4ad0a1e18eea", "level": "note", "message": {"text": "Very large file: tests/test_client.py (1542 lines)"}, "properties": {"repobilityId": "999c1e75982d8663", "scanner": "scanner-primary", "fingerprint": "cc2b4ad0a1e18eea", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8c2fbdc0719b9ced", "level": "note", "message": {"text": "Very large file: src/met_museum/_base_client.py (1969 lines)"}, "properties": {"repobilityId": "6c24cfd83b6f7afb", "scanner": "scanner-primary", "fingerprint": "8c2fbdc0719b9ced", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dc196f644071c5ee", "level": "note", "message": {"text": "Legacy-named symbol `test_pydantic_v1` in noxfile.py:5"}, "properties": {"repobilityId": "ffe364dfac836cd0", "scanner": "scanner-primary", "fingerprint": "dc196f644071c5ee", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ff62fe34572583f4", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/utils/ruffen-docs.py:108"}, "properties": {"repobilityId": "bb477d3be4ff0a7a", "scanner": "scanner-primary", "fingerprint": "ff62fe34572583f4", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/utils/ruffen-docs.py"}, "region": {"startLine": 108}}}]}, {"ruleId": "scanner-f9497d801cb3adbe", "level": "note", "message": {"text": "Legacy-named symbol `reportDeprecated` in src/met_museum/_compat.py:83"}, "properties": {"repobilityId": "d2966849990e26be", "scanner": "scanner-primary", "fingerprint": "f9497d801cb3adbe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8359ae2d661423bb", "level": "note", "message": {"text": "Legacy-named symbol `reportDeprecated` in src/met_museum/_models.py:96"}, "properties": {"repobilityId": "c0aaafe611a078ef", "scanner": "scanner-primary", "fingerprint": "8359ae2d661423bb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9ba0bdafb9af8783", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in src/met_museum/_base_client.py:62"}, "properties": {"repobilityId": "deee4b3f6d066d79", "scanner": "scanner-primary", "fingerprint": "9ba0bdafb9af8783", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f5f82a5a36cab09c", "level": "note", "message": {"text": "Stub function `custom_auth` (body is just `pass`/`return`) \u2014 src/met_museum/_base_client.py:598"}, "properties": {"repobilityId": "bd1cb20cceb148c7", "scanner": "scanner-primary", "fingerprint": "f5f82a5a36cab09c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "1a56b39f846659ea", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}