{"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-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-33cbc63b1292bca6", "name": "Stray `console.log` in TS/JS \u2014 scripts/apply-save-this-tone.ts:302", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-save-this-tone.ts:302"}, "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-4a4179e14f8812e3", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-save-this-tone-bulk.ts:369", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-save-this-tone-bulk.ts:369"}, "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-4c4e24c82def26fa", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-helix-inventory.ts:652", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-helix-inventory.ts:652"}, "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-aea9919039a60a77", "name": "Stray `console.log` in TS/JS \u2014 scripts/cta-audit.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cta-audit.ts:37"}, "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-af51067660944400", "name": "Stray `console.log` in TS/JS \u2014 scripts/batch-regen-presets.ts:149", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/batch-regen-presets.ts:149"}, "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-d8ea68d08050a66d", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-knob-order.ts:242", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-knob-order.ts:242"}, "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-530a5f1fef34ff17", "name": "Stray `console.log` in TS/JS \u2014 scripts/persona-velocity.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/persona-velocity.ts:71"}, "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-3c2baa05620efd7d", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-helix-amp-scale.ts:213", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-helix-amp-scale.ts:213"}, "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-47f3842fce6565c2", "name": "Stray `console.log` in TS/JS \u2014 scripts/make-helix-template.ts:168", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/make-helix-template.ts:168"}, "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-5947dcf073718df8", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-recipe-dates.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-recipe-dates.ts:44"}, "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-9c757817c78697cb", "name": "Stray `console.log` in TS/JS \u2014 scripts/faq-extract-audit.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/faq-extract-audit.ts:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-61802b4ea6afcbed", "name": "Stray `console.log` in TS/JS \u2014 scripts/business-health.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/business-health.ts:41"}, "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-cbbd8906e6d93ea9", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-v3-tokens.ts:159", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-v3-tokens.ts:159"}, "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-19cf4b9851d42072", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-v3-tokens.ts:170", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-v3-tokens.ts:170"}, "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-2d76629f87400066", "name": "Stray `console.log` in TS/JS \u2014 scripts/indexnow-submit.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/indexnow-submit.ts:73"}, "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-3276a591d8ee9b0d", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-recipes.ts:800", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-recipes.ts:800"}, "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-df93f4260bfae811", "name": "Stray `console.log` in TS/JS \u2014 scripts/send-sunday-setlist.ts:123", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-sunday-setlist.ts:123"}, "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-b8d6459b861f5c12", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-master-volume.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-master-volume.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-41a75c1664a13186", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-blog-voice.ts:225", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-blog-voice.ts:225"}, "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-cdea495f690f6cb6", "name": "Stray `console.log` in TS/JS \u2014 scripts/reorder-katana-amp-knobs.ts:142", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reorder-katana-amp-knobs.ts:142"}, "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-8df4ce23ab11fbee", "name": "Stray `console.log` in TS/JS \u2014 scripts/ship-all-presets.ts:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ship-all-presets.ts:54"}, "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-b24868c78eab60bf", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-album-art.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-album-art.ts:46"}, "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-c30c77be3e145491", "name": "Stray `console.log` in TS/JS \u2014 scripts/harvest-helix-factory.ts:323", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/harvest-helix-factory.ts:323"}, "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-b2d219512045de1e", "name": "Stray `console.log` in TS/JS \u2014 scripts/send-tone-of-the-week.ts:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-tone-of-the-week.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-bfc7ba5acc1fee8e", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-missing-comp.ts:242", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-missing-comp.ts:242"}, "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-1c48f08401f24bb9", "name": "Stray `console.log` in TS/JS \u2014 scripts/regen-gilmour-hlx.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/regen-gilmour-hlx.ts:31"}, "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-5950b710f5a96fd9", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-blog-images.ts:160", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-blog-images.ts:160"}, "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-3052c97cb96e5b2f", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:115", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:115"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1e3740c9c9761d9e", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/writers/[slug]/page.tsx:65", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/writers/[slug]/page.tsx:65"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ecda537a6a41fcde", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/gear/page.tsx:123", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/gear/page.tsx:123"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-807fd8c4334ddb74", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/gear/[slug]/page.tsx:70", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/gear/[slug]/page.tsx:70"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-edbbda403f7a42c1", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/webhooks/stripe/route.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/webhooks/stripe/route.ts:35"}, "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-9235f0407cef1461", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/artist/[slug]/page.tsx:89", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/artist/[slug]/page.tsx:89"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d95463b4d040895", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/recipe/[slug]/page.tsx:159", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/recipe/[slug]/page.tsx:159"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-33b067e09013e3be", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/song/[slug]/page.tsx:80", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/song/[slug]/page.tsx:80"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-35d4376cc9e812e9", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/page.tsx:113", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/page.tsx:113"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e7ff8953149b3137", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/amp-settings-and-tone/page.tsx:56", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/amp-settings-and-tone/page.tsx:56"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-30a603401ea27800", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/bedroom-and-home-recording/page.tsx:47", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/bedroom-and-home-recording/page.tsx:47"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-35ab8fbb7abff23c", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/tone-troubleshooting/page.tsx:48", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/tone-troubleshooting/page.tsx:48"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-51391fdd4bbe3440", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/worship-guitar/page.tsx:75", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/worship-guitar/page.tsx:75"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-84456807f2dee9f1", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/signal-chain-fundamentals/page.tsx:49", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/signal-chain-fundamentals/page.tsx:49"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a9dbe3686a9a071c", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/artist-tone-recipes/page.tsx:52", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/artist-tone-recipes/page.tsx:52"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e4fc799300d78af7", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/pedal-settings-guides/page.tsx:64", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/pedal-settings-guides/page.tsx:64"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb28b89f8a0cbb15", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/modeler-mastery/page.tsx:65", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/modeler-mastery/page.tsx:65"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-78553174db6adf8d", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/set-packs/worship/page.tsx:90", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/set-packs/worship/page.tsx:90"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-91522f673d7fee73", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/platforms/page.tsx:46", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/platforms/page.tsx:46"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6ad1762af4a35fe0", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/platforms/[slug]/page.tsx:315", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/platforms/[slug]/page.tsx:315"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c5b8cb45c847d413", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/news/page.tsx:58", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/news/page.tsx:58"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6a13ac786bea6158", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/news/[slug]/page.tsx:100", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/news/[slug]/page.tsx:100"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-50c0eacc3d6a10f8", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/pricing/page.tsx:162", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/pricing/page.tsx:162"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5346d12b14938fa3", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/page.tsx:147", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/page.tsx:147"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-43bd3da0b976678c", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/[slug]/page.tsx:192", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/[slug]/page.tsx:192"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ee9dea11fc8d5825", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/signal-chain/platform-skins/index.tsx:69", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/signal-chain/platform-skins/index.tsx:69"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7740a8e42e1990d3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/layout/Header.tsx:128", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/layout/Header.tsx:128"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7b16163c1d5d629d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/search/SearchPalette.tsx:327", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/search/SearchPalette.tsx:327"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8931e596cffa2c6f", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/mdx/FAQ.tsx:102", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/mdx/FAQ.tsx:102"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-166dff3c3df6a10e", "name": "ORM models found but no DB engine detected", "shortDescription": {"text": "ORM models found but no DB engine detected"}, "fullDescription": {"text": "The repo defines tables/models but no DB connection string was found. Likely lives in env vars or a config file the scanner didn't read."}, "properties": {"scanner": "scanner-primary", "layer": "data", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-47c2a36dc3eb2e62", "name": "Insecure pattern 'node_child_process' in scripts/backfill-recipe-dates.ts:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/backfill-recipe-dates.ts:15"}, "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-557f591fd70219e7", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:115", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:115"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-273316eb5c132bfe", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/writers/[slug]/page.tsx:65", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/writers/[slug]/page.tsx:65"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ec3327856bea5873", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/gear/page.tsx:123", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/gear/page.tsx:123"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e9fcc0e5126de79f", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/gear/[slug]/page.tsx:70", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/gear/[slug]/page.tsx:70"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d8b0c13e31955d28", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/artist/[slug]/page.tsx:89", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/artist/[slug]/page.tsx:89"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4031dd48518d4ebd", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/recipe/[slug]/page.tsx:159", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/recipe/[slug]/page.tsx:159"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b310ffed6dabbf2d", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/song/[slug]/page.tsx:80", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/song/[slug]/page.tsx:80"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a19fe2874fb24e5a", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/page.tsx:113", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/page.tsx:113"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7774da75d2bc39c0", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/amp-settings-and-tone/page.tsx:56", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/amp-settings-and-tone/page.tsx:56"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1ad351067a8b3d57", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/bedroom-and-home-recording/page.tsx:47", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/bedroom-and-home-recording/page.tsx:47"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3dc4769d75db218a", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/tone-troubleshooting/page.tsx:48", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/tone-troubleshooting/page.tsx:48"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-789491f79c4e13e8", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/worship-guitar/page.tsx:75", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/worship-guitar/page.tsx:75"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a6a0cdb946d4f5b7", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/signal-chain-fundamentals/page.tsx:49", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/signal-chain-fundamentals/page.tsx:49"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-904979c0a1929004", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/artist-tone-recipes/page.tsx:52", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/artist-tone-recipes/page.tsx:52"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5187adea8e87f726", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/pedal-settings-guides/page.tsx:64", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/pedal-settings-guides/page.tsx:64"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-458304d0dbe0826b", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/modeler-mastery/page.tsx:65", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/modeler-mastery/page.tsx:65"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4f2e1ffc6d38b3a2", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/set-packs/worship/page.tsx:90", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/set-packs/worship/page.tsx:90"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c99640e8acf42ad2", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/platforms/page.tsx:46", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/platforms/page.tsx:46"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e1b6bea8589632d2", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/platforms/[slug]/page.tsx:315", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/platforms/[slug]/page.tsx:315"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d325fed3df04b873", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/news/page.tsx:58", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/news/page.tsx:58"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7fbc91db7f86ea5e", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/news/[slug]/page.tsx:100", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/news/[slug]/page.tsx:100"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a985ddb7c3a5e6b7", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/pricing/page.tsx:162", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/pricing/page.tsx:162"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-07afe6d4b29a3f71", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/page.tsx:147", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/page.tsx:147"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c8125ca92f252c11", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/[slug]/page.tsx:192", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/[slug]/page.tsx:192"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-be271d78f11089da", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/mdx/FAQ.tsx:102", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/mdx/FAQ.tsx:102"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 276 source file(s) (ratio 0.00). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 296 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 100 placeholder/mock markers across 32 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci, 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-fa7bbe2678174153", "name": "Agent authority lacks a verifier contract: .claude/agents/helix-preset-qc.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/helix-preset-qc.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c15de5281215320b", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/gen-images.py:36", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/gen-images.py:36"}, "fullDescription": {"text": "`urllib.request.urlopen(...)` 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-31c79c26a19a348e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/indexnow-submit.ts:37", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/indexnow-submit.ts:37"}, "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-5d26a23d96797f71", "name": "Commented-code block (6 lines) in scripts/audit-recipes.ts:125", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/audit-recipes.ts:125"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-addd3979f0482543", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/audit-album-art.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/audit-album-art.ts:28"}, "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-b4c117738b63c250", "name": "Commented-code block (7 lines) in scripts/fix-missing-comp.ts:171", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/fix-missing-comp.ts:171"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b918eb848cd5bc8d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/generate-blog-images.ts:139", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/generate-blog-images.ts:139"}, "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-d66ea367116bc27a", "name": "Commented-code block (5 lines) in src/middleware.ts:39", "shortDescription": {"text": "Commented-code block (5 lines) in src/middleware.ts:39"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1f9d4a8f8dd06cab", "name": "Commented-code block (5 lines) in src/app/layout.tsx:29", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/layout.tsx:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fdafea7f4740d105", "name": "Commented-code block (5 lines) in src/app/api/webhooks/stripe/route.ts:124", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/webhooks/stripe/route.ts:124"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-30d2d4d33d2813b9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/invite/[code]/page.tsx:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/invite/[code]/page.tsx: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-7b1ad057318b14aa", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/checkout/ManageBillingButton.tsx:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/checkout/ManageBillingButton.tsx:33"}, "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-a10ef40ddde9f2b6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/checkout/CheckoutButton.tsx:64", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/checkout/CheckoutButton.tsx:64"}, "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-36ed23bc77b40f40", "name": "Commented-code block (5 lines) in src/components/home/HeroV2.tsx:96", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/home/HeroV2.tsx:96"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-85f38367cd9b5cc1", "name": "Commented-code block (5 lines) in src/components/home/HeroV3.tsx:144", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/home/HeroV3.tsx:144"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fd4a11eff260101b", "name": "Commented-code block (6 lines) in src/components/home/HeroV4.tsx:35", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/home/HeroV4.tsx:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c7d8c8d9b1c5b946", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/set-packs/SetPackAccess.tsx:98", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/set-packs/SetPackAccess.tsx:98"}, "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-5f08455f553e2a1e", "name": "Commented-code block (7 lines) in src/lib/permissions.ts:68", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/permissions.ts:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b5d09058ce7209db", "name": "Commented-code block (7 lines) in src/lib/parameters/registry.ts:87", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/parameters/registry.ts:87"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e692f8f2d0ee8d7d", "name": "Commented-code block (6 lines) in src/lib/helix/generate-hlx.ts:201", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/helix/generate-hlx.ts:201"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-41b1da7d1e85a009", "name": "Commented-code block (5 lines) in src/lib/helix/model-map.ts:98", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/helix/model-map.ts:98"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/24420"}, "properties": {"repository": "AxiomDigitalHub/tone-recipes", "repoUrl": "https://github.com/AxiomDigitalHub/tone-recipes", "branch": "main"}, "results": [{"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-33cbc63b1292bca6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-save-this-tone.ts:302"}, "properties": {"repobilityId": "582080a20ed154bd", "scanner": "scanner-primary", "fingerprint": "33cbc63b1292bca6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4a4179e14f8812e3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-save-this-tone-bulk.ts:369"}, "properties": {"repobilityId": "97cd13bee842db23", "scanner": "scanner-primary", "fingerprint": "4a4179e14f8812e3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4c4e24c82def26fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-helix-inventory.ts:652"}, "properties": {"repobilityId": "2a13748371cc3e78", "scanner": "scanner-primary", "fingerprint": "4c4e24c82def26fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aea9919039a60a77", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cta-audit.ts:37"}, "properties": {"repobilityId": "f63bedd9f5f41cdd", "scanner": "scanner-primary", "fingerprint": "aea9919039a60a77", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-af51067660944400", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/batch-regen-presets.ts:149"}, "properties": {"repobilityId": "15a9b9cc7c676bc2", "scanner": "scanner-primary", "fingerprint": "af51067660944400", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d8ea68d08050a66d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-knob-order.ts:242"}, "properties": {"repobilityId": "97bbabfc236fb4d2", "scanner": "scanner-primary", "fingerprint": "d8ea68d08050a66d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-530a5f1fef34ff17", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/persona-velocity.ts:71"}, "properties": {"repobilityId": "6fd24b862ed7c113", "scanner": "scanner-primary", "fingerprint": "530a5f1fef34ff17", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c2baa05620efd7d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-helix-amp-scale.ts:213"}, "properties": {"repobilityId": "78a7f62dca94a8f3", "scanner": "scanner-primary", "fingerprint": "3c2baa05620efd7d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-47f3842fce6565c2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/make-helix-template.ts:168"}, "properties": {"repobilityId": "3c6d3318944e3492", "scanner": "scanner-primary", "fingerprint": "47f3842fce6565c2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5947dcf073718df8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-recipe-dates.ts:44"}, "properties": {"repobilityId": "d7e6832c4c100b32", "scanner": "scanner-primary", "fingerprint": "5947dcf073718df8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9c757817c78697cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/faq-extract-audit.ts:32"}, "properties": {"repobilityId": "d953068a312ec10d", "scanner": "scanner-primary", "fingerprint": "9c757817c78697cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-61802b4ea6afcbed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/business-health.ts:41"}, "properties": {"repobilityId": "101aaf2b07c58720", "scanner": "scanner-primary", "fingerprint": "61802b4ea6afcbed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cbbd8906e6d93ea9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-v3-tokens.ts:159"}, "properties": {"repobilityId": "8237db9d7e0efe4d", "scanner": "scanner-primary", "fingerprint": "cbbd8906e6d93ea9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-19cf4b9851d42072", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-v3-tokens.ts:170"}, "properties": {"repobilityId": "fc8d3a57ae0a2ba4", "scanner": "scanner-primary", "fingerprint": "19cf4b9851d42072", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2d76629f87400066", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/indexnow-submit.ts:73"}, "properties": {"repobilityId": "3fca43d584219ff1", "scanner": "scanner-primary", "fingerprint": "2d76629f87400066", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3276a591d8ee9b0d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-recipes.ts:800"}, "properties": {"repobilityId": "555a4474b2c480e0", "scanner": "scanner-primary", "fingerprint": "3276a591d8ee9b0d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df93f4260bfae811", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-sunday-setlist.ts:123"}, "properties": {"repobilityId": "3d6d44c455097157", "scanner": "scanner-primary", "fingerprint": "df93f4260bfae811", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b8d6459b861f5c12", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-master-volume.ts:65"}, "properties": {"repobilityId": "193338947e2c0217", "scanner": "scanner-primary", "fingerprint": "b8d6459b861f5c12", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-41a75c1664a13186", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-blog-voice.ts:225"}, "properties": {"repobilityId": "08e48a195361b91e", "scanner": "scanner-primary", "fingerprint": "41a75c1664a13186", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cdea495f690f6cb6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reorder-katana-amp-knobs.ts:142"}, "properties": {"repobilityId": "cd02624f3a4a0397", "scanner": "scanner-primary", "fingerprint": "cdea495f690f6cb6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8df4ce23ab11fbee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ship-all-presets.ts:54"}, "properties": {"repobilityId": "ffa660ec36e54c21", "scanner": "scanner-primary", "fingerprint": "8df4ce23ab11fbee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b24868c78eab60bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-album-art.ts:46"}, "properties": {"repobilityId": "01a685a0c834b8c0", "scanner": "scanner-primary", "fingerprint": "b24868c78eab60bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c30c77be3e145491", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/harvest-helix-factory.ts:323"}, "properties": {"repobilityId": "5b295cb267227546", "scanner": "scanner-primary", "fingerprint": "c30c77be3e145491", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2d219512045de1e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-tone-of-the-week.ts:118"}, "properties": {"repobilityId": "7536271760826c1f", "scanner": "scanner-primary", "fingerprint": "b2d219512045de1e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bfc7ba5acc1fee8e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-missing-comp.ts:242"}, "properties": {"repobilityId": "92b5baa2064c56e9", "scanner": "scanner-primary", "fingerprint": "bfc7ba5acc1fee8e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1c48f08401f24bb9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/regen-gilmour-hlx.ts:31"}, "properties": {"repobilityId": "2ef4e5b760845e92", "scanner": "scanner-primary", "fingerprint": "1c48f08401f24bb9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5950b710f5a96fd9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-blog-images.ts:160"}, "properties": {"repobilityId": "5bd3765a294f5ecc", "scanner": "scanner-primary", "fingerprint": "5950b710f5a96fd9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3052c97cb96e5b2f", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:115"}, "properties": {"repobilityId": "0d72350965068f5b", "scanner": "scanner-primary", "fingerprint": "3052c97cb96e5b2f", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-1e3740c9c9761d9e", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/writers/[slug]/page.tsx:65"}, "properties": {"repobilityId": "01a3cbcf5ecf1503", "scanner": "scanner-primary", "fingerprint": "1e3740c9c9761d9e", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-ecda537a6a41fcde", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/gear/page.tsx:123"}, "properties": {"repobilityId": "ee7cca09825cb9b2", "scanner": "scanner-primary", "fingerprint": "ecda537a6a41fcde", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-807fd8c4334ddb74", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/gear/[slug]/page.tsx:70"}, "properties": {"repobilityId": "24d7c8b0c4ea7142", "scanner": "scanner-primary", "fingerprint": "807fd8c4334ddb74", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-edbbda403f7a42c1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/webhooks/stripe/route.ts:35"}, "properties": {"repobilityId": "d219e3c7fea8c39b", "scanner": "scanner-primary", "fingerprint": "edbbda403f7a42c1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9235f0407cef1461", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/artist/[slug]/page.tsx:89"}, "properties": {"repobilityId": "fe0e0fd5bb43c4fa", "scanner": "scanner-primary", "fingerprint": "9235f0407cef1461", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-9d95463b4d040895", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/recipe/[slug]/page.tsx:159"}, "properties": {"repobilityId": "af73d0c05c699677", "scanner": "scanner-primary", "fingerprint": "9d95463b4d040895", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-33b067e09013e3be", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/song/[slug]/page.tsx:80"}, "properties": {"repobilityId": "22a714d7f10ba7fe", "scanner": "scanner-primary", "fingerprint": "33b067e09013e3be", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-35d4376cc9e812e9", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/page.tsx:113"}, "properties": {"repobilityId": "cf1620d3ef6075e0", "scanner": "scanner-primary", "fingerprint": "35d4376cc9e812e9", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-e7ff8953149b3137", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/amp-settings-and-tone/page.tsx:56"}, "properties": {"repobilityId": "d91bb0dcdbef2df5", "scanner": "scanner-primary", "fingerprint": "e7ff8953149b3137", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-30a603401ea27800", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/bedroom-and-home-recording/page.tsx:47"}, "properties": {"repobilityId": "090570ca3b24b4c0", "scanner": "scanner-primary", "fingerprint": "30a603401ea27800", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-35ab8fbb7abff23c", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/tone-troubleshooting/page.tsx:48"}, "properties": {"repobilityId": "99861bb74638979d", "scanner": "scanner-primary", "fingerprint": "35ab8fbb7abff23c", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-51391fdd4bbe3440", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/worship-guitar/page.tsx:75"}, "properties": {"repobilityId": "0ebebc9495cd4b54", "scanner": "scanner-primary", "fingerprint": "51391fdd4bbe3440", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-84456807f2dee9f1", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/signal-chain-fundamentals/page.tsx:49"}, "properties": {"repobilityId": "e79155fa575f4e0f", "scanner": "scanner-primary", "fingerprint": "84456807f2dee9f1", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-a9dbe3686a9a071c", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/artist-tone-recipes/page.tsx:52"}, "properties": {"repobilityId": "01cb15e01ce6a902", "scanner": "scanner-primary", "fingerprint": "a9dbe3686a9a071c", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-e4fc799300d78af7", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/pedal-settings-guides/page.tsx:64"}, "properties": {"repobilityId": "2b5a683f31d2338b", "scanner": "scanner-primary", "fingerprint": "e4fc799300d78af7", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-cb28b89f8a0cbb15", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/modeler-mastery/page.tsx:65"}, "properties": {"repobilityId": "5d7bed4b657dec39", "scanner": "scanner-primary", "fingerprint": "cb28b89f8a0cbb15", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-78553174db6adf8d", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/set-packs/worship/page.tsx:90"}, "properties": {"repobilityId": "55712d711cd26de3", "scanner": "scanner-primary", "fingerprint": "78553174db6adf8d", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-91522f673d7fee73", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/platforms/page.tsx:46"}, "properties": {"repobilityId": "e38836fc828c81d3", "scanner": "scanner-primary", "fingerprint": "91522f673d7fee73", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6ad1762af4a35fe0", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/platforms/[slug]/page.tsx:315"}, "properties": {"repobilityId": "cdecd54e149d298e", "scanner": "scanner-primary", "fingerprint": "6ad1762af4a35fe0", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-c5b8cb45c847d413", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/news/page.tsx:58"}, "properties": {"repobilityId": "e2603da8615f540a", "scanner": "scanner-primary", "fingerprint": "c5b8cb45c847d413", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6a13ac786bea6158", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/news/[slug]/page.tsx:100"}, "properties": {"repobilityId": "d221bfe6540f83c2", "scanner": "scanner-primary", "fingerprint": "6a13ac786bea6158", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-50c0eacc3d6a10f8", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/pricing/page.tsx:162"}, "properties": {"repobilityId": "fb37beec3d048e5b", "scanner": "scanner-primary", "fingerprint": "50c0eacc3d6a10f8", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-5346d12b14938fa3", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/page.tsx:147"}, "properties": {"repobilityId": "41b4d8ab3226bd10", "scanner": "scanner-primary", "fingerprint": "5346d12b14938fa3", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-43bd3da0b976678c", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/[slug]/page.tsx:192"}, "properties": {"repobilityId": "edc166468e8868e7", "scanner": "scanner-primary", "fingerprint": "43bd3da0b976678c", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-ee9dea11fc8d5825", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/signal-chain/platform-skins/index.tsx:69"}, "properties": {"repobilityId": "ce8211ba83eab46e", "scanner": "scanner-primary", "fingerprint": "ee9dea11fc8d5825", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7740a8e42e1990d3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/layout/Header.tsx:128"}, "properties": {"repobilityId": "c848c722ce61f0cc", "scanner": "scanner-primary", "fingerprint": "7740a8e42e1990d3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7b16163c1d5d629d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/search/SearchPalette.tsx:327"}, "properties": {"repobilityId": "bd012edb3b1ed355", "scanner": "scanner-primary", "fingerprint": "7b16163c1d5d629d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8931e596cffa2c6f", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/mdx/FAQ.tsx:102"}, "properties": {"repobilityId": "8ad0d92ef14f0e8b", "scanner": "scanner-primary", "fingerprint": "8931e596cffa2c6f", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-166dff3c3df6a10e", "level": "warning", "message": {"text": "ORM models found but no DB engine detected"}, "properties": {"repobilityId": "cda36de65e114635", "scanner": "scanner-primary", "fingerprint": "166dff3c3df6a10e", "layer": "data", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-47c2a36dc3eb2e62", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/backfill-recipe-dates.ts:15"}, "properties": {"repobilityId": "9c881fc737800a2f", "scanner": "scanner-primary", "fingerprint": "47c2a36dc3eb2e62", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/backfill-recipe-dates.ts"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-557f591fd70219e7", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:115"}, "properties": {"repobilityId": "0bca654fa2052eb0", "scanner": "scanner-primary", "fingerprint": "557f591fd70219e7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/layout.tsx"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-273316eb5c132bfe", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/writers/[slug]/page.tsx:65"}, "properties": {"repobilityId": "d465e23cf97f4b2c", "scanner": "scanner-primary", "fingerprint": "273316eb5c132bfe", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/writers/[slug]/page.tsx"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-ec3327856bea5873", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/gear/page.tsx:123"}, "properties": {"repobilityId": "ea878da08ccb9421", "scanner": "scanner-primary", "fingerprint": "ec3327856bea5873", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/gear/page.tsx"}, "region": {"startLine": 123}}}]}, {"ruleId": "scanner-e9fcc0e5126de79f", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/gear/[slug]/page.tsx:70"}, "properties": {"repobilityId": "f7a14f009036d9b7", "scanner": "scanner-primary", "fingerprint": "e9fcc0e5126de79f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/gear/[slug]/page.tsx"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-d8b0c13e31955d28", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/artist/[slug]/page.tsx:89"}, "properties": {"repobilityId": "3a1b9615cc28aace", "scanner": "scanner-primary", "fingerprint": "d8b0c13e31955d28", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/artist/[slug]/page.tsx"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-4031dd48518d4ebd", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/recipe/[slug]/page.tsx:159"}, "properties": {"repobilityId": "f10dd839f52eb756", "scanner": "scanner-primary", "fingerprint": "4031dd48518d4ebd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/recipe/[slug]/page.tsx"}, "region": {"startLine": 159}}}]}, {"ruleId": "scanner-b310ffed6dabbf2d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/song/[slug]/page.tsx:80"}, "properties": {"repobilityId": "4f04f15b09fe7efd", "scanner": "scanner-primary", "fingerprint": "b310ffed6dabbf2d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/song/[slug]/page.tsx"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-a19fe2874fb24e5a", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/page.tsx:113"}, "properties": {"repobilityId": "44bc7d4b74be8033", "scanner": "scanner-primary", "fingerprint": "a19fe2874fb24e5a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/guides/page.tsx"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-7774da75d2bc39c0", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/amp-settings-and-tone/page.tsx:56"}, "properties": {"repobilityId": "4b661edcccc6884f", "scanner": "scanner-primary", "fingerprint": "7774da75d2bc39c0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/guides/amp-settings-and-tone/page.tsx"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-1ad351067a8b3d57", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/bedroom-and-home-recording/page.tsx:47"}, "properties": {"repobilityId": "c2f0382b8c05f31b", "scanner": "scanner-primary", "fingerprint": "1ad351067a8b3d57", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/guides/bedroom-and-home-recording/page.tsx"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-3dc4769d75db218a", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/tone-troubleshooting/page.tsx:48"}, "properties": {"repobilityId": "757028d69e5a4420", "scanner": "scanner-primary", "fingerprint": "3dc4769d75db218a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/guides/tone-troubleshooting/page.tsx"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-789491f79c4e13e8", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/worship-guitar/page.tsx:75"}, "properties": {"repobilityId": "a2a8beebffb28fa2", "scanner": "scanner-primary", "fingerprint": "789491f79c4e13e8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/guides/worship-guitar/page.tsx"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-a6a0cdb946d4f5b7", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/signal-chain-fundamentals/page.tsx:49"}, "properties": {"repobilityId": "95f3b0ef8f05f999", "scanner": "scanner-primary", "fingerprint": "a6a0cdb946d4f5b7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/guides/signal-chain-fundamentals/page.tsx"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-904979c0a1929004", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/artist-tone-recipes/page.tsx:52"}, "properties": {"repobilityId": "d7b4fb4a89531a86", "scanner": "scanner-primary", "fingerprint": "904979c0a1929004", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/guides/artist-tone-recipes/page.tsx"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-5187adea8e87f726", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/pedal-settings-guides/page.tsx:64"}, "properties": {"repobilityId": "f16fdf93ad6d0740", "scanner": "scanner-primary", "fingerprint": "5187adea8e87f726", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/guides/pedal-settings-guides/page.tsx"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-458304d0dbe0826b", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/modeler-mastery/page.tsx:65"}, "properties": {"repobilityId": "2ddbdfa8e479c15f", "scanner": "scanner-primary", "fingerprint": "458304d0dbe0826b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/guides/modeler-mastery/page.tsx"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-4f2e1ffc6d38b3a2", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/set-packs/worship/page.tsx:90"}, "properties": {"repobilityId": "478abc9e0e21d6eb", "scanner": "scanner-primary", "fingerprint": "4f2e1ffc6d38b3a2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/set-packs/worship/page.tsx"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-c99640e8acf42ad2", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/platforms/page.tsx:46"}, "properties": {"repobilityId": "0b2352ceedc9d1f2", "scanner": "scanner-primary", "fingerprint": "c99640e8acf42ad2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/platforms/page.tsx"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-e1b6bea8589632d2", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/platforms/[slug]/page.tsx:315"}, "properties": {"repobilityId": "61bab8f8040aa5ad", "scanner": "scanner-primary", "fingerprint": "e1b6bea8589632d2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/platforms/[slug]/page.tsx"}, "region": {"startLine": 315}}}]}, {"ruleId": "scanner-d325fed3df04b873", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/news/page.tsx:58"}, "properties": {"repobilityId": "7478e5b824e77245", "scanner": "scanner-primary", "fingerprint": "d325fed3df04b873", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/news/page.tsx"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-7fbc91db7f86ea5e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/news/[slug]/page.tsx:100"}, "properties": {"repobilityId": "91226ec1c7108e54", "scanner": "scanner-primary", "fingerprint": "7fbc91db7f86ea5e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/news/[slug]/page.tsx"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-a985ddb7c3a5e6b7", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/pricing/page.tsx:162"}, "properties": {"repobilityId": "3ed1e47a0a76c577", "scanner": "scanner-primary", "fingerprint": "a985ddb7c3a5e6b7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/pricing/page.tsx"}, "region": {"startLine": 162}}}]}, {"ruleId": "scanner-07afe6d4b29a3f71", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/page.tsx:147"}, "properties": {"repobilityId": "0f7434f401785d28", "scanner": "scanner-primary", "fingerprint": "07afe6d4b29a3f71", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/page.tsx"}, "region": {"startLine": 147}}}]}, {"ruleId": "scanner-c8125ca92f252c11", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/[slug]/page.tsx:192"}, "properties": {"repobilityId": "df5a2a4c38f975f6", "scanner": "scanner-primary", "fingerprint": "c8125ca92f252c11", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/[slug]/page.tsx"}, "region": {"startLine": 192}}}]}, {"ruleId": "scanner-be271d78f11089da", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/mdx/FAQ.tsx:102"}, "properties": {"repobilityId": "1ff32917c9503c5b", "scanner": "scanner-primary", "fingerprint": "be271d78f11089da", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/mdx/FAQ.tsx"}, "region": {"startLine": 102}}}]}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "6362c9e7de0ecb53", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "93955c5d437912fe", "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": "f35c5b6c11cb4db8", "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": "b0289153d7c8f2a9", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "54feeb914c4068b4", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "8a7a6cec755dc11c", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-fa7bbe2678174153", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/helix-preset-qc.md"}, "properties": {"repobilityId": "af281c4095580c15", "scanner": "scanner-primary", "fingerprint": "fa7bbe2678174153", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/helix-preset-qc.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c15de5281215320b", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/gen-images.py:36"}, "properties": {"repobilityId": "8d50caf24457d7fb", "scanner": "scanner-primary", "fingerprint": "c15de5281215320b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-31c79c26a19a348e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/indexnow-submit.ts:37"}, "properties": {"repobilityId": "e2030ed8e93adb21", "scanner": "scanner-primary", "fingerprint": "31c79c26a19a348e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5d26a23d96797f71", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/audit-recipes.ts:125"}, "properties": {"repobilityId": "7f261c77b41c161f", "scanner": "scanner-primary", "fingerprint": "5d26a23d96797f71", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-addd3979f0482543", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/audit-album-art.ts:28"}, "properties": {"repobilityId": "763926236544a253", "scanner": "scanner-primary", "fingerprint": "addd3979f0482543", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b4c117738b63c250", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/fix-missing-comp.ts:171"}, "properties": {"repobilityId": "8252763eb7e987f8", "scanner": "scanner-primary", "fingerprint": "b4c117738b63c250", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b918eb848cd5bc8d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/generate-blog-images.ts:139"}, "properties": {"repobilityId": "2663ae5ffa37aff9", "scanner": "scanner-primary", "fingerprint": "b918eb848cd5bc8d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d66ea367116bc27a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/middleware.ts:39"}, "properties": {"repobilityId": "29088bbe0804b189", "scanner": "scanner-primary", "fingerprint": "d66ea367116bc27a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f9d4a8f8dd06cab", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/layout.tsx:29"}, "properties": {"repobilityId": "e274d2bbdb6fef82", "scanner": "scanner-primary", "fingerprint": "1f9d4a8f8dd06cab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fdafea7f4740d105", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/webhooks/stripe/route.ts:124"}, "properties": {"repobilityId": "2b241cbaee69349c", "scanner": "scanner-primary", "fingerprint": "fdafea7f4740d105", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30d2d4d33d2813b9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/invite/[code]/page.tsx:52"}, "properties": {"repobilityId": "3f9cf08fc92a7b83", "scanner": "scanner-primary", "fingerprint": "30d2d4d33d2813b9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7b1ad057318b14aa", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/checkout/ManageBillingButton.tsx:33"}, "properties": {"repobilityId": "949459537cba865d", "scanner": "scanner-primary", "fingerprint": "7b1ad057318b14aa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a10ef40ddde9f2b6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/checkout/CheckoutButton.tsx:64"}, "properties": {"repobilityId": "4bdf87b54d16fb0d", "scanner": "scanner-primary", "fingerprint": "a10ef40ddde9f2b6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-36ed23bc77b40f40", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/home/HeroV2.tsx:96"}, "properties": {"repobilityId": "91c5cc53db891b79", "scanner": "scanner-primary", "fingerprint": "36ed23bc77b40f40", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85f38367cd9b5cc1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/home/HeroV3.tsx:144"}, "properties": {"repobilityId": "983a2906389a90f7", "scanner": "scanner-primary", "fingerprint": "85f38367cd9b5cc1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd4a11eff260101b", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/home/HeroV4.tsx:35"}, "properties": {"repobilityId": "6414d1e37fc43727", "scanner": "scanner-primary", "fingerprint": "fd4a11eff260101b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7d8c8d9b1c5b946", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/set-packs/SetPackAccess.tsx:98"}, "properties": {"repobilityId": "b081be262b9d6d2b", "scanner": "scanner-primary", "fingerprint": "c7d8c8d9b1c5b946", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5f08455f553e2a1e", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/permissions.ts:68"}, "properties": {"repobilityId": "e877f4abdb3cb3fc", "scanner": "scanner-primary", "fingerprint": "5f08455f553e2a1e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5d09058ce7209db", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/parameters/registry.ts:87"}, "properties": {"repobilityId": "50d040378ed26b98", "scanner": "scanner-primary", "fingerprint": "b5d09058ce7209db", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e692f8f2d0ee8d7d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/helix/generate-hlx.ts:201"}, "properties": {"repobilityId": "1615c1d64d5cfbe7", "scanner": "scanner-primary", "fingerprint": "e692f8f2d0ee8d7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41b1da7d1e85a009", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/helix/model-map.ts:98"}, "properties": {"repobilityId": "5a4b35051a80f32f", "scanner": "scanner-primary", "fingerprint": "41b1da7d1e85a009", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}]}]}