{"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-1d1bc79aeb4b6a18", "name": "Stray `console.log` in TS/JS \u2014 src/main/app-state.ts:226", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/main/app-state.ts:226"}, "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-0a2e5929490e39f2", "name": "Stray `console.log` in TS/JS \u2014 src/main/jobs/transcribe.test.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/main/jobs/transcribe.test.ts:66"}, "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-c8505706789946f5", "name": "Stray `console.log` in TS/JS \u2014 e2e/transcript.spec.ts:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 e2e/transcript.spec.ts:67"}, "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-dd2ca2e241100a81", "name": "Stray `console.log` in TS/JS \u2014 e2e/final-screens.spec.ts:141", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 e2e/final-screens.spec.ts:141"}, "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-e9ce145bc447f0b0", "name": "Stray `console.log` in TS/JS \u2014 e2e/smart-render.spec.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 e2e/smart-render.spec.ts:65"}, "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-93a0b52a46242fd4", "name": "Stray `console.log` in TS/JS \u2014 e2e/tools.spec.ts:145", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 e2e/tools.spec.ts:145"}, "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-991b4eeb1b96c30c", "name": "Stray `console.log` in TS/JS \u2014 e2e/playback.spec.ts:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 e2e/playback.spec.ts:118"}, "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-07a4f6bd7f5c6be5", "name": "Stray `console.log` in TS/JS \u2014 e2e/hardening.spec.ts:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 e2e/hardening.spec.ts:62"}, "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-b32905409350c545", "name": "Stray `console.log` in TS/JS \u2014 e2e/export.spec.ts:121", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 e2e/export.spec.ts:121"}, "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-af412f4d6123fb6d", "name": "Stray `console.log` in TS/JS \u2014 e2e/keyframes.spec.ts:116", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 e2e/keyframes.spec.ts:116"}, "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-156ed22765619011", "name": "Stray `console.log` in TS/JS \u2014 e2e/ux-controls.spec.ts:455", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 e2e/ux-controls.spec.ts:455"}, "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-11fffe106cdb73ac", "name": "Stray `console.log` in TS/JS \u2014 e2e/effects.spec.ts:164", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 e2e/effects.spec.ts:164"}, "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-9f9aebebebd28df9", "name": "Stray `console.log` in TS/JS \u2014 e2e/timeline.spec.ts:312", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 e2e/timeline.spec.ts:312"}, "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-ade7ed8e21ed42ef", "name": "Stray `console.log` in TS/JS \u2014 e2e/packaged.spec.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 e2e/packaged.spec.ts:33"}, "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-fd7eb19bd98ce4ae", "name": "Stray `console.log` in TS/JS \u2014 e2e/captions.spec.ts:117", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 e2e/captions.spec.ts:117"}, "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-ad9e4f9de9a9294d", "name": "Stray `console.log` in TS/JS \u2014 e2e/silence.spec.ts:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 e2e/silence.spec.ts:97"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-981646dbf5b4cf4b", "name": "Insecure pattern 'node_child_process' in scripts/fetch-binaries.mjs:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/fetch-binaries.mjs:12"}, "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-6811c4546ba44d40", "name": "Insecure pattern 'node_child_process' in scripts/make-fixtures.mjs:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/make-fixtures.mjs:13"}, "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-e0286a48d5f172cc", "name": "Insecure pattern 'node_child_process' in scripts/dump-shortcuts.mjs:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/dump-shortcuts.mjs:3"}, "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-277644b66cbf6d75", "name": "Insecure pattern 'cors_wildcard' in src/main/protocol.ts:53", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in src/main/protocol.ts:53"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8ece61a582d2da55", "name": "Insecure pattern 'node_child_process' in src/main/ipc.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/main/ipc.ts:2"}, "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-1db3374ad2b9c1b0", "name": "Insecure pattern 'node_child_process' in src/main/project-io/import.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/main/project-io/import.ts:2"}, "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-9b7748f0982ef39e", "name": "Insecure pattern 'node_child_process' in src/main/project-io/probe.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/main/project-io/probe.ts:1"}, "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-ad57442af6b9ae98", "name": "Insecure pattern 'node_child_process' in src/main/jobs/filmstrip.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/main/jobs/filmstrip.ts:1"}, "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-63a4810f1aa11557", "name": "Insecure pattern 'node_child_process' in src/main/jobs/waveform.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/main/jobs/waveform.ts:1"}, "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-3aef0a17e073d1d8", "name": "Insecure pattern 'node_child_process' in src/main/jobs/transcribe.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/main/jobs/transcribe.ts:1"}, "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-c34ade89187f3f6c", "name": "Insecure pattern 'node_child_process' in src/main/jobs/media-derivatives.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/main/jobs/media-derivatives.ts:1"}, "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-250fc27cd4f10ca4", "name": "Insecure pattern 'node_child_process' in src/main/export/encoder.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/main/export/encoder.ts:1"}, "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-fe7fb21dd16aa339", "name": "Insecure pattern 'node_child_process' in src/main/export/smart-render.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/main/export/smart-render.ts:1"}, "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-24bb3078af46a74c", "name": "Insecure pattern 'node_child_process' in e2e/smart-render.spec.ts:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in e2e/smart-render.spec.ts:8"}, "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-9d69a379f05a9690", "name": "Insecure pattern 'node_child_process' in e2e/export.spec.ts:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in e2e/export.spec.ts:8"}, "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-303b06e26bdf26d7", "name": "Insecure pattern 'node_child_process' in e2e/silence.spec.ts:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in e2e/silence.spec.ts:8"}, "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-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 27 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-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-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-8efb1118d97a2ae0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-binaries.mjs:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-binaries.mjs:71"}, "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-831c73ea619ab20a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/renderer/silence/SilencePanel.tsx:41", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/renderer/silence/SilencePanel.tsx:41"}, "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-9079b32b3ad8dc32", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/renderer/playback/offline.ts:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/renderer/playback/offline.ts:49"}, "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-b6699e06fbe3d490", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/renderer/playback/pcm-source.ts:150", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/renderer/playback/pcm-source.ts:150"}, "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-74c36c9dc174a41b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/renderer/playback/decoder/sample-decoder.ts:11", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/renderer/playback/decoder/sample-decoder.ts:11"}, "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-91643832be9bb2a0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/renderer/browser/Waveform.tsx:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/renderer/browser/Waveform.tsx:13"}, "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-54b14378fcf33bdd", "name": "Legacy-named symbol `gapIdByOld` in src/shared/timeline/ops.ts:311", "shortDescription": {"text": "Legacy-named symbol `gapIdByOld` in src/shared/timeline/ops.ts:311"}, "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-c05422ed32c0e3ac", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/main/protocol.ts:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/main/protocol.ts:52"}, "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-6ea9c52f87833bb7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/main/media-server.test.ts:44", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/main/media-server.test.ts:44"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-093f42a67e74465f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/main/media-server.ts:16", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/main/media-server.ts:16"}, "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/21830"}, "properties": {"repository": "ucsandman/Magnetic", "repoUrl": "https://github.com/ucsandman/Magnetic", "branch": "main"}, "results": [{"ruleId": "scanner-1d1bc79aeb4b6a18", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/main/app-state.ts:226"}, "properties": {"repobilityId": "235497583a596aca", "scanner": "scanner-primary", "fingerprint": "1d1bc79aeb4b6a18", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0a2e5929490e39f2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/main/jobs/transcribe.test.ts:66"}, "properties": {"repobilityId": "5c7e7d28136eb70b", "scanner": "scanner-primary", "fingerprint": "0a2e5929490e39f2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c8505706789946f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 e2e/transcript.spec.ts:67"}, "properties": {"repobilityId": "734d99658e0f8fa6", "scanner": "scanner-primary", "fingerprint": "c8505706789946f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dd2ca2e241100a81", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 e2e/final-screens.spec.ts:141"}, "properties": {"repobilityId": "2ab98329c8cb0b63", "scanner": "scanner-primary", "fingerprint": "dd2ca2e241100a81", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e9ce145bc447f0b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 e2e/smart-render.spec.ts:65"}, "properties": {"repobilityId": "b4a966e7e23a5a33", "scanner": "scanner-primary", "fingerprint": "e9ce145bc447f0b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-93a0b52a46242fd4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 e2e/tools.spec.ts:145"}, "properties": {"repobilityId": "eb736ee544adce81", "scanner": "scanner-primary", "fingerprint": "93a0b52a46242fd4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-991b4eeb1b96c30c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 e2e/playback.spec.ts:118"}, "properties": {"repobilityId": "19682e64d956875f", "scanner": "scanner-primary", "fingerprint": "991b4eeb1b96c30c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-07a4f6bd7f5c6be5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 e2e/hardening.spec.ts:62"}, "properties": {"repobilityId": "b3259b49ab43d9db", "scanner": "scanner-primary", "fingerprint": "07a4f6bd7f5c6be5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b32905409350c545", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 e2e/export.spec.ts:121"}, "properties": {"repobilityId": "d7e1764f92dc04f2", "scanner": "scanner-primary", "fingerprint": "b32905409350c545", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-af412f4d6123fb6d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 e2e/keyframes.spec.ts:116"}, "properties": {"repobilityId": "37186d6bdcee40b6", "scanner": "scanner-primary", "fingerprint": "af412f4d6123fb6d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-156ed22765619011", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 e2e/ux-controls.spec.ts:455"}, "properties": {"repobilityId": "28e79876651f2721", "scanner": "scanner-primary", "fingerprint": "156ed22765619011", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-11fffe106cdb73ac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 e2e/effects.spec.ts:164"}, "properties": {"repobilityId": "c903d86d1ec11e4e", "scanner": "scanner-primary", "fingerprint": "11fffe106cdb73ac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9f9aebebebd28df9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 e2e/timeline.spec.ts:312"}, "properties": {"repobilityId": "59c21aa9f081e211", "scanner": "scanner-primary", "fingerprint": "9f9aebebebd28df9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ade7ed8e21ed42ef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 e2e/packaged.spec.ts:33"}, "properties": {"repobilityId": "76bfe5ba86abb35a", "scanner": "scanner-primary", "fingerprint": "ade7ed8e21ed42ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fd7eb19bd98ce4ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 e2e/captions.spec.ts:117"}, "properties": {"repobilityId": "6a3497752ec46062", "scanner": "scanner-primary", "fingerprint": "fd7eb19bd98ce4ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ad9e4f9de9a9294d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 e2e/silence.spec.ts:97"}, "properties": {"repobilityId": "8aa728d1a34161d6", "scanner": "scanner-primary", "fingerprint": "ad9e4f9de9a9294d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-981646dbf5b4cf4b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/fetch-binaries.mjs:12"}, "properties": {"repobilityId": "4ed173424dbf243b", "scanner": "scanner-primary", "fingerprint": "981646dbf5b4cf4b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/fetch-binaries.mjs"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-6811c4546ba44d40", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/make-fixtures.mjs:13"}, "properties": {"repobilityId": "9a27f126b9e382cc", "scanner": "scanner-primary", "fingerprint": "6811c4546ba44d40", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/make-fixtures.mjs"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-e0286a48d5f172cc", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/dump-shortcuts.mjs:3"}, "properties": {"repobilityId": "4321cea72aad6bd7", "scanner": "scanner-primary", "fingerprint": "e0286a48d5f172cc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dump-shortcuts.mjs"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-277644b66cbf6d75", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in src/main/protocol.ts:53"}, "properties": {"repobilityId": "2cd98c75d191630f", "scanner": "scanner-primary", "fingerprint": "277644b66cbf6d75", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/main/protocol.ts"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-8ece61a582d2da55", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/main/ipc.ts:2"}, "properties": {"repobilityId": "5eb0d1a93db799cc", "scanner": "scanner-primary", "fingerprint": "8ece61a582d2da55", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/main/ipc.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-1db3374ad2b9c1b0", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/main/project-io/import.ts:2"}, "properties": {"repobilityId": "9e863d266abafb8f", "scanner": "scanner-primary", "fingerprint": "1db3374ad2b9c1b0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/main/project-io/import.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-9b7748f0982ef39e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/main/project-io/probe.ts:1"}, "properties": {"repobilityId": "ec079bb06d99c4ea", "scanner": "scanner-primary", "fingerprint": "9b7748f0982ef39e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/main/project-io/probe.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ad57442af6b9ae98", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/main/jobs/filmstrip.ts:1"}, "properties": {"repobilityId": "32ca48621068828c", "scanner": "scanner-primary", "fingerprint": "ad57442af6b9ae98", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/main/jobs/filmstrip.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-63a4810f1aa11557", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/main/jobs/waveform.ts:1"}, "properties": {"repobilityId": "3fb6ebd3b509c2e9", "scanner": "scanner-primary", "fingerprint": "63a4810f1aa11557", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/main/jobs/waveform.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3aef0a17e073d1d8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/main/jobs/transcribe.ts:1"}, "properties": {"repobilityId": "0d6f61227584b428", "scanner": "scanner-primary", "fingerprint": "3aef0a17e073d1d8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/main/jobs/transcribe.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c34ade89187f3f6c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/main/jobs/media-derivatives.ts:1"}, "properties": {"repobilityId": "3b4bdbc9c5139df4", "scanner": "scanner-primary", "fingerprint": "c34ade89187f3f6c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/main/jobs/media-derivatives.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-250fc27cd4f10ca4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/main/export/encoder.ts:1"}, "properties": {"repobilityId": "517371c5b66c675e", "scanner": "scanner-primary", "fingerprint": "250fc27cd4f10ca4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/main/export/encoder.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fe7fb21dd16aa339", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/main/export/smart-render.ts:1"}, "properties": {"repobilityId": "e6a5ff5dc51274a1", "scanner": "scanner-primary", "fingerprint": "fe7fb21dd16aa339", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/main/export/smart-render.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-24bb3078af46a74c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in e2e/smart-render.spec.ts:8"}, "properties": {"repobilityId": "0e680d9064e3c9f6", "scanner": "scanner-primary", "fingerprint": "24bb3078af46a74c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "e2e/smart-render.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-9d69a379f05a9690", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in e2e/export.spec.ts:8"}, "properties": {"repobilityId": "f8a71a5e84f66fe6", "scanner": "scanner-primary", "fingerprint": "9d69a379f05a9690", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "e2e/export.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-303b06e26bdf26d7", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in e2e/silence.spec.ts:8"}, "properties": {"repobilityId": "d9ead1937df2efce", "scanner": "scanner-primary", "fingerprint": "303b06e26bdf26d7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "e2e/silence.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "edeab51902066991", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"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-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "c4b6785c9c58e409", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "c6da662e4a0104d4", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "94d5cb4d886fb586", "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": "944ac737cf26213c", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8efb1118d97a2ae0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-binaries.mjs:71"}, "properties": {"repobilityId": "1c1f90d90505318f", "scanner": "scanner-primary", "fingerprint": "8efb1118d97a2ae0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-831c73ea619ab20a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/renderer/silence/SilencePanel.tsx:41"}, "properties": {"repobilityId": "2d38f70ae0849a3a", "scanner": "scanner-primary", "fingerprint": "831c73ea619ab20a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9079b32b3ad8dc32", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/renderer/playback/offline.ts:49"}, "properties": {"repobilityId": "84d3366de1b76ce7", "scanner": "scanner-primary", "fingerprint": "9079b32b3ad8dc32", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b6699e06fbe3d490", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/renderer/playback/pcm-source.ts:150"}, "properties": {"repobilityId": "2c54f2027c33f296", "scanner": "scanner-primary", "fingerprint": "b6699e06fbe3d490", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-74c36c9dc174a41b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/renderer/playback/decoder/sample-decoder.ts:11"}, "properties": {"repobilityId": "166328b0e5e340ec", "scanner": "scanner-primary", "fingerprint": "74c36c9dc174a41b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-91643832be9bb2a0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/renderer/browser/Waveform.tsx:13"}, "properties": {"repobilityId": "d688d0e3a9514c06", "scanner": "scanner-primary", "fingerprint": "91643832be9bb2a0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-54b14378fcf33bdd", "level": "note", "message": {"text": "Legacy-named symbol `gapIdByOld` in src/shared/timeline/ops.ts:311"}, "properties": {"repobilityId": "61165520b14ea0fb", "scanner": "scanner-primary", "fingerprint": "54b14378fcf33bdd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c05422ed32c0e3ac", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/main/protocol.ts:52"}, "properties": {"repobilityId": "2cd30e874eb06093", "scanner": "scanner-primary", "fingerprint": "c05422ed32c0e3ac", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6ea9c52f87833bb7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/main/media-server.test.ts:44"}, "properties": {"repobilityId": "b24823a0167680dc", "scanner": "scanner-primary", "fingerprint": "6ea9c52f87833bb7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-093f42a67e74465f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/main/media-server.ts:16"}, "properties": {"repobilityId": "fe45a9c7e3f90df3", "scanner": "scanner-primary", "fingerprint": "093f42a67e74465f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}]}]}