{"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-03eac3750f426d78", "name": "Possibly dead Python function: tick", "shortDescription": {"text": "Possibly dead Python function: tick"}, "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-7f6de0c0037cd3db", "name": "Possibly dead Python function: isFlipped", "shortDescription": {"text": "Possibly dead Python function: isFlipped"}, "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-ffc5b95534f1829d", "name": "Possibly dead Python function: acceptsFirstResponder", "shortDescription": {"text": "Possibly dead Python function: acceptsFirstResponder"}, "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-ea52e89b46944533", "name": "Possibly dead Python function: keyDown_", "shortDescription": {"text": "Possibly dead Python function: keyDown_"}, "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-5c7737837288aacb", "name": "Possibly dead Python function: keyUp_", "shortDescription": {"text": "Possibly dead Python function: keyUp_"}, "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-bb7360bb8c93a84d", "name": "Possibly dead Python function: flagsChanged_", "shortDescription": {"text": "Possibly dead Python function: flagsChanged_"}, "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-db9de6277f05540f", "name": "Possibly dead Python function: mouseDown_", "shortDescription": {"text": "Possibly dead Python function: mouseDown_"}, "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-8a78e0ccc459fbff", "name": "Possibly dead Python function: mouseUp_", "shortDescription": {"text": "Possibly dead Python function: mouseUp_"}, "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-10bf758637d656bd", "name": "Possibly dead Python function: mouseDragged_", "shortDescription": {"text": "Possibly dead Python function: mouseDragged_"}, "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-4f71d04a709e72b2", "name": "Possibly dead Python function: drawRect_", "shortDescription": {"text": "Possibly dead Python function: drawRect_"}, "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-64c8b155037060e1", "name": "Possibly dead Python function: windowWillClose_", "shortDescription": {"text": "Possibly dead Python function: windowWillClose_"}, "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-bff206a73aecc43c", "name": "Possibly dead Python function: applicationShouldTerminate_", "shortDescription": {"text": "Possibly dead Python function: applicationShouldTerminate_"}, "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-251d01de64e1a092", "name": "Possibly dead Python function: project_point", "shortDescription": {"text": "Possibly dead Python function: project_point"}, "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-fda217dcee46d348", "name": "Possibly dead Python function: keyf", "shortDescription": {"text": "Possibly dead Python function: keyf"}, "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-b061223e54a41c3a", "name": "Possibly dead Python function: face_vertices", "shortDescription": {"text": "Possibly dead Python function: face_vertices"}, "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-15ccef0733a80ebd", "name": "Possibly dead Python function: weapon_status", "shortDescription": {"text": "Possibly dead Python function: weapon_status"}, "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-826ca6d10e26f55f", "name": "Possibly dead Python function: point_contents", "shortDescription": {"text": "Possibly dead Python function: point_contents"}, "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-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "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-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1ee05842a42f8e8b", "name": "Very large file: client.py (2118 lines)", "shortDescription": {"text": "Very large file: client.py (2118 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-9db520b3edd542d5", "name": "Very large file: quake/render.py (2724 lines)", "shortDescription": {"text": "Very large file: quake/render.py (2724 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-755ea92a29a597f4", "name": "Very large file: quake/sv.py (2786 lines)", "shortDescription": {"text": "Very large file: quake/sv.py (2786 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-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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 101 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-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "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, ci. 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": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d6389eda09a7d3fa", "name": "Commented-code block (5 lines) in client.py:35", "shortDescription": {"text": "Commented-code block (5 lines) in client.py:35"}, "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-5f7ca8c214fd1216", "name": "Commented-code block (5 lines) in win_ui.py:330", "shortDescription": {"text": "Commented-code block (5 lines) in win_ui.py:330"}, "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-a0adf3ca69f04d80", "name": "Network/subprocess call without timeout or try/except \u2014 setup.py:71", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 setup.py:71"}, "fullDescription": {"text": "`urllib.request.urlopen(...)` 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-7d67ec5ea4d2c73f", "name": "Commented-code block (5 lines) in main.py:270", "shortDescription": {"text": "Commented-code block (5 lines) in main.py:270"}, "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-a31e1064255b006d", "name": "Commented-code block (5 lines) in mac_cocoa.py:233", "shortDescription": {"text": "Commented-code block (5 lines) in mac_cocoa.py:233"}, "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-a09242df358367ca", "name": "Commented-code block (5 lines) in tests/test_pushmove.py:151", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_pushmove.py:151"}, "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-bf41981637f83da8", "name": "Commented-code block (7 lines) in tests/test_zbuffer_raster.py:174", "shortDescription": {"text": "Commented-code block (7 lines) in tests/test_zbuffer_raster.py:174"}, "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-fbf2783257b9d5a7", "name": "Legacy-named symbol `test_fb8_to_dib_aligned_width_is_a_plain_copy` in tests/test_win_ui.py:47", "shortDescription": {"text": "Legacy-named symbol `test_fb8_to_dib_aligned_width_is_a_plain_copy` in tests/test_win_ui.py:47"}, "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-02cd71f464bc307d", "name": "Commented-code block (5 lines) in tests/test_r_edge.py:90", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_r_edge.py:90"}, "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-d48ddd221bc884ff", "name": "Commented-code block (5 lines) in tests/test_lift_rider_stuck.py:70", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_lift_rider_stuck.py:70"}, "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-9a866ed04918eb88", "name": "Stub function `global_ofs` (body is just `pass`/`return`) \u2014 quake/pr_exec.py:396", "shortDescription": {"text": "Stub function `global_ofs` (body is just `pass`/`return`) \u2014 quake/pr_exec.py:396"}, "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-a59c88b070fa863f", "name": "Commented-code block (5 lines) in quake/perf.py:102", "shortDescription": {"text": "Commented-code block (5 lines) in quake/perf.py:102"}, "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-c97c7a58b57aebaf", "name": "Commented-code block (5 lines) in quake/render.py:221", "shortDescription": {"text": "Commented-code block (5 lines) in quake/render.py:221"}, "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-aa373fc57ed59469", "name": "Commented-code block (7 lines) in quake/bsp.py:83", "shortDescription": {"text": "Commented-code block (7 lines) in quake/bsp.py:83"}, "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-fb2eab94244dc986", "name": "Commented-code block (5 lines) in quake/sv_send.py:33", "shortDescription": {"text": "Commented-code block (5 lines) in quake/sv_send.py:33"}, "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-4e31ff433d90a3a5", "name": "Stub function `cycle` (body is just `pass`/`return`) \u2014 quake/menu.py:47", "shortDescription": {"text": "Stub function `cycle` (body is just `pass`/`return`) \u2014 quake/menu.py:47"}, "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-0a72d31e5469923f", "name": "Commented-code block (6 lines) in quake/sv.py:30", "shortDescription": {"text": "Commented-code block (6 lines) in quake/sv.py:30"}, "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-f187977338f6a419", "name": "Stub function `_pf_noop` (body is just `pass`/`return`) \u2014 quake/sv.py:1187", "shortDescription": {"text": "Stub function `_pf_noop` (body is just `pass`/`return`) \u2014 quake/sv.py:1187"}, "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-48cad6730b3f42a3", "name": "Commented-code block (5 lines) in quake/physics.py:33", "shortDescription": {"text": "Commented-code block (5 lines) in quake/physics.py:33"}, "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-243b50cfd4fb16f9", "name": "Commented-code block (5 lines) in quake/r_edge.py:79", "shortDescription": {"text": "Commented-code block (5 lines) in quake/r_edge.py:79"}, "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-5bdd235e3e4eb109", "name": "Commented-code block (6 lines) in quake/qcc/types.py:38", "shortDescription": {"text": "Commented-code block (6 lines) in quake/qcc/types.py:38"}, "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-3f775d66220fcd4b", "name": "Commented-code block (5 lines) in quake/qcc/lexer.py:165", "shortDescription": {"text": "Commented-code block (5 lines) in quake/qcc/lexer.py:165"}, "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-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:\nquake/pr_exec.py:parm_strofs, quake/pr_exec.py:parm_str\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-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:\nquake/render.py:transform, quake/render.py:transform, quake/render.py:transform\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-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nquake/render.py:emit_face, quake/render.py:emit_face_ofs, quake/render.py:emit_face_ofs, quake/render.py:emit_face\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-33a6b62e30ce7ab4", "name": "Near-duplicate function bodies in 6 places", "shortDescription": {"text": "Near-duplicate function bodies in 6 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nquake/render.py:fill, quake/render.py:fill, quake/render.py:fill, quake/render.py:fill\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/22737"}, "properties": {"repository": "willbr/pq.ai", "repoUrl": "https://github.com/willbr/pq.ai", "branch": "main"}, "results": [{"ruleId": "scanner-03eac3750f426d78", "level": "note", "message": {"text": "Possibly dead Python function: tick"}, "properties": {"repobilityId": "6436402c8e963b20", "scanner": "scanner-primary", "fingerprint": "03eac3750f426d78", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:485"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7f6de0c0037cd3db", "level": "note", "message": {"text": "Possibly dead Python function: isFlipped"}, "properties": {"repobilityId": "e9bf959fe5c8978f", "scanner": "scanner-primary", "fingerprint": "7f6de0c0037cd3db", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mac_cocoa.py:63"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ffc5b95534f1829d", "level": "note", "message": {"text": "Possibly dead Python function: acceptsFirstResponder"}, "properties": {"repobilityId": "b3b024d5054ade6e", "scanner": "scanner-primary", "fingerprint": "ffc5b95534f1829d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mac_cocoa.py:66"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ea52e89b46944533", "level": "note", "message": {"text": "Possibly dead Python function: keyDown_"}, "properties": {"repobilityId": "3cc937160d29ec1e", "scanner": "scanner-primary", "fingerprint": "ea52e89b46944533", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mac_cocoa.py:87"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5c7737837288aacb", "level": "note", "message": {"text": "Possibly dead Python function: keyUp_"}, "properties": {"repobilityId": "0060c67cc923170f", "scanner": "scanner-primary", "fingerprint": "5c7737837288aacb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mac_cocoa.py:105"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bb7360bb8c93a84d", "level": "note", "message": {"text": "Possibly dead Python function: flagsChanged_"}, "properties": {"repobilityId": "76bd45b55ff20cc2", "scanner": "scanner-primary", "fingerprint": "bb7360bb8c93a84d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mac_cocoa.py:109"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-db9de6277f05540f", "level": "note", "message": {"text": "Possibly dead Python function: mouseDown_"}, "properties": {"repobilityId": "e7a7ac5f5d25c0ee", "scanner": "scanner-primary", "fingerprint": "db9de6277f05540f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mac_cocoa.py:194"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8a78e0ccc459fbff", "level": "note", "message": {"text": "Possibly dead Python function: mouseUp_"}, "properties": {"repobilityId": "88f0736df2e4fccd", "scanner": "scanner-primary", "fingerprint": "8a78e0ccc459fbff", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mac_cocoa.py:197"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-10bf758637d656bd", "level": "note", "message": {"text": "Possibly dead Python function: mouseDragged_"}, "properties": {"repobilityId": "8e464ee45b93368d", "scanner": "scanner-primary", "fingerprint": "10bf758637d656bd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mac_cocoa.py:205"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4f71d04a709e72b2", "level": "note", "message": {"text": "Possibly dead Python function: drawRect_"}, "properties": {"repobilityId": "f6f29342abc2e8ba", "scanner": "scanner-primary", "fingerprint": "4f71d04a709e72b2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mac_cocoa.py:214"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-64c8b155037060e1", "level": "note", "message": {"text": "Possibly dead Python function: windowWillClose_"}, "properties": {"repobilityId": "2a62c51aa728c227", "scanner": "scanner-primary", "fingerprint": "64c8b155037060e1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mac_cocoa.py:271"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bff206a73aecc43c", "level": "note", "message": {"text": "Possibly dead Python function: applicationShouldTerminate_"}, "properties": {"repobilityId": "e5abd85b4d1d6514", "scanner": "scanner-primary", "fingerprint": "bff206a73aecc43c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mac_cocoa.py:274"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-251d01de64e1a092", "level": "note", "message": {"text": "Possibly dead Python function: project_point"}, "properties": {"repobilityId": "c88435718380f07d", "scanner": "scanner-primary", "fingerprint": "251d01de64e1a092", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "quake/render.py:1102"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fda217dcee46d348", "level": "note", "message": {"text": "Possibly dead Python function: keyf"}, "properties": {"repobilityId": "a8d7f968aa8d3098", "scanner": "scanner-primary", "fingerprint": "fda217dcee46d348", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "quake/render.py:1662"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b061223e54a41c3a", "level": "note", "message": {"text": "Possibly dead Python function: face_vertices"}, "properties": {"repobilityId": "85a85a9f8d6de8cb", "scanner": "scanner-primary", "fingerprint": "b061223e54a41c3a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "quake/bsp.py:127"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-15ccef0733a80ebd", "level": "note", "message": {"text": "Possibly dead Python function: weapon_status"}, "properties": {"repobilityId": "3ed66617e9591174", "scanner": "scanner-primary", "fingerprint": "15ccef0733a80ebd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "quake/sv.py:2127"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-826ca6d10e26f55f", "level": "note", "message": {"text": "Possibly dead Python function: point_contents"}, "properties": {"repobilityId": "45208a8d38ed8c8b", "scanner": "scanner-primary", "fingerprint": "826ca6d10e26f55f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "quake/physics.py:125"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"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-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-1ee05842a42f8e8b", "level": "note", "message": {"text": "Very large file: client.py (2118 lines)"}, "properties": {"repobilityId": "ba3b323e8fc0a74c", "scanner": "scanner-primary", "fingerprint": "1ee05842a42f8e8b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9db520b3edd542d5", "level": "note", "message": {"text": "Very large file: quake/render.py (2724 lines)"}, "properties": {"repobilityId": "0a4a87ec601714d2", "scanner": "scanner-primary", "fingerprint": "9db520b3edd542d5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-755ea92a29a597f4", "level": "note", "message": {"text": "Very large file: quake/sv.py (2786 lines)"}, "properties": {"repobilityId": "40f182646aefb8e6", "scanner": "scanner-primary", "fingerprint": "755ea92a29a597f4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "0a8eac0dc0cf2f69", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "7806a4e98bb2dde4", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "9c5aa84d479eb450", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "a782492fd1b4be70", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "5351003bafe54d51", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "6fb147fb16041a16", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "0e2f300529ce30c0", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-d6389eda09a7d3fa", "level": "none", "message": {"text": "Commented-code block (5 lines) in client.py:35"}, "properties": {"repobilityId": "fd42777113c6bf08", "scanner": "scanner-primary", "fingerprint": "d6389eda09a7d3fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f7ca8c214fd1216", "level": "none", "message": {"text": "Commented-code block (5 lines) in win_ui.py:330"}, "properties": {"repobilityId": "9b73b0167a6519c4", "scanner": "scanner-primary", "fingerprint": "5f7ca8c214fd1216", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a0adf3ca69f04d80", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 setup.py:71"}, "properties": {"repobilityId": "de4101ae1179872d", "scanner": "scanner-primary", "fingerprint": "a0adf3ca69f04d80", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7d67ec5ea4d2c73f", "level": "none", "message": {"text": "Commented-code block (5 lines) in main.py:270"}, "properties": {"repobilityId": "c9c9f111e549a02f", "scanner": "scanner-primary", "fingerprint": "7d67ec5ea4d2c73f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a31e1064255b006d", "level": "none", "message": {"text": "Commented-code block (5 lines) in mac_cocoa.py:233"}, "properties": {"repobilityId": "3083e9c4a5fcc64a", "scanner": "scanner-primary", "fingerprint": "a31e1064255b006d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a09242df358367ca", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_pushmove.py:151"}, "properties": {"repobilityId": "51b7f6d99887e6fe", "scanner": "scanner-primary", "fingerprint": "a09242df358367ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf41981637f83da8", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/test_zbuffer_raster.py:174"}, "properties": {"repobilityId": "648baf384e23e106", "scanner": "scanner-primary", "fingerprint": "bf41981637f83da8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fbf2783257b9d5a7", "level": "note", "message": {"text": "Legacy-named symbol `test_fb8_to_dib_aligned_width_is_a_plain_copy` in tests/test_win_ui.py:47"}, "properties": {"repobilityId": "f7c77ae498d8d064", "scanner": "scanner-primary", "fingerprint": "fbf2783257b9d5a7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-02cd71f464bc307d", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_r_edge.py:90"}, "properties": {"repobilityId": "01f010eb3b8ee0bf", "scanner": "scanner-primary", "fingerprint": "02cd71f464bc307d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d48ddd221bc884ff", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_lift_rider_stuck.py:70"}, "properties": {"repobilityId": "e7bad549a92067f5", "scanner": "scanner-primary", "fingerprint": "d48ddd221bc884ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a866ed04918eb88", "level": "note", "message": {"text": "Stub function `global_ofs` (body is just `pass`/`return`) \u2014 quake/pr_exec.py:396"}, "properties": {"repobilityId": "16f8d508b7d6064e", "scanner": "scanner-primary", "fingerprint": "9a866ed04918eb88", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-a59c88b070fa863f", "level": "none", "message": {"text": "Commented-code block (5 lines) in quake/perf.py:102"}, "properties": {"repobilityId": "af026a8ea9f32642", "scanner": "scanner-primary", "fingerprint": "a59c88b070fa863f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c97c7a58b57aebaf", "level": "none", "message": {"text": "Commented-code block (5 lines) in quake/render.py:221"}, "properties": {"repobilityId": "aac3d21331f21eab", "scanner": "scanner-primary", "fingerprint": "c97c7a58b57aebaf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa373fc57ed59469", "level": "none", "message": {"text": "Commented-code block (7 lines) in quake/bsp.py:83"}, "properties": {"repobilityId": "815056c105345f17", "scanner": "scanner-primary", "fingerprint": "aa373fc57ed59469", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb2eab94244dc986", "level": "none", "message": {"text": "Commented-code block (5 lines) in quake/sv_send.py:33"}, "properties": {"repobilityId": "777b997f0ef516e5", "scanner": "scanner-primary", "fingerprint": "fb2eab94244dc986", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e31ff433d90a3a5", "level": "note", "message": {"text": "Stub function `cycle` (body is just `pass`/`return`) \u2014 quake/menu.py:47"}, "properties": {"repobilityId": "9456d8da54a89d64", "scanner": "scanner-primary", "fingerprint": "4e31ff433d90a3a5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-0a72d31e5469923f", "level": "none", "message": {"text": "Commented-code block (6 lines) in quake/sv.py:30"}, "properties": {"repobilityId": "e51624055b94fe7d", "scanner": "scanner-primary", "fingerprint": "0a72d31e5469923f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f187977338f6a419", "level": "note", "message": {"text": "Stub function `_pf_noop` (body is just `pass`/`return`) \u2014 quake/sv.py:1187"}, "properties": {"repobilityId": "45bf21563a60609f", "scanner": "scanner-primary", "fingerprint": "f187977338f6a419", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-48cad6730b3f42a3", "level": "none", "message": {"text": "Commented-code block (5 lines) in quake/physics.py:33"}, "properties": {"repobilityId": "ed39c3b7df1a7c3a", "scanner": "scanner-primary", "fingerprint": "48cad6730b3f42a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-243b50cfd4fb16f9", "level": "none", "message": {"text": "Commented-code block (5 lines) in quake/r_edge.py:79"}, "properties": {"repobilityId": "d82abc03c0acd3f6", "scanner": "scanner-primary", "fingerprint": "243b50cfd4fb16f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5bdd235e3e4eb109", "level": "none", "message": {"text": "Commented-code block (6 lines) in quake/qcc/types.py:38"}, "properties": {"repobilityId": "30da6cb251968b67", "scanner": "scanner-primary", "fingerprint": "5bdd235e3e4eb109", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f775d66220fcd4b", "level": "none", "message": {"text": "Commented-code block (5 lines) in quake/qcc/lexer.py:165"}, "properties": {"repobilityId": "5c5899757700b59c", "scanner": "scanner-primary", "fingerprint": "3f775d66220fcd4b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "e92efc7b27fc1803", "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": "3c91e4027344ecec", "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": "e67b311e51a68580", "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": "026be39b8b7ca9e4", "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": "13f81631637b26cf", "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": "f3c6b5afdf18d03a", "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": "c8c99ffcaf2d569e", "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": "c52b99d3985f73f0", "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": "8748492c1bc1e7f3", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "62a5f67081c01517", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "accf87784c6b081a", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "c7df3299e2843c89", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "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": "79b637e48fda52be", "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": "2e0012d4b61a5921", "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": "725ebf7ccaa5ac10", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}