{"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-1615ce9ea6c5ab0b", "name": "Insecure pattern 'direct_innerhtml_assignment' in nav-mobile.js:97", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in nav-mobile.js:97"}, "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-d2a830e864540f74", "name": "Insecure pattern 'direct_innerhtml_assignment' in card-styles.html:184", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in card-styles.html:184"}, "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-10b59e8bb88ab723", "name": "Insecure pattern 'direct_innerhtml_assignment' in camera.html:389", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in camera.html:389"}, "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-a9c3089595235781", "name": "Insecure pattern 'direct_innerhtml_assignment' in grip-truck.html:422", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in grip-truck.html:422"}, "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-85f243d8900991d2", "name": "Insecure pattern 'direct_innerhtml_assignment' in all.html:373", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in all.html:373"}, "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-c1dec4ec7745fd78", "name": "Insecure pattern 'direct_innerhtml_assignment' in sound-storm.html:382", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in sound-storm.html:382"}, "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-10725baef46c0304", "name": "Insecure pattern 'direct_innerhtml_assignment' in rentals-storm-v2.html:401", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in rentals-storm-v2.html:401"}, "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-70a507c8e9318702", "name": "Insecure pattern 'direct_innerhtml_assignment' in grip-truck-storm-v2.html:442", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in grip-truck-storm-v2.html:442"}, "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-d4ada3de1eccc704", "name": "Insecure pattern 'direct_innerhtml_assignment' in truck-storm.html:279", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in truck-storm.html:279"}, "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-02aedb09a7698467", "name": "Insecure pattern 'direct_innerhtml_assignment' in camera-storm-v2.html:409", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in camera-storm-v2.html:409"}, "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-a994405f4026933f", "name": "Insecure pattern 'direct_innerhtml_assignment' in sound.html:380", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in sound.html:380"}, "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-721785d032200376", "name": "Insecure pattern 'direct_innerhtml_assignment' in product-storm.html:323", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in product-storm.html:323"}, "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-6e1a5fd95009cff5", "name": "Insecure pattern 'direct_innerhtml_assignment' in rentals.html:381", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in rentals.html:381"}, "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-1c55dd670bfdf1b9", "name": "Insecure pattern 'direct_innerhtml_assignment' in product.html:258", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in product.html:258"}, "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-3a4da6d16135cd1e", "name": "Insecure pattern 'direct_innerhtml_assignment' in rentals-storm.html:383", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in rentals-storm.html:383"}, "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-d55b97b309ea1989", "name": "Insecure pattern 'direct_innerhtml_assignment' in sound-storm-v2.html:400", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in sound-storm-v2.html:400"}, "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-b80ea59e040b2efd", "name": "Insecure pattern 'direct_innerhtml_assignment' in inventory-styles.html:252", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in inventory-styles.html:252"}, "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-9f83dab2906c199e", "name": "Insecure pattern 'direct_innerhtml_assignment' in camera-storm.html:391", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in camera-storm.html:391"}, "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-7fd933c9b4033ba9", "name": "Insecure pattern 'direct_innerhtml_assignment' in grip-truck-storm.html:424", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in grip-truck-storm.html:424"}, "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-852368fa8ce8512c", "name": "Insecure pattern 'direct_innerhtml_assignment' in design-explorations/08-rentals-cart-light.html:1216", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in design-explorations/08-rentals-cart-light.html:1216"}, "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-6bfbb4688d55e8a2", "name": "Insecure pattern 'direct_innerhtml_assignment' in design-explorations/07-rentals-cart.html:1205", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in design-explorations/07-rentals-cart.html:1205"}, "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-4574abb8be42f4a2", "name": "Very large file: product-details.js (1424 lines)", "shortDescription": {"text": "Very large file: product-details.js (1424 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 5 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-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, 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}}]}}, "automationDetails": {"id": "repobility/25058"}, "properties": {"repository": "Colinwrandall1/thunderstruck-pictures", "repoUrl": "https://github.com/Colinwrandall1/thunderstruck-pictures", "branch": "main"}, "results": [{"ruleId": "scanner-1615ce9ea6c5ab0b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in nav-mobile.js:97"}, "properties": {"repobilityId": "783ec2dcf22a102d", "scanner": "scanner-primary", "fingerprint": "1615ce9ea6c5ab0b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "nav-mobile.js"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-d2a830e864540f74", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in card-styles.html:184"}, "properties": {"repobilityId": "fa760fb6b9c83f6a", "scanner": "scanner-primary", "fingerprint": "d2a830e864540f74", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "card-styles.html"}, "region": {"startLine": 184}}}]}, {"ruleId": "scanner-10b59e8bb88ab723", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in camera.html:389"}, "properties": {"repobilityId": "893aa0ef6a4b2f28", "scanner": "scanner-primary", "fingerprint": "10b59e8bb88ab723", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "camera.html"}, "region": {"startLine": 389}}}]}, {"ruleId": "scanner-a9c3089595235781", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in grip-truck.html:422"}, "properties": {"repobilityId": "52430a63862c3290", "scanner": "scanner-primary", "fingerprint": "a9c3089595235781", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "grip-truck.html"}, "region": {"startLine": 422}}}]}, {"ruleId": "scanner-85f243d8900991d2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in all.html:373"}, "properties": {"repobilityId": "ed11687510c5d3a9", "scanner": "scanner-primary", "fingerprint": "85f243d8900991d2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "all.html"}, "region": {"startLine": 373}}}]}, {"ruleId": "scanner-c1dec4ec7745fd78", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in sound-storm.html:382"}, "properties": {"repobilityId": "2be564419e5eaab8", "scanner": "scanner-primary", "fingerprint": "c1dec4ec7745fd78", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sound-storm.html"}, "region": {"startLine": 382}}}]}, {"ruleId": "scanner-10725baef46c0304", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in rentals-storm-v2.html:401"}, "properties": {"repobilityId": "1c7a9abbe8a8a91d", "scanner": "scanner-primary", "fingerprint": "10725baef46c0304", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rentals-storm-v2.html"}, "region": {"startLine": 401}}}]}, {"ruleId": "scanner-70a507c8e9318702", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in grip-truck-storm-v2.html:442"}, "properties": {"repobilityId": "cc7c5755a327a6d6", "scanner": "scanner-primary", "fingerprint": "70a507c8e9318702", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "grip-truck-storm-v2.html"}, "region": {"startLine": 442}}}]}, {"ruleId": "scanner-d4ada3de1eccc704", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in truck-storm.html:279"}, "properties": {"repobilityId": "bd41ab8c0457d914", "scanner": "scanner-primary", "fingerprint": "d4ada3de1eccc704", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "truck-storm.html"}, "region": {"startLine": 279}}}]}, {"ruleId": "scanner-02aedb09a7698467", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in camera-storm-v2.html:409"}, "properties": {"repobilityId": "17c446ac7745dfa3", "scanner": "scanner-primary", "fingerprint": "02aedb09a7698467", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "camera-storm-v2.html"}, "region": {"startLine": 409}}}]}, {"ruleId": "scanner-a994405f4026933f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in sound.html:380"}, "properties": {"repobilityId": "fc555557a6acdaad", "scanner": "scanner-primary", "fingerprint": "a994405f4026933f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sound.html"}, "region": {"startLine": 380}}}]}, {"ruleId": "scanner-721785d032200376", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in product-storm.html:323"}, "properties": {"repobilityId": "44ad7a66a7172f5a", "scanner": "scanner-primary", "fingerprint": "721785d032200376", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "product-storm.html"}, "region": {"startLine": 323}}}]}, {"ruleId": "scanner-6e1a5fd95009cff5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in rentals.html:381"}, "properties": {"repobilityId": "35e42056bbd24bc3", "scanner": "scanner-primary", "fingerprint": "6e1a5fd95009cff5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rentals.html"}, "region": {"startLine": 381}}}]}, {"ruleId": "scanner-1c55dd670bfdf1b9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in product.html:258"}, "properties": {"repobilityId": "ce7de1985e9d627f", "scanner": "scanner-primary", "fingerprint": "1c55dd670bfdf1b9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "product.html"}, "region": {"startLine": 258}}}]}, {"ruleId": "scanner-3a4da6d16135cd1e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in rentals-storm.html:383"}, "properties": {"repobilityId": "6f89ac1fc8eb40e2", "scanner": "scanner-primary", "fingerprint": "3a4da6d16135cd1e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rentals-storm.html"}, "region": {"startLine": 383}}}]}, {"ruleId": "scanner-d55b97b309ea1989", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in sound-storm-v2.html:400"}, "properties": {"repobilityId": "4c05d94ccb16e80c", "scanner": "scanner-primary", "fingerprint": "d55b97b309ea1989", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sound-storm-v2.html"}, "region": {"startLine": 400}}}]}, {"ruleId": "scanner-b80ea59e040b2efd", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in inventory-styles.html:252"}, "properties": {"repobilityId": "ebbc27fcc19246cb", "scanner": "scanner-primary", "fingerprint": "b80ea59e040b2efd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "inventory-styles.html"}, "region": {"startLine": 252}}}]}, {"ruleId": "scanner-9f83dab2906c199e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in camera-storm.html:391"}, "properties": {"repobilityId": "9a915227f7f95103", "scanner": "scanner-primary", "fingerprint": "9f83dab2906c199e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "camera-storm.html"}, "region": {"startLine": 391}}}]}, {"ruleId": "scanner-7fd933c9b4033ba9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in grip-truck-storm.html:424"}, "properties": {"repobilityId": "b2f89d1e7fc89e4e", "scanner": "scanner-primary", "fingerprint": "7fd933c9b4033ba9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "grip-truck-storm.html"}, "region": {"startLine": 424}}}]}, {"ruleId": "scanner-852368fa8ce8512c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in design-explorations/08-rentals-cart-light.html:1216"}, "properties": {"repobilityId": "febec0d1ada449d0", "scanner": "scanner-primary", "fingerprint": "852368fa8ce8512c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "design-explorations/08-rentals-cart-light.html"}, "region": {"startLine": 1216}}}]}, {"ruleId": "scanner-6bfbb4688d55e8a2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in design-explorations/07-rentals-cart.html:1205"}, "properties": {"repobilityId": "b1d11ee612d83124", "scanner": "scanner-primary", "fingerprint": "6bfbb4688d55e8a2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "design-explorations/07-rentals-cart.html"}, "region": {"startLine": 1205}}}]}, {"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-4574abb8be42f4a2", "level": "note", "message": {"text": "Very large file: product-details.js (1424 lines)"}, "properties": {"repobilityId": "aab576c0b6e874f7", "scanner": "scanner-primary", "fingerprint": "4574abb8be42f4a2", "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": "c73520aa4e91f288", "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": "4ba6f60c7da00299", "scanner": "scanner-primary", "fingerprint": "faccb9061e9b52a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["docs", "readme", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "b2c8db6b17a7fcce", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}]}]}