{"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-def5a04bb98a17b1", "name": "Insecure pattern 'direct_innerhtml_assignment' in 04_\ucc57\ubd07_\ud3ec\ud138_\ub370\ubaa8UI.html:633", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in 04_\ucc57\ubd07_\ud3ec\ud138_\ub370\ubaa8UI.html:633"}, "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-53e316a5e7cf52e9", "name": "Insecure pattern 'local_storage_auth_token' in 04_\ucc57\ubd07_\ud3ec\ud138_\ub370\ubaa8UI.html:677", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in 04_\ucc57\ubd07_\ud3ec\ud138_\ub370\ubaa8UI.html:677"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e71534cfd316debe", "name": "Insecure pattern 'direct_innerhtml_assignment' in 05_\ub2c8\uc988\uc870\uc0ac/03_\uacfc\uc81c\ud3c9\uac00_\uc2dc\ud2b8.html:108", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in 05_\ub2c8\uc988\uc870\uc0ac/03_\uacfc\uc81c\ud3c9\uac00_\uc2dc\ud2b8.html:108"}, "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-11b2506aae69727b", "name": "Insecure pattern 'direct_innerhtml_assignment' in 05_\ub2c8\uc988\uc870\uc0ac/02_\ub2c8\uc988\uc870\uc0ac_\uc9d1\uacc4_\ub300\uc2dc\ubcf4\ub4dc.html:129", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in 05_\ub2c8\uc988\uc870\uc0ac/02_\ub2c8\uc988\uc870\uc0ac_\uc9d1\uacc4_\ub300\uc2dc\ubcf4\ub4dc.html:129"}, "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-2bed8f8d67992e27", "name": "Insecure pattern 'direct_innerhtml_assignment' in 05_\ub2c8\uc988\uc870\uc0ac/01_\ub2c8\uc988\uc870\uc0ac_\uc124\ubb38\ud3fc.html:194", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in 05_\ub2c8\uc988\uc870\uc0ac/01_\ub2c8\uc988\uc870\uc0ac_\uc124\ubb38\ud3fc.html:194"}, "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-674e561163f52167", "name": "Insecure pattern 'direct_innerhtml_assignment' in pages/\ud488\ubaa9\uc911\ubcf5_\uc870\ud68c_2026.html:162", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pages/\ud488\ubaa9\uc911\ubcf5_\uc870\ud68c_2026.html:162"}, "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-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, 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-017531d22f8c9990", "name": "Legacy-named symbol `jeil_ai_needs_survey_v1` in 05_\ub2c8\uc988\uc870\uc0ac/assets/datastore.js:24", "shortDescription": {"text": "Legacy-named symbol `jeil_ai_needs_survey_v1` in 05_\ub2c8\uc988\uc870\uc0ac/assets/datastore.js:24"}, "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-4c2ec4d49cf04852", "name": "`fetch()` without try/.catch or AbortSignal \u2014 05_\ub2c8\uc988\uc870\uc0ac/assets/datastore.js:317", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 05_\ub2c8\uc988\uc870\uc0ac/assets/datastore.js:317"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/24858"}, "properties": {"repository": "cdhnayajeil-code/jeil_ax", "repoUrl": "https://github.com/cdhnayajeil-code/jeil_ax", "branch": "main"}, "results": [{"ruleId": "scanner-def5a04bb98a17b1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in 04_\ucc57\ubd07_\ud3ec\ud138_\ub370\ubaa8UI.html:633"}, "properties": {"repobilityId": "e2cf2fb9c3884a54", "scanner": "scanner-primary", "fingerprint": "def5a04bb98a17b1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "04_\ucc57\ubd07_\ud3ec\ud138_\ub370\ubaa8UI.html"}, "region": {"startLine": 633}}}]}, {"ruleId": "scanner-53e316a5e7cf52e9", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in 04_\ucc57\ubd07_\ud3ec\ud138_\ub370\ubaa8UI.html:677"}, "properties": {"repobilityId": "87e1f34a73521672", "scanner": "scanner-primary", "fingerprint": "53e316a5e7cf52e9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "04_\ucc57\ubd07_\ud3ec\ud138_\ub370\ubaa8UI.html"}, "region": {"startLine": 677}}}]}, {"ruleId": "scanner-e71534cfd316debe", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in 05_\ub2c8\uc988\uc870\uc0ac/03_\uacfc\uc81c\ud3c9\uac00_\uc2dc\ud2b8.html:108"}, "properties": {"repobilityId": "667d19d82a521f0b", "scanner": "scanner-primary", "fingerprint": "e71534cfd316debe", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "05_\ub2c8\uc988\uc870\uc0ac/03_\uacfc\uc81c\ud3c9\uac00_\uc2dc\ud2b8.html"}, "region": {"startLine": 108}}}]}, {"ruleId": "scanner-11b2506aae69727b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in 05_\ub2c8\uc988\uc870\uc0ac/02_\ub2c8\uc988\uc870\uc0ac_\uc9d1\uacc4_\ub300\uc2dc\ubcf4\ub4dc.html:129"}, "properties": {"repobilityId": "e7494528883dd177", "scanner": "scanner-primary", "fingerprint": "11b2506aae69727b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "05_\ub2c8\uc988\uc870\uc0ac/02_\ub2c8\uc988\uc870\uc0ac_\uc9d1\uacc4_\ub300\uc2dc\ubcf4\ub4dc.html"}, "region": {"startLine": 129}}}]}, {"ruleId": "scanner-2bed8f8d67992e27", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in 05_\ub2c8\uc988\uc870\uc0ac/01_\ub2c8\uc988\uc870\uc0ac_\uc124\ubb38\ud3fc.html:194"}, "properties": {"repobilityId": "f38412d681dfee4d", "scanner": "scanner-primary", "fingerprint": "2bed8f8d67992e27", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "05_\ub2c8\uc988\uc870\uc0ac/01_\ub2c8\uc988\uc870\uc0ac_\uc124\ubb38\ud3fc.html"}, "region": {"startLine": 194}}}]}, {"ruleId": "scanner-674e561163f52167", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pages/\ud488\ubaa9\uc911\ubcf5_\uc870\ud68c_2026.html:162"}, "properties": {"repobilityId": "fc52c4d4f1053955", "scanner": "scanner-primary", "fingerprint": "674e561163f52167", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pages/\ud488\ubaa9\uc911\ubcf5_\uc870\ud68c_2026.html"}, "region": {"startLine": 162}}}]}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "bf0a64a9cdc0d8c4", "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": "b49fa394914011df", "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": "2ab499407f288dd4", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-017531d22f8c9990", "level": "note", "message": {"text": "Legacy-named symbol `jeil_ai_needs_survey_v1` in 05_\ub2c8\uc988\uc870\uc0ac/assets/datastore.js:24"}, "properties": {"repobilityId": "f7e2e24cf25cb11f", "scanner": "scanner-primary", "fingerprint": "017531d22f8c9990", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4c2ec4d49cf04852", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 05_\ub2c8\uc988\uc870\uc0ac/assets/datastore.js:317"}, "properties": {"repobilityId": "5579617ef4561055", "scanner": "scanner-primary", "fingerprint": "4c2ec4d49cf04852", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}]}]}