{"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-6fb5c6ea73d3ad90", "name": "Insecure pattern 'direct_innerhtml_assignment' in build_deck.py:750", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in build_deck.py:750"}, "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-af7a9dc2102183dc", "name": "Insecure pattern 'direct_innerhtml_assignment' in leaderboard.html:95", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in leaderboard.html:95"}, "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-cf61262eb3d35c3d", "name": "Insecure pattern 'direct_innerhtml_assignment' in eel_cultivated_meat.html:721", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in eel_cultivated_meat.html:721"}, "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-fa9ad1ead393eedc", "name": "Insecure pattern 'direct_innerhtml_assignment' in index.html:721", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in index.html:721"}, "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-1bad126cc783d629", "name": "Insecure pattern 'direct_innerhtml_assignment' in board.html:110", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in board.html:110"}, "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-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-bac2855f11165e99", "name": "Very large file: build_deck.py (994 lines)", "shortDescription": {"text": "Very large file: build_deck.py (994 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-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-f4887d17b6beadee", "name": "Legacy-named symbol `p_old` in build_deck.py:812", "shortDescription": {"text": "Legacy-named symbol `p_old` in build_deck.py:812"}, "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}}]}}, "automationDetails": {"id": "repobility/29822"}, "properties": {"repository": "Tai-ShengYeh/cultivated-eel-lesson", "repoUrl": "https://github.com/Tai-ShengYeh/cultivated-eel-lesson", "branch": "main"}, "results": [{"ruleId": "scanner-6fb5c6ea73d3ad90", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in build_deck.py:750"}, "properties": {"repobilityId": "9f0224d128e4c2a4", "scanner": "scanner-primary", "fingerprint": "6fb5c6ea73d3ad90", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "build_deck.py"}, "region": {"startLine": 750}}}]}, {"ruleId": "scanner-af7a9dc2102183dc", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in leaderboard.html:95"}, "properties": {"repobilityId": "6e1db018b2aac719", "scanner": "scanner-primary", "fingerprint": "af7a9dc2102183dc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leaderboard.html"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-cf61262eb3d35c3d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in eel_cultivated_meat.html:721"}, "properties": {"repobilityId": "8ea7d53e459ebc47", "scanner": "scanner-primary", "fingerprint": "cf61262eb3d35c3d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "eel_cultivated_meat.html"}, "region": {"startLine": 721}}}]}, {"ruleId": "scanner-fa9ad1ead393eedc", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in index.html:721"}, "properties": {"repobilityId": "f91708437a3a5445", "scanner": "scanner-primary", "fingerprint": "fa9ad1ead393eedc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "index.html"}, "region": {"startLine": 721}}}]}, {"ruleId": "scanner-1bad126cc783d629", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in board.html:110"}, "properties": {"repobilityId": "217759a390c74aa2", "scanner": "scanner-primary", "fingerprint": "1bad126cc783d629", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "board.html"}, "region": {"startLine": 110}}}]}, {"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-bac2855f11165e99", "level": "note", "message": {"text": "Very large file: build_deck.py (994 lines)"}, "properties": {"repobilityId": "15baf8dc2d20218e", "scanner": "scanner-primary", "fingerprint": "bac2855f11165e99", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "1a46e8bfa58c3d23", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-f4887d17b6beadee", "level": "note", "message": {"text": "Legacy-named symbol `p_old` in build_deck.py:812"}, "properties": {"repobilityId": "f3bd7fc60c3ddf2f", "scanner": "scanner-primary", "fingerprint": "f4887d17b6beadee", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}]}]}