{"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-a62cd93e986f729e", "name": "Stray `console.log` in TS/JS \u2014 test-links.js:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-links.js:57"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-30498d8f4f99ad5c", "name": "Stray `console.log` in TS/JS \u2014 _build/phase7-newsletter.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _build/phase7-newsletter.js:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-40b883d6790841e8", "name": "Stray `console.log` in TS/JS \u2014 _build/phase4-module-interact.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _build/phase4-module-interact.js:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a47e477ab9c2e2f4", "name": "Stray `console.log` in TS/JS \u2014 _build/phase8-accessibility-link.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _build/phase8-accessibility-link.js:21"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bb3b5447e325584b", "name": "Stray `console.log` in TS/JS \u2014 _build/phase4-tips.js:362", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _build/phase4-tips.js:362"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3036e34e3da01acd", "name": "Stray `console.log` in TS/JS \u2014 _build/phase6-scam-dives.js:299", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _build/phase6-scam-dives.js:299"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2518d8746b11e947", "name": "Stray `console.log` in TS/JS \u2014 _build/phase3-accordion.js:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _build/phase3-accordion.js:97"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-594700f2a1f215c6", "name": "Stray `console.log` in TS/JS \u2014 _audit/gen_schema_audit.js:171", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _audit/gen_schema_audit.js:171"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-09f0b7fc0e974480", "name": "Stray `console.log` in TS/JS \u2014 js/feedback-github.js:666", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 js/feedback-github.js:666"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-113b9ccd7b014ed1", "name": "Stray `console.log` in TS/JS \u2014 js/axe.min.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 js/axe.min.js:12"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b13dcd9b26c6e40f", "name": "Insecure pattern 'direct_innerhtml_assignment' in ia-interview-prep.html:714", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ia-interview-prep.html:714"}, "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-6b9265c7534c483d", "name": "Insecure pattern 'document_write' in print-centre.html:968", "shortDescription": {"text": "Insecure pattern 'document_write' in print-centre.html:968"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1a7c8a4f4fa092c4", "name": "Insecure pattern 'direct_innerhtml_assignment' in index.html:756", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in index.html:756"}, "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-35f4413c4577c9ac", "name": "Insecure pattern 'direct_innerhtml_assignment' in p3-prototype.html:720", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in p3-prototype.html:720"}, "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-fc7ce0e3a63f32f6", "name": "Insecure pattern 'direct_innerhtml_assignment' in admin.html:268", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in admin.html:268"}, "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-e80c97b411084ddf", "name": "Insecure pattern 'direct_innerhtml_assignment' in backlog-dashboard.html:744", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in backlog-dashboard.html:744"}, "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-d9795169cfd364e1", "name": "Insecure pattern 'document_write' in lang/fr/print-centre.html:599", "shortDescription": {"text": "Insecure pattern 'document_write' in lang/fr/print-centre.html:599"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a4c681d5aee678b9", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/index.html:189", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/index.html:189"}, "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-784d3436ce0a3f4b", "name": "Insecure pattern 'document_write' in v2/js/certificate.js:262", "shortDescription": {"text": "Insecure pattern 'document_write' in v2/js/certificate.js:262"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c66cd1082cc7da22", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/js/wizard.js:114", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/js/wizard.js:114"}, "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-07e57485ea45a795", "name": "Insecure pattern 'direct_innerhtml_assignment' in _grants/grant-tracker.html:333", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _grants/grant-tracker.html:333"}, "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-4629f0acf96f8a30", "name": "Insecure pattern 'direct_innerhtml_assignment' in _visual-pipeline/preview.html:197", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _visual-pipeline/preview.html:197"}, "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-4df313845fafa4e9", "name": "Insecure pattern 'direct_innerhtml_assignment' in exercises/email-sorting.html:495", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in exercises/email-sorting.html:495"}, "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-caf162b4b83ce036", "name": "Insecure pattern 'direct_innerhtml_assignment' in beta/feedback-tracking.html:337", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in beta/feedback-tracking.html:337"}, "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-2d9d06ba03de1c8c", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/welcome-splash.js:24", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/welcome-splash.js:24"}, "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-5dc0bcad8aec9127", "name": "Insecure pattern 'insert_adjacent_html' in js/settings.js:218", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in js/settings.js:218"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8ba82038138b7b2d", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/email-capture.js:36", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/email-capture.js:36"}, "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-6b9a2d67afc24a6f", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/city-resources.js:155", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/city-resources.js:155"}, "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-68077cc1250e7e4b", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/measurement.js:36", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/measurement.js:36"}, "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-9235a1b046878741", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/quiz-check.js:115", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/quiz-check.js:115"}, "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-4471e96e73fe2d8a", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/module-enhancements.js:60", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/module-enhancements.js:60"}, "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-8d16a47f08c5f45b", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/final-quiz.js:889", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/final-quiz.js:889"}, "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-e9764d70cad667e9", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/quiz-enhancements.js:39", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/quiz-enhancements.js:39"}, "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-5fddaf42fcbe37e8", "name": "Insecure pattern 'insert_adjacent_html' in js/quiz-enhancements.js:199", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in js/quiz-enhancements.js:199"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4786ff103db759ac", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/homepage-freshness.js:102", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/homepage-freshness.js:102"}, "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-f87a42074563886e", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/homepage-personalise.js:168", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/homepage-personalise.js:168"}, "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-07149023e3605d97", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/location.js:66", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/location.js:66"}, "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-f50c21257fc4b086", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/analytics-consent.js:110", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/analytics-consent.js: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-0c5e5b5fe491fe01", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/feedback-github.js:139", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/feedback-github.js:139"}, "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-c57841890d81f8fd", "name": "Insecure pattern 'insert_adjacent_html' in js/feedback-github.js:281", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in js/feedback-github.js:281"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5b341cf108215137", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/sponsor-card.js:117", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/sponsor-card.js:117"}, "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-45caf97bf701a306", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/glossary.js:152", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/glossary.js:152"}, "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-4bd89ffcadb179d5", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/onboarding.js:206", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/onboarding.js:206"}, "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-4215e3aef1ea7fe3", "name": "Insecure pattern 'new_function_used' in js/axe.min.js:12", "shortDescription": {"text": "Insecure pattern 'new_function_used' in js/axe.min.js:12"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-919f8dc9c1bb24db", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/axe.min.js:12", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/axe.min.js:12"}, "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-1714b24c523b8f0f", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/search.js:317", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/search.js:317"}, "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-051dd35f68b00f0f", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/module-nav.js:113", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/module-nav.js:113"}, "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-fd031d5e3f595b83", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/module-quiz.js:68", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/module-quiz.js:68"}, "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-3a2b79eaaefd6d2b", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/glossary-enhancements.js:57", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/glossary-enhancements.js:57"}, "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-2310faafdbdb1e4e", "name": "Insecure pattern 'eval_used' in js/confirm-dialogs.js:170", "shortDescription": {"text": "Insecure pattern 'eval_used' in js/confirm-dialogs.js:170"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-550641b69cacbef7", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/homepage-v2.js:82", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/homepage-v2.js:82"}, "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-583cd18044e3e88d", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/scam-quiz.js:135", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/scam-quiz.js:135"}, "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-ed55925efc74d519", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/focus-mode.js:79", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/focus-mode.js:79"}, "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-3f585e95748e1ffd", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/read-aloud.js:31", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/read-aloud.js:31"}, "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-9a4c36dcb653946c", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/youtube-intercept.js:72", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/youtube-intercept.js:72"}, "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-e4bb908bc4f1f578", "name": "Insecure pattern 'document_write' in js/module-complete.js:99", "shortDescription": {"text": "Insecure pattern 'document_write' in js/module-complete.js:99"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ba39f5a07cfb1458", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/module-complete.js:130", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/module-complete.js:130"}, "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-832032602b22949a", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/dcc-news-feed.js:39", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/dcc-news-feed.js:39"}, "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-17f0ddbd5b7e2693", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/app.js:209", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/app.js:209"}, "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-e4d917682d797c83", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/exercise-engine.js:262", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/exercise-engine.js:262"}, "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-d78cced5e4e60a3b", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/speech-config.js:165", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/speech-config.js:165"}, "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-4c0795df4a8f266a", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/qa-audit.js:74", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/qa-audit.js:74"}, "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-ccc58547cc6a4f31", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/celebrations.js:112", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/celebrations.js:112"}, "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-795d0172c4cea477", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/module-ecosystem.js:69", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/module-ecosystem.js:69"}, "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-6e1e79308068b221", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/offline-banner.js:48", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/offline-banner.js:48"}, "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-e7d15604c2d4e62a", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/location-prompt.js:51", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/location-prompt.js:51"}, "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-0d44f2209c21eadb", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/panic-button.js:24", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/panic-button.js:24"}, "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-3b88a0ec4967244c", "name": "Insecure pattern 'insert_adjacent_html' in js/panic-button.js:110", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in js/panic-button.js:110"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fa96ab1ae2b1976a", "name": "Insecure pattern 'document_write' in js/module-interact.js:102", "shortDescription": {"text": "Insecure pattern 'document_write' in js/module-interact.js:102"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-09945ffdf9f50937", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/module-interact.js:23", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/module-interact.js:23"}, "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-9ee18b8ddf45a4d3", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/video-player.js:60", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/video-player.js:60"}, "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-711f39c9448ff395", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/module-grid.js:127", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/module-grid.js:127"}, "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-5e64a4e6b81ef634", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/lang-toggle.js:216", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/lang-toggle.js:216"}, "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-990c09adda36586b", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/setup-wizard.js:135", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/setup-wizard.js:135"}, "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-dd404e2600cbb52a", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/accessibility.js:213", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/accessibility.js:213"}, "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-aee569bc54a7ccbd", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/newsletter.js:27", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/newsletter.js:27"}, "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-c7fa78b30cd53c95", "name": "Insecure pattern 'direct_innerhtml_assignment' in sales-materials/ROI-calculator.html:281", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in sales-materials/ROI-calculator.html:281"}, "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-531ea426f06b6d82", "name": "Insecure pattern 'direct_innerhtml_assignment' in admin/search-analytics.html:114", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in admin/search-analytics.html:114"}, "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-9b9f586805416631", "name": "Insecure pattern 'direct_innerhtml_assignment' in admin/feedback-review.html:199", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in admin/feedback-review.html:199"}, "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-0c5825e9020e5654", "name": "Insecure pattern 'direct_innerhtml_assignment' in admin/performance.html:384", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in admin/performance.html:384"}, "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-2073ece6678854f6", "name": "Insecure pattern 'direct_innerhtml_assignment' in admin/user-journey-dashboard.html:423", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in admin/user-journey-dashboard.html:423"}, "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-cb2f43e2259e51aa", "name": "Insecure pattern 'direct_innerhtml_assignment' in _social/social-dashboard.html:204", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _social/social-dashboard.html:204"}, "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-0477f9d0e1134ba2", "name": "Insecure pattern 'direct_innerhtml_assignment' in tools/backup-viewer.html:386", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in tools/backup-viewer.html:386"}, "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-c97c3c10e8f74953", "name": "Insecure pattern 'direct_innerhtml_assignment' in _b2b/outreach-dashboard.html:157", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _b2b/outreach-dashboard.html:157"}, "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-57dc79f81c3abecb", "name": "Insecure pattern 'node_child_process' in .github/workflows/weekly-summary.yml:25", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .github/workflows/weekly-summary.yml:25"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c27f8a5f9795a541", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0706a00e3bba1c59", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/github-script@v7 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c6557aab2602174", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f8cdfffd70600cb1", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-16fea116f388c00b", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f74113f12dbc83ca", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-79cd2323ac8f6da9", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6cdf8726c87c0c11", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6874df8f033153cc", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-372142bd2b9e1449", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-12794b1dc6215ba1", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-93b5dc94140a9b18", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3af7c09e4309e053", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ed8f918172bb4eb8", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d51d18a56b86400e", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-54850a680fca8dcc", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8fcc42771d4776a9", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2acdded75e66a97", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4c90d49cee42a117", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49b45d0f3460a35c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-32fc2faa7d6f502a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/github-script@v7 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ec26a86b33ca5668", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a3d0885d6aa5211f", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-python@v5 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3367fd0452be67c8", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a4d8e49468bcba02", "name": "Very large file: generate_answers.py (1131 lines)", "shortDescription": {"text": "Very large file: generate_answers.py (1131 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-6b7e595894498489", "name": "Very large file: js/final-quiz.js (1296 lines)", "shortDescription": {"text": "Very large file: js/final-quiz.js (1296 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": "5 test file(s) for 97 source file(s) (ratio 0.05). 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-e035aaf3aab5aa9b", "name": "Node manifest has dependencies but no lockfile: tests/playwright/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: tests/playwright/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "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 86 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-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 147 placeholder/mock markers across 27 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "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, lockfile. 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, lockfile. 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-ecb0d2c55ed6875d", "name": "Agent authority lacks a verifier contract: .claude/settings.local.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.local.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d70492a06cb5e494", "name": "Commented-code block (6 lines) in tests/playwright/visual.spec.js:9", "shortDescription": {"text": "Commented-code block (6 lines) in tests/playwright/visual.spec.js:9"}, "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-9854c05705f15e84", "name": "Commented-code block (5 lines) in tests/playwright/playwright.config.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in tests/playwright/playwright.config.js:1"}, "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-67b9254e15c88968", "name": "Commented-code block (5 lines) in tests/playwright/smoke.spec.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in tests/playwright/smoke.spec.js:1"}, "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-f0c2e85500eeb867", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/email-capture.js:24", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/email-capture.js:24"}, "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}}, {"id": "scanner-89a73e56ca296521", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/module-enhancements.js:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/module-enhancements.js:27"}, "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}}, {"id": "scanner-fc6e1a371564c85c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/feedback-github.js:693", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/feedback-github.js:693"}, "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}}, {"id": "scanner-974094c8e8fc1b05", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/sponsor-card.js:44", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/sponsor-card.js:44"}, "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}}, {"id": "scanner-f318e4149862a957", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/module-quiz.js:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/module-quiz.js:42"}, "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}}, {"id": "scanner-dc0723666711406e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/content-freshness.js:118", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/content-freshness.js:118"}, "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/21776"}, "properties": {"repository": "twobirds-kramerica/digital-confidence", "repoUrl": "https://github.com/twobirds-kramerica/digital-confidence", "branch": "main"}, "results": [{"ruleId": "scanner-a62cd93e986f729e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-links.js:57"}, "properties": {"repobilityId": "324c9ce89f10b191", "scanner": "scanner-primary", "fingerprint": "a62cd93e986f729e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-30498d8f4f99ad5c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _build/phase7-newsletter.js:23"}, "properties": {"repobilityId": "5ed2ac5bcff10d99", "scanner": "scanner-primary", "fingerprint": "30498d8f4f99ad5c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40b883d6790841e8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _build/phase4-module-interact.js:32"}, "properties": {"repobilityId": "1b0dceb1f35b6be8", "scanner": "scanner-primary", "fingerprint": "40b883d6790841e8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a47e477ab9c2e2f4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _build/phase8-accessibility-link.js:21"}, "properties": {"repobilityId": "bba00d94253b6cd2", "scanner": "scanner-primary", "fingerprint": "a47e477ab9c2e2f4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bb3b5447e325584b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _build/phase4-tips.js:362"}, "properties": {"repobilityId": "df7ee0ab4d65a9ed", "scanner": "scanner-primary", "fingerprint": "bb3b5447e325584b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3036e34e3da01acd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _build/phase6-scam-dives.js:299"}, "properties": {"repobilityId": "76b4d10a1babe61e", "scanner": "scanner-primary", "fingerprint": "3036e34e3da01acd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2518d8746b11e947", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _build/phase3-accordion.js:97"}, "properties": {"repobilityId": "048cf8a9497de816", "scanner": "scanner-primary", "fingerprint": "2518d8746b11e947", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-594700f2a1f215c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _audit/gen_schema_audit.js:171"}, "properties": {"repobilityId": "80ea46f26346629b", "scanner": "scanner-primary", "fingerprint": "594700f2a1f215c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-09f0b7fc0e974480", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 js/feedback-github.js:666"}, "properties": {"repobilityId": "0cc59baeef5c7933", "scanner": "scanner-primary", "fingerprint": "09f0b7fc0e974480", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-113b9ccd7b014ed1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 js/axe.min.js:12"}, "properties": {"repobilityId": "901cd1de46685264", "scanner": "scanner-primary", "fingerprint": "113b9ccd7b014ed1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b13dcd9b26c6e40f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ia-interview-prep.html:714"}, "properties": {"repobilityId": "2692b49269ab07e3", "scanner": "scanner-primary", "fingerprint": "b13dcd9b26c6e40f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ia-interview-prep.html"}, "region": {"startLine": 714}}}]}, {"ruleId": "scanner-6b9265c7534c483d", "level": "note", "message": {"text": "Insecure pattern 'document_write' in print-centre.html:968"}, "properties": {"repobilityId": "f0021c7f452c58e0", "scanner": "scanner-primary", "fingerprint": "6b9265c7534c483d", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "print-centre.html"}, "region": {"startLine": 968}}}]}, {"ruleId": "scanner-1a7c8a4f4fa092c4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in index.html:756"}, "properties": {"repobilityId": "f91708437a3a5445", "scanner": "scanner-primary", "fingerprint": "1a7c8a4f4fa092c4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "index.html"}, "region": {"startLine": 756}}}]}, {"ruleId": "scanner-35f4413c4577c9ac", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in p3-prototype.html:720"}, "properties": {"repobilityId": "a55c46cb04ce4a32", "scanner": "scanner-primary", "fingerprint": "35f4413c4577c9ac", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "p3-prototype.html"}, "region": {"startLine": 720}}}]}, {"ruleId": "scanner-fc7ce0e3a63f32f6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in admin.html:268"}, "properties": {"repobilityId": "6ce12d2fb0d90b99", "scanner": "scanner-primary", "fingerprint": "fc7ce0e3a63f32f6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "admin.html"}, "region": {"startLine": 268}}}]}, {"ruleId": "scanner-e80c97b411084ddf", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in backlog-dashboard.html:744"}, "properties": {"repobilityId": "f0024e9a84469255", "scanner": "scanner-primary", "fingerprint": "e80c97b411084ddf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backlog-dashboard.html"}, "region": {"startLine": 744}}}]}, {"ruleId": "scanner-d9795169cfd364e1", "level": "note", "message": {"text": "Insecure pattern 'document_write' in lang/fr/print-centre.html:599"}, "properties": {"repobilityId": "8169b38411bfd137", "scanner": "scanner-primary", "fingerprint": "d9795169cfd364e1", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lang/fr/print-centre.html"}, "region": {"startLine": 599}}}]}, {"ruleId": "scanner-a4c681d5aee678b9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/index.html:189"}, "properties": {"repobilityId": "10b5b892fac4fe91", "scanner": "scanner-primary", "fingerprint": "a4c681d5aee678b9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/index.html"}, "region": {"startLine": 189}}}]}, {"ruleId": "scanner-784d3436ce0a3f4b", "level": "note", "message": {"text": "Insecure pattern 'document_write' in v2/js/certificate.js:262"}, "properties": {"repobilityId": "4ba19812483a9e7d", "scanner": "scanner-primary", "fingerprint": "784d3436ce0a3f4b", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/js/certificate.js"}, "region": {"startLine": 262}}}]}, {"ruleId": "scanner-c66cd1082cc7da22", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/js/wizard.js:114"}, "properties": {"repobilityId": "76e25390c4288157", "scanner": "scanner-primary", "fingerprint": "c66cd1082cc7da22", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/js/wizard.js"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-07e57485ea45a795", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _grants/grant-tracker.html:333"}, "properties": {"repobilityId": "6602b9d5a392df02", "scanner": "scanner-primary", "fingerprint": "07e57485ea45a795", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_grants/grant-tracker.html"}, "region": {"startLine": 333}}}]}, {"ruleId": "scanner-4629f0acf96f8a30", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _visual-pipeline/preview.html:197"}, "properties": {"repobilityId": "4a3237aa2aceff4a", "scanner": "scanner-primary", "fingerprint": "4629f0acf96f8a30", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_visual-pipeline/preview.html"}, "region": {"startLine": 197}}}]}, {"ruleId": "scanner-4df313845fafa4e9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in exercises/email-sorting.html:495"}, "properties": {"repobilityId": "15615cb878c6b93c", "scanner": "scanner-primary", "fingerprint": "4df313845fafa4e9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "exercises/email-sorting.html"}, "region": {"startLine": 495}}}]}, {"ruleId": "scanner-caf162b4b83ce036", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in beta/feedback-tracking.html:337"}, "properties": {"repobilityId": "bfe696d5707262ba", "scanner": "scanner-primary", "fingerprint": "caf162b4b83ce036", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "beta/feedback-tracking.html"}, "region": {"startLine": 337}}}]}, {"ruleId": "scanner-2d9d06ba03de1c8c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/welcome-splash.js:24"}, "properties": {"repobilityId": "83ff306afca244db", "scanner": "scanner-primary", "fingerprint": "2d9d06ba03de1c8c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/welcome-splash.js"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-5dc0bcad8aec9127", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in js/settings.js:218"}, "properties": {"repobilityId": "d2b6178b4e574c42", "scanner": "scanner-primary", "fingerprint": "5dc0bcad8aec9127", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/settings.js"}, "region": {"startLine": 218}}}]}, {"ruleId": "scanner-8ba82038138b7b2d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/email-capture.js:36"}, "properties": {"repobilityId": "9783d7ce10ed0b35", "scanner": "scanner-primary", "fingerprint": "8ba82038138b7b2d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/email-capture.js"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-6b9a2d67afc24a6f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/city-resources.js:155"}, "properties": {"repobilityId": "b70e238843d572a1", "scanner": "scanner-primary", "fingerprint": "6b9a2d67afc24a6f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/city-resources.js"}, "region": {"startLine": 155}}}]}, {"ruleId": "scanner-68077cc1250e7e4b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/measurement.js:36"}, "properties": {"repobilityId": "06c959347763e5a1", "scanner": "scanner-primary", "fingerprint": "68077cc1250e7e4b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/measurement.js"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-9235a1b046878741", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/quiz-check.js:115"}, "properties": {"repobilityId": "8b18f9271bbd7940", "scanner": "scanner-primary", "fingerprint": "9235a1b046878741", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/quiz-check.js"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-4471e96e73fe2d8a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/module-enhancements.js:60"}, "properties": {"repobilityId": "4c1f14d98a8cad80", "scanner": "scanner-primary", "fingerprint": "4471e96e73fe2d8a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/module-enhancements.js"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-8d16a47f08c5f45b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/final-quiz.js:889"}, "properties": {"repobilityId": "1366750eff7b410e", "scanner": "scanner-primary", "fingerprint": "8d16a47f08c5f45b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/final-quiz.js"}, "region": {"startLine": 889}}}]}, {"ruleId": "scanner-e9764d70cad667e9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/quiz-enhancements.js:39"}, "properties": {"repobilityId": "c59633fe9ce9bfc3", "scanner": "scanner-primary", "fingerprint": "e9764d70cad667e9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/quiz-enhancements.js"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-5fddaf42fcbe37e8", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in js/quiz-enhancements.js:199"}, "properties": {"repobilityId": "b5f4e2ccdea55996", "scanner": "scanner-primary", "fingerprint": "5fddaf42fcbe37e8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/quiz-enhancements.js"}, "region": {"startLine": 199}}}]}, {"ruleId": "scanner-4786ff103db759ac", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/homepage-freshness.js:102"}, "properties": {"repobilityId": "757e343aa869f92b", "scanner": "scanner-primary", "fingerprint": "4786ff103db759ac", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/homepage-freshness.js"}, "region": {"startLine": 102}}}]}, {"ruleId": "scanner-f87a42074563886e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/homepage-personalise.js:168"}, "properties": {"repobilityId": "950e7363332e2ac8", "scanner": "scanner-primary", "fingerprint": "f87a42074563886e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/homepage-personalise.js"}, "region": {"startLine": 168}}}]}, {"ruleId": "scanner-07149023e3605d97", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/location.js:66"}, "properties": {"repobilityId": "6f0090f3c85103d9", "scanner": "scanner-primary", "fingerprint": "07149023e3605d97", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/location.js"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-f50c21257fc4b086", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/analytics-consent.js:110"}, "properties": {"repobilityId": "61e52b89818715ed", "scanner": "scanner-primary", "fingerprint": "f50c21257fc4b086", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/analytics-consent.js"}, "region": {"startLine": 110}}}]}, {"ruleId": "scanner-0c5e5b5fe491fe01", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/feedback-github.js:139"}, "properties": {"repobilityId": "3b8f2b843ef71e9b", "scanner": "scanner-primary", "fingerprint": "0c5e5b5fe491fe01", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/feedback-github.js"}, "region": {"startLine": 139}}}]}, {"ruleId": "scanner-c57841890d81f8fd", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in js/feedback-github.js:281"}, "properties": {"repobilityId": "099320f27932832b", "scanner": "scanner-primary", "fingerprint": "c57841890d81f8fd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/feedback-github.js"}, "region": {"startLine": 281}}}]}, {"ruleId": "scanner-5b341cf108215137", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/sponsor-card.js:117"}, "properties": {"repobilityId": "c07ce6cb7a807768", "scanner": "scanner-primary", "fingerprint": "5b341cf108215137", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/sponsor-card.js"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-45caf97bf701a306", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/glossary.js:152"}, "properties": {"repobilityId": "c509cafb384ccc15", "scanner": "scanner-primary", "fingerprint": "45caf97bf701a306", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/glossary.js"}, "region": {"startLine": 152}}}]}, {"ruleId": "scanner-4bd89ffcadb179d5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/onboarding.js:206"}, "properties": {"repobilityId": "a935ef2d37717eba", "scanner": "scanner-primary", "fingerprint": "4bd89ffcadb179d5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/onboarding.js"}, "region": {"startLine": 206}}}]}, {"ruleId": "scanner-4215e3aef1ea7fe3", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in js/axe.min.js:12"}, "properties": {"repobilityId": "6c26b446506eed9d", "scanner": "scanner-primary", "fingerprint": "4215e3aef1ea7fe3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/axe.min.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-919f8dc9c1bb24db", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/axe.min.js:12"}, "properties": {"repobilityId": "c2efdf02a85be5c7", "scanner": "scanner-primary", "fingerprint": "919f8dc9c1bb24db", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/axe.min.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-1714b24c523b8f0f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/search.js:317"}, "properties": {"repobilityId": "b63309624c603083", "scanner": "scanner-primary", "fingerprint": "1714b24c523b8f0f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/search.js"}, "region": {"startLine": 317}}}]}, {"ruleId": "scanner-051dd35f68b00f0f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/module-nav.js:113"}, "properties": {"repobilityId": "b1bded5fa80e1473", "scanner": "scanner-primary", "fingerprint": "051dd35f68b00f0f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/module-nav.js"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-fd031d5e3f595b83", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/module-quiz.js:68"}, "properties": {"repobilityId": "a8fa628b516b8ca0", "scanner": "scanner-primary", "fingerprint": "fd031d5e3f595b83", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/module-quiz.js"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-3a2b79eaaefd6d2b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/glossary-enhancements.js:57"}, "properties": {"repobilityId": "b5b2ec30e128cd28", "scanner": "scanner-primary", "fingerprint": "3a2b79eaaefd6d2b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/glossary-enhancements.js"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-2310faafdbdb1e4e", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in js/confirm-dialogs.js:170"}, "properties": {"repobilityId": "c8ebec9e899f5444", "scanner": "scanner-primary", "fingerprint": "2310faafdbdb1e4e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/confirm-dialogs.js"}, "region": {"startLine": 170}}}]}, {"ruleId": "scanner-550641b69cacbef7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/homepage-v2.js:82"}, "properties": {"repobilityId": "151cb0c331d067cf", "scanner": "scanner-primary", "fingerprint": "550641b69cacbef7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/homepage-v2.js"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-583cd18044e3e88d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/scam-quiz.js:135"}, "properties": {"repobilityId": "0a559c84df30f96a", "scanner": "scanner-primary", "fingerprint": "583cd18044e3e88d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/scam-quiz.js"}, "region": {"startLine": 135}}}]}, {"ruleId": "scanner-ed55925efc74d519", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/focus-mode.js:79"}, "properties": {"repobilityId": "919baf29e567fba9", "scanner": "scanner-primary", "fingerprint": "ed55925efc74d519", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/focus-mode.js"}, "region": {"startLine": 79}}}]}, {"ruleId": "scanner-3f585e95748e1ffd", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/read-aloud.js:31"}, "properties": {"repobilityId": "6dda3431d6355f2b", "scanner": "scanner-primary", "fingerprint": "3f585e95748e1ffd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/read-aloud.js"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-9a4c36dcb653946c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/youtube-intercept.js:72"}, "properties": {"repobilityId": "f7a18d6c362607f0", "scanner": "scanner-primary", "fingerprint": "9a4c36dcb653946c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/youtube-intercept.js"}, "region": {"startLine": 72}}}]}, {"ruleId": "scanner-e4bb908bc4f1f578", "level": "note", "message": {"text": "Insecure pattern 'document_write' in js/module-complete.js:99"}, "properties": {"repobilityId": "b4f04151c299a446", "scanner": "scanner-primary", "fingerprint": "e4bb908bc4f1f578", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/module-complete.js"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-ba39f5a07cfb1458", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/module-complete.js:130"}, "properties": {"repobilityId": "e144204c68b9c3cf", "scanner": "scanner-primary", "fingerprint": "ba39f5a07cfb1458", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/module-complete.js"}, "region": {"startLine": 130}}}]}, {"ruleId": "scanner-832032602b22949a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/dcc-news-feed.js:39"}, "properties": {"repobilityId": "9019d075e360101e", "scanner": "scanner-primary", "fingerprint": "832032602b22949a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/dcc-news-feed.js"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-17f0ddbd5b7e2693", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/app.js:209"}, "properties": {"repobilityId": "f12f5fb5c6eb3ec0", "scanner": "scanner-primary", "fingerprint": "17f0ddbd5b7e2693", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/app.js"}, "region": {"startLine": 209}}}]}, {"ruleId": "scanner-e4d917682d797c83", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/exercise-engine.js:262"}, "properties": {"repobilityId": "7151035fdbdde77c", "scanner": "scanner-primary", "fingerprint": "e4d917682d797c83", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/exercise-engine.js"}, "region": {"startLine": 262}}}]}, {"ruleId": "scanner-d78cced5e4e60a3b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/speech-config.js:165"}, "properties": {"repobilityId": "aa504e2787fa3aa8", "scanner": "scanner-primary", "fingerprint": "d78cced5e4e60a3b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/speech-config.js"}, "region": {"startLine": 165}}}]}, {"ruleId": "scanner-4c0795df4a8f266a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/qa-audit.js:74"}, "properties": {"repobilityId": "10d599557ec0dc79", "scanner": "scanner-primary", "fingerprint": "4c0795df4a8f266a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/qa-audit.js"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-ccc58547cc6a4f31", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/celebrations.js:112"}, "properties": {"repobilityId": "6e2a6f5fc01c393e", "scanner": "scanner-primary", "fingerprint": "ccc58547cc6a4f31", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/celebrations.js"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-795d0172c4cea477", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/module-ecosystem.js:69"}, "properties": {"repobilityId": "200604a88bad6ae6", "scanner": "scanner-primary", "fingerprint": "795d0172c4cea477", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/module-ecosystem.js"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-6e1e79308068b221", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/offline-banner.js:48"}, "properties": {"repobilityId": "1ab177d3271b74cf", "scanner": "scanner-primary", "fingerprint": "6e1e79308068b221", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/offline-banner.js"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-e7d15604c2d4e62a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/location-prompt.js:51"}, "properties": {"repobilityId": "8f4111a7ef85d1cb", "scanner": "scanner-primary", "fingerprint": "e7d15604c2d4e62a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/location-prompt.js"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-0d44f2209c21eadb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/panic-button.js:24"}, "properties": {"repobilityId": "f65986e28cf2eeb8", "scanner": "scanner-primary", "fingerprint": "0d44f2209c21eadb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/panic-button.js"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-3b88a0ec4967244c", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in js/panic-button.js:110"}, "properties": {"repobilityId": "e2bfd15eb9fc588b", "scanner": "scanner-primary", "fingerprint": "3b88a0ec4967244c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/panic-button.js"}, "region": {"startLine": 110}}}]}, {"ruleId": "scanner-fa96ab1ae2b1976a", "level": "note", "message": {"text": "Insecure pattern 'document_write' in js/module-interact.js:102"}, "properties": {"repobilityId": "8903667ea6cbda01", "scanner": "scanner-primary", "fingerprint": "fa96ab1ae2b1976a", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/module-interact.js"}, "region": {"startLine": 102}}}]}, {"ruleId": "scanner-09945ffdf9f50937", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/module-interact.js:23"}, "properties": {"repobilityId": "e24e404c7a85e6b3", "scanner": "scanner-primary", "fingerprint": "09945ffdf9f50937", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/module-interact.js"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-9ee18b8ddf45a4d3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/video-player.js:60"}, "properties": {"repobilityId": "c3f5c0bab45ec508", "scanner": "scanner-primary", "fingerprint": "9ee18b8ddf45a4d3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/video-player.js"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-711f39c9448ff395", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/module-grid.js:127"}, "properties": {"repobilityId": "cbb9547dad27c6a3", "scanner": "scanner-primary", "fingerprint": "711f39c9448ff395", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/module-grid.js"}, "region": {"startLine": 127}}}]}, {"ruleId": "scanner-5e64a4e6b81ef634", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/lang-toggle.js:216"}, "properties": {"repobilityId": "c78a5a29de67807f", "scanner": "scanner-primary", "fingerprint": "5e64a4e6b81ef634", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/lang-toggle.js"}, "region": {"startLine": 216}}}]}, {"ruleId": "scanner-990c09adda36586b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/setup-wizard.js:135"}, "properties": {"repobilityId": "565463facc84fa27", "scanner": "scanner-primary", "fingerprint": "990c09adda36586b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/setup-wizard.js"}, "region": {"startLine": 135}}}]}, {"ruleId": "scanner-dd404e2600cbb52a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/accessibility.js:213"}, "properties": {"repobilityId": "9fb5c15db76244ad", "scanner": "scanner-primary", "fingerprint": "dd404e2600cbb52a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/accessibility.js"}, "region": {"startLine": 213}}}]}, {"ruleId": "scanner-aee569bc54a7ccbd", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/newsletter.js:27"}, "properties": {"repobilityId": "aa859ff76591e8be", "scanner": "scanner-primary", "fingerprint": "aee569bc54a7ccbd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/newsletter.js"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-c7fa78b30cd53c95", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in sales-materials/ROI-calculator.html:281"}, "properties": {"repobilityId": "4739b7c54f5af409", "scanner": "scanner-primary", "fingerprint": "c7fa78b30cd53c95", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sales-materials/ROI-calculator.html"}, "region": {"startLine": 281}}}]}, {"ruleId": "scanner-531ea426f06b6d82", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in admin/search-analytics.html:114"}, "properties": {"repobilityId": "95cacbb18811ef8e", "scanner": "scanner-primary", "fingerprint": "531ea426f06b6d82", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "admin/search-analytics.html"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-9b9f586805416631", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in admin/feedback-review.html:199"}, "properties": {"repobilityId": "5dcee5e335bc8143", "scanner": "scanner-primary", "fingerprint": "9b9f586805416631", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "admin/feedback-review.html"}, "region": {"startLine": 199}}}]}, {"ruleId": "scanner-0c5825e9020e5654", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in admin/performance.html:384"}, "properties": {"repobilityId": "31e9837aad7ee465", "scanner": "scanner-primary", "fingerprint": "0c5825e9020e5654", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "admin/performance.html"}, "region": {"startLine": 384}}}]}, {"ruleId": "scanner-2073ece6678854f6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in admin/user-journey-dashboard.html:423"}, "properties": {"repobilityId": "bdd841ea6064e371", "scanner": "scanner-primary", "fingerprint": "2073ece6678854f6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "admin/user-journey-dashboard.html"}, "region": {"startLine": 423}}}]}, {"ruleId": "scanner-cb2f43e2259e51aa", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _social/social-dashboard.html:204"}, "properties": {"repobilityId": "f323e01fa23de146", "scanner": "scanner-primary", "fingerprint": "cb2f43e2259e51aa", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_social/social-dashboard.html"}, "region": {"startLine": 204}}}]}, {"ruleId": "scanner-0477f9d0e1134ba2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in tools/backup-viewer.html:386"}, "properties": {"repobilityId": "8629274b2c225ed1", "scanner": "scanner-primary", "fingerprint": "0477f9d0e1134ba2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/backup-viewer.html"}, "region": {"startLine": 386}}}]}, {"ruleId": "scanner-c97c3c10e8f74953", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _b2b/outreach-dashboard.html:157"}, "properties": {"repobilityId": "517d60c7ed9e2f73", "scanner": "scanner-primary", "fingerprint": "c97c3c10e8f74953", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_b2b/outreach-dashboard.html"}, "region": {"startLine": 157}}}]}, {"ruleId": "scanner-57dc79f81c3abecb", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .github/workflows/weekly-summary.yml:25"}, "properties": {"repobilityId": "9915d96822948e0c", "scanner": "scanner-primary", "fingerprint": "57dc79f81c3abecb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/weekly-summary.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-c27f8a5f9795a541", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fdef1137245a89a4", "scanner": "scanner-primary", "fingerprint": "c27f8a5f9795a541", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/monthly-report.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-c27f8a5f9795a541", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7fa2e6757e262022", "scanner": "scanner-primary", "fingerprint": "c27f8a5f9795a541", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/monthly-report.yml"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-0706a00e3bba1c59", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "76fd80976a980f20", "scanner": "scanner-primary", "fingerprint": "0706a00e3bba1c59", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/accessibility-reminder.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-1c6557aab2602174", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "eaff89d941f85797", "scanner": "scanner-primary", "fingerprint": "1c6557aab2602174", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/prompt-queue-monitor.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-1c6557aab2602174", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4d2b4797e6519685", "scanner": "scanner-primary", "fingerprint": "1c6557aab2602174", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/prompt-queue-monitor.yml"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-1c6557aab2602174", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4d2b4797e6519685", "scanner": "scanner-primary", "fingerprint": "1c6557aab2602174", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/prompt-queue-monitor.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-f8cdfffd70600cb1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6dceb4e4bc113aab", "scanner": "scanner-primary", "fingerprint": "f8cdfffd70600cb1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/playwright.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-f8cdfffd70600cb1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "30b6d4ff20a5afff", "scanner": "scanner-primary", "fingerprint": "f8cdfffd70600cb1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/playwright.yml"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-f8cdfffd70600cb1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6531e16af1d99538", "scanner": "scanner-primary", "fingerprint": "f8cdfffd70600cb1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/playwright.yml"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-16fea116f388c00b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d258e3e9645dc930", "scanner": "scanner-primary", "fingerprint": "16fea116f388c00b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-sitemap.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-f74113f12dbc83ca", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "fe79d44ac99b855d", "scanner": "scanner-primary", "fingerprint": "f74113f12dbc83ca", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-sitemap.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-79cd2323ac8f6da9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "21f8adaedb5dbf5a", "scanner": "scanner-primary", "fingerprint": "79cd2323ac8f6da9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/content-freshness.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-79cd2323ac8f6da9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "41314cf4857cd143", "scanner": "scanner-primary", "fingerprint": "79cd2323ac8f6da9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/content-freshness.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-6cdf8726c87c0c11", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d3a7b1f17f03076a", "scanner": "scanner-primary", "fingerprint": "6cdf8726c87c0c11", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sitemap-validator.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-6874df8f033153cc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2bfa988789ec07fb", "scanner": "scanner-primary", "fingerprint": "6874df8f033153cc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/axe-core.yml"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-6874df8f033153cc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3d80dc997048e2e3", "scanner": "scanner-primary", "fingerprint": "6874df8f033153cc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/axe-core.yml"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-6874df8f033153cc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "69782475f8be66dd", "scanner": "scanner-primary", "fingerprint": "6874df8f033153cc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/axe-core.yml"}, "region": {"startLine": 159}}}]}, {"ruleId": "scanner-372142bd2b9e1449", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c636c81c8195821b", "scanner": "scanner-primary", "fingerprint": "372142bd2b9e1449", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/weekly-linkedin-reminder.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-372142bd2b9e1449", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b3549e9930d13662", "scanner": "scanner-primary", "fingerprint": "372142bd2b9e1449", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/weekly-linkedin-reminder.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-12794b1dc6215ba1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fae0b818e4b9753a", "scanner": "scanner-primary", "fingerprint": "12794b1dc6215ba1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/new-branch-alert.yml"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-12794b1dc6215ba1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5c71f68150e943e6", "scanner": "scanner-primary", "fingerprint": "12794b1dc6215ba1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/new-branch-alert.yml"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-93b5dc94140a9b18", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ed6080e4ce00c8dd", "scanner": "scanner-primary", "fingerprint": "93b5dc94140a9b18", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/visual-regression.yml"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-93b5dc94140a9b18", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7dff0c6d1db51cd8", "scanner": "scanner-primary", "fingerprint": "93b5dc94140a9b18", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/visual-regression.yml"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-93b5dc94140a9b18", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "aa59201970110832", "scanner": "scanner-primary", "fingerprint": "93b5dc94140a9b18", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/visual-regression.yml"}, "region": {"startLine": 135}}}]}, {"ruleId": "scanner-3af7c09e4309e053", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "d8437ff821b97669", "scanner": "scanner-primary", "fingerprint": "3af7c09e4309e053", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/visual-regression.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ed8f918172bb4eb8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9c1c51af4a5ccc82", "scanner": "scanner-primary", "fingerprint": "ed8f918172bb4eb8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/new-content-reminder.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-ed8f918172bb4eb8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6a09f1a56cdbe51b", "scanner": "scanner-primary", "fingerprint": "ed8f918172bb4eb8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/new-content-reminder.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-d51d18a56b86400e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bc9e75df541b2608", "scanner": "scanner-primary", "fingerprint": "d51d18a56b86400e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-check.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-d51d18a56b86400e", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "51199ecc40f74541", "scanner": "scanner-primary", "fingerprint": "d51d18a56b86400e", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-check.yml"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-54850a680fca8dcc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5b3837a158e07261", "scanner": "scanner-primary", "fingerprint": "54850a680fca8dcc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/weekly-summary.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-54850a680fca8dcc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2351306c0b5bde56", "scanner": "scanner-primary", "fingerprint": "54850a680fca8dcc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/weekly-summary.yml"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-8fcc42771d4776a9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ca80087deef192a8", "scanner": "scanner-primary", "fingerprint": "8fcc42771d4776a9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/human-sprint-reminder.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-8fcc42771d4776a9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f4146e324221d6aa", "scanner": "scanner-primary", "fingerprint": "8fcc42771d4776a9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/human-sprint-reminder.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-b2acdded75e66a97", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d80a7890e1541456", "scanner": "scanner-primary", "fingerprint": "b2acdded75e66a97", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/link-checker.yml"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-b2acdded75e66a97", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c23032c913ce2752", "scanner": "scanner-primary", "fingerprint": "b2acdded75e66a97", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/link-checker.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-b2acdded75e66a97", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ced7ee916a0b6603", "scanner": "scanner-primary", "fingerprint": "b2acdded75e66a97", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/link-checker.yml"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-4c90d49cee42a117", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "608da5477aec55c6", "scanner": "scanner-primary", "fingerprint": "4c90d49cee42a117", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/monthly-business-report.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-4c90d49cee42a117", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bada04a0f1dd9944", "scanner": "scanner-primary", "fingerprint": "4c90d49cee42a117", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/monthly-business-report.yml"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-49b45d0f3460a35c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "facde22f07bfb58c", "scanner": "scanner-primary", "fingerprint": "49b45d0f3460a35c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/broken-external-link-check.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-49b45d0f3460a35c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5efab5a8ccd93d3e", "scanner": "scanner-primary", "fingerprint": "49b45d0f3460a35c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/broken-external-link-check.yml"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-32fc2faa7d6f502a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "79d68e2ddd9d97de", "scanner": "scanner-primary", "fingerprint": "32fc2faa7d6f502a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/content-count-report.yml"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-ec26a86b33ca5668", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f51e81d3071e424d", "scanner": "scanner-primary", "fingerprint": "ec26a86b33ca5668", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-health-report.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-ec26a86b33ca5668", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "688d21086f41f969", "scanner": "scanner-primary", "fingerprint": "ec26a86b33ca5668", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-health-report.yml"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-ec26a86b33ca5668", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "688d21086f41f969", "scanner": "scanner-primary", "fingerprint": "ec26a86b33ca5668", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-health-report.yml"}, "region": {"startLine": 72}}}]}, {"ruleId": "scanner-a3d0885d6aa5211f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0e7b5f9f061ff4d7", "scanner": "scanner-primary", "fingerprint": "a3d0885d6aa5211f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-dcc-news.yml"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-3367fd0452be67c8", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "99eb661e7c5bd581", "scanner": "scanner-primary", "fingerprint": "3367fd0452be67c8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-dcc-news.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a4d8e49468bcba02", "level": "note", "message": {"text": "Very large file: generate_answers.py (1131 lines)"}, "properties": {"repobilityId": "3e6a647f72da8f06", "scanner": "scanner-primary", "fingerprint": "a4d8e49468bcba02", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6b7e595894498489", "level": "note", "message": {"text": "Very large file: js/final-quiz.js (1296 lines)"}, "properties": {"repobilityId": "d39b0b926acef8a9", "scanner": "scanner-primary", "fingerprint": "6b7e595894498489", "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": "b866fafcb943fc3a", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-e035aaf3aab5aa9b", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: tests/playwright/package.json"}, "properties": {"repobilityId": "b6d5e884df035f47", "scanner": "scanner-primary", "fingerprint": "e035aaf3aab5aa9b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/playwright/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "ca520f3bab00b3cb", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "8a05c555e8280b09", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "95fa6e81f02019b4", "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": "68f663b09d1e8334", "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": "3f4d14b540fce76b", "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": "f6365a9217c38893", "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": "4f03004406390db6", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-ecb0d2c55ed6875d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.local.json"}, "properties": {"repobilityId": "d8bae33a6d517bf0", "scanner": "scanner-primary", "fingerprint": "ecb0d2c55ed6875d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.local.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d70492a06cb5e494", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/playwright/visual.spec.js:9"}, "properties": {"repobilityId": "2f8610499e49c845", "scanner": "scanner-primary", "fingerprint": "d70492a06cb5e494", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9854c05705f15e84", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/playwright/playwright.config.js:1"}, "properties": {"repobilityId": "fd01e78ae5f1f3e2", "scanner": "scanner-primary", "fingerprint": "9854c05705f15e84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67b9254e15c88968", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/playwright/smoke.spec.js:1"}, "properties": {"repobilityId": "b9966318b880efc9", "scanner": "scanner-primary", "fingerprint": "67b9254e15c88968", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0c2e85500eeb867", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/email-capture.js:24"}, "properties": {"repobilityId": "298c6995aa423fa7", "scanner": "scanner-primary", "fingerprint": "f0c2e85500eeb867", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-89a73e56ca296521", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/module-enhancements.js:27"}, "properties": {"repobilityId": "d6c629303c3f7d82", "scanner": "scanner-primary", "fingerprint": "89a73e56ca296521", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fc6e1a371564c85c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/feedback-github.js:693"}, "properties": {"repobilityId": "e767c1c8c9dcc110", "scanner": "scanner-primary", "fingerprint": "fc6e1a371564c85c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-974094c8e8fc1b05", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/sponsor-card.js:44"}, "properties": {"repobilityId": "68166e85208704f7", "scanner": "scanner-primary", "fingerprint": "974094c8e8fc1b05", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f318e4149862a957", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/module-quiz.js:42"}, "properties": {"repobilityId": "4f500f838319e01b", "scanner": "scanner-primary", "fingerprint": "f318e4149862a957", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dc0723666711406e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/content-freshness.js:118"}, "properties": {"repobilityId": "0ae8a34928e4ad82", "scanner": "scanner-primary", "fingerprint": "dc0723666711406e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}]}]}