{"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-450374da4e1a7dae", "name": "Possibly dead Python function: repl", "shortDescription": {"text": "Possibly dead Python function: repl"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-34e6a7ba64882c22", "name": "`truncate` class without `title=` for hover reveal \u2014 archive/demo/src/pages/ActivityCardsDemo.tsx:439", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 archive/demo/src/pages/ActivityCardsDemo.tsx:439"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fb0c05548d45f5f9", "name": "Insecure pattern 'direct_innerhtml_assignment' in archive/demo/certificate.html:602", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in archive/demo/certificate.html:602"}, "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-79b538312bcfba65", "name": "Insecure pattern 'direct_innerhtml_assignment' in archive/theme/html-snippets/misinformation-detector.html:797", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in archive/theme/html-snippets/misinformation-detector.html:797"}, "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-81604a03a78a077b", "name": "Insecure pattern 'direct_innerhtml_assignment' in archive/theme/html-snippets/neu-ai-report.html:691", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in archive/theme/html-snippets/neu-ai-report.html:691"}, "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-5c2c24aacfdef4c3", "name": "Insecure pattern 'direct_innerhtml_assignment' in archive/theme/generators/letter-generator.html:300", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in archive/theme/generators/letter-generator.html:300"}, "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-79c7052394861133", "name": "Insecure pattern 'direct_innerhtml_assignment' in archive/theme/generators/certificate-generator.html:452", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in archive/theme/generators/certificate-generator.html:452"}, "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-67ad62f55a895809", "name": "Insecure pattern 'direct_innerhtml_assignment' in archive/airb/js/airb-front-pre-1.48.0-snapshot.js:2990", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in archive/airb/js/airb-front-pre-1.48.0-snapshot.js:2990"}, "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-64d909ed1dfe789c", "name": "Insecure pattern 'insert_adjacent_html' in archive/airb/js/airb-front-pre-1.48.0-snapshot.js:3198", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in archive/airb/js/airb-front-pre-1.48.0-snapshot.js:3198"}, "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-ef50ebeec2ec39b1", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-llm-explainer.js:322", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-llm-explainer.js:322"}, "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-fd2ad090ef4108e7", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-curriculum-quiz.js:1109", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-curriculum-quiz.js:1109"}, "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-e4163b065421c55a", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-speed-quiz.js:295", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-speed-quiz.js:295"}, "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-2d9b089820125214", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-neu-ai-report.js:93", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-neu-ai-report.js:93"}, "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-5b63b0a5142e6493", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/schools-ai-risk-academy.js:186", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/schools-ai-risk-academy.js:186"}, "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-da4dbd679143a1c9", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/national-survey.js:176", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/national-survey.js:176"}, "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-02fa6cb7f7d8a6dd", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-computing-curriculum-challenge.js:355", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-computing-curriculum-challenge.js:355"}, "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-bd38a2b5577d0244", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/resource-filters.js:50", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/resource-filters.js:50"}, "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-eb31138092ddc794", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/main.js:434", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/main.js:434"}, "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-1a31a34b3b8c7ac3", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/timeline.js:36", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/timeline.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-c12a7f3a43df581f", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-llm-order-game.js:116", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-llm-order-game.js:116"}, "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-2ccf2fdb49d7d549", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-buzzwords.js:136", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-buzzwords.js:136"}, "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-712597703ca77d27", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-misinformation-detector.js:246", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-misinformation-detector.js:246"}, "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-8df7f4c7286c7f81", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-ict-curriculum.js:101", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-ict-curriculum.js:101"}, "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-e03898abf06cfc97", "name": "Insecure pattern 'direct_innerhtml_assignment' in plugins/ai-risk-readiness-benchmark/public/js/airb-front.js:2718", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in plugins/ai-risk-readiness-benchmark/public/js/airb-front.js:2718"}, "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-70c3ee815bfa85db", "name": "Insecure pattern 'insert_adjacent_html' in plugins/ai-risk-readiness-benchmark/public/js/airb-front.js:2926", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in plugins/ai-risk-readiness-benchmark/public/js/airb-front.js:2926"}, "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-290dae404441dee3", "name": "Insecure pattern 'direct_innerhtml_assignment' in plugins/ai-risk-readiness-benchmark/public/js/airb-audit.js:128", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in plugins/ai-risk-readiness-benchmark/public/js/airb-audit.js:128"}, "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-eae62ee1472bb92c", "name": "Insecure pattern 'direct_innerhtml_assignment' in plugins/ai-risk-readiness-benchmark/public/js/airb-hub-interest.js:380", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in plugins/ai-risk-readiness-benchmark/public/js/airb-hub-interest.js:380"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-126e0cc4f05ef632", "name": "Very large file: archive/airb/js/airb-front-pre-1.48.0-snapshot.js (5938 lines)", "shortDescription": {"text": "Very large file: archive/airb/js/airb-front-pre-1.48.0-snapshot.js (5938 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-41af5f70fab96d18", "name": "Very large file: assets/js/ai-curriculum-quiz.js (1842 lines)", "shortDescription": {"text": "Very large file: assets/js/ai-curriculum-quiz.js (1842 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-9ee2612b8dd81d6c", "name": "Very large file: plugins/ai-risk-readiness-benchmark/public/js/airb-front.js (5502 lines)", "shortDescription": {"text": "Very large file: plugins/ai-risk-readiness-benchmark/public/js/airb-front.js (5502 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 87 source file(s) (ratio 0.00). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 140 placeholder/mock markers across 36 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, ci, tests. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-49fd6ccf96a91217", "name": "Legacy-named symbol `airb_completed_roles_v1` in archive/airb/js/airb-front-pre-1.48.0-snapshot.js:23", "shortDescription": {"text": "Legacy-named symbol `airb_completed_roles_v1` in archive/airb/js/airb-front-pre-1.48.0-snapshot.js:23"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ab7c9ed375cf618", "name": "`fetch()` without try/.catch or AbortSignal \u2014 archive/airb/js/airb-front-pre-1.48.0-snapshot.js:5597", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 archive/airb/js/airb-front-pre-1.48.0-snapshot.js:5597"}, "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-ba2c4ffa2aa795a0", "name": "Legacy-named symbol `aiad_speed_quiz_leaderboard_v1` in assets/js/ai-speed-quiz.js:4", "shortDescription": {"text": "Legacy-named symbol `aiad_speed_quiz_leaderboard_v1` in assets/js/ai-speed-quiz.js:4"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ebb85eaafb4494c9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 assets/js/national-survey.js:392", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 assets/js/national-survey.js:392"}, "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-0b02258a0c040289", "name": "Commented-code block (5 lines) in assets/js/resource-filters.js:280", "shortDescription": {"text": "Commented-code block (5 lines) in assets/js/resource-filters.js:280"}, "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-27a21fc2fe72d59e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 assets/js/resource-filters.js:244", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 assets/js/resource-filters.js:244"}, "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-8558197848c1820e", "name": "Commented-code block (5 lines) in assets/js/main.js:59", "shortDescription": {"text": "Commented-code block (5 lines) in assets/js/main.js:59"}, "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-05d2e32b959d3087", "name": "`fetch()` without try/.catch or AbortSignal \u2014 assets/js/timeline.js:310", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 assets/js/timeline.js:310"}, "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-45492899644548b6", "name": "Legacy-named symbol `airb_completed_roles_v1` in plugins/ai-risk-readiness-benchmark/public/js/airb-front.js:23", "shortDescription": {"text": "Legacy-named symbol `airb_completed_roles_v1` in plugins/ai-risk-readiness-benchmark/public/js/airb-front.js:23"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-190dcbc29bd5f4b6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 plugins/ai-risk-readiness-benchmark/public/js/airb-front.js:5161", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 plugins/ai-risk-readiness-benchmark/public/js/airb-front.js:5161"}, "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-10a4d18e70210faf", "name": "Legacy-named symbol `row__copy` in plugins/ai-risk-readiness-benchmark/public/js/airb-results.js:558", "shortDescription": {"text": "Legacy-named symbol `row__copy` in plugins/ai-risk-readiness-benchmark/public/js/airb-results.js:558"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-737c14f68076cd60", "name": "Commented-code block (5 lines) in plugins/ai-risk-readiness-benchmark/public/js/airb-roles.js:90", "shortDescription": {"text": "Commented-code block (5 lines) in plugins/ai-risk-readiness-benchmark/public/js/airb-roles.js:90"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-239ce56e8b252443", "name": "Legacy-named symbol `airb_completed_roles_v1` in plugins/ai-risk-readiness-benchmark/public/js/airb-audit.js:354", "shortDescription": {"text": "Legacy-named symbol `airb_completed_roles_v1` in plugins/ai-risk-readiness-benchmark/public/js/airb-audit.js:354"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-083fa0277ff41635", "name": "Legacy-named symbol `airb_session_id_v1` in plugins/ai-risk-readiness-benchmark/public/js/airb-hub-interest.js:11", "shortDescription": {"text": "Legacy-named symbol `airb_session_id_v1` in plugins/ai-risk-readiness-benchmark/public/js/airb-hub-interest.js:11"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c4a9f43fa3ed388", "name": "`fetch()` without try/.catch or AbortSignal \u2014 plugins/ai-risk-readiness-benchmark/public/js/airb-hub-interest.js:518", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 plugins/ai-risk-readiness-benchmark/public/js/airb-hub-interest.js:518"}, "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/21961"}, "properties": {"repository": "urbanteacher/ai-awareness-day", "repoUrl": "https://github.com/urbanteacher/ai-awareness-day", "branch": "main"}, "results": [{"ruleId": "scanner-450374da4e1a7dae", "level": "note", "message": {"text": "Possibly dead Python function: repl"}, "properties": {"repobilityId": "6f5d3779bbb8be8b", "scanner": "scanner-primary", "fingerprint": "450374da4e1a7dae", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/build-questions-review.py:410"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-34e6a7ba64882c22", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 archive/demo/src/pages/ActivityCardsDemo.tsx:439"}, "properties": {"repobilityId": "bf35d0418a469bee", "scanner": "scanner-primary", "fingerprint": "34e6a7ba64882c22", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-fb0c05548d45f5f9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in archive/demo/certificate.html:602"}, "properties": {"repobilityId": "6c5a25d05e01cd37", "scanner": "scanner-primary", "fingerprint": "fb0c05548d45f5f9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "archive/demo/certificate.html"}, "region": {"startLine": 602}}}]}, {"ruleId": "scanner-79b538312bcfba65", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in archive/theme/html-snippets/misinformation-detector.html:797"}, "properties": {"repobilityId": "ac763722c7c7f1a5", "scanner": "scanner-primary", "fingerprint": "79b538312bcfba65", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "archive/theme/html-snippets/misinformation-detector.html"}, "region": {"startLine": 797}}}]}, {"ruleId": "scanner-81604a03a78a077b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in archive/theme/html-snippets/neu-ai-report.html:691"}, "properties": {"repobilityId": "bce245441c9e047a", "scanner": "scanner-primary", "fingerprint": "81604a03a78a077b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "archive/theme/html-snippets/neu-ai-report.html"}, "region": {"startLine": 691}}}]}, {"ruleId": "scanner-5c2c24aacfdef4c3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in archive/theme/generators/letter-generator.html:300"}, "properties": {"repobilityId": "b1cb7d45138cee0e", "scanner": "scanner-primary", "fingerprint": "5c2c24aacfdef4c3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "archive/theme/generators/letter-generator.html"}, "region": {"startLine": 300}}}]}, {"ruleId": "scanner-79c7052394861133", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in archive/theme/generators/certificate-generator.html:452"}, "properties": {"repobilityId": "95b220959efb8a82", "scanner": "scanner-primary", "fingerprint": "79c7052394861133", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "archive/theme/generators/certificate-generator.html"}, "region": {"startLine": 452}}}]}, {"ruleId": "scanner-67ad62f55a895809", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in archive/airb/js/airb-front-pre-1.48.0-snapshot.js:2990"}, "properties": {"repobilityId": "b5cea1999348ab4f", "scanner": "scanner-primary", "fingerprint": "67ad62f55a895809", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "archive/airb/js/airb-front-pre-1.48.0-snapshot.js"}, "region": {"startLine": 2990}}}]}, {"ruleId": "scanner-64d909ed1dfe789c", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in archive/airb/js/airb-front-pre-1.48.0-snapshot.js:3198"}, "properties": {"repobilityId": "01095b2d1ca3c7b9", "scanner": "scanner-primary", "fingerprint": "64d909ed1dfe789c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "archive/airb/js/airb-front-pre-1.48.0-snapshot.js"}, "region": {"startLine": 3198}}}]}, {"ruleId": "scanner-ef50ebeec2ec39b1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-llm-explainer.js:322"}, "properties": {"repobilityId": "0e601ef1413b20f4", "scanner": "scanner-primary", "fingerprint": "ef50ebeec2ec39b1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/js/ai-llm-explainer.js"}, "region": {"startLine": 322}}}]}, {"ruleId": "scanner-fd2ad090ef4108e7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-curriculum-quiz.js:1109"}, "properties": {"repobilityId": "f0cd0aa020399332", "scanner": "scanner-primary", "fingerprint": "fd2ad090ef4108e7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/js/ai-curriculum-quiz.js"}, "region": {"startLine": 1109}}}]}, {"ruleId": "scanner-e4163b065421c55a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-speed-quiz.js:295"}, "properties": {"repobilityId": "c5cfedfb03a83be8", "scanner": "scanner-primary", "fingerprint": "e4163b065421c55a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/js/ai-speed-quiz.js"}, "region": {"startLine": 295}}}]}, {"ruleId": "scanner-2d9b089820125214", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-neu-ai-report.js:93"}, "properties": {"repobilityId": "050ccab10232def6", "scanner": "scanner-primary", "fingerprint": "2d9b089820125214", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/js/ai-neu-ai-report.js"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-5b63b0a5142e6493", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/schools-ai-risk-academy.js:186"}, "properties": {"repobilityId": "2a0a9200a4a6f26b", "scanner": "scanner-primary", "fingerprint": "5b63b0a5142e6493", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/js/schools-ai-risk-academy.js"}, "region": {"startLine": 186}}}]}, {"ruleId": "scanner-da4dbd679143a1c9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/national-survey.js:176"}, "properties": {"repobilityId": "05a62d7f97547c9a", "scanner": "scanner-primary", "fingerprint": "da4dbd679143a1c9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/js/national-survey.js"}, "region": {"startLine": 176}}}]}, {"ruleId": "scanner-02fa6cb7f7d8a6dd", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-computing-curriculum-challenge.js:355"}, "properties": {"repobilityId": "c0605fd7fa5b6be4", "scanner": "scanner-primary", "fingerprint": "02fa6cb7f7d8a6dd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/js/ai-computing-curriculum-challenge.js"}, "region": {"startLine": 355}}}]}, {"ruleId": "scanner-bd38a2b5577d0244", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/resource-filters.js:50"}, "properties": {"repobilityId": "df849621b2c52756", "scanner": "scanner-primary", "fingerprint": "bd38a2b5577d0244", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/js/resource-filters.js"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-eb31138092ddc794", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/main.js:434"}, "properties": {"repobilityId": "b919f77767257c8d", "scanner": "scanner-primary", "fingerprint": "eb31138092ddc794", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/js/main.js"}, "region": {"startLine": 434}}}]}, {"ruleId": "scanner-1a31a34b3b8c7ac3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/timeline.js:36"}, "properties": {"repobilityId": "228b62add3809ce7", "scanner": "scanner-primary", "fingerprint": "1a31a34b3b8c7ac3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/js/timeline.js"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-c12a7f3a43df581f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-llm-order-game.js:116"}, "properties": {"repobilityId": "301a798d2139524f", "scanner": "scanner-primary", "fingerprint": "c12a7f3a43df581f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/js/ai-llm-order-game.js"}, "region": {"startLine": 116}}}]}, {"ruleId": "scanner-2ccf2fdb49d7d549", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-buzzwords.js:136"}, "properties": {"repobilityId": "ef9abd9ba2e69dab", "scanner": "scanner-primary", "fingerprint": "2ccf2fdb49d7d549", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/js/ai-buzzwords.js"}, "region": {"startLine": 136}}}]}, {"ruleId": "scanner-712597703ca77d27", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-misinformation-detector.js:246"}, "properties": {"repobilityId": "e0a427c72887e5ec", "scanner": "scanner-primary", "fingerprint": "712597703ca77d27", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/js/ai-misinformation-detector.js"}, "region": {"startLine": 246}}}]}, {"ruleId": "scanner-8df7f4c7286c7f81", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/ai-ict-curriculum.js:101"}, "properties": {"repobilityId": "d9584ddbe34d742b", "scanner": "scanner-primary", "fingerprint": "8df7f4c7286c7f81", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/js/ai-ict-curriculum.js"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-e03898abf06cfc97", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in plugins/ai-risk-readiness-benchmark/public/js/airb-front.js:2718"}, "properties": {"repobilityId": "19ef580dd99f7911", "scanner": "scanner-primary", "fingerprint": "e03898abf06cfc97", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plugins/ai-risk-readiness-benchmark/public/js/airb-front.js"}, "region": {"startLine": 2718}}}]}, {"ruleId": "scanner-70c3ee815bfa85db", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in plugins/ai-risk-readiness-benchmark/public/js/airb-front.js:2926"}, "properties": {"repobilityId": "af610aff47fc7628", "scanner": "scanner-primary", "fingerprint": "70c3ee815bfa85db", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plugins/ai-risk-readiness-benchmark/public/js/airb-front.js"}, "region": {"startLine": 2926}}}]}, {"ruleId": "scanner-290dae404441dee3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in plugins/ai-risk-readiness-benchmark/public/js/airb-audit.js:128"}, "properties": {"repobilityId": "c5181b4b8458fe5d", "scanner": "scanner-primary", "fingerprint": "290dae404441dee3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plugins/ai-risk-readiness-benchmark/public/js/airb-audit.js"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-eae62ee1472bb92c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in plugins/ai-risk-readiness-benchmark/public/js/airb-hub-interest.js:380"}, "properties": {"repobilityId": "2353192286625b28", "scanner": "scanner-primary", "fingerprint": "eae62ee1472bb92c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plugins/ai-risk-readiness-benchmark/public/js/airb-hub-interest.js"}, "region": {"startLine": 380}}}]}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-126e0cc4f05ef632", "level": "note", "message": {"text": "Very large file: archive/airb/js/airb-front-pre-1.48.0-snapshot.js (5938 lines)"}, "properties": {"repobilityId": "3c329d5841bcd555", "scanner": "scanner-primary", "fingerprint": "126e0cc4f05ef632", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-41af5f70fab96d18", "level": "note", "message": {"text": "Very large file: assets/js/ai-curriculum-quiz.js (1842 lines)"}, "properties": {"repobilityId": "04be9d05ec0d0a54", "scanner": "scanner-primary", "fingerprint": "41af5f70fab96d18", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9ee2612b8dd81d6c", "level": "note", "message": {"text": "Very large file: plugins/ai-risk-readiness-benchmark/public/js/airb-front.js (5502 lines)"}, "properties": {"repobilityId": "91adfcfa6b92096b", "scanner": "scanner-primary", "fingerprint": "9ee2612b8dd81d6c", "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": "8af9accf695a37a2", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "76b36d3942aef8bf", "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": "f46cabf9adda0028", "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": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "7f1f1544a3f2eb50", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "55fd129a3ea73539", "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": "c5f2ce4b3e689d5e", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-49fd6ccf96a91217", "level": "note", "message": {"text": "Legacy-named symbol `airb_completed_roles_v1` in archive/airb/js/airb-front-pre-1.48.0-snapshot.js:23"}, "properties": {"repobilityId": "8b37a2b8641af706", "scanner": "scanner-primary", "fingerprint": "49fd6ccf96a91217", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2ab7c9ed375cf618", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 archive/airb/js/airb-front-pre-1.48.0-snapshot.js:5597"}, "properties": {"repobilityId": "a57672dd52f47804", "scanner": "scanner-primary", "fingerprint": "2ab7c9ed375cf618", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ba2c4ffa2aa795a0", "level": "note", "message": {"text": "Legacy-named symbol `aiad_speed_quiz_leaderboard_v1` in assets/js/ai-speed-quiz.js:4"}, "properties": {"repobilityId": "42f3c7297d6498cf", "scanner": "scanner-primary", "fingerprint": "ba2c4ffa2aa795a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ebb85eaafb4494c9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 assets/js/national-survey.js:392"}, "properties": {"repobilityId": "7429df4415064c11", "scanner": "scanner-primary", "fingerprint": "ebb85eaafb4494c9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0b02258a0c040289", "level": "none", "message": {"text": "Commented-code block (5 lines) in assets/js/resource-filters.js:280"}, "properties": {"repobilityId": "5d78c0882ab45bb9", "scanner": "scanner-primary", "fingerprint": "0b02258a0c040289", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-27a21fc2fe72d59e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 assets/js/resource-filters.js:244"}, "properties": {"repobilityId": "a79addd8322ae16d", "scanner": "scanner-primary", "fingerprint": "27a21fc2fe72d59e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8558197848c1820e", "level": "none", "message": {"text": "Commented-code block (5 lines) in assets/js/main.js:59"}, "properties": {"repobilityId": "e36558f52755cde3", "scanner": "scanner-primary", "fingerprint": "8558197848c1820e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05d2e32b959d3087", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 assets/js/timeline.js:310"}, "properties": {"repobilityId": "9f33642fa814ccbb", "scanner": "scanner-primary", "fingerprint": "05d2e32b959d3087", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-45492899644548b6", "level": "note", "message": {"text": "Legacy-named symbol `airb_completed_roles_v1` in plugins/ai-risk-readiness-benchmark/public/js/airb-front.js:23"}, "properties": {"repobilityId": "f3f89d0f8a5738da", "scanner": "scanner-primary", "fingerprint": "45492899644548b6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-190dcbc29bd5f4b6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 plugins/ai-risk-readiness-benchmark/public/js/airb-front.js:5161"}, "properties": {"repobilityId": "779fc7a697c5acd9", "scanner": "scanner-primary", "fingerprint": "190dcbc29bd5f4b6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-10a4d18e70210faf", "level": "note", "message": {"text": "Legacy-named symbol `row__copy` in plugins/ai-risk-readiness-benchmark/public/js/airb-results.js:558"}, "properties": {"repobilityId": "7b59396c8499d378", "scanner": "scanner-primary", "fingerprint": "10a4d18e70210faf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-737c14f68076cd60", "level": "none", "message": {"text": "Commented-code block (5 lines) in plugins/ai-risk-readiness-benchmark/public/js/airb-roles.js:90"}, "properties": {"repobilityId": "c4248bef2128303b", "scanner": "scanner-primary", "fingerprint": "737c14f68076cd60", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-239ce56e8b252443", "level": "note", "message": {"text": "Legacy-named symbol `airb_completed_roles_v1` in plugins/ai-risk-readiness-benchmark/public/js/airb-audit.js:354"}, "properties": {"repobilityId": "7d79625a8302337b", "scanner": "scanner-primary", "fingerprint": "239ce56e8b252443", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-083fa0277ff41635", "level": "note", "message": {"text": "Legacy-named symbol `airb_session_id_v1` in plugins/ai-risk-readiness-benchmark/public/js/airb-hub-interest.js:11"}, "properties": {"repobilityId": "bdb9c0e935e9d277", "scanner": "scanner-primary", "fingerprint": "083fa0277ff41635", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5c4a9f43fa3ed388", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 plugins/ai-risk-readiness-benchmark/public/js/airb-hub-interest.js:518"}, "properties": {"repobilityId": "8722fd12fe979482", "scanner": "scanner-primary", "fingerprint": "5c4a9f43fa3ed388", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}]}]}