{"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-641eaa2b58e34a7e", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "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-a27337a227b44ad6", "name": "Possibly dead Python function: ensure_shortcut", "shortDescription": {"text": "Possibly dead Python function: ensure_shortcut"}, "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-0816ca54e2963977", "name": "Possibly dead Python function: merge_records", "shortDescription": {"text": "Possibly dead Python function: merge_records"}, "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-9f00b82b0ffcfe5d", "name": "Stray `console.log` in TS/JS \u2014 run-tests.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 run-tests.js:38"}, "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-ca594aeeffae54b7", "name": "Stray `console.log` in TS/JS \u2014 test-tasks-13-15.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-tasks-13-15.js:24"}, "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-2db5307d123d6727", "name": "Stray `console.log` in TS/JS \u2014 scripts/harness-audit.js:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/harness-audit.js:83"}, "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-eca3804eca5b8928", "name": "Stray `console.log` in TS/JS \u2014 pwa/js/db.js:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 pwa/js/db.js:29"}, "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-8834c56ccad5166c", "name": "Stray `console.log` in TS/JS \u2014 pwa/js/app.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 pwa/js/app.js:27"}, "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-7a055fc3323d36db", "name": "Stray `console.log` in TS/JS \u2014 pwa/js/lib/pdf.min.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 pwa/js/lib/pdf.min.js:22"}, "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-8f46c146889e64d3", "name": "Stray `console.log` in TS/JS \u2014 pwa/js/modules/export.js:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 pwa/js/modules/export.js:76"}, "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-c22a97107b1b0338", "name": "Stray `console.log` in TS/JS \u2014 pwa/js/modules/resources.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 pwa/js/modules/resources.js:19"}, "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-bcb0f5fe9da3addd", "name": "Stray `console.log` in TS/JS \u2014 pwa/js/modules/dashboard.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 pwa/js/modules/dashboard.js:26"}, "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-53715efa7e9fe615", "name": "Stray `console.log` in TS/JS \u2014 pwa/js/modules/support.js:639", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 pwa/js/modules/support.js:639"}, "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-f317d035006b6ba3", "name": "Privileged port 256 in use", "shortDescription": {"text": "Privileged port 256 in use"}, "fullDescription": {"text": "Port 256 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c810d2d062f0f956", "name": "Privileged port 56 in use", "shortDescription": {"text": "Privileged port 56 in use"}, "fullDescription": {"text": "Port 56 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e274074f5807a3f2", "name": "Insecure pattern 'node_child_process' in scripts/harness-audit.js:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/harness-audit.js:6"}, "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-e69855a7703df184", "name": "Possible secret in pwa/index-complete.html", "shortDescription": {"text": "Possible secret in pwa/index-complete.html"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-3523e46f73b51cf2", "name": "Insecure pattern 'document_write' in pwa/index.html:2598", "shortDescription": {"text": "Insecure pattern 'document_write' in pwa/index.html:2598"}, "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-f4131f3ad5d2f13c", "name": "Insecure pattern 'direct_innerhtml_assignment' in pwa/index.html:1144", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pwa/index.html:1144"}, "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-612486c25334746e", "name": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/app.js:492", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/app.js:492"}, "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-fd076be3bcd4faa8", "name": "Insecure pattern 'new_function_used' in pwa/js/lib/pdf.min.js:22", "shortDescription": {"text": "Insecure pattern 'new_function_used' in pwa/js/lib/pdf.min.js:22"}, "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-e67b09a9c5adcddb", "name": "Insecure pattern 'document_write' in pwa/js/modules/cases.js:1154", "shortDescription": {"text": "Insecure pattern 'document_write' in pwa/js/modules/cases.js:1154"}, "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-628115cc882afa11", "name": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/modules/cases.js:399", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/modules/cases.js:399"}, "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-4162feaeee2ac23d", "name": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/modules/lifecycle.js:117", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/modules/lifecycle.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-d9ffe69c4fba273d", "name": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/modules/dashboard.js:131", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/modules/dashboard.js:131"}, "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-e10e488e905d8a95", "name": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/modules/rights.js:628", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/modules/rights.js:628"}, "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-437149fb3ce6f4aa", "name": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/modules/support.js:302", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/modules/support.js:302"}, "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-94234549e14bd93d", "name": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/modules/role.js:209", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/modules/role.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-9927aa335e583eb0", "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-10d17cc643dfc93d", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "vedantmgoyal9/winget-releaser@main 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": "high", "confidence": 1.0}}, {"id": "scanner-6ba9bfab5f283202", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@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-72a894be8f5f2778", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "vedantmgoyal9/winget-releaser@main 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": "high", "confidence": 1.0}}, {"id": "scanner-b769174c9fcf8ea8", "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-6468556b44b05cee", "name": "Very large file: pwa/js/lib/bergamot-translator-worker.js (2919 lines)", "shortDescription": {"text": "Very large file: pwa/js/lib/bergamot-translator-worker.js (2919 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-d170862c9dc3ff3f", "name": "Very large file: pwa/js/modules/cases.js (1536 lines)", "shortDescription": {"text": "Very large file: pwa/js/modules/cases.js (1536 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": "2 test file(s) for 31 source file(s) (ratio 0.06). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "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 293 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 12 placeholder/mock markers across 6 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-11825279136b53a3", "name": "CI is configured but no tests are detected", "shortDescription": {"text": "CI is configured but no tests are detected"}, "fullDescription": {"text": "A CI pipeline exists, but the scan found no test files to gate. Opus labeled this generated-code pattern as config theater: release machinery exists, but it has little behavioral signal."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "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 tests. 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-773ecc5b63ebd87b", "name": "Network/subprocess call without timeout or try/except \u2014 create_pdf_simple.py:7", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 create_pdf_simple.py:7"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-87508c20b2eef44b", "name": "Network/subprocess call without timeout or try/except \u2014 create_pdf_final.py:74", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 create_pdf_final.py:74"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-894ded48214b3c57", "name": "Network/subprocess call without timeout or try/except \u2014 server.py:95", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 server.py:95"}, "fullDescription": {"text": "`subprocess.Popen(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-93397f41463a02a6", "name": "Network/subprocess call without timeout or try/except \u2014 convert_to_pdf.py:7", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 convert_to_pdf.py:7"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c6c65dd425d82556", "name": "`fetch()` without try/.catch or AbortSignal \u2014 pwa/sw.js:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pwa/sw.js:50"}, "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-3dcf9d1786ca2e27", "name": "Legacy-named symbol `dynCallLegacy` in pwa/js/lib/bergamot-translator-worker.js:1549", "shortDescription": {"text": "Legacy-named symbol `dynCallLegacy` in pwa/js/lib/bergamot-translator-worker.js:1549"}, "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-20dc2ca35ee0565c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 pwa/js/lib/bergamot-translator-worker.js:530", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pwa/js/lib/bergamot-translator-worker.js:530"}, "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-ba0e2d55b776d65c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 pwa/js/lib/pdf.min.js:22", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pwa/js/lib/pdf.min.js:22"}, "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/21677"}, "properties": {"repository": "Tseli485/cgra-mena-platform", "repoUrl": "https://github.com/Tseli485/cgra-mena-platform", "branch": "main"}, "results": [{"ruleId": "scanner-641eaa2b58e34a7e", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "641eaa2b58e34a7e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py:113"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a27337a227b44ad6", "level": "note", "message": {"text": "Possibly dead Python function: ensure_shortcut"}, "properties": {"repobilityId": "966bfb9dacd41481", "scanner": "scanner-primary", "fingerprint": "a27337a227b44ad6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py:235"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0816ca54e2963977", "level": "note", "message": {"text": "Possibly dead Python function: merge_records"}, "properties": {"repobilityId": "478a7d583ff0ccc8", "scanner": "scanner-primary", "fingerprint": "0816ca54e2963977", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "resources/scripts/deduplicate.py:88"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9f00b82b0ffcfe5d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 run-tests.js:38"}, "properties": {"repobilityId": "71b346373d6c800a", "scanner": "scanner-primary", "fingerprint": "9f00b82b0ffcfe5d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ca594aeeffae54b7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-tasks-13-15.js:24"}, "properties": {"repobilityId": "4d3a7be2a50b1109", "scanner": "scanner-primary", "fingerprint": "ca594aeeffae54b7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2db5307d123d6727", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/harness-audit.js:83"}, "properties": {"repobilityId": "b636ad8bab6f18ec", "scanner": "scanner-primary", "fingerprint": "2db5307d123d6727", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eca3804eca5b8928", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 pwa/js/db.js:29"}, "properties": {"repobilityId": "68ea424acdfbcc22", "scanner": "scanner-primary", "fingerprint": "eca3804eca5b8928", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8834c56ccad5166c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 pwa/js/app.js:27"}, "properties": {"repobilityId": "7b55aadf1417aaac", "scanner": "scanner-primary", "fingerprint": "8834c56ccad5166c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a055fc3323d36db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 pwa/js/lib/pdf.min.js:22"}, "properties": {"repobilityId": "e1d7498d4cda3a59", "scanner": "scanner-primary", "fingerprint": "7a055fc3323d36db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8f46c146889e64d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 pwa/js/modules/export.js:76"}, "properties": {"repobilityId": "bbe0f74e029683a4", "scanner": "scanner-primary", "fingerprint": "8f46c146889e64d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c22a97107b1b0338", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 pwa/js/modules/resources.js:19"}, "properties": {"repobilityId": "c7a636c574c3cd1b", "scanner": "scanner-primary", "fingerprint": "c22a97107b1b0338", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bcb0f5fe9da3addd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 pwa/js/modules/dashboard.js:26"}, "properties": {"repobilityId": "7c5b6478c1beaeb6", "scanner": "scanner-primary", "fingerprint": "bcb0f5fe9da3addd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-53715efa7e9fe615", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 pwa/js/modules/support.js:639"}, "properties": {"repobilityId": "0d306ce18c7b4e51", "scanner": "scanner-primary", "fingerprint": "53715efa7e9fe615", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f317d035006b6ba3", "level": "warning", "message": {"text": "Privileged port 256 in use"}, "properties": {"repobilityId": "0ec1f2d0c9e6da94", "scanner": "scanner-primary", "fingerprint": "f317d035006b6ba3", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packaging/winget/Tseli485.MENA-Tuteur.installer.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c810d2d062f0f956", "level": "warning", "message": {"text": "Privileged port 56 in use"}, "properties": {"repobilityId": "104b02b29065e84a", "scanner": "scanner-primary", "fingerprint": "c810d2d062f0f956", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packaging/winget/Tseli485.MENA-Tuteur.installer.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-e274074f5807a3f2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/harness-audit.js:6"}, "properties": {"repobilityId": "d1aeeecb12befea8", "scanner": "scanner-primary", "fingerprint": "e274074f5807a3f2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/harness-audit.js"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-e69855a7703df184", "level": "error", "message": {"text": "Possible secret in pwa/index-complete.html"}, "properties": {"repobilityId": "6edfc9cb39fd65e2", "scanner": "scanner-primary", "fingerprint": "e69855a7703df184", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pwa/index-complete.html"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-3523e46f73b51cf2", "level": "note", "message": {"text": "Insecure pattern 'document_write' in pwa/index.html:2598"}, "properties": {"repobilityId": "807f42e3bb3abd22", "scanner": "scanner-primary", "fingerprint": "3523e46f73b51cf2", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pwa/index.html"}, "region": {"startLine": 2598}}}]}, {"ruleId": "scanner-f4131f3ad5d2f13c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pwa/index.html:1144"}, "properties": {"repobilityId": "273195f48e5d09c5", "scanner": "scanner-primary", "fingerprint": "f4131f3ad5d2f13c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pwa/index.html"}, "region": {"startLine": 1144}}}]}, {"ruleId": "scanner-612486c25334746e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/app.js:492"}, "properties": {"repobilityId": "a5b6263063ac8643", "scanner": "scanner-primary", "fingerprint": "612486c25334746e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pwa/js/app.js"}, "region": {"startLine": 492}}}]}, {"ruleId": "scanner-fd076be3bcd4faa8", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in pwa/js/lib/pdf.min.js:22"}, "properties": {"repobilityId": "3646cdc22c686b5f", "scanner": "scanner-primary", "fingerprint": "fd076be3bcd4faa8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pwa/js/lib/pdf.min.js"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-e67b09a9c5adcddb", "level": "note", "message": {"text": "Insecure pattern 'document_write' in pwa/js/modules/cases.js:1154"}, "properties": {"repobilityId": "d483d0df4090b390", "scanner": "scanner-primary", "fingerprint": "e67b09a9c5adcddb", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pwa/js/modules/cases.js"}, "region": {"startLine": 1154}}}]}, {"ruleId": "scanner-628115cc882afa11", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/modules/cases.js:399"}, "properties": {"repobilityId": "738d97653cd087f4", "scanner": "scanner-primary", "fingerprint": "628115cc882afa11", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pwa/js/modules/cases.js"}, "region": {"startLine": 399}}}]}, {"ruleId": "scanner-4162feaeee2ac23d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/modules/lifecycle.js:117"}, "properties": {"repobilityId": "92857dcb01cf1d80", "scanner": "scanner-primary", "fingerprint": "4162feaeee2ac23d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pwa/js/modules/lifecycle.js"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-d9ffe69c4fba273d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/modules/dashboard.js:131"}, "properties": {"repobilityId": "fcc248d39e07dfaa", "scanner": "scanner-primary", "fingerprint": "d9ffe69c4fba273d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pwa/js/modules/dashboard.js"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-e10e488e905d8a95", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/modules/rights.js:628"}, "properties": {"repobilityId": "2e872c4d20909eb8", "scanner": "scanner-primary", "fingerprint": "e10e488e905d8a95", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pwa/js/modules/rights.js"}, "region": {"startLine": 628}}}]}, {"ruleId": "scanner-437149fb3ce6f4aa", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/modules/support.js:302"}, "properties": {"repobilityId": "58721510b2478aa3", "scanner": "scanner-primary", "fingerprint": "437149fb3ce6f4aa", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pwa/js/modules/support.js"}, "region": {"startLine": 302}}}]}, {"ruleId": "scanner-94234549e14bd93d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pwa/js/modules/role.js:209"}, "properties": {"repobilityId": "7f8063c4a6a559a9", "scanner": "scanner-primary", "fingerprint": "94234549e14bd93d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pwa/js/modules/role.js"}, "region": {"startLine": 209}}}]}, {"ruleId": "scanner-9927aa335e583eb0", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "07ea34c7e5550efa", "scanner": "scanner-primary", "fingerprint": "9927aa335e583eb0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/veille-contenu.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-10d17cc643dfc93d", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "ad52f4069ba1bea5", "scanner": "scanner-primary", "fingerprint": "10d17cc643dfc93d", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/winget-update.yml"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-6ba9bfab5f283202", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5a380bb21c7e59ac", "scanner": "scanner-primary", "fingerprint": "6ba9bfab5f283202", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build.yml"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-72a894be8f5f2778", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "688790e36d975c90", "scanner": "scanner-primary", "fingerprint": "72a894be8f5f2778", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build.yml"}, "region": {"startLine": 122}}}]}, {"ruleId": "scanner-b769174c9fcf8ea8", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "e34b6cb9b56931d2", "scanner": "scanner-primary", "fingerprint": "b769174c9fcf8ea8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6468556b44b05cee", "level": "note", "message": {"text": "Very large file: pwa/js/lib/bergamot-translator-worker.js (2919 lines)"}, "properties": {"repobilityId": "5c5f1ac3f6fba13a", "scanner": "scanner-primary", "fingerprint": "6468556b44b05cee", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d170862c9dc3ff3f", "level": "note", "message": {"text": "Very large file: pwa/js/modules/cases.js (1536 lines)"}, "properties": {"repobilityId": "cd2a5bfb4b45017b", "scanner": "scanner-primary", "fingerprint": "d170862c9dc3ff3f", "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-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "b05645d4706cb3b8", "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": "7fdef898ef8b3bda", "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": "41002073021f6539", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-11825279136b53a3", "level": "warning", "message": {"text": "CI is configured but no tests are detected"}, "properties": {"repobilityId": "54a6bc41785608f7", "scanner": "scanner-primary", "fingerprint": "11825279136b53a3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "ci", "config-theater", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "63b655eb77ad31b9", "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": "4fbf6a27b8e8a16b", "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": "3fe41a0998d861c8", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-773ecc5b63ebd87b", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 create_pdf_simple.py:7"}, "properties": {"repobilityId": "52bdb5f7d0b583cf", "scanner": "scanner-primary", "fingerprint": "773ecc5b63ebd87b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-87508c20b2eef44b", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 create_pdf_final.py:74"}, "properties": {"repobilityId": "a7d15fd57657bd33", "scanner": "scanner-primary", "fingerprint": "87508c20b2eef44b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-894ded48214b3c57", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 server.py:95"}, "properties": {"repobilityId": "eecc44415499d0c9", "scanner": "scanner-primary", "fingerprint": "894ded48214b3c57", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-93397f41463a02a6", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 convert_to_pdf.py:7"}, "properties": {"repobilityId": "a56733c2265849ea", "scanner": "scanner-primary", "fingerprint": "93397f41463a02a6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c6c65dd425d82556", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pwa/sw.js:50"}, "properties": {"repobilityId": "3e1ffd45d9aad4fd", "scanner": "scanner-primary", "fingerprint": "c6c65dd425d82556", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3dcf9d1786ca2e27", "level": "note", "message": {"text": "Legacy-named symbol `dynCallLegacy` in pwa/js/lib/bergamot-translator-worker.js:1549"}, "properties": {"repobilityId": "32064e563e7b4b05", "scanner": "scanner-primary", "fingerprint": "3dcf9d1786ca2e27", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-20dc2ca35ee0565c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pwa/js/lib/bergamot-translator-worker.js:530"}, "properties": {"repobilityId": "d6677108ba810ebb", "scanner": "scanner-primary", "fingerprint": "20dc2ca35ee0565c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ba0e2d55b776d65c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 pwa/js/lib/pdf.min.js:22"}, "properties": {"repobilityId": "259a94828f4c739f", "scanner": "scanner-primary", "fingerprint": "ba0e2d55b776d65c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}]}]}