{"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-7a6b9e05d167fca9", "name": "Possibly dead Python function: rep", "shortDescription": {"text": "Possibly dead Python function: rep"}, "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-e6e0bc510d5a879e", "name": "Possibly dead Python function: rep", "shortDescription": {"text": "Possibly dead Python function: rep"}, "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-521f197cdf72462d", "name": "Possibly dead Python function: repl", "shortDescription": {"text": "Possibly dead Python function: repl"}, "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-2b6bef2daf2e501e", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "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-1258565a4054acc6", "name": "Possibly dead Python function: hero_strip", "shortDescription": {"text": "Possibly dead Python function: hero_strip"}, "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-e347162f36633528", "name": "Possibly dead Python function: fix_tag", "shortDescription": {"text": "Possibly dead Python function: fix_tag"}, "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-a0083f5610981abb", "name": "Possibly dead Python function: wrap", "shortDescription": {"text": "Possibly dead Python function: wrap"}, "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-50afb0a2a86a2fd5", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "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-1b8f9336a32f6a43", "name": "Possibly dead Python function: fix_card", "shortDescription": {"text": "Possibly dead Python function: fix_card"}, "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-69e6a5c9fc080779", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "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-a9203dadaade6a61", "name": "Possibly dead Python function: bump", "shortDescription": {"text": "Possibly dead Python function: bump"}, "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-65e4c91bf3dd1ce6", "name": "Possibly dead Python function: nol_fix", "shortDescription": {"text": "Possibly dead Python function: nol_fix"}, "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-55701c5e095ed698", "name": "Possibly dead Python function: repl", "shortDescription": {"text": "Possibly dead Python function: repl"}, "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-e9db11518ef479a2", "name": "Possibly dead Python function: build_translations", "shortDescription": {"text": "Possibly dead Python function: build_translations"}, "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-61f90a68bea8889d", "name": "Possibly dead Python function: sec_hd", "shortDescription": {"text": "Possibly dead Python function: sec_hd"}, "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-4789c30f2a8fa9f8", "name": "Possibly dead Python function: boxhdr", "shortDescription": {"text": "Possibly dead Python function: boxhdr"}, "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-adb4c01298480dd7", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "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-b9b7c372c96acb99", "name": "Possibly dead Python function: repl", "shortDescription": {"text": "Possibly dead Python function: repl"}, "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-674ba51813c0601c", "name": "Insecure pattern 'direct_innerhtml_assignment' in tools/wave3_patch.py:200", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in tools/wave3_patch.py:200"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e36b269428675b15", "name": "Insecure pattern 'insert_adjacent_html' in tools/r46_w2_patch.py:142", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in tools/r46_w2_patch.py:142"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0662788f8b681bc2", "name": "Insecure pattern 'direct_innerhtml_assignment' in tools/homeviz_v2_patch.py:121", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in tools/homeviz_v2_patch.py:121"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0eadf9ea7aa02d87", "name": "Insecure pattern 'direct_innerhtml_assignment' in tools/home_redesign_patch.py:187", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in tools/home_redesign_patch.py:187"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6ba9bfab5f283202", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/deploy-pages@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b769174c9fcf8ea8", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f18a9df479e46d93", "name": "Very large file: tools/wave7_r44_patch.py (1008 lines)", "shortDescription": {"text": "Very large file: tools/wave7_r44_patch.py (1008 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-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 45 source file(s) (ratio 0.00). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-faccb9061e9b52a0", "name": "No README detected", "shortDescription": {"text": "No README detected"}, "fullDescription": {"text": "No README file was found. Generated repos without README context are hard to operate, validate, or safely hand off."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 164 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-11825279136b53a3", "name": "CI is configured but no tests are detected", "shortDescription": {"text": "CI is configured but no tests are detected"}, "fullDescription": {"text": "A CI pipeline exists, but the scan found no test files to gate. Opus labeled this generated-code pattern as config theater: release machinery exists, but it has little behavioral signal."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, tests, operator-readme. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e04a59b2b464e0cc", "name": "Stub function `log_message` (body is just `pass`/`return`) \u2014 tools/fav_filter_verify.py:71", "shortDescription": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 tools/fav_filter_verify.py:71"}, "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-24cbf549d8d5698c", "name": "Legacy-named symbol `intro_old` in tools/r46_w1_patch.py:81", "shortDescription": {"text": "Legacy-named symbol `intro_old` in tools/r46_w1_patch.py:81"}, "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-b012b4a387e9ed8b", "name": "Legacy-named symbol `decl_old` in tools/wave7_r44_patch.py:966", "shortDescription": {"text": "Legacy-named symbol `decl_old` in tools/wave7_r44_patch.py:966"}, "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-daf7dcabdcb9e768", "name": "Stub function `log_message` (body is just `pass`/`return`) \u2014 tools/r46_verify_w1.py:24", "shortDescription": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 tools/r46_verify_w1.py:24"}, "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-c0a01a09e5c8c3c6", "name": "Commented-code block (5 lines) in tools/journey_bar_verify.py:96", "shortDescription": {"text": "Commented-code block (5 lines) in tools/journey_bar_verify.py:96"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7e6ab51b30c38d51", "name": "Stub function `log_message` (body is just `pass`/`return`) \u2014 tools/journey_bar_verify.py:76", "shortDescription": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 tools/journey_bar_verify.py:76"}, "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-9daafd075d9dbc26", "name": "Stub function `log_message` (body is just `pass`/`return`) \u2014 tools/r46_verify_w2.py:24", "shortDescription": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 tools/r46_verify_w2.py:24"}, "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-eab675f2b0bb8549", "name": "Commented-code block (5 lines) in tools/home_redesign_patch.py:44", "shortDescription": {"text": "Commented-code block (5 lines) in tools/home_redesign_patch.py:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d146aff3325e0b50", "name": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_landmark_v2.py:98", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_landmark_v2.py:98"}, "fullDescription": {"text": "`requests.post(...)` 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": 1.0}}, {"id": "scanner-85cd21eaa3b92c05", "name": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_hero_v2.py:79", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_hero_v2.py:79"}, "fullDescription": {"text": "`requests.post(...)` 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": 1.0}}, {"id": "scanner-e757c695b6a47c7e", "name": "Legacy-named symbol `_gen_landmark_v2` in assets/gen/photo/_gen_summer_round_v3.py:4", "shortDescription": {"text": "Legacy-named symbol `_gen_landmark_v2` in assets/gen/photo/_gen_summer_round_v3.py:4"}, "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-4ff7a80d63d44b49", "name": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_summer_round_v3.py:143", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_summer_round_v3.py:143"}, "fullDescription": {"text": "`requests.post(...)` 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": 1.0}}, {"id": "scanner-6627d85ff6a11e4a", "name": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_concert_day_v2.py:77", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_concert_day_v2.py:77"}, "fullDescription": {"text": "`requests.post(...)` 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": 1.0}}, {"id": "scanner-718933d5818f14c1", "name": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_lasttrain_v6.py:93", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_lasttrain_v6.py:93"}, "fullDescription": {"text": "`requests.post(...)` 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": 1.0}}, {"id": "scanner-cb3ca2489ee5be99", "name": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_batch.py:127", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_batch.py:127"}, "fullDescription": {"text": "`requests.post(...)` 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": 1.0}}, {"id": "scanner-9d852404c74e0683", "name": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_lasttrain_v4.py:76", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_lasttrain_v4.py:76"}, "fullDescription": {"text": "`requests.post(...)` 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": 1.0}}, {"id": "scanner-78bae23f8cb531ba", "name": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_lasttrain_v5.py:89", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_lasttrain_v5.py:89"}, "fullDescription": {"text": "`requests.post(...)` 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": 1.0}}, {"id": "scanner-7b19b99618e6acf1", "name": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_lasttrain_v3.py:63", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_lasttrain_v3.py:63"}, "fullDescription": {"text": "`requests.post(...)` 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": 1.0}}, {"id": "scanner-de78e9c63e414c3b", "name": "Legacy-named symbol `_gen_hero_v2` in assets/gen/photo/_gen_hero_v3.py:4", "shortDescription": {"text": "Legacy-named symbol `_gen_hero_v2` in assets/gen/photo/_gen_hero_v3.py:4"}, "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-059a2e1a5546fb32", "name": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_hero_v3.py:77", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_hero_v3.py:77"}, "fullDescription": {"text": "`requests.post(...)` 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": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ntools/wave4_token_sweep.py:rep, tools/wave4_token_sweep.py:rep, tools/wave4_token_sweep.py:rep\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}}, {"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 first-5-line body hash:\ntools/c7_parity_patch.py:lirow, tools/wave7_r44_patch.py:lirow\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}}, {"id": "scanner-9dad557909b86499", "name": "Near-duplicate function bodies in 10 places", "shortDescription": {"text": "Near-duplicate function bodies in 10 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nassets/gen/photo/_gen_landmark_v2.py:load_key, assets/gen/photo/_gen_hero_v2.py:load_key, assets/gen/photo/_gen_summer_round_v3.py:load_key, assets/gen/photo/_gen_concert_day_v2.py:load_key\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}}, {"id": "scanner-46969939caf8120b", "name": "Near-duplicate function bodies in 9 places", "shortDescription": {"text": "Near-duplicate function bodies in 9 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nassets/gen/photo/_gen_landmark_v2.py:generate, assets/gen/photo/_gen_hero_v2.py:generate, assets/gen/photo/_gen_summer_round_v3.py:generate, assets/gen/photo/_gen_concert_day_v2.py:generate\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/28227"}, "properties": {"repository": "nicehugepark/100m1s-bybias", "repoUrl": "https://github.com/nicehugepark/100m1s-bybias", "branch": "main"}, "results": [{"ruleId": "scanner-7a6b9e05d167fca9", "level": "note", "message": {"text": "Possibly dead Python function: rep"}, "properties": {"repobilityId": "c1d7bf85f1a83726", "scanner": "scanner-primary", "fingerprint": "7a6b9e05d167fca9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/wave5_patch.py:224"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e6e0bc510d5a879e", "level": "note", "message": {"text": "Possibly dead Python function: rep"}, "properties": {"repobilityId": "c1d7bf85f1a83726", "scanner": "scanner-primary", "fingerprint": "e6e0bc510d5a879e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/wave4_token_sweep.py:283"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-521f197cdf72462d", "level": "note", "message": {"text": "Possibly dead Python function: repl"}, "properties": {"repobilityId": "6f5d3779bbb8be8b", "scanner": "scanner-primary", "fingerprint": "521f197cdf72462d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/tripcom_affiliate_patch.py:117"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2b6bef2daf2e501e", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "2b6bef2daf2e501e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/fav_filter_verify.py:71"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1258565a4054acc6", "level": "note", "message": {"text": "Possibly dead Python function: hero_strip"}, "properties": {"repobilityId": "d07e56febfdc0679", "scanner": "scanner-primary", "fingerprint": "1258565a4054acc6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/wave3_patch.py:181"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e347162f36633528", "level": "note", "message": {"text": "Possibly dead Python function: fix_tag"}, "properties": {"repobilityId": "9edcd0cc94523d9b", "scanner": "scanner-primary", "fingerprint": "e347162f36633528", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/r46_w1_patch.py:219"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a0083f5610981abb", "level": "note", "message": {"text": "Possibly dead Python function: wrap"}, "properties": {"repobilityId": "67bfdfc1acedae4b", "scanner": "scanner-primary", "fingerprint": "a0083f5610981abb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/wave2_logo_dark_sweep.py:31"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-50afb0a2a86a2fd5", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "50afb0a2a86a2fd5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/r46_verify_w1.py:24"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1b8f9336a32f6a43", "level": "note", "message": {"text": "Possibly dead Python function: fix_card"}, "properties": {"repobilityId": "b764fad4950f63e1", "scanner": "scanner-primary", "fingerprint": "1b8f9336a32f6a43", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/wave2_home_patch.py:196"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-69e6a5c9fc080779", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "69e6a5c9fc080779", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/journey_bar_verify.py:76"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a9203dadaade6a61", "level": "note", "message": {"text": "Possibly dead Python function: bump"}, "properties": {"repobilityId": "c9288bdd95ba0c43", "scanner": "scanner-primary", "fingerprint": "a9203dadaade6a61", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/r46_w2_patch.py:197"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-65e4c91bf3dd1ce6", "level": "note", "message": {"text": "Possibly dead Python function: nol_fix"}, "properties": {"repobilityId": "2a8f10a554c3f7c4", "scanner": "scanner-primary", "fingerprint": "65e4c91bf3dd1ce6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/r46_w2_patch.py:293"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-55701c5e095ed698", "level": "note", "message": {"text": "Possibly dead Python function: repl"}, "properties": {"repobilityId": "6f5d3779bbb8be8b", "scanner": "scanner-primary", "fingerprint": "55701c5e095ed698", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/r46_w2_patch.py:331"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e9db11518ef479a2", "level": "note", "message": {"text": "Possibly dead Python function: build_translations"}, "properties": {"repobilityId": "f6834e1f984e4f2a", "scanner": "scanner-primary", "fingerprint": "e9db11518ef479a2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/r49_p0_ux_modules_patch.py:196"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-61f90a68bea8889d", "level": "note", "message": {"text": "Possibly dead Python function: sec_hd"}, "properties": {"repobilityId": "8e5198064b044e3b", "scanner": "scanner-primary", "fingerprint": "61f90a68bea8889d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/wave2_course_patch.py:110"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4789c30f2a8fa9f8", "level": "note", "message": {"text": "Possibly dead Python function: boxhdr"}, "properties": {"repobilityId": "d785aef802c6ae20", "scanner": "scanner-primary", "fingerprint": "4789c30f2a8fa9f8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/wave2_course_patch.py:115"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-adb4c01298480dd7", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "adb4c01298480dd7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/r46_verify_w2.py:24"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b9b7c372c96acb99", "level": "note", "message": {"text": "Possibly dead Python function: repl"}, "properties": {"repobilityId": "6f5d3779bbb8be8b", "scanner": "scanner-primary", "fingerprint": "b9b7c372c96acb99", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/wave6_course_cta_patch.py:137"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-674ba51813c0601c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in tools/wave3_patch.py:200"}, "properties": {"repobilityId": "754c039017c55c68", "scanner": "scanner-primary", "fingerprint": "674ba51813c0601c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/wave3_patch.py"}, "region": {"startLine": 200}}}]}, {"ruleId": "scanner-e36b269428675b15", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in tools/r46_w2_patch.py:142"}, "properties": {"repobilityId": "2d48dcbb44f28819", "scanner": "scanner-primary", "fingerprint": "e36b269428675b15", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/r46_w2_patch.py"}, "region": {"startLine": 142}}}]}, {"ruleId": "scanner-0662788f8b681bc2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in tools/homeviz_v2_patch.py:121"}, "properties": {"repobilityId": "68c8dc408dbb6752", "scanner": "scanner-primary", "fingerprint": "0662788f8b681bc2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/homeviz_v2_patch.py"}, "region": {"startLine": 121}}}]}, {"ruleId": "scanner-0eadf9ea7aa02d87", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in tools/home_redesign_patch.py:187"}, "properties": {"repobilityId": "947c183bb7f8819d", "scanner": "scanner-primary", "fingerprint": "0eadf9ea7aa02d87", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/home_redesign_patch.py"}, "region": {"startLine": 187}}}]}, {"ruleId": "scanner-6ba9bfab5f283202", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "60a129f9214aed18", "scanner": "scanner-primary", "fingerprint": "6ba9bfab5f283202", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-b769174c9fcf8ea8", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "e34b6cb9b56931d2", "scanner": "scanner-primary", "fingerprint": "b769174c9fcf8ea8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f18a9df479e46d93", "level": "note", "message": {"text": "Very large file: tools/wave7_r44_patch.py (1008 lines)"}, "properties": {"repobilityId": "285802e2b116d432", "scanner": "scanner-primary", "fingerprint": "f18a9df479e46d93", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "485cf0c7fb3e9a26", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-faccb9061e9b52a0", "level": "note", "message": {"text": "No README detected"}, "properties": {"repobilityId": "44660d7b900ce925", "scanner": "scanner-primary", "fingerprint": "faccb9061e9b52a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["docs", "readme", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "7b7544b7e5ea0d9c", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-11825279136b53a3", "level": "warning", "message": {"text": "CI is configured but no tests are detected"}, "properties": {"repobilityId": "767791f86be2db06", "scanner": "scanner-primary", "fingerprint": "11825279136b53a3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "ci", "config-theater", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "61392422deeaa4ff", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-e04a59b2b464e0cc", "level": "note", "message": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 tools/fav_filter_verify.py:71"}, "properties": {"repobilityId": "a21aa7857ad63b92", "scanner": "scanner-primary", "fingerprint": "e04a59b2b464e0cc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-24cbf549d8d5698c", "level": "note", "message": {"text": "Legacy-named symbol `intro_old` in tools/r46_w1_patch.py:81"}, "properties": {"repobilityId": "f7b0f52abbe00043", "scanner": "scanner-primary", "fingerprint": "24cbf549d8d5698c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b012b4a387e9ed8b", "level": "note", "message": {"text": "Legacy-named symbol `decl_old` in tools/wave7_r44_patch.py:966"}, "properties": {"repobilityId": "fe6249af96dc99ff", "scanner": "scanner-primary", "fingerprint": "b012b4a387e9ed8b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-daf7dcabdcb9e768", "level": "note", "message": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 tools/r46_verify_w1.py:24"}, "properties": {"repobilityId": "204de77c0eae8992", "scanner": "scanner-primary", "fingerprint": "daf7dcabdcb9e768", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-c0a01a09e5c8c3c6", "level": "none", "message": {"text": "Commented-code block (5 lines) in tools/journey_bar_verify.py:96"}, "properties": {"repobilityId": "57bf0332bdf4af65", "scanner": "scanner-primary", "fingerprint": "c0a01a09e5c8c3c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e6ab51b30c38d51", "level": "note", "message": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 tools/journey_bar_verify.py:76"}, "properties": {"repobilityId": "00356f6aa813fdef", "scanner": "scanner-primary", "fingerprint": "7e6ab51b30c38d51", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-9daafd075d9dbc26", "level": "note", "message": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 tools/r46_verify_w2.py:24"}, "properties": {"repobilityId": "1d641b521cb0bd0d", "scanner": "scanner-primary", "fingerprint": "9daafd075d9dbc26", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-eab675f2b0bb8549", "level": "none", "message": {"text": "Commented-code block (5 lines) in tools/home_redesign_patch.py:44"}, "properties": {"repobilityId": "45012794e9452c2e", "scanner": "scanner-primary", "fingerprint": "eab675f2b0bb8549", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d146aff3325e0b50", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_landmark_v2.py:98"}, "properties": {"repobilityId": "b3d82b575d1000a8", "scanner": "scanner-primary", "fingerprint": "d146aff3325e0b50", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-85cd21eaa3b92c05", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_hero_v2.py:79"}, "properties": {"repobilityId": "07bb3b1db90420f5", "scanner": "scanner-primary", "fingerprint": "85cd21eaa3b92c05", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e757c695b6a47c7e", "level": "note", "message": {"text": "Legacy-named symbol `_gen_landmark_v2` in assets/gen/photo/_gen_summer_round_v3.py:4"}, "properties": {"repobilityId": "52c37713ccb69790", "scanner": "scanner-primary", "fingerprint": "e757c695b6a47c7e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4ff7a80d63d44b49", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_summer_round_v3.py:143"}, "properties": {"repobilityId": "db29c56e13a502b5", "scanner": "scanner-primary", "fingerprint": "4ff7a80d63d44b49", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6627d85ff6a11e4a", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_concert_day_v2.py:77"}, "properties": {"repobilityId": "2ee677e714ca10d7", "scanner": "scanner-primary", "fingerprint": "6627d85ff6a11e4a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-718933d5818f14c1", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_lasttrain_v6.py:93"}, "properties": {"repobilityId": "f572ee62267a631c", "scanner": "scanner-primary", "fingerprint": "718933d5818f14c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cb3ca2489ee5be99", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_batch.py:127"}, "properties": {"repobilityId": "b06e53ef57d474c0", "scanner": "scanner-primary", "fingerprint": "cb3ca2489ee5be99", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9d852404c74e0683", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_lasttrain_v4.py:76"}, "properties": {"repobilityId": "d9b9a07f96682dcb", "scanner": "scanner-primary", "fingerprint": "9d852404c74e0683", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-78bae23f8cb531ba", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_lasttrain_v5.py:89"}, "properties": {"repobilityId": "91aba021219f284e", "scanner": "scanner-primary", "fingerprint": "78bae23f8cb531ba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7b19b99618e6acf1", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_lasttrain_v3.py:63"}, "properties": {"repobilityId": "4a47182c783911ed", "scanner": "scanner-primary", "fingerprint": "7b19b99618e6acf1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-de78e9c63e414c3b", "level": "note", "message": {"text": "Legacy-named symbol `_gen_hero_v2` in assets/gen/photo/_gen_hero_v3.py:4"}, "properties": {"repobilityId": "9e89153291ccfd59", "scanner": "scanner-primary", "fingerprint": "de78e9c63e414c3b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-059a2e1a5546fb32", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 assets/gen/photo/_gen_hero_v3.py:77"}, "properties": {"repobilityId": "533fd956b487046e", "scanner": "scanner-primary", "fingerprint": "059a2e1a5546fb32", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "a137d2ee66393e4f", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "1be3a1d49173e1e4", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "6e73025c6f87a200", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "1be24d26c48419c5", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "1d8c1f8ffe69ab90", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "c7f3446692f71e2e", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "6dd91256f3a42086", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "117f0c216ddede6c", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "47932da4f07a4ee7", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "a9c3efe186758612", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "e9e6862b93e4ebbc", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "72db9adfaabef62e", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-9dad557909b86499", "level": "note", "message": {"text": "Near-duplicate function bodies in 10 places"}, "properties": {"repobilityId": "43a61dc98a6da1e9", "scanner": "scanner-primary", "fingerprint": "9dad557909b86499", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-46969939caf8120b", "level": "note", "message": {"text": "Near-duplicate function bodies in 9 places"}, "properties": {"repobilityId": "767018a9c37a7940", "scanner": "scanner-primary", "fingerprint": "46969939caf8120b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-46969939caf8120b", "level": "note", "message": {"text": "Near-duplicate function bodies in 9 places"}, "properties": {"repobilityId": "b44f9b291808d356", "scanner": "scanner-primary", "fingerprint": "46969939caf8120b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}