{"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-b167453a2ee42392", "name": "Stray `console.log` in TS/JS \u2014 scripts/perplexity-geo-audit.ts:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/perplexity-geo-audit.ts:82"}, "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-27ab5ac1cb85d1e2", "name": "Stray `console.log` in TS/JS \u2014 scripts/_audit-apify-mismatch.ts:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_audit-apify-mismatch.ts:80"}, "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-ae33596f803ad896", "name": "Stray `console.log` in TS/JS \u2014 scripts/brevo-cold-batch3.ts:211", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/brevo-cold-batch3.ts:211"}, "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-940d836e804af2c3", "name": "Stray `console.log` in TS/JS \u2014 scripts/send-trial-reminders.ts:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-trial-reminders.ts:61"}, "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-dae1ee1c7ca15ba9", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-seo-content.ts:103", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-seo-content.ts:103"}, "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-63e830e459db5212", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-claim-funnel.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-claim-funnel.ts:29"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9a425555e2beec83", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-blog-leads-by-dept.ts:349", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-blog-leads-by-dept.ts:349"}, "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-5664f5b57e58dec0", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-non-btp-categories.ts:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-non-btp-categories.ts:75"}, "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-4296ef2d8364e5f8", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-communes-datagouv.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-communes-datagouv.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-d53ef941a6a1260b", "name": "Stray `console.log` in TS/JS \u2014 scripts/_fix-mismapped-signups.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_fix-mismapped-signups.ts:48"}, "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-78cbb79ecbd0f8ca", "name": "Stray `console.log` in TS/JS \u2014 scripts/recruit-prospects.ts:95", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recruit-prospects.ts:95"}, "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-066dcddc6d1d3d7a", "name": "Stray `console.log` in TS/JS \u2014 scripts/_prepare-batches-tonight.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_prepare-batches-tonight.ts:28"}, "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-4acddab3a2dca412", "name": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing.ts:42"}, "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-a472d052782b87e3", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-department-market.ts:85", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-department-market.ts:85"}, "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-c8fded574e4ee19a", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-cold-email-campaign.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-cold-email-campaign.ts:30"}, "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-a1309fe7f0a30416", "name": "Stray `console.log` in TS/JS \u2014 scripts/_scrape-dp-status.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_scrape-dp-status.ts:16"}, "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-e3c64eefe06a7ca0", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-github-tech.ts:263", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-github-tech.ts:263"}, "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-f9bb2f18916589ba", "name": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-ai.ts:112", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-ai.ts:112"}, "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-fe4067666e028785", "name": "Stray `console.log` in TS/JS \u2014 scripts/brevo-cold-batch4.ts:165", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/brevo-cold-batch4.ts:165"}, "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-cc048a1c8763f776", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-howto-guides.ts:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-howto-guides.ts:80"}, "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-545455e569cfdcf7", "name": "Stray `console.log` in TS/JS \u2014 scripts/import-cities-nouvelle-aquitaine.ts:121", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-cities-nouvelle-aquitaine.ts:121"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1576c176eecd49ec", "name": "Stray `console.log` in TS/JS \u2014 scripts/ping-indexnow-en.ts:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-indexnow-en.ts:70"}, "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-912913b10975fade", "name": "Stray `console.log` in TS/JS \u2014 scripts/import-prospects.ts:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-prospects.ts:70"}, "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-fc709038c5077e0a", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-blog-leads-guide.ts:152", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-blog-leads-guide.ts:152"}, "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-692a7f05924a7b38", "name": "Stray `console.log` in TS/JS \u2014 scripts/recruit-pros.ts:228", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recruit-pros.ts:228"}, "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-bb15a2e4fcb6ffcd", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-google-reviews.ts:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-google-reviews.ts:96"}, "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-76c64413adc168ca", "name": "Stray `console.log` in TS/JS \u2014 scripts/brevo-launch-na-blast.ts:222", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/brevo-launch-na-blast.ts:222"}, "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-651cfd110b7b8021", "name": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-monaco.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-monaco.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-0760503b2b548624", "name": "Stray `console.log` in TS/JS \u2014 scripts/_rgpd-find-tonges.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_rgpd-find-tonges.ts:12"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4154cccb8600e62b", "name": "Stray `console.log` in TS/JS \u2014 scripts/_ping-removed-tonges.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_ping-removed-tonges.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1cbda88359652f3f", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-sitemap-perf.ts:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-sitemap-perf.ts:69"}, "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-70221f7e88234917", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-guides.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-guides.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-6870875e1bb3caa8", "name": "Stray `console.log` in TS/JS \u2014 scripts/safety-check-drop-categories.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/safety-check-drop-categories.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-05992354e4de2c39", "name": "Stray `console.log` in TS/JS \u2014 scripts/_debug-signin-ai.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_debug-signin-ai.ts:25"}, "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-551bf5dfa56c0bd9", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-competitor-offers.ts:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-competitor-offers.ts:90"}, "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-77d330ed290e7209", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-price-guides.ts:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-price-guides.ts:77"}, "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-a2c374cee23b356f", "name": "Stray `console.log` in TS/JS \u2014 scripts/_harvest-hagetmau-vitres.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_harvest-hagetmau-vitres.ts:50"}, "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-e04a5de817dcaa7d", "name": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-ai-freelances.ts:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-ai-freelances.ts:82"}, "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-d8f94df20856fe1a", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-regex-reclassification.ts:88", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-regex-reclassification.ts:88"}, "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-e4d8895b73430849", "name": "Stray `console.log` in TS/JS \u2014 scripts/brevo-cold-batch6.ts:235", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/brevo-cold-batch6.ts:235"}, "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-29fdd9d7381ca870", "name": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-en.ts:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-en.ts:67"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-15986862b79d4806", "name": "Stray `console.log` in TS/JS \u2014 scripts/brevo-fix-templates.ts:160", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/brevo-fix-templates.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-b4bdb1b207b4dc1f", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-monaco-btp-zone.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-monaco-btp-zone.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-73560aebb67bfda3", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-btp-price-guides.ts:85", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-btp-price-guides.ts:85"}, "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-2f96bd82e3c32433", "name": "Stray `console.log` in TS/JS \u2014 scripts/btp-build-backlog.ts:234", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/btp-build-backlog.ts:234"}, "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-040a01fb6e9389a7", "name": "Stray `console.log` in TS/JS \u2014 scripts/_rgpd-miroiterie-melusine.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_rgpd-miroiterie-melusine.ts:30"}, "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-3e3ab5a5eeb29da0", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-founded-year.ts:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-founded-year.ts:61"}, "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-65795d14dbaf7450", "name": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-intl.ts:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-intl.ts:78"}, "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-503a20cef1a091c0", "name": "Stray `console.log` in TS/JS \u2014 scripts/brevo-recovery-batch1.ts:178", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/brevo-recovery-batch1.ts:178"}, "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-0599e859cf608ce7", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-sirene-v3.ts:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-sirene-v3.ts:96"}, "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-a0a764b60fdc6a52", "name": "Stray `console.log` in TS/JS \u2014 scripts/notify-past-claims.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/notify-past-claims.ts:48"}, "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-52610be25e97f6e8", "name": "Stray `console.log` in TS/JS \u2014 scripts/_retry-all-pending.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_retry-all-pending.ts:25"}, "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-5135d613c3cc56bd", "name": "Stray `console.log` in TS/JS \u2014 scripts/setup-stripe-ai-product.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup-stripe-ai-product.ts:52"}, "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-d0fc3fa77700abbf", "name": "Stray `console.log` in TS/JS \u2014 scripts/import-marseille-arrondissements.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-marseille-arrondissements.ts:57"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bec07ef086070a81", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-sourced-prices.ts:95", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-sourced-prices.ts:95"}, "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-b49425d13c494748", "name": "Stray `console.log` in TS/JS \u2014 scripts/pause-brevo-stop-all.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pause-brevo-stop-all.ts:21"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-58070a1aa8fe34db", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-mapr-blog.ts:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-mapr-blog.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-bd119f7449c669eb", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-closed-businesses.ts:190", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-closed-businesses.ts:190"}, "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-b7f9c21dda5c94f3", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-sourced-market-context.ts:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-sourced-market-context.ts:67"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4153acbd744e7538", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-urgence-content.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-urgence-content.ts:51"}, "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-ecbcfcae61eb3e9b", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-ai-country-rates.ts:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-ai-country-rates.ts:111"}, "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-d3a6360bd343956a", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-ai-skill-keywords.ts:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-ai-skill-keywords.ts:119"}, "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-ee19838771299e3e", "name": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-acquisition.ts:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-acquisition.ts:82"}, "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-80de38849c96e4e5", "name": "Stray `console.log` in TS/JS \u2014 scripts/_check-cat-mapping.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_check-cat-mapping.ts:18"}, "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-f0aa963cf922b2d5", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-monaco-market.ts:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-monaco-market.ts:75"}, "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-0646cc33b557de00", "name": "Stray `console.log` in TS/JS \u2014 scripts/_reclass-verticaux-apply.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_reclass-verticaux-apply.ts:45"}, "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-cea8de5228394a81", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-digital-nomad-queries.ts:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-digital-nomad-queries.ts:122"}, "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-8cfdf023f4dd64f7", "name": "Stray `console.log` in TS/JS \u2014 scripts/match-rge-pros.ts:110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/match-rge-pros.ts:110"}, "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-ec55a66a6024ce1f", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-btp-price-guides-bulk.ts:158", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-btp-price-guides-bulk.ts:158"}, "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-40bcb809e8e5248e", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-sirene-nontech.ts:143", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-sirene-nontech.ts:143"}, "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-c52a15bfe3da4922", "name": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-us.ts:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-us.ts:67"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d922b9177f105aff", "name": "Stray `console.log` in TS/JS \u2014 scripts/_rgpd-durand-carrelage.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_rgpd-durand-carrelage.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-3b7a2140653b472f", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-blog-queue.ts:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-blog-queue.ts:67"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-33ce682c72b2e994", "name": "Stray `console.log` in TS/JS \u2014 scripts/brevo-cold-batch5.ts:165", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/brevo-cold-batch5.ts:165"}, "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-2cf76ae3ebda131f", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-noindex-robots.ts:171", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-noindex-robots.ts:171"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de1eb903d13306ee", "name": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-listings.ts:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-listings.ts:61"}, "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-9569a0cb92483541", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-dpe-blog-priority.ts:112", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-dpe-blog-priority.ts:112"}, "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-acaccf0603585dbc", "name": "Stray `console.log` in TS/JS \u2014 scripts/_egress-audit-select.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_egress-audit-select.ts:40"}, "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-13fbbe517a6d6d9c", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-ai-blog-articles.ts:407", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-ai-blog-articles.ts:407"}, "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-b288b305260d0b93", "name": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-multivertical.ts:112", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-multivertical.ts:112"}, "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-050515cf9e177e48", "name": "Stray `console.log` in TS/JS \u2014 scripts/_rgpd-yvonne-tonges.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_rgpd-yvonne-tonges.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-2fb2a2814a84165b", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-pillar-content.ts:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-pillar-content.ts:77"}, "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-6ee97d9ef1321a02", "name": "Stray `console.log` in TS/JS \u2014 scripts/extract-faq-from-seo.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-faq-from-seo.ts:66"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4d9929678d62d7cb", "name": "Stray `console.log` in TS/JS \u2014 scripts/_test-customer-search.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_test-customer-search.ts:17"}, "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-c76e5bffeedff6f0", "name": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-fresh.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-fresh.ts:53"}, "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-7d6a1399a8aa65c6", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-sirene-tech.ts:337", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-sirene-tech.ts:337"}, "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-8e9a1ce7b2090125", "name": "Stray `console.log` in TS/JS \u2014 scripts/_sms-hagetmau-p70.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_sms-hagetmau-p70.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-fdff78f4ac0ef676", "name": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-prix.ts:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-prix.ts:60"}, "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-6a75c9f90bd28959", "name": "Stray `console.log` in TS/JS \u2014 scripts/_delete-go-renov.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_delete-go-renov.ts:15"}, "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-065e53a6831a9ed2", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-sourced-intl-market.ts:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-sourced-intl-market.ts:76"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2abf4b086915e944", "name": "Stray `console.log` in TS/JS \u2014 scripts/recruit-list-sms.ts:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recruit-list-sms.ts:70"}, "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-2924e471e152992d", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-ai-seo-content.ts:158", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-ai-seo-content.ts:158"}, "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-9298bb2cf3eee7cd", "name": "Stray `console.log` in TS/JS \u2014 scripts/reclass-pros-by-regex.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reclass-pros-by-regex.ts:72"}, "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-46a2bd567c984bd3", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-noindex-volume.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-noindex-volume.ts:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c7e600fa7a6c569", "name": "Stray `console.log` in TS/JS \u2014 scripts/update-response-rates.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/update-response-rates.ts:42"}, "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-aaed9d3b907e4cc2", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-partnerships.ts:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-partnerships.ts:111"}, "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-1c02c899c568fc5d", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-seo-na-departments.ts:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-seo-na-departments.ts:98"}, "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-6e1e4756e827e873", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-drop-categories.ts:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-drop-categories.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-3d09e52bf71e7ecf", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-avatar-col.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-avatar-col.ts:18"}, "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-595b2d5bf3b36539", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-tech-debug.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-tech-debug.ts:17"}, "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-af262a682695bcf9", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_retry-activate.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_retry-activate.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-8d8126d4404f8b44", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_generate-ai-descriptions.ts:138", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_generate-ai-descriptions.ts:138"}, "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-c78e0f95f28f875c", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-existing-ai-product.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-existing-ai-product.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ab2d7b231e71adfa", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_test-review-flow.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_test-review-flow.ts:25"}, "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-59b55ca4247c6013", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-willy-exact.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-willy-exact.ts:18"}, "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-b34289b0424b24f6", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_mass-cold-may28.ts:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_mass-cold-may28.ts:100"}, "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-f2bf54e38952d582", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_seed-nontech-skills.ts:153", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_seed-nontech-skills.ts:153"}, "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-c2d66e594acca944", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_btp-blog-migration-map.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_btp-blog-migration-map.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-5148dc0462955d3e", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_test-project-notif-dept.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_test-project-notif-dept.ts:20"}, "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-52cc2ef7a4c12e8c", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-all-recent.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-all-recent.ts:10"}, "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-192ce221c4d4a081", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_list-nontech-macros.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_list-nontech-macros.ts:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90799245623f8849", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_test-prices.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_test-prices.ts:16"}, "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-78e34d22f90da20f", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-projects-vertical.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-projects-vertical.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e11749b0cf88f462", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_verify-prospects.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_verify-prospects.ts:10"}, "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-c4d5ddccb46871ae", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-ines.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-ines.ts:8"}, "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-86921036aaa5c914", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-atsaf-pro.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-atsaf-pro.ts:18"}, "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-2c91596590e72967", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-projects-columns.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-projects-columns.ts:15"}, "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-0b9fcb97b617bf75", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-willy-fiche.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-willy-fiche.ts:18"}, "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-b2a19c2ac52fa030", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_create-btp-lead-unlock-live.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_create-btp-lead-unlock-live.ts:30"}, "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-85cd7a876b4d23e1", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-tech-projects-filter.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-tech-projects-filter.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9544f7e525a3d26d", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-skills-type.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-skills-type.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bcd81bf8b39c648f", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_test-claude-model.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_test-claude-model.ts:18"}, "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-3880fcc123970a1f", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_rgpd-laurendeau.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_rgpd-laurendeau.ts:40"}, "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-a607cbd4b108cf9c", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_create-ai-product-live.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_create-ai-product-live.ts:26"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e515f525ce768d4b", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_migrate-btp-trialing-to-free.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_migrate-btp-trialing-to-free.ts:40"}, "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-7a3768a64443a05f", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_add-btp-metiers.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_add-btp-metiers.ts:20"}, "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-88999fbe1485fef6", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_wipe-all-projects.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_wipe-all-projects.ts:34"}, "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-bae07aa45a831793", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-fresh-projects.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-fresh-projects.ts:9"}, "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-f184592eeb80611d", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-all-projects-detailed.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-all-projects-detailed.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-737469c1a6e4d535", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_verify-ai-prices-exist.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_verify-ai-prices-exist.ts:12"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9b73da42babc1cf3", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-photo-cols.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-photo-cols.ts:18"}, "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-ffbd40ae5deeff2b", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-photos-schema.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-photos-schema.ts:18"}, "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-9a84285b17927300", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_warm-sitemap-cache.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_warm-sitemap-cache.ts:53"}, "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-a833951781ad5f66", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_audit-sitemap-http-status.ts:112", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_audit-sitemap-http-status.ts:112"}, "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-ae5da1f28ab7f8a0", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_crawl-websites-v2.ts:285", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_crawl-websites-v2.ts:285"}, "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-9fcb694a5f8e827f", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_test-btp-unlock-checkout.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_test-btp-unlock-checkout.ts:10"}, "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-ec2e5395c011ce07", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_test-stripe-connection.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_test-stripe-connection.ts:8"}, "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-f377b1b29fc584a5", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-dashboard-exact-query.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-dashboard-exact-query.ts:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e677a22947a2849f", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-existing-signups.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-existing-signups.ts:18"}, "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-7473b5ff4dbb93cb", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-stripe-portal.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-stripe-portal.ts:13"}, "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-51190a2da83eda58", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_retry-ines-activation.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_retry-ines-activation.ts:7"}, "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-2f67c890c71a4687", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_audit-empty-cities-redirects.ts:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_audit-empty-cities-redirects.ts:60"}, "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-f8163da0ad082a22", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-recent-projects.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-recent-projects.ts:21"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bedcb75c254c3f33", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_verify-delete-schema.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_verify-delete-schema.ts:15"}, "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-86f7051495f4d323", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-stripe-webhook.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-stripe-webhook.ts:12"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-43e715e3bd6055ae", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-btp-subs.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-btp-subs.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-59f78e3679ca6a60", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-nontech-state.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-nontech-state.ts:18"}, "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-912cc468071249ae", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_seed-tech-skills.ts:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_seed-tech-skills.ts:76"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fe0086e60caef567", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_reset-signin-rate-limit.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_reset-signin-rate-limit.ts:39"}, "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-17194408025bf7b9", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_create-btp-unlock-product-live.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_create-btp-unlock-product-live.ts:24"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-098c312da86e4874", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_rgpd-celine-sredic.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_rgpd-celine-sredic.ts:43"}, "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-8c8b761eac121bd3", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_retry-all-pending-ai-signups.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_retry-all-pending-ai-signups.ts:15"}, "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-ac69b23e5724091c", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_preview-partnership-templates.ts:106", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_preview-partnership-templates.ts:106"}, "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-7d394e89e2274a2f", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-stripe-mode.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-stripe-mode.ts:14"}, "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-de3eb78486ea0ce0", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_count-sitemap-urls.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_count-sitemap-urls.ts:16"}, "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-8f1e49f44f3af5a2", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_wipe-events-then-projects.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_wipe-events-then-projects.ts:10"}, "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-780e765a70d595eb", "name": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-projects-direct.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-projects-direct.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7bd2fc3dbfe8acb2", "name": "`truncate` class without `title=` for hover reveal \u2014 components/listing/CityFactsBlock.tsx:116", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/listing/CityFactsBlock.tsx:116"}, "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-cb7cbe9a33565707", "name": "`truncate` class without `title=` for hover reveal \u2014 components/pro/dashboard/DashboardHome.tsx:157", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/pro/dashboard/DashboardHome.tsx:157"}, "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-9f39f94715697b6f", "name": "`truncate` class without `title=` for hover reveal \u2014 components/pro/dashboard/DashboardHeader.tsx:61", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/pro/dashboard/DashboardHeader.tsx:61"}, "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-39104994b2dccf98", "name": "`truncate` class without `title=` for hover reveal \u2014 components/pro/dashboard/Sidebar.tsx:112", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/pro/dashboard/Sidebar.tsx:112"}, "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-42a58faf2f96a200", "name": "`truncate` class without `title=` for hover reveal \u2014 components/pro/dashboard/LeadCard.tsx:79", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/pro/dashboard/LeadCard.tsx:79"}, "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-75be71a48ea8f06f", "name": "`truncate` class without `title=` for hover reveal \u2014 components/ai/AiStickyCta.tsx:118", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/ai/AiStickyCta.tsx:118"}, "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-f965c5649e333f8d", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 components/ai/AiFaqSection.tsx:219", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/ai/AiFaqSection.tsx:219"}, "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-bfa73830d08fd519", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 components/analytics/UETPixel.tsx:107", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/analytics/UETPixel.tsx:107"}, "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-8bf04c134d3226dc", "name": "`truncate` class without `title=` for hover reveal \u2014 components/search/SearchForm.tsx:287", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/search/SearchForm.tsx:287"}, "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-61873bc57589acbe", "name": "`truncate` class without `title=` for hover reveal \u2014 components/admin/layout/AdminHeader.tsx:113", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/admin/layout/AdminHeader.tsx:113"}, "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-a312b4c46e2e6a5d", "name": "`truncate` class without `title=` for hover reveal \u2014 components/admin/layout/AdminSidebar.tsx:183", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/admin/layout/AdminSidebar.tsx:183"}, "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-c97326a868053614", "name": "`truncate` class without `title=` for hover reveal \u2014 components/social-proof/RecentClaimsToast.tsx:181", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/social-proof/RecentClaimsToast.tsx:181"}, "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-768a1948c95cf9d7", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 components/seo/SeoContent.tsx:200", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/seo/SeoContent.tsx:200"}, "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-c6614afb4ed7950b", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 components/seo/JsonLd.tsx:5", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/seo/JsonLd.tsx:5"}, "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-0ab32dc6605f90df", "name": "Stray `console.log` in TS/JS \u2014 app/api/cron/review-requests/route.ts:195", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/cron/review-requests/route.ts:195"}, "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-4a0c94b9f845e3ef", "name": "Stray `console.log` in TS/JS \u2014 app/api/stripe/webhook/route.ts:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/stripe/webhook/route.ts:96"}, "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-60d6a9b8602a3b9c", "name": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/page.tsx:610", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/page.tsx:610"}, "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-4c1b4d5a79d1477d", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/page.tsx:475", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/page.tsx:475"}, "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-6e910a1a1f191e40", "name": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/freelance/[slug]/page.tsx:705", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/freelance/[slug]/page.tsx:705"}, "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-4105155cf3853cdb", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/freelance/[slug]/page.tsx:154", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/freelance/[slug]/page.tsx:154"}, "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-df3a681ee3fcef73", "name": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/[skill]/page.tsx:493", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/[skill]/page.tsx:493"}, "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-aacbb9ba05889949", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/[skill]/page.tsx:186", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/[skill]/page.tsx:186"}, "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-033d37535f640e14", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/[skill]/dept/[dept]/page.tsx:179", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/[skill]/dept/[dept]/page.tsx:179"}, "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-c0686a700bfcef39", "name": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/[skill]/[ville]/page.tsx:301", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/[skill]/[ville]/page.tsx:301"}, "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-f120a9376b721a01", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/[skill]/[ville]/page.tsx:238", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/[skill]/[ville]/page.tsx:238"}, "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-b086ca27e3ff80b2", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/barometre-tjm/page.tsx:101", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/barometre-tjm/page.tsx:101"}, "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-014a32ca42ec4e74", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/barometre-tjm/[skill]/page.tsx:105", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/barometre-tjm/[skill]/page.tsx:105"}, "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-17c15d19c489be57", "name": "Stray `console.log` in TS/JS \u2014 app/(ai)/ai/inscription/actions.ts:200", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/(ai)/ai/inscription/actions.ts:200"}, "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-f73d46d21a5e6763", "name": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/dashboard/layout.tsx:108", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/dashboard/layout.tsx:108"}, "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-0c99046c70ebb5c8", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/monde/page.tsx:119", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/monde/page.tsx:119"}, "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-84c0a915df67f2bb", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/monde/[skill]/page.tsx:181", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/monde/[skill]/page.tsx:181"}, "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-5f6e05d7a72c071d", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/monde/[skill]/[ville]/page.tsx:241", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/monde/[skill]/[ville]/page.tsx:241"}, "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-55575f468e77d706", "name": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/pour-les-freelances/page.tsx:196", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/pour-les-freelances/page.tsx:196"}, "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-24beba913a211ccd", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/pour-les-freelances/page.tsx:135", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/pour-les-freelances/page.tsx:135"}, "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-4370021c2bdc3f07", "name": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/freelances/page.tsx:271", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/freelances/page.tsx:271"}, "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-f9af8b85eab8e31d", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/freelances/page.tsx:117", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/freelances/page.tsx:117"}, "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-aa22aa9d965ddc07", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/tarifs/page.tsx:179", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/tarifs/page.tsx:179"}, "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-71e47d3cd86da8f2", "name": "Stray `console.log` in TS/JS \u2014 app/(ai)/ai/deposer/actions.ts:237", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/(ai)/ai/deposer/actions.ts:237"}, "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-c5822c912dafcc43", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/page.tsx:447", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/page.tsx:447"}, "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-30fd0a00dc964071", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/[skill]/page.tsx:261", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/[skill]/page.tsx:261"}, "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-4e55385a827ab105", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/[skill]/state/[state]/page.tsx:263", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/[skill]/state/[state]/page.tsx:263"}, "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-2dcc01e272f8c9aa", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/[skill]/[city]/page.tsx:526", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/[skill]/[city]/page.tsx:526"}, "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-1523a8bc24921eef", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/[skill]/country/[country]/page.tsx:352", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/[skill]/country/[country]/page.tsx:352"}, "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-d3cb1a5c7e678d83", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/freelance-visa/page.tsx:107", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/freelance-visa/page.tsx:107"}, "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-f0364fb61dd13fc6", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/freelance-visa/[country]/page.tsx:213", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/freelance-visa/[country]/page.tsx:213"}, "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-886ca3583d4a08bb", "name": "`truncate` class without `title=` for hover reveal \u2014 app/(ai-en)/en/ai/dashboard/layout.tsx:117", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/(ai-en)/en/ai/dashboard/layout.tsx:117"}, "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-b25fe723b456a293", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/continent/[continent]/page.tsx:247", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/continent/[continent]/page.tsx:247"}, "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-93071690360f8716", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/freelance-usa/page.tsx:104", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/freelance-usa/page.tsx:104"}, "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-e98e7e6d50d9c517", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/freelance-usa/[topic]/page.tsx:207", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/freelance-usa/[topic]/page.tsx:207"}, "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-fc90652a2e33361e", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/country/[country]/page.tsx:286", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/country/[country]/page.tsx:286"}, "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-30df7aeee0a46205", "name": "`truncate` class without `title=` for hover reveal \u2014 app/admin/(dashboard)/OverviewClient.tsx:199", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/admin/(dashboard)/OverviewClient.tsx:199"}, "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-8c38a762e46981bf", "name": "`truncate` class without `title=` for hover reveal \u2014 app/admin/(dashboard)/pros/[id]/ProDetailClient.tsx:383", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/admin/(dashboard)/pros/[id]/ProDetailClient.tsx:383"}, "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-c5c8ec05f0ba9ed1", "name": "`truncate` class without `title=` for hover reveal \u2014 app/admin/(dashboard)/projects/ProjectsTableClient.tsx:121", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/admin/(dashboard)/projects/ProjectsTableClient.tsx:121"}, "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-9fa2e6f2b15ec18b", "name": "`truncate` class without `title=` for hover reveal \u2014 app/admin/(dashboard)/partnerships/PartnershipsClient.tsx:184", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/admin/(dashboard)/partnerships/PartnershipsClient.tsx:184"}, "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-624f87966e63f2e8", "name": "`truncate` class without `title=` for hover reveal \u2014 app/admin/(dashboard)/emails/EmailsClient.tsx:562", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/admin/(dashboard)/emails/EmailsClient.tsx:562"}, "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-3e3f3b2dfe3267fa", "name": "`truncate` class without `title=` for hover reveal \u2014 app/admin/(dashboard)/finances/FinancesClient.tsx:345", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/admin/(dashboard)/finances/FinancesClient.tsx:345"}, "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-becceca95a189216", "name": "TODO/FIXME marker in shipping code \u2014 app/(public)/deposer-projet/actions.ts:54", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/(public)/deposer-projet/actions.ts:54"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-206722be110a9a8c", "name": "Stray `console.log` in TS/JS \u2014 app/(public)/deposer-projet/actions.ts:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/(public)/deposer-projet/actions.ts:92"}, "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-2c0b7952732bce89", "name": "Stray `console.log` in TS/JS \u2014 lib/routing/route-project.ts:269", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/routing/route-project.ts:269"}, "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-a49b3650c286c81b", "name": "Insecure pattern 'node_child_process' in scripts/ping-google-indexing.ts:27", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ping-google-indexing.ts:27"}, "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-fb61ef43ad5c423d", "name": "Insecure pattern 'node_child_process' in scripts/audit-sitemap-perf.ts:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/audit-sitemap-perf.ts:17"}, "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-c7d133036f6dfb82", "name": "Insecure pattern 'node_child_process' in scripts/ping-google-indexing-fresh.ts:29", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ping-google-indexing-fresh.ts:29"}, "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-c04b5b6018873cce", "name": "Insecure pattern 'node_child_process' in scripts/_archive/_audit-sitemap-http-status.ts:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/_archive/_audit-sitemap-http-status.ts:21"}, "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-589812b3f12ab389", "name": "Insecure pattern 'node_child_process' in scripts/_archive/_audit-empty-cities-redirects.ts:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/_archive/_audit-empty-cities-redirects.ts:20"}, "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-7ef810a032ae00b9", "name": "Insecure pattern 'dangerous_innerhtml' in components/ai/AiFaqSection.tsx:219", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in components/ai/AiFaqSection.tsx:219"}, "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-99277a3cc0285a17", "name": "Insecure pattern 'dangerous_innerhtml' in components/analytics/UETPixel.tsx:107", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in components/analytics/UETPixel.tsx:107"}, "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-b682604c23e151df", "name": "Insecure pattern 'dangerous_innerhtml' in components/seo/SeoContent.tsx:200", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in components/seo/SeoContent.tsx:200"}, "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-a86d98f28a69204d", "name": "Insecure pattern 'dangerous_innerhtml' in components/seo/JsonLd.tsx:5", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in components/seo/JsonLd.tsx:5"}, "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-2788349c83f6f825", "name": "Possible secret in app/pro/connexion/actions.ts", "shortDescription": {"text": "Possible secret in app/pro/connexion/actions.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-28325fa253792cfa", "name": "Possible secret in app/pro/reinitialiser-mot-de-passe/actions.ts", "shortDescription": {"text": "Possible secret in app/pro/reinitialiser-mot-de-passe/actions.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-a81497f483289617", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/page.tsx:475", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/page.tsx:475"}, "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-f93b06d4d173ec60", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/freelance/[slug]/page.tsx:154", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/freelance/[slug]/page.tsx:154"}, "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-3ecac2cb7066c05e", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/[skill]/page.tsx:186", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/[skill]/page.tsx:186"}, "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-71b4a5d5c60a732b", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/[skill]/dept/[dept]/page.tsx:179", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/[skill]/dept/[dept]/page.tsx:179"}, "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-e572785d589c53c7", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/[skill]/[ville]/page.tsx:238", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/[skill]/[ville]/page.tsx:238"}, "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-e85b8cc4be8635bc", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/barometre-tjm/page.tsx:101", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/barometre-tjm/page.tsx:101"}, "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-b89505ac7cda029d", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/barometre-tjm/[skill]/page.tsx:105", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/barometre-tjm/[skill]/page.tsx:105"}, "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-a737beaa280e6346", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/monde/page.tsx:119", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/monde/page.tsx:119"}, "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-bb9650c68ddfcc59", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/monde/[skill]/page.tsx:181", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/monde/[skill]/page.tsx:181"}, "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-2c1f2d40fd70e5dc", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/monde/[skill]/[ville]/page.tsx:241", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/monde/[skill]/[ville]/page.tsx:241"}, "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-ab382dd06993ed97", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/pour-les-freelances/page.tsx:135", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/pour-les-freelances/page.tsx:135"}, "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-085c1f944d143a17", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/freelances/page.tsx:117", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/freelances/page.tsx:117"}, "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-1c28c9ff33d6cb4c", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/tarifs/page.tsx:179", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/tarifs/page.tsx:179"}, "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-bdc212913918e107", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/page.tsx:447", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/page.tsx:447"}, "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-f326fceb2d64a6ec", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/[skill]/page.tsx:261", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/[skill]/page.tsx:261"}, "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-3668f85a261f1603", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/[skill]/state/[state]/page.tsx:263", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/[skill]/state/[state]/page.tsx:263"}, "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-0211f406c67ac53c", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/[skill]/[city]/page.tsx:526", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/[skill]/[city]/page.tsx:526"}, "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-9631d9b4b5d54bc5", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/[skill]/country/[country]/page.tsx:352", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/[skill]/country/[country]/page.tsx:352"}, "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-99b2c719ba6f233a", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/freelance-visa/page.tsx:107", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/freelance-visa/page.tsx:107"}, "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-80a23cd243de6b34", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/freelance-visa/[country]/page.tsx:213", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/freelance-visa/[country]/page.tsx:213"}, "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-5309f518752f87aa", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/continent/[continent]/page.tsx:247", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/continent/[continent]/page.tsx:247"}, "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-e1d0fdf8f6f97abc", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/freelance-usa/page.tsx:104", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/freelance-usa/page.tsx:104"}, "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-baf5899dc6b32ad1", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/freelance-usa/[topic]/page.tsx:207", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/freelance-usa/[topic]/page.tsx:207"}, "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-2a33d795ba12d094", "name": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/country/[country]/page.tsx:286", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/country/[country]/page.tsx:286"}, "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-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5bda7cc1c4cc354d", "name": "Very large file: app/(ai)/ai/page.tsx (1600 lines)", "shortDescription": {"text": "Very large file: app/(ai)/ai/page.tsx (1600 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-79f562fe603cf34d", "name": "Very large file: app/(public)/artisan/[slug]/page.tsx (1058 lines)", "shortDescription": {"text": "Very large file: app/(public)/artisan/[slug]/page.tsx (1058 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e68d62aea457ae97", "name": "Very large file: lib/specialties.ts (1258 lines)", "shortDescription": {"text": "Very large file: lib/specialties.ts (1258 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "8 test file(s) for 610 source file(s) (ratio 0.01). 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 1795 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 191 placeholder/mock markers across 50 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-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "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. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-17d866d91a7c451e", "name": "Agent instruction/config may expose a secret: CLAUDE.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: CLAUDE.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2c5f98b152cddb6d", "name": "Agent authority lacks a verifier contract: .claude/launch.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-33c44c5670b5d1ce", "name": "Commented-code block (5 lines) in next.config.ts:26", "shortDescription": {"text": "Commented-code block (5 lines) in next.config.ts:26"}, "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-2258102939cb936a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/perplexity-geo-audit.ts:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/perplexity-geo-audit.ts:65"}, "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-93d5b144ec58e36e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/brevo-cold-batch3.ts:86", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/brevo-cold-batch3.ts:86"}, "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-6c7a7eb1584c3f1f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/enrich-communes-datagouv.ts:61", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/enrich-communes-datagouv.ts:61"}, "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-3fb32596077c859b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/recruit-prospects.ts:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/recruit-prospects.ts:67"}, "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-2237092b1e87adf0", "name": "Commented-code block (5 lines) in scripts/enrich-github-tech.ts:58", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/enrich-github-tech.ts:58"}, "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-9bfee3eb45a672db", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/brevo-cold-batch4.ts:74", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/brevo-cold-batch4.ts:74"}, "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-ac420f01c20fb28f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ping-indexnow-en.ts:64", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ping-indexnow-en.ts: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-c9a0e4d4273263fd", "name": "Commented-code block (5 lines) in scripts/recruit-pros.ts:124", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/recruit-pros.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-8ae971369e234a55", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/recruit-pros.ts:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/recruit-pros.ts:84"}, "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-12cbc7150a7e5dc6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/enrich-google-reviews.ts:82", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/enrich-google-reviews.ts:82"}, "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-ec9446e48a80c755", "name": "Commented-code block (7 lines) in scripts/brevo-launch-na-blast.ts:64", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/brevo-launch-na-blast.ts:64"}, "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-2f55934e09e9826f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-competitor-offers.ts:77", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-competitor-offers.ts:77"}, "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-68d0cebc33f614a4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/_harvest-hagetmau-vitres.ts:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/_harvest-hagetmau-vitres.ts:38"}, "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-18854d082ec0707d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/brevo-cold-batch6.ts:87", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/brevo-cold-batch6.ts:87"}, "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-6eb70636e9134a40", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/brevo-fix-templates.ts:144", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/brevo-fix-templates.ts:144"}, "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-7ff79edf0b0d5283", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/generate-btp-price-guides.ts:77", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/generate-btp-price-guides.ts:77"}, "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-aad42f457307e271", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/brevo-recovery-batch1.ts:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/brevo-recovery-batch1.ts:68"}, "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-61f487ca85f8a7d6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/import-marseille-arrondissements.ts:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/import-marseille-arrondissements.ts:50"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-90dff712eba495a6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-sourced-prices.ts:82", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-sourced-prices.ts:82"}, "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-37d53e64a1af709c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-sourced-market-context.ts:54", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-sourced-market-context.ts:54"}, "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-cc8385d894abc8f4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-urgence-content.ts:56", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-urgence-content.ts:56"}, "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-b9d030804da4249c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-ai-country-rates.ts:85", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-ai-country-rates.ts:85"}, "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-ee35939f988498ce", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-ai-skill-keywords.ts:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-ai-skill-keywords.ts:79"}, "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-7cee5bc6677155e7", "name": "Commented-code block (6 lines) in scripts/_gen-favicons.mjs:1", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/_gen-favicons.mjs:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6b7f19e52e779fb8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-monaco-market.ts:36", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-monaco-market.ts:36"}, "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-095a4e418881d7ea", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-digital-nomad-queries.ts:88", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-digital-nomad-queries.ts:88"}, "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-89b9c8116f89d40b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/match-rge-pros.ts:81", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/match-rge-pros.ts:81"}, "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-40d332bd13415956", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/generate-btp-price-guides-bulk.ts:99", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/generate-btp-price-guides-bulk.ts:99"}, "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-f8e03e589b15a57a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/brevo-cold-batch5.ts:74", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/brevo-cold-batch5.ts:74"}, "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-6c187d4c6af0dccf", "name": "Commented-code block (5 lines) in scripts/ping-google-indexing-listings.ts:143", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ping-google-indexing-listings.ts:143"}, "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-666a0ea58d2dbe95", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-pillar-content.ts:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-pillar-content.ts:49"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ca5aebbd9be1b40b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/_sms-hagetmau-p70.ts:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/_sms-hagetmau-p70.ts:38"}, "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-6d8021c4f2796cff", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-sourced-intl-market.ts:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-sourced-intl-market.ts:63"}, "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-038661913d547fa1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/recruit-list-sms.ts:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/recruit-list-sms.ts:48"}, "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-bf25731365a38c45", "name": "Commented-code block (5 lines) in scripts/generate-ai-seo-content.ts:88", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/generate-ai-seo-content.ts:88"}, "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-f64ccb09712615ad", "name": "Commented-code block (6 lines) in scripts/seed-partnerships.ts:115", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/seed-partnerships.ts:115"}, "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-9ba5c9d80457e3f3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seed-partnerships.ts:100", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seed-partnerships.ts:100"}, "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-796c6a77424e0ffd", "name": "Commented-code block (5 lines) in scripts/generate-seo-na-departments.ts:104", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/generate-seo-na-departments.ts:104"}, "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-3243d7979081e0a6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/_archive/_warm-sitemap-cache.ts:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/_archive/_warm-sitemap-cache.ts:67"}, "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-16dbe2a5a325d341", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/_archive/_count-sitemap-urls.ts:5", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/_archive/_count-sitemap-urls.ts:5"}, "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-b111cf317f7be8fc", "name": "Commented-code block (6 lines) in components/layout/Footer.tsx:26", "shortDescription": {"text": "Commented-code block (6 lines) in components/layout/Footer.tsx:26"}, "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-9428f838806412b6", "name": "Commented-code block (5 lines) in components/pro/TopProCard.tsx:38", "shortDescription": {"text": "Commented-code block (5 lines) in components/pro/TopProCard.tsx:38"}, "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-66ed473ac162c1fa", "name": "Commented-code block (5 lines) in components/pro/dashboard/FicheEditor.tsx:187", "shortDescription": {"text": "Commented-code block (5 lines) in components/pro/dashboard/FicheEditor.tsx:187"}, "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-96e504e8ad83f76e", "name": "Commented-code block (5 lines) in components/analytics/UETPixel.tsx:51", "shortDescription": {"text": "Commented-code block (5 lines) in components/analytics/UETPixel.tsx:51"}, "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-cd2448ee6230bc0b", "name": "Commented-code block (6 lines) in components/analytics/ClarityScript.tsx:5", "shortDescription": {"text": "Commented-code block (6 lines) in components/analytics/ClarityScript.tsx:5"}, "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-48e3d8e0b197da9a", "name": "Commented-code block (6 lines) in components/agent/CommercialAgent.tsx:257", "shortDescription": {"text": "Commented-code block (6 lines) in components/agent/CommercialAgent.tsx:257"}, "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-ef67df1843b36ab8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/admin/layout/AdminHeader.tsx:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/admin/layout/AdminHeader.tsx:48"}, "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-184c7208e033caf1", "name": "Commented-code block (6 lines) in components/social-proof/RecentClaimsToast.tsx:10", "shortDescription": {"text": "Commented-code block (6 lines) in components/social-proof/RecentClaimsToast.tsx:10"}, "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-8b11a76e68f9d2af", "name": "Commented-code block (5 lines) in components/project/ProjectForm.tsx:47", "shortDescription": {"text": "Commented-code block (5 lines) in components/project/ProjectForm.tsx:47"}, "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-51c279be8bb25aac", "name": "Commented-code block (6 lines) in app/robots.ts:21", "shortDescription": {"text": "Commented-code block (6 lines) in app/robots.ts:21"}, "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-17396a5a95e163be", "name": "Commented-code block (8 lines) in app/sitemap.ts:20", "shortDescription": {"text": "Commented-code block (8 lines) in app/sitemap.ts:20"}, "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-227a7eea066afd99", "name": "Commented-code block (6 lines) in app/sitemap-index.xml/route.ts:25", "shortDescription": {"text": "Commented-code block (6 lines) in app/sitemap-index.xml/route.ts:25"}, "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-137e08b0dcffd10a", "name": "Commented-code block (5 lines) in app/pro/dashboard/leads/page.tsx:102", "shortDescription": {"text": "Commented-code block (5 lines) in app/pro/dashboard/leads/page.tsx:102"}, "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-031ed97c513635d4", "name": "Commented-code block (6 lines) in app/pro/dashboard/fiche/actions.ts:232", "shortDescription": {"text": "Commented-code block (6 lines) in app/pro/dashboard/fiche/actions.ts:232"}, "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-3010fa618c7f80a6", "name": "Commented-code block (5 lines) in app/api/feedback-chat/route.ts:75", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/feedback-chat/route.ts:75"}, "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-fbc77dd5d5cfce99", "name": "Commented-code block (5 lines) in app/api/cron/sitemap-audit/route.ts:37", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/cron/sitemap-audit/route.ts:37"}, "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-ece8a576bde4c648", "name": "Commented-code block (8 lines) in app/api/stripe/webhook/route.ts:367", "shortDescription": {"text": "Commented-code block (8 lines) in app/api/stripe/webhook/route.ts:367"}, "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-419217beb807feed", "name": "Commented-code block (7 lines) in app/(ai)/ai/dashboard/projets/page.tsx:84", "shortDescription": {"text": "Commented-code block (7 lines) in app/(ai)/ai/dashboard/projets/page.tsx:84"}, "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-efa692e8591113f9", "name": "Commented-code block (10 lines) in app/(ai)/ai/dashboard/profil/actions.ts:54", "shortDescription": {"text": "Commented-code block (10 lines) in app/(ai)/ai/dashboard/profil/actions.ts:54"}, "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-eec8c095f84436d0", "name": "Commented-code block (5 lines) in app/(ai)/ai/deposer/actions.ts:218", "shortDescription": {"text": "Commented-code block (5 lines) in app/(ai)/ai/deposer/actions.ts:218"}, "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-125e66b4b5ddf387", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/admin/login/page.tsx:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/admin/login/page.tsx:49"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c562b2b978ef134f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/admin/(dashboard)/pros/[id]/ProDetailClient.tsx:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/admin/(dashboard)/pros/[id]/ProDetailClient.tsx:84"}, "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-eb1ffd010904efd6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/admin/(dashboard)/projects/[id]/ProjectDetailClient.tsx:97", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/admin/(dashboard)/projects/[id]/ProjectDetailClient.tsx:97"}, "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-4de1f484bc93e284", "name": "Commented-code block (5 lines) in app/(public)/deposer-projet/actions.ts:33", "shortDescription": {"text": "Commented-code block (5 lines) in app/(public)/deposer-projet/actions.ts:33"}, "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-f7138eece02c8260", "name": "Commented-code block (6 lines) in app/(public)/trouver-des-chantiers/page.tsx:10", "shortDescription": {"text": "Commented-code block (6 lines) in app/(public)/trouver-des-chantiers/page.tsx:10"}, "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-308d73e1be3f89c6", "name": "Commented-code block (6 lines) in app/(public)/artisan/[slug]/page.tsx:57", "shortDescription": {"text": "Commented-code block (6 lines) in app/(public)/artisan/[slug]/page.tsx:57"}, "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-7b09c9771d3b5952", "name": "Commented-code block (5 lines) in app/(public)/[metier]/page.tsx:56", "shortDescription": {"text": "Commented-code block (5 lines) in app/(public)/[metier]/page.tsx:56"}, "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-026a0a5cee7dc7da", "name": "Commented-code block (5 lines) in app/(public)/[metier]/[location]/page.tsx:116", "shortDescription": {"text": "Commented-code block (5 lines) in app/(public)/[metier]/[location]/page.tsx:116"}, "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-b83307479ec896c7", "name": "Commented-code block (7 lines) in lib/types/database.ts:297", "shortDescription": {"text": "Commented-code block (7 lines) in lib/types/database.ts:297"}, "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-504ec2d53e173bab", "name": "Commented-code block (6 lines) in lib/email/send-review-request.ts:152", "shortDescription": {"text": "Commented-code block (6 lines) in lib/email/send-review-request.ts:152"}, "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-f649f93feb3cb636", "name": "Commented-code block (8 lines) in lib/email/broadcast-btp-project.ts:249", "shortDescription": {"text": "Commented-code block (8 lines) in lib/email/broadcast-btp-project.ts:249"}, "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-72281c7d17f9b8ab", "name": "Commented-code block (5 lines) in lib/email/send-project-notification.ts:12", "shortDescription": {"text": "Commented-code block (5 lines) in lib/email/send-project-notification.ts:12"}, "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-bbc5262dc00c627a", "name": "Commented-code block (7 lines) in lib/ai/helpers.ts:9", "shortDescription": {"text": "Commented-code block (7 lines) in lib/ai/helpers.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bed4555d193e2190", "name": "Commented-code block (5 lines) in lib/ai/auth/signin-code.ts:25", "shortDescription": {"text": "Commented-code block (5 lines) in lib/ai/auth/signin-code.ts:25"}, "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-94a1c7b45ad72251", "name": "Commented-code block (5 lines) in lib/ai/auth/activate-signup.ts:34", "shortDescription": {"text": "Commented-code block (5 lines) in lib/ai/auth/activate-signup.ts:34"}, "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-665248d13513d103", "name": "Commented-code block (5 lines) in lib/supabase/public-client.ts:11", "shortDescription": {"text": "Commented-code block (5 lines) in lib/supabase/public-client.ts:11"}, "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-2de524d59d8df7a4", "name": "Commented-code block (9 lines) in lib/queries/pros.ts:13", "shortDescription": {"text": "Commented-code block (9 lines) in lib/queries/pros.ts:13"}, "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-d1719dc28695dec0", "name": "Commented-code block (7 lines) in lib/queries/departments.ts:32", "shortDescription": {"text": "Commented-code block (7 lines) in lib/queries/departments.ts:32"}, "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-6a5977299526f480", "name": "Commented-code block (7 lines) in lib/queries/reviews.ts:158", "shortDescription": {"text": "Commented-code block (7 lines) in lib/queries/reviews.ts:158"}, "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-cbdcebb62a043c55", "name": "Commented-code block (6 lines) in lib/queries/cities.ts:84", "shortDescription": {"text": "Commented-code block (6 lines) in lib/queries/cities.ts:84"}, "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-803dfa165acc7d1f", "name": "Commented-code block (5 lines) in lib/queries/admin-pros.ts:73", "shortDescription": {"text": "Commented-code block (5 lines) in lib/queries/admin-pros.ts:73"}, "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-d3b3867f8faae79f", "name": "Commented-code block (5 lines) in lib/queries/home-public.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in lib/queries/home-public.ts:7"}, "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-9a022ccd82209909", "name": "Commented-code block (5 lines) in lib/queries/top-pros.ts:24", "shortDescription": {"text": "Commented-code block (5 lines) in lib/queries/top-pros.ts:24"}, "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-973868400fe848e0", "name": "Commented-code block (5 lines) in lib/seo/seo-sections.ts:631", "shortDescription": {"text": "Commented-code block (5 lines) in lib/seo/seo-sections.ts:631"}, "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-868a44edeec84c0a", "name": "Network/subprocess call without timeout or try/except \u2014 scraping/backfill_sirene_stock.py:84", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scraping/backfill_sirene_stock.py:84"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-449d2209b384790f", "name": "Commented-code block (7 lines) in scraping/load_cities_regions.py:24", "shortDescription": {"text": "Commented-code block (7 lines) in scraping/load_cities_regions.py:24"}, "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-65df07ab4020db79", "name": "18 env vars used in code but missing from .env.example", "shortDescription": {"text": "18 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `APIFY_API_KEY`, `APIFY_API_TOKEN`, `BASE`, `BREVO_SENDER_EMAIL`, `BREVO_SENDER_NAME`, `CRON_SECRET`, `FEEDBACK_CHAT_DAILY_CAP`, `GITHUB_TOKEN` + 10 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/22861"}, "properties": {"repository": "workwavefrance-lgtm/Workwave-V2", "repoUrl": "https://github.com/workwavefrance-lgtm/Workwave-V2", "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-b167453a2ee42392", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/perplexity-geo-audit.ts:82"}, "properties": {"repobilityId": "a22372e653ed6303", "scanner": "scanner-primary", "fingerprint": "b167453a2ee42392", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27ab5ac1cb85d1e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_audit-apify-mismatch.ts:80"}, "properties": {"repobilityId": "e93da6e8bf0032e3", "scanner": "scanner-primary", "fingerprint": "27ab5ac1cb85d1e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae33596f803ad896", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/brevo-cold-batch3.ts:211"}, "properties": {"repobilityId": "74ba7e1051440266", "scanner": "scanner-primary", "fingerprint": "ae33596f803ad896", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-940d836e804af2c3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-trial-reminders.ts:61"}, "properties": {"repobilityId": "40461ff5818182f6", "scanner": "scanner-primary", "fingerprint": "940d836e804af2c3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dae1ee1c7ca15ba9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-seo-content.ts:103"}, "properties": {"repobilityId": "fd2e526d7ba3f7bf", "scanner": "scanner-primary", "fingerprint": "dae1ee1c7ca15ba9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-63e830e459db5212", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-claim-funnel.ts:29"}, "properties": {"repobilityId": "9ae139b28252a214", "scanner": "scanner-primary", "fingerprint": "63e830e459db5212", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a425555e2beec83", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-blog-leads-by-dept.ts:349"}, "properties": {"repobilityId": "2006039fe7b7293c", "scanner": "scanner-primary", "fingerprint": "9a425555e2beec83", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5664f5b57e58dec0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-non-btp-categories.ts:75"}, "properties": {"repobilityId": "bc36a133a45c3a77", "scanner": "scanner-primary", "fingerprint": "5664f5b57e58dec0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4296ef2d8364e5f8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-communes-datagouv.ts:73"}, "properties": {"repobilityId": "ac4ffd02493bdb34", "scanner": "scanner-primary", "fingerprint": "4296ef2d8364e5f8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d53ef941a6a1260b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_fix-mismapped-signups.ts:48"}, "properties": {"repobilityId": "b7a99997d35a96c5", "scanner": "scanner-primary", "fingerprint": "d53ef941a6a1260b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-78cbb79ecbd0f8ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recruit-prospects.ts:95"}, "properties": {"repobilityId": "11c216600e9f3fd6", "scanner": "scanner-primary", "fingerprint": "78cbb79ecbd0f8ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-066dcddc6d1d3d7a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_prepare-batches-tonight.ts:28"}, "properties": {"repobilityId": "81995a7778f002a2", "scanner": "scanner-primary", "fingerprint": "066dcddc6d1d3d7a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4acddab3a2dca412", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing.ts:42"}, "properties": {"repobilityId": "ddc5ee06b4e08507", "scanner": "scanner-primary", "fingerprint": "4acddab3a2dca412", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a472d052782b87e3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-department-market.ts:85"}, "properties": {"repobilityId": "5e9b643767e99c28", "scanner": "scanner-primary", "fingerprint": "a472d052782b87e3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c8fded574e4ee19a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-cold-email-campaign.ts:30"}, "properties": {"repobilityId": "9ed953dc3a143765", "scanner": "scanner-primary", "fingerprint": "c8fded574e4ee19a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a1309fe7f0a30416", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_scrape-dp-status.ts:16"}, "properties": {"repobilityId": "b6ac5614af5efd60", "scanner": "scanner-primary", "fingerprint": "a1309fe7f0a30416", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e3c64eefe06a7ca0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-github-tech.ts:263"}, "properties": {"repobilityId": "b5bc3abc67bf602e", "scanner": "scanner-primary", "fingerprint": "e3c64eefe06a7ca0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f9bb2f18916589ba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-ai.ts:112"}, "properties": {"repobilityId": "51cabb410aead980", "scanner": "scanner-primary", "fingerprint": "f9bb2f18916589ba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe4067666e028785", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/brevo-cold-batch4.ts:165"}, "properties": {"repobilityId": "1ed0bec70cbee08e", "scanner": "scanner-primary", "fingerprint": "fe4067666e028785", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cc048a1c8763f776", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-howto-guides.ts:80"}, "properties": {"repobilityId": "5ef3ffd2241e6a9a", "scanner": "scanner-primary", "fingerprint": "cc048a1c8763f776", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-545455e569cfdcf7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-cities-nouvelle-aquitaine.ts:121"}, "properties": {"repobilityId": "d4f613aa65a977cb", "scanner": "scanner-primary", "fingerprint": "545455e569cfdcf7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1576c176eecd49ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-indexnow-en.ts:70"}, "properties": {"repobilityId": "221f6485927db8fd", "scanner": "scanner-primary", "fingerprint": "1576c176eecd49ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-912913b10975fade", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-prospects.ts:70"}, "properties": {"repobilityId": "3c9983763c8c2834", "scanner": "scanner-primary", "fingerprint": "912913b10975fade", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fc709038c5077e0a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-blog-leads-guide.ts:152"}, "properties": {"repobilityId": "29828c6637b496a2", "scanner": "scanner-primary", "fingerprint": "fc709038c5077e0a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-692a7f05924a7b38", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recruit-pros.ts:228"}, "properties": {"repobilityId": "94c53c364302e549", "scanner": "scanner-primary", "fingerprint": "692a7f05924a7b38", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bb15a2e4fcb6ffcd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-google-reviews.ts:96"}, "properties": {"repobilityId": "cfcff1b302c215aa", "scanner": "scanner-primary", "fingerprint": "bb15a2e4fcb6ffcd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-76c64413adc168ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/brevo-launch-na-blast.ts:222"}, "properties": {"repobilityId": "f5a644cb17588349", "scanner": "scanner-primary", "fingerprint": "76c64413adc168ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-651cfd110b7b8021", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-monaco.ts:73"}, "properties": {"repobilityId": "90e82ae1263fac21", "scanner": "scanner-primary", "fingerprint": "651cfd110b7b8021", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0760503b2b548624", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_rgpd-find-tonges.ts:12"}, "properties": {"repobilityId": "0ef00e3167a5d976", "scanner": "scanner-primary", "fingerprint": "0760503b2b548624", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4154cccb8600e62b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_ping-removed-tonges.ts:19"}, "properties": {"repobilityId": "b6f1d9676ceeca82", "scanner": "scanner-primary", "fingerprint": "4154cccb8600e62b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1cbda88359652f3f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-sitemap-perf.ts:69"}, "properties": {"repobilityId": "ed9dd90f0a2329bd", "scanner": "scanner-primary", "fingerprint": "1cbda88359652f3f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-70221f7e88234917", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-guides.ts:46"}, "properties": {"repobilityId": "c144ffea19947d4c", "scanner": "scanner-primary", "fingerprint": "70221f7e88234917", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6870875e1bb3caa8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/safety-check-drop-categories.ts:37"}, "properties": {"repobilityId": "7896fc83cf759858", "scanner": "scanner-primary", "fingerprint": "6870875e1bb3caa8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05992354e4de2c39", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_debug-signin-ai.ts:25"}, "properties": {"repobilityId": "6c6fbf1a31605b74", "scanner": "scanner-primary", "fingerprint": "05992354e4de2c39", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-551bf5dfa56c0bd9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-competitor-offers.ts:90"}, "properties": {"repobilityId": "4fe5503720fba229", "scanner": "scanner-primary", "fingerprint": "551bf5dfa56c0bd9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-77d330ed290e7209", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-price-guides.ts:77"}, "properties": {"repobilityId": "daeb442285f04d51", "scanner": "scanner-primary", "fingerprint": "77d330ed290e7209", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a2c374cee23b356f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_harvest-hagetmau-vitres.ts:50"}, "properties": {"repobilityId": "1e5f2fec0965b0e2", "scanner": "scanner-primary", "fingerprint": "a2c374cee23b356f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e04a5de817dcaa7d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-ai-freelances.ts:82"}, "properties": {"repobilityId": "46d15f99918f76ad", "scanner": "scanner-primary", "fingerprint": "e04a5de817dcaa7d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d8f94df20856fe1a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-regex-reclassification.ts:88"}, "properties": {"repobilityId": "200e70bf9e97a61f", "scanner": "scanner-primary", "fingerprint": "d8f94df20856fe1a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e4d8895b73430849", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/brevo-cold-batch6.ts:235"}, "properties": {"repobilityId": "14e94f7480e8f3b0", "scanner": "scanner-primary", "fingerprint": "e4d8895b73430849", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-29fdd9d7381ca870", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-en.ts:67"}, "properties": {"repobilityId": "af8141cea50b7835", "scanner": "scanner-primary", "fingerprint": "29fdd9d7381ca870", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-15986862b79d4806", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/brevo-fix-templates.ts:160"}, "properties": {"repobilityId": "5aff6baeaad2dd67", "scanner": "scanner-primary", "fingerprint": "15986862b79d4806", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b4bdb1b207b4dc1f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-monaco-btp-zone.ts:32"}, "properties": {"repobilityId": "7a2544e9fa065223", "scanner": "scanner-primary", "fingerprint": "b4bdb1b207b4dc1f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-73560aebb67bfda3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-btp-price-guides.ts:85"}, "properties": {"repobilityId": "0bbfe06adf91d1f6", "scanner": "scanner-primary", "fingerprint": "73560aebb67bfda3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f96bd82e3c32433", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/btp-build-backlog.ts:234"}, "properties": {"repobilityId": "29767f4292facef1", "scanner": "scanner-primary", "fingerprint": "2f96bd82e3c32433", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-040a01fb6e9389a7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_rgpd-miroiterie-melusine.ts:30"}, "properties": {"repobilityId": "5a6df738f35f5a2f", "scanner": "scanner-primary", "fingerprint": "040a01fb6e9389a7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3e3ab5a5eeb29da0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-founded-year.ts:61"}, "properties": {"repobilityId": "32bbd1f7ad946a7e", "scanner": "scanner-primary", "fingerprint": "3e3ab5a5eeb29da0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-65795d14dbaf7450", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-intl.ts:78"}, "properties": {"repobilityId": "9c4c6a58522c87f8", "scanner": "scanner-primary", "fingerprint": "65795d14dbaf7450", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-503a20cef1a091c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/brevo-recovery-batch1.ts:178"}, "properties": {"repobilityId": "2a8af3e70777ebf3", "scanner": "scanner-primary", "fingerprint": "503a20cef1a091c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0599e859cf608ce7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-sirene-v3.ts:96"}, "properties": {"repobilityId": "33ad851359cc5e9e", "scanner": "scanner-primary", "fingerprint": "0599e859cf608ce7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a0a764b60fdc6a52", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/notify-past-claims.ts:48"}, "properties": {"repobilityId": "5f1f4e99140ca318", "scanner": "scanner-primary", "fingerprint": "a0a764b60fdc6a52", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52610be25e97f6e8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_retry-all-pending.ts:25"}, "properties": {"repobilityId": "b75f0a404d325827", "scanner": "scanner-primary", "fingerprint": "52610be25e97f6e8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5135d613c3cc56bd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup-stripe-ai-product.ts:52"}, "properties": {"repobilityId": "1d9a488da1cfcf48", "scanner": "scanner-primary", "fingerprint": "5135d613c3cc56bd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d0fc3fa77700abbf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-marseille-arrondissements.ts:57"}, "properties": {"repobilityId": "095221d2ff53b154", "scanner": "scanner-primary", "fingerprint": "d0fc3fa77700abbf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bec07ef086070a81", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-sourced-prices.ts:95"}, "properties": {"repobilityId": "b99a613edea351d5", "scanner": "scanner-primary", "fingerprint": "bec07ef086070a81", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b49425d13c494748", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pause-brevo-stop-all.ts:21"}, "properties": {"repobilityId": "95ecd9340dfb34ef", "scanner": "scanner-primary", "fingerprint": "b49425d13c494748", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-58070a1aa8fe34db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-mapr-blog.ts:54"}, "properties": {"repobilityId": "63d9284ecc0e71d5", "scanner": "scanner-primary", "fingerprint": "58070a1aa8fe34db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bd119f7449c669eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-closed-businesses.ts:190"}, "properties": {"repobilityId": "a77dbb9ea9f416ba", "scanner": "scanner-primary", "fingerprint": "bd119f7449c669eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b7f9c21dda5c94f3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-sourced-market-context.ts:67"}, "properties": {"repobilityId": "54d19de29567952a", "scanner": "scanner-primary", "fingerprint": "b7f9c21dda5c94f3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4153acbd744e7538", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-urgence-content.ts:51"}, "properties": {"repobilityId": "a3e8d49b2795b728", "scanner": "scanner-primary", "fingerprint": "4153acbd744e7538", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ecbcfcae61eb3e9b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-ai-country-rates.ts:111"}, "properties": {"repobilityId": "d7f91e69fa0cc530", "scanner": "scanner-primary", "fingerprint": "ecbcfcae61eb3e9b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d3a6360bd343956a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-ai-skill-keywords.ts:119"}, "properties": {"repobilityId": "d64f6cdb51a34f15", "scanner": "scanner-primary", "fingerprint": "d3a6360bd343956a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee19838771299e3e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-acquisition.ts:82"}, "properties": {"repobilityId": "cd549a47786f692d", "scanner": "scanner-primary", "fingerprint": "ee19838771299e3e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-80de38849c96e4e5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_check-cat-mapping.ts:18"}, "properties": {"repobilityId": "60b3e0e69fd79dbe", "scanner": "scanner-primary", "fingerprint": "80de38849c96e4e5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f0aa963cf922b2d5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-monaco-market.ts:75"}, "properties": {"repobilityId": "b27227a4e45ebb0d", "scanner": "scanner-primary", "fingerprint": "f0aa963cf922b2d5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0646cc33b557de00", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_reclass-verticaux-apply.ts:45"}, "properties": {"repobilityId": "bbf171234b3c5c00", "scanner": "scanner-primary", "fingerprint": "0646cc33b557de00", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cea8de5228394a81", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-digital-nomad-queries.ts:122"}, "properties": {"repobilityId": "63f87a4ffe88608f", "scanner": "scanner-primary", "fingerprint": "cea8de5228394a81", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8cfdf023f4dd64f7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/match-rge-pros.ts:110"}, "properties": {"repobilityId": "a63128be313c5621", "scanner": "scanner-primary", "fingerprint": "8cfdf023f4dd64f7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ec55a66a6024ce1f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-btp-price-guides-bulk.ts:158"}, "properties": {"repobilityId": "b00210fcd1510d2e", "scanner": "scanner-primary", "fingerprint": "ec55a66a6024ce1f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40bcb809e8e5248e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-sirene-nontech.ts:143"}, "properties": {"repobilityId": "f06222407e360481", "scanner": "scanner-primary", "fingerprint": "40bcb809e8e5248e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c52a15bfe3da4922", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-us.ts:67"}, "properties": {"repobilityId": "9404c733d92d608a", "scanner": "scanner-primary", "fingerprint": "c52a15bfe3da4922", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d922b9177f105aff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_rgpd-durand-carrelage.ts:37"}, "properties": {"repobilityId": "ecdad1d86d5a58ff", "scanner": "scanner-primary", "fingerprint": "d922b9177f105aff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b7a2140653b472f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-blog-queue.ts:67"}, "properties": {"repobilityId": "faefe58447ab7b41", "scanner": "scanner-primary", "fingerprint": "3b7a2140653b472f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-33ce682c72b2e994", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/brevo-cold-batch5.ts:165"}, "properties": {"repobilityId": "854ff33566bf6c12", "scanner": "scanner-primary", "fingerprint": "33ce682c72b2e994", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2cf76ae3ebda131f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-noindex-robots.ts:171"}, "properties": {"repobilityId": "e01e375abdd5c040", "scanner": "scanner-primary", "fingerprint": "2cf76ae3ebda131f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de1eb903d13306ee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-listings.ts:61"}, "properties": {"repobilityId": "ddb42471bea9105d", "scanner": "scanner-primary", "fingerprint": "de1eb903d13306ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9569a0cb92483541", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-dpe-blog-priority.ts:112"}, "properties": {"repobilityId": "0c989d2c6dd488e8", "scanner": "scanner-primary", "fingerprint": "9569a0cb92483541", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-acaccf0603585dbc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_egress-audit-select.ts:40"}, "properties": {"repobilityId": "d4482df74f25a42b", "scanner": "scanner-primary", "fingerprint": "acaccf0603585dbc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-13fbbe517a6d6d9c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-ai-blog-articles.ts:407"}, "properties": {"repobilityId": "24354b40b239388c", "scanner": "scanner-primary", "fingerprint": "13fbbe517a6d6d9c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b288b305260d0b93", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-multivertical.ts:112"}, "properties": {"repobilityId": "15b3a3c33b33da52", "scanner": "scanner-primary", "fingerprint": "b288b305260d0b93", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-050515cf9e177e48", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_rgpd-yvonne-tonges.ts:37"}, "properties": {"repobilityId": "36a7e45e39268d09", "scanner": "scanner-primary", "fingerprint": "050515cf9e177e48", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2fb2a2814a84165b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-pillar-content.ts:77"}, "properties": {"repobilityId": "e9a105ed72e6d671", "scanner": "scanner-primary", "fingerprint": "2fb2a2814a84165b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ee97d9ef1321a02", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-faq-from-seo.ts:66"}, "properties": {"repobilityId": "f7f76e18a802abd2", "scanner": "scanner-primary", "fingerprint": "6ee97d9ef1321a02", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4d9929678d62d7cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_test-customer-search.ts:17"}, "properties": {"repobilityId": "a90655f529300c4d", "scanner": "scanner-primary", "fingerprint": "4d9929678d62d7cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c76e5bffeedff6f0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-fresh.ts:53"}, "properties": {"repobilityId": "ee48e1aade74a019", "scanner": "scanner-primary", "fingerprint": "c76e5bffeedff6f0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7d6a1399a8aa65c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-sirene-tech.ts:337"}, "properties": {"repobilityId": "05dd825b7f85a87c", "scanner": "scanner-primary", "fingerprint": "7d6a1399a8aa65c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e9a1ce7b2090125", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_sms-hagetmau-p70.ts:31"}, "properties": {"repobilityId": "8d2ad4602ce9b268", "scanner": "scanner-primary", "fingerprint": "8e9a1ce7b2090125", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fdff78f4ac0ef676", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ping-google-indexing-prix.ts:60"}, "properties": {"repobilityId": "4586cb33190590f6", "scanner": "scanner-primary", "fingerprint": "fdff78f4ac0ef676", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a75c9f90bd28959", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_delete-go-renov.ts:15"}, "properties": {"repobilityId": "6f2fb681a3722735", "scanner": "scanner-primary", "fingerprint": "6a75c9f90bd28959", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-065e53a6831a9ed2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-sourced-intl-market.ts:76"}, "properties": {"repobilityId": "ae1461dc3151c709", "scanner": "scanner-primary", "fingerprint": "065e53a6831a9ed2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2abf4b086915e944", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recruit-list-sms.ts:70"}, "properties": {"repobilityId": "caaf2e9f2911f36b", "scanner": "scanner-primary", "fingerprint": "2abf4b086915e944", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2924e471e152992d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-ai-seo-content.ts:158"}, "properties": {"repobilityId": "f83f82e6520bc3b4", "scanner": "scanner-primary", "fingerprint": "2924e471e152992d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9298bb2cf3eee7cd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reclass-pros-by-regex.ts:72"}, "properties": {"repobilityId": "3eae3fdc580ac6b5", "scanner": "scanner-primary", "fingerprint": "9298bb2cf3eee7cd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-46a2bd567c984bd3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-noindex-volume.ts:27"}, "properties": {"repobilityId": "e8951ded72b431d7", "scanner": "scanner-primary", "fingerprint": "46a2bd567c984bd3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1c7e600fa7a6c569", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/update-response-rates.ts:42"}, "properties": {"repobilityId": "f7b5b50c77f3fb5f", "scanner": "scanner-primary", "fingerprint": "1c7e600fa7a6c569", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aaed9d3b907e4cc2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-partnerships.ts:111"}, "properties": {"repobilityId": "d647da0adacf8bfd", "scanner": "scanner-primary", "fingerprint": "aaed9d3b907e4cc2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1c02c899c568fc5d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-seo-na-departments.ts:98"}, "properties": {"repobilityId": "a4dda9a93d6956a2", "scanner": "scanner-primary", "fingerprint": "1c02c899c568fc5d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6e1e4756e827e873", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-drop-categories.ts:54"}, "properties": {"repobilityId": "cff9bdcafe12dbc8", "scanner": "scanner-primary", "fingerprint": "6e1e4756e827e873", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3d09e52bf71e7ecf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-avatar-col.ts:18"}, "properties": {"repobilityId": "eb1368d3c231bdef", "scanner": "scanner-primary", "fingerprint": "3d09e52bf71e7ecf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-595b2d5bf3b36539", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-tech-debug.ts:17"}, "properties": {"repobilityId": "16b6f2fd8e405cf8", "scanner": "scanner-primary", "fingerprint": "595b2d5bf3b36539", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-af262a682695bcf9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_retry-activate.ts:37"}, "properties": {"repobilityId": "345efaa72b193c29", "scanner": "scanner-primary", "fingerprint": "af262a682695bcf9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8d8126d4404f8b44", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_generate-ai-descriptions.ts:138"}, "properties": {"repobilityId": "3300f1f7879e4223", "scanner": "scanner-primary", "fingerprint": "8d8126d4404f8b44", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c78e0f95f28f875c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-existing-ai-product.ts:19"}, "properties": {"repobilityId": "d71ca6dec03e7a7a", "scanner": "scanner-primary", "fingerprint": "c78e0f95f28f875c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ab2d7b231e71adfa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_test-review-flow.ts:25"}, "properties": {"repobilityId": "2e6e7ef8ec9281e4", "scanner": "scanner-primary", "fingerprint": "ab2d7b231e71adfa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-59b55ca4247c6013", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-willy-exact.ts:18"}, "properties": {"repobilityId": "31aa1e877e9fcef3", "scanner": "scanner-primary", "fingerprint": "59b55ca4247c6013", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b34289b0424b24f6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_mass-cold-may28.ts:100"}, "properties": {"repobilityId": "1a2265c197ac9136", "scanner": "scanner-primary", "fingerprint": "b34289b0424b24f6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f2bf54e38952d582", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_seed-nontech-skills.ts:153"}, "properties": {"repobilityId": "29dfbad37ae2a1fc", "scanner": "scanner-primary", "fingerprint": "f2bf54e38952d582", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c2d66e594acca944", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_btp-blog-migration-map.ts:46"}, "properties": {"repobilityId": "b6d5f7467424e454", "scanner": "scanner-primary", "fingerprint": "c2d66e594acca944", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5148dc0462955d3e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_test-project-notif-dept.ts:20"}, "properties": {"repobilityId": "a5f0b9a6c3286339", "scanner": "scanner-primary", "fingerprint": "5148dc0462955d3e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52cc2ef7a4c12e8c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-all-recent.ts:10"}, "properties": {"repobilityId": "7888ee2352d2ab16", "scanner": "scanner-primary", "fingerprint": "52cc2ef7a4c12e8c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-192ce221c4d4a081", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_list-nontech-macros.ts:27"}, "properties": {"repobilityId": "039ba6d6c9d5aa6c", "scanner": "scanner-primary", "fingerprint": "192ce221c4d4a081", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-90799245623f8849", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_test-prices.ts:16"}, "properties": {"repobilityId": "253f4778b3913943", "scanner": "scanner-primary", "fingerprint": "90799245623f8849", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-78e34d22f90da20f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-projects-vertical.ts:19"}, "properties": {"repobilityId": "7f288b799f35153e", "scanner": "scanner-primary", "fingerprint": "78e34d22f90da20f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e11749b0cf88f462", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_verify-prospects.ts:10"}, "properties": {"repobilityId": "e5c85b63b8ee79a6", "scanner": "scanner-primary", "fingerprint": "e11749b0cf88f462", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c4d5ddccb46871ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-ines.ts:8"}, "properties": {"repobilityId": "fb135e722416af47", "scanner": "scanner-primary", "fingerprint": "c4d5ddccb46871ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-86921036aaa5c914", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-atsaf-pro.ts:18"}, "properties": {"repobilityId": "7c74d0c2d47da4be", "scanner": "scanner-primary", "fingerprint": "86921036aaa5c914", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c91596590e72967", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-projects-columns.ts:15"}, "properties": {"repobilityId": "cd055dbdf010f51c", "scanner": "scanner-primary", "fingerprint": "2c91596590e72967", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0b9fcb97b617bf75", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-willy-fiche.ts:18"}, "properties": {"repobilityId": "8769e6de5102c694", "scanner": "scanner-primary", "fingerprint": "0b9fcb97b617bf75", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2a19c2ac52fa030", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_create-btp-lead-unlock-live.ts:30"}, "properties": {"repobilityId": "f1e31d0025d1e683", "scanner": "scanner-primary", "fingerprint": "b2a19c2ac52fa030", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-85cd7a876b4d23e1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-tech-projects-filter.ts:19"}, "properties": {"repobilityId": "1d6b0dec5ffb00d6", "scanner": "scanner-primary", "fingerprint": "85cd7a876b4d23e1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9544f7e525a3d26d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-skills-type.ts:19"}, "properties": {"repobilityId": "017edcfaf0169657", "scanner": "scanner-primary", "fingerprint": "9544f7e525a3d26d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bcd81bf8b39c648f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_test-claude-model.ts:18"}, "properties": {"repobilityId": "4bc6420ffa85c153", "scanner": "scanner-primary", "fingerprint": "bcd81bf8b39c648f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3880fcc123970a1f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_rgpd-laurendeau.ts:40"}, "properties": {"repobilityId": "a3dc7bf485865a62", "scanner": "scanner-primary", "fingerprint": "3880fcc123970a1f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a607cbd4b108cf9c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_create-ai-product-live.ts:26"}, "properties": {"repobilityId": "20cef45feb4cc6bf", "scanner": "scanner-primary", "fingerprint": "a607cbd4b108cf9c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e515f525ce768d4b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_migrate-btp-trialing-to-free.ts:40"}, "properties": {"repobilityId": "364021753d7480d1", "scanner": "scanner-primary", "fingerprint": "e515f525ce768d4b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a3768a64443a05f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_add-btp-metiers.ts:20"}, "properties": {"repobilityId": "dfc086c319fde94f", "scanner": "scanner-primary", "fingerprint": "7a3768a64443a05f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-88999fbe1485fef6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_wipe-all-projects.ts:34"}, "properties": {"repobilityId": "0ef886f9b1aa152f", "scanner": "scanner-primary", "fingerprint": "88999fbe1485fef6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bae07aa45a831793", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-fresh-projects.ts:9"}, "properties": {"repobilityId": "b6c56c4302eb0329", "scanner": "scanner-primary", "fingerprint": "bae07aa45a831793", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f184592eeb80611d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-all-projects-detailed.ts:19"}, "properties": {"repobilityId": "17e0e0f69af13496", "scanner": "scanner-primary", "fingerprint": "f184592eeb80611d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-737469c1a6e4d535", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_verify-ai-prices-exist.ts:12"}, "properties": {"repobilityId": "83b0f0d4ef095b2e", "scanner": "scanner-primary", "fingerprint": "737469c1a6e4d535", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9b73da42babc1cf3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-photo-cols.ts:18"}, "properties": {"repobilityId": "0fde96772014c342", "scanner": "scanner-primary", "fingerprint": "9b73da42babc1cf3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ffbd40ae5deeff2b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-photos-schema.ts:18"}, "properties": {"repobilityId": "416dc1cab2a1873b", "scanner": "scanner-primary", "fingerprint": "ffbd40ae5deeff2b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a84285b17927300", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_warm-sitemap-cache.ts:53"}, "properties": {"repobilityId": "fb1949662e1ad4b3", "scanner": "scanner-primary", "fingerprint": "9a84285b17927300", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a833951781ad5f66", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_audit-sitemap-http-status.ts:112"}, "properties": {"repobilityId": "84a3f9360aa100b8", "scanner": "scanner-primary", "fingerprint": "a833951781ad5f66", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae5da1f28ab7f8a0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_crawl-websites-v2.ts:285"}, "properties": {"repobilityId": "c42525ef59111a4b", "scanner": "scanner-primary", "fingerprint": "ae5da1f28ab7f8a0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9fcb694a5f8e827f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_test-btp-unlock-checkout.ts:10"}, "properties": {"repobilityId": "4bb4fa0a9ae97441", "scanner": "scanner-primary", "fingerprint": "9fcb694a5f8e827f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ec2e5395c011ce07", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_test-stripe-connection.ts:8"}, "properties": {"repobilityId": "edbaf896fa66ce29", "scanner": "scanner-primary", "fingerprint": "ec2e5395c011ce07", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f377b1b29fc584a5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-dashboard-exact-query.ts:22"}, "properties": {"repobilityId": "a6405ef46bd97e01", "scanner": "scanner-primary", "fingerprint": "f377b1b29fc584a5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e677a22947a2849f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-existing-signups.ts:18"}, "properties": {"repobilityId": "f0ac38dbe9bcc19f", "scanner": "scanner-primary", "fingerprint": "e677a22947a2849f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7473b5ff4dbb93cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-stripe-portal.ts:13"}, "properties": {"repobilityId": "16591781f8274f06", "scanner": "scanner-primary", "fingerprint": "7473b5ff4dbb93cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-51190a2da83eda58", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_retry-ines-activation.ts:7"}, "properties": {"repobilityId": "ff44f49a22a4c68c", "scanner": "scanner-primary", "fingerprint": "51190a2da83eda58", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f67c890c71a4687", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_audit-empty-cities-redirects.ts:60"}, "properties": {"repobilityId": "ebe25ebc6968f81b", "scanner": "scanner-primary", "fingerprint": "2f67c890c71a4687", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f8163da0ad082a22", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-recent-projects.ts:21"}, "properties": {"repobilityId": "bad538e89e01ba1a", "scanner": "scanner-primary", "fingerprint": "f8163da0ad082a22", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bedcb75c254c3f33", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_verify-delete-schema.ts:15"}, "properties": {"repobilityId": "b0e014313c97e9e2", "scanner": "scanner-primary", "fingerprint": "bedcb75c254c3f33", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-86f7051495f4d323", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-stripe-webhook.ts:12"}, "properties": {"repobilityId": "877fbfcc1caf17fc", "scanner": "scanner-primary", "fingerprint": "86f7051495f4d323", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-43e715e3bd6055ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-btp-subs.ts:19"}, "properties": {"repobilityId": "a29c3dd41b67f66a", "scanner": "scanner-primary", "fingerprint": "43e715e3bd6055ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-59f78e3679ca6a60", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-nontech-state.ts:18"}, "properties": {"repobilityId": "ff1744fce4d92c01", "scanner": "scanner-primary", "fingerprint": "59f78e3679ca6a60", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-912cc468071249ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_seed-tech-skills.ts:76"}, "properties": {"repobilityId": "fc202248ac747c2e", "scanner": "scanner-primary", "fingerprint": "912cc468071249ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe0086e60caef567", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_reset-signin-rate-limit.ts:39"}, "properties": {"repobilityId": "13bdf543e95ac067", "scanner": "scanner-primary", "fingerprint": "fe0086e60caef567", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17194408025bf7b9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_create-btp-unlock-product-live.ts:24"}, "properties": {"repobilityId": "9ed3f227c6a024d2", "scanner": "scanner-primary", "fingerprint": "17194408025bf7b9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-098c312da86e4874", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_rgpd-celine-sredic.ts:43"}, "properties": {"repobilityId": "66afd4c9e8f3f746", "scanner": "scanner-primary", "fingerprint": "098c312da86e4874", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8c8b761eac121bd3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_retry-all-pending-ai-signups.ts:15"}, "properties": {"repobilityId": "6fdc60e032646390", "scanner": "scanner-primary", "fingerprint": "8c8b761eac121bd3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ac69b23e5724091c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_preview-partnership-templates.ts:106"}, "properties": {"repobilityId": "980b40061d69715c", "scanner": "scanner-primary", "fingerprint": "ac69b23e5724091c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7d394e89e2274a2f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-stripe-mode.ts:14"}, "properties": {"repobilityId": "2421890dd181e765", "scanner": "scanner-primary", "fingerprint": "7d394e89e2274a2f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de3eb78486ea0ce0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_count-sitemap-urls.ts:16"}, "properties": {"repobilityId": "637b8a3ab80e4297", "scanner": "scanner-primary", "fingerprint": "de3eb78486ea0ce0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8f1e49f44f3af5a2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_wipe-events-then-projects.ts:10"}, "properties": {"repobilityId": "44384f5623863de9", "scanner": "scanner-primary", "fingerprint": "8f1e49f44f3af5a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-780e765a70d595eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_archive/_check-projects-direct.ts:19"}, "properties": {"repobilityId": "67f8d7d6655a0555", "scanner": "scanner-primary", "fingerprint": "780e765a70d595eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7bd2fc3dbfe8acb2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/listing/CityFactsBlock.tsx:116"}, "properties": {"repobilityId": "c6710b4ddbfdfe85", "scanner": "scanner-primary", "fingerprint": "7bd2fc3dbfe8acb2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cb7cbe9a33565707", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/pro/dashboard/DashboardHome.tsx:157"}, "properties": {"repobilityId": "150daa44e377b773", "scanner": "scanner-primary", "fingerprint": "cb7cbe9a33565707", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9f39f94715697b6f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/pro/dashboard/DashboardHeader.tsx:61"}, "properties": {"repobilityId": "44105a0b33a7b714", "scanner": "scanner-primary", "fingerprint": "9f39f94715697b6f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-39104994b2dccf98", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/pro/dashboard/Sidebar.tsx:112"}, "properties": {"repobilityId": "beed16d036b082f2", "scanner": "scanner-primary", "fingerprint": "39104994b2dccf98", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-42a58faf2f96a200", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/pro/dashboard/LeadCard.tsx:79"}, "properties": {"repobilityId": "93d1a46a79f79637", "scanner": "scanner-primary", "fingerprint": "42a58faf2f96a200", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-75be71a48ea8f06f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/ai/AiStickyCta.tsx:118"}, "properties": {"repobilityId": "d642351a2abc47e3", "scanner": "scanner-primary", "fingerprint": "75be71a48ea8f06f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f965c5649e333f8d", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/ai/AiFaqSection.tsx:219"}, "properties": {"repobilityId": "ca53ba13769471e0", "scanner": "scanner-primary", "fingerprint": "f965c5649e333f8d", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-bfa73830d08fd519", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/analytics/UETPixel.tsx:107"}, "properties": {"repobilityId": "10a4e4ab4921757a", "scanner": "scanner-primary", "fingerprint": "bfa73830d08fd519", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-8bf04c134d3226dc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/search/SearchForm.tsx:287"}, "properties": {"repobilityId": "7a5b0bafc9171dbc", "scanner": "scanner-primary", "fingerprint": "8bf04c134d3226dc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-61873bc57589acbe", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/admin/layout/AdminHeader.tsx:113"}, "properties": {"repobilityId": "a36dc0853f9216a6", "scanner": "scanner-primary", "fingerprint": "61873bc57589acbe", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a312b4c46e2e6a5d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/admin/layout/AdminSidebar.tsx:183"}, "properties": {"repobilityId": "4afad76fb475fb56", "scanner": "scanner-primary", "fingerprint": "a312b4c46e2e6a5d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c97326a868053614", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/social-proof/RecentClaimsToast.tsx:181"}, "properties": {"repobilityId": "ae74ebbc984fbc0e", "scanner": "scanner-primary", "fingerprint": "c97326a868053614", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-768a1948c95cf9d7", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/seo/SeoContent.tsx:200"}, "properties": {"repobilityId": "2d417a155bd3fdc1", "scanner": "scanner-primary", "fingerprint": "768a1948c95cf9d7", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-c6614afb4ed7950b", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/seo/JsonLd.tsx:5"}, "properties": {"repobilityId": "5a214a5e3e2f96be", "scanner": "scanner-primary", "fingerprint": "c6614afb4ed7950b", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-0ab32dc6605f90df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/cron/review-requests/route.ts:195"}, "properties": {"repobilityId": "8f7a22908309e69a", "scanner": "scanner-primary", "fingerprint": "0ab32dc6605f90df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4a0c94b9f845e3ef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/stripe/webhook/route.ts:96"}, "properties": {"repobilityId": "20f7efce7c11c4b4", "scanner": "scanner-primary", "fingerprint": "4a0c94b9f845e3ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-60d6a9b8602a3b9c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/page.tsx:610"}, "properties": {"repobilityId": "0cf6fec2b2782913", "scanner": "scanner-primary", "fingerprint": "60d6a9b8602a3b9c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4c1b4d5a79d1477d", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/page.tsx:475"}, "properties": {"repobilityId": "9e87c1c7d69e0879", "scanner": "scanner-primary", "fingerprint": "4c1b4d5a79d1477d", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6e910a1a1f191e40", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/freelance/[slug]/page.tsx:705"}, "properties": {"repobilityId": "a7982dffa4320bcc", "scanner": "scanner-primary", "fingerprint": "6e910a1a1f191e40", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4105155cf3853cdb", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/freelance/[slug]/page.tsx:154"}, "properties": {"repobilityId": "5c3b710142837e87", "scanner": "scanner-primary", "fingerprint": "4105155cf3853cdb", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-df3a681ee3fcef73", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/[skill]/page.tsx:493"}, "properties": {"repobilityId": "63d1ee2880e9a463", "scanner": "scanner-primary", "fingerprint": "df3a681ee3fcef73", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-aacbb9ba05889949", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/[skill]/page.tsx:186"}, "properties": {"repobilityId": "61817b008651f039", "scanner": "scanner-primary", "fingerprint": "aacbb9ba05889949", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-033d37535f640e14", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/[skill]/dept/[dept]/page.tsx:179"}, "properties": {"repobilityId": "c625ddcba087617c", "scanner": "scanner-primary", "fingerprint": "033d37535f640e14", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-c0686a700bfcef39", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/[skill]/[ville]/page.tsx:301"}, "properties": {"repobilityId": "a145f4d438eacd16", "scanner": "scanner-primary", "fingerprint": "c0686a700bfcef39", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f120a9376b721a01", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/[skill]/[ville]/page.tsx:238"}, "properties": {"repobilityId": "b055d0d37ac5f8d3", "scanner": "scanner-primary", "fingerprint": "f120a9376b721a01", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b086ca27e3ff80b2", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/barometre-tjm/page.tsx:101"}, "properties": {"repobilityId": "cba43fa96a937533", "scanner": "scanner-primary", "fingerprint": "b086ca27e3ff80b2", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-014a32ca42ec4e74", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/barometre-tjm/[skill]/page.tsx:105"}, "properties": {"repobilityId": "416ff18a9cb39cfc", "scanner": "scanner-primary", "fingerprint": "014a32ca42ec4e74", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-17c15d19c489be57", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/(ai)/ai/inscription/actions.ts:200"}, "properties": {"repobilityId": "67aeead0a67f3444", "scanner": "scanner-primary", "fingerprint": "17c15d19c489be57", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f73d46d21a5e6763", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/dashboard/layout.tsx:108"}, "properties": {"repobilityId": "84ac02ec57a95b13", "scanner": "scanner-primary", "fingerprint": "f73d46d21a5e6763", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0c99046c70ebb5c8", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/monde/page.tsx:119"}, "properties": {"repobilityId": "43182bb70f28c458", "scanner": "scanner-primary", "fingerprint": "0c99046c70ebb5c8", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-84c0a915df67f2bb", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/monde/[skill]/page.tsx:181"}, "properties": {"repobilityId": "d7d4bae2aae6e82d", "scanner": "scanner-primary", "fingerprint": "84c0a915df67f2bb", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-5f6e05d7a72c071d", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/monde/[skill]/[ville]/page.tsx:241"}, "properties": {"repobilityId": "9c34216727bfeb6e", "scanner": "scanner-primary", "fingerprint": "5f6e05d7a72c071d", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-55575f468e77d706", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/pour-les-freelances/page.tsx:196"}, "properties": {"repobilityId": "06cb22399ea976a1", "scanner": "scanner-primary", "fingerprint": "55575f468e77d706", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-24beba913a211ccd", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/pour-les-freelances/page.tsx:135"}, "properties": {"repobilityId": "ea29cc8e8efd4df8", "scanner": "scanner-primary", "fingerprint": "24beba913a211ccd", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-4370021c2bdc3f07", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/(ai)/ai/freelances/page.tsx:271"}, "properties": {"repobilityId": "e254ec9427c96be0", "scanner": "scanner-primary", "fingerprint": "4370021c2bdc3f07", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f9af8b85eab8e31d", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/freelances/page.tsx:117"}, "properties": {"repobilityId": "70e6d56fc7bc0c08", "scanner": "scanner-primary", "fingerprint": "f9af8b85eab8e31d", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-aa22aa9d965ddc07", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai)/ai/tarifs/page.tsx:179"}, "properties": {"repobilityId": "9045effb8cda3cad", "scanner": "scanner-primary", "fingerprint": "aa22aa9d965ddc07", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-71e47d3cd86da8f2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/(ai)/ai/deposer/actions.ts:237"}, "properties": {"repobilityId": "81dc9decfc400eaf", "scanner": "scanner-primary", "fingerprint": "71e47d3cd86da8f2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c5822c912dafcc43", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/page.tsx:447"}, "properties": {"repobilityId": "a6e865a74c2d34d7", "scanner": "scanner-primary", "fingerprint": "c5822c912dafcc43", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-30fd0a00dc964071", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/[skill]/page.tsx:261"}, "properties": {"repobilityId": "ec7c62b1d2fcf1eb", "scanner": "scanner-primary", "fingerprint": "30fd0a00dc964071", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-4e55385a827ab105", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/[skill]/state/[state]/page.tsx:263"}, "properties": {"repobilityId": "af3aace6102f86bf", "scanner": "scanner-primary", "fingerprint": "4e55385a827ab105", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-2dcc01e272f8c9aa", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/[skill]/[city]/page.tsx:526"}, "properties": {"repobilityId": "16e6db8252558000", "scanner": "scanner-primary", "fingerprint": "2dcc01e272f8c9aa", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-1523a8bc24921eef", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/[skill]/country/[country]/page.tsx:352"}, "properties": {"repobilityId": "fe0888e8d1a139f4", "scanner": "scanner-primary", "fingerprint": "1523a8bc24921eef", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-d3cb1a5c7e678d83", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/freelance-visa/page.tsx:107"}, "properties": {"repobilityId": "437801b1c7029fab", "scanner": "scanner-primary", "fingerprint": "d3cb1a5c7e678d83", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-f0364fb61dd13fc6", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/freelance-visa/[country]/page.tsx:213"}, "properties": {"repobilityId": "cc6a827eb028b6b2", "scanner": "scanner-primary", "fingerprint": "f0364fb61dd13fc6", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-886ca3583d4a08bb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/(ai-en)/en/ai/dashboard/layout.tsx:117"}, "properties": {"repobilityId": "efb44abb5b51c658", "scanner": "scanner-primary", "fingerprint": "886ca3583d4a08bb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b25fe723b456a293", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/continent/[continent]/page.tsx:247"}, "properties": {"repobilityId": "77add7d573986561", "scanner": "scanner-primary", "fingerprint": "b25fe723b456a293", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-93071690360f8716", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/freelance-usa/page.tsx:104"}, "properties": {"repobilityId": "232d2c14dedf119f", "scanner": "scanner-primary", "fingerprint": "93071690360f8716", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-e98e7e6d50d9c517", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/freelance-usa/[topic]/page.tsx:207"}, "properties": {"repobilityId": "52f070d0b2d6363c", "scanner": "scanner-primary", "fingerprint": "e98e7e6d50d9c517", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-fc90652a2e33361e", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(ai-en)/en/ai/country/[country]/page.tsx:286"}, "properties": {"repobilityId": "f4b9dcb42dc7a562", "scanner": "scanner-primary", "fingerprint": "fc90652a2e33361e", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-30df7aeee0a46205", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/admin/(dashboard)/OverviewClient.tsx:199"}, "properties": {"repobilityId": "aba34a55054d0309", "scanner": "scanner-primary", "fingerprint": "30df7aeee0a46205", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8c38a762e46981bf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/admin/(dashboard)/pros/[id]/ProDetailClient.tsx:383"}, "properties": {"repobilityId": "36300c324fa3c55e", "scanner": "scanner-primary", "fingerprint": "8c38a762e46981bf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c5c8ec05f0ba9ed1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/admin/(dashboard)/projects/ProjectsTableClient.tsx:121"}, "properties": {"repobilityId": "833428d9cd9b5f74", "scanner": "scanner-primary", "fingerprint": "c5c8ec05f0ba9ed1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9fa2e6f2b15ec18b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/admin/(dashboard)/partnerships/PartnershipsClient.tsx:184"}, "properties": {"repobilityId": "6706fa1dfaa14890", "scanner": "scanner-primary", "fingerprint": "9fa2e6f2b15ec18b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-624f87966e63f2e8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/admin/(dashboard)/emails/EmailsClient.tsx:562"}, "properties": {"repobilityId": "cfd6b282a4f3d2fc", "scanner": "scanner-primary", "fingerprint": "624f87966e63f2e8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3e3f3b2dfe3267fa", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/admin/(dashboard)/finances/FinancesClient.tsx:345"}, "properties": {"repobilityId": "ec76691082770ab7", "scanner": "scanner-primary", "fingerprint": "3e3f3b2dfe3267fa", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-becceca95a189216", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/(public)/deposer-projet/actions.ts:54"}, "properties": {"repobilityId": "8111e13d0a0a4d04", "scanner": "scanner-primary", "fingerprint": "becceca95a189216", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-206722be110a9a8c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/(public)/deposer-projet/actions.ts:92"}, "properties": {"repobilityId": "d0d3759149b80de5", "scanner": "scanner-primary", "fingerprint": "206722be110a9a8c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c0b7952732bce89", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/routing/route-project.ts:269"}, "properties": {"repobilityId": "35cfd36add83bed2", "scanner": "scanner-primary", "fingerprint": "2c0b7952732bce89", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a49b3650c286c81b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ping-google-indexing.ts:27"}, "properties": {"repobilityId": "a5abb58668c81ec3", "scanner": "scanner-primary", "fingerprint": "a49b3650c286c81b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ping-google-indexing.ts"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-fb61ef43ad5c423d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/audit-sitemap-perf.ts:17"}, "properties": {"repobilityId": "512489eac613e2c7", "scanner": "scanner-primary", "fingerprint": "fb61ef43ad5c423d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit-sitemap-perf.ts"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-c7d133036f6dfb82", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ping-google-indexing-fresh.ts:29"}, "properties": {"repobilityId": "72f63edbfc17d071", "scanner": "scanner-primary", "fingerprint": "c7d133036f6dfb82", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ping-google-indexing-fresh.ts"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-c04b5b6018873cce", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/_archive/_audit-sitemap-http-status.ts:21"}, "properties": {"repobilityId": "bf5c7aeaac5eb4d8", "scanner": "scanner-primary", "fingerprint": "c04b5b6018873cce", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/_archive/_audit-sitemap-http-status.ts"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-589812b3f12ab389", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/_archive/_audit-empty-cities-redirects.ts:20"}, "properties": {"repobilityId": "efb41939f84e10dc", "scanner": "scanner-primary", "fingerprint": "589812b3f12ab389", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/_archive/_audit-empty-cities-redirects.ts"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-7ef810a032ae00b9", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in components/ai/AiFaqSection.tsx:219"}, "properties": {"repobilityId": "7f73be6f0bceb16c", "scanner": "scanner-primary", "fingerprint": "7ef810a032ae00b9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "components/ai/AiFaqSection.tsx"}, "region": {"startLine": 219}}}]}, {"ruleId": "scanner-99277a3cc0285a17", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in components/analytics/UETPixel.tsx:107"}, "properties": {"repobilityId": "ecf08d5753030530", "scanner": "scanner-primary", "fingerprint": "99277a3cc0285a17", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "components/analytics/UETPixel.tsx"}, "region": {"startLine": 107}}}]}, {"ruleId": "scanner-b682604c23e151df", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in components/seo/SeoContent.tsx:200"}, "properties": {"repobilityId": "d7cd9ee77aef03d6", "scanner": "scanner-primary", "fingerprint": "b682604c23e151df", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "components/seo/SeoContent.tsx"}, "region": {"startLine": 200}}}]}, {"ruleId": "scanner-a86d98f28a69204d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in components/seo/JsonLd.tsx:5"}, "properties": {"repobilityId": "b4ef54f9c6ffde91", "scanner": "scanner-primary", "fingerprint": "a86d98f28a69204d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "components/seo/JsonLd.tsx"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-2788349c83f6f825", "level": "error", "message": {"text": "Possible secret in app/pro/connexion/actions.ts"}, "properties": {"repobilityId": "055770154bd33675", "scanner": "scanner-primary", "fingerprint": "2788349c83f6f825", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/pro/connexion/actions.ts"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-28325fa253792cfa", "level": "error", "message": {"text": "Possible secret in app/pro/reinitialiser-mot-de-passe/actions.ts"}, "properties": {"repobilityId": "b99b2864da38df5c", "scanner": "scanner-primary", "fingerprint": "28325fa253792cfa", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/pro/reinitialiser-mot-de-passe/actions.ts"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-28325fa253792cfa", "level": "error", "message": {"text": "Possible secret in app/pro/reinitialiser-mot-de-passe/actions.ts"}, "properties": {"repobilityId": "b99b2864da38df5c", "scanner": "scanner-primary", "fingerprint": "28325fa253792cfa", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/pro/reinitialiser-mot-de-passe/actions.ts"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-a81497f483289617", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/page.tsx:475"}, "properties": {"repobilityId": "a398e5bd321c5cf7", "scanner": "scanner-primary", "fingerprint": "a81497f483289617", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai)/ai/page.tsx"}, "region": {"startLine": 475}}}]}, {"ruleId": "scanner-f93b06d4d173ec60", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/freelance/[slug]/page.tsx:154"}, "properties": {"repobilityId": "2dfdb4c8622ebe35", "scanner": "scanner-primary", "fingerprint": "f93b06d4d173ec60", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai)/ai/freelance/[slug]/page.tsx"}, "region": {"startLine": 154}}}]}, {"ruleId": "scanner-3ecac2cb7066c05e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/[skill]/page.tsx:186"}, "properties": {"repobilityId": "fa5d43cc76062447", "scanner": "scanner-primary", "fingerprint": "3ecac2cb7066c05e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai)/ai/[skill]/page.tsx"}, "region": {"startLine": 186}}}]}, {"ruleId": "scanner-71b4a5d5c60a732b", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/[skill]/dept/[dept]/page.tsx:179"}, "properties": {"repobilityId": "2154756eaa983c40", "scanner": "scanner-primary", "fingerprint": "71b4a5d5c60a732b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai)/ai/[skill]/dept/[dept]/page.tsx"}, "region": {"startLine": 179}}}]}, {"ruleId": "scanner-e572785d589c53c7", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/[skill]/[ville]/page.tsx:238"}, "properties": {"repobilityId": "2f785d03ebed34f1", "scanner": "scanner-primary", "fingerprint": "e572785d589c53c7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai)/ai/[skill]/[ville]/page.tsx"}, "region": {"startLine": 238}}}]}, {"ruleId": "scanner-e85b8cc4be8635bc", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/barometre-tjm/page.tsx:101"}, "properties": {"repobilityId": "6e28b76735ae5132", "scanner": "scanner-primary", "fingerprint": "e85b8cc4be8635bc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai)/ai/barometre-tjm/page.tsx"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-b89505ac7cda029d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/barometre-tjm/[skill]/page.tsx:105"}, "properties": {"repobilityId": "8e5e01df8ccde695", "scanner": "scanner-primary", "fingerprint": "b89505ac7cda029d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai)/ai/barometre-tjm/[skill]/page.tsx"}, "region": {"startLine": 105}}}]}, {"ruleId": "scanner-a737beaa280e6346", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/monde/page.tsx:119"}, "properties": {"repobilityId": "b5a80a1a6ec64105", "scanner": "scanner-primary", "fingerprint": "a737beaa280e6346", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai)/ai/monde/page.tsx"}, "region": {"startLine": 119}}}]}, {"ruleId": "scanner-bb9650c68ddfcc59", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/monde/[skill]/page.tsx:181"}, "properties": {"repobilityId": "6e4e51c423f2c21e", "scanner": "scanner-primary", "fingerprint": "bb9650c68ddfcc59", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai)/ai/monde/[skill]/page.tsx"}, "region": {"startLine": 181}}}]}, {"ruleId": "scanner-2c1f2d40fd70e5dc", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/monde/[skill]/[ville]/page.tsx:241"}, "properties": {"repobilityId": "d91b1a4362a00a18", "scanner": "scanner-primary", "fingerprint": "2c1f2d40fd70e5dc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai)/ai/monde/[skill]/[ville]/page.tsx"}, "region": {"startLine": 241}}}]}, {"ruleId": "scanner-ab382dd06993ed97", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/pour-les-freelances/page.tsx:135"}, "properties": {"repobilityId": "f13119047bad1840", "scanner": "scanner-primary", "fingerprint": "ab382dd06993ed97", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai)/ai/pour-les-freelances/page.tsx"}, "region": {"startLine": 135}}}]}, {"ruleId": "scanner-085c1f944d143a17", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/freelances/page.tsx:117"}, "properties": {"repobilityId": "b1cda74114c81b23", "scanner": "scanner-primary", "fingerprint": "085c1f944d143a17", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai)/ai/freelances/page.tsx"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-1c28c9ff33d6cb4c", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai)/ai/tarifs/page.tsx:179"}, "properties": {"repobilityId": "cfecea0094c36cf6", "scanner": "scanner-primary", "fingerprint": "1c28c9ff33d6cb4c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai)/ai/tarifs/page.tsx"}, "region": {"startLine": 179}}}]}, {"ruleId": "scanner-bdc212913918e107", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/page.tsx:447"}, "properties": {"repobilityId": "ea6daab92180350b", "scanner": "scanner-primary", "fingerprint": "bdc212913918e107", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai-en)/en/ai/page.tsx"}, "region": {"startLine": 447}}}]}, {"ruleId": "scanner-f326fceb2d64a6ec", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/[skill]/page.tsx:261"}, "properties": {"repobilityId": "f70202803c795ce1", "scanner": "scanner-primary", "fingerprint": "f326fceb2d64a6ec", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai-en)/en/ai/[skill]/page.tsx"}, "region": {"startLine": 261}}}]}, {"ruleId": "scanner-3668f85a261f1603", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/[skill]/state/[state]/page.tsx:263"}, "properties": {"repobilityId": "8dcf5e5ba55ccd3d", "scanner": "scanner-primary", "fingerprint": "3668f85a261f1603", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai-en)/en/ai/[skill]/state/[state]/page.tsx"}, "region": {"startLine": 263}}}]}, {"ruleId": "scanner-0211f406c67ac53c", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/[skill]/[city]/page.tsx:526"}, "properties": {"repobilityId": "28db3189304654b0", "scanner": "scanner-primary", "fingerprint": "0211f406c67ac53c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai-en)/en/ai/[skill]/[city]/page.tsx"}, "region": {"startLine": 526}}}]}, {"ruleId": "scanner-9631d9b4b5d54bc5", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/[skill]/country/[country]/page.tsx:352"}, "properties": {"repobilityId": "9bafa2678fabb8d8", "scanner": "scanner-primary", "fingerprint": "9631d9b4b5d54bc5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai-en)/en/ai/[skill]/country/[country]/page.tsx"}, "region": {"startLine": 352}}}]}, {"ruleId": "scanner-99b2c719ba6f233a", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/freelance-visa/page.tsx:107"}, "properties": {"repobilityId": "566b550e9349bb96", "scanner": "scanner-primary", "fingerprint": "99b2c719ba6f233a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai-en)/en/ai/freelance-visa/page.tsx"}, "region": {"startLine": 107}}}]}, {"ruleId": "scanner-80a23cd243de6b34", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/freelance-visa/[country]/page.tsx:213"}, "properties": {"repobilityId": "0ce92e2b5a1df2b2", "scanner": "scanner-primary", "fingerprint": "80a23cd243de6b34", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai-en)/en/ai/freelance-visa/[country]/page.tsx"}, "region": {"startLine": 213}}}]}, {"ruleId": "scanner-5309f518752f87aa", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/continent/[continent]/page.tsx:247"}, "properties": {"repobilityId": "26912b5d9bd203da", "scanner": "scanner-primary", "fingerprint": "5309f518752f87aa", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai-en)/en/ai/continent/[continent]/page.tsx"}, "region": {"startLine": 247}}}]}, {"ruleId": "scanner-e1d0fdf8f6f97abc", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/freelance-usa/page.tsx:104"}, "properties": {"repobilityId": "8a59ee8169e0121f", "scanner": "scanner-primary", "fingerprint": "e1d0fdf8f6f97abc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai-en)/en/ai/freelance-usa/page.tsx"}, "region": {"startLine": 104}}}]}, {"ruleId": "scanner-baf5899dc6b32ad1", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/freelance-usa/[topic]/page.tsx:207"}, "properties": {"repobilityId": "f775f8a5b5f7c24a", "scanner": "scanner-primary", "fingerprint": "baf5899dc6b32ad1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai-en)/en/ai/freelance-usa/[topic]/page.tsx"}, "region": {"startLine": 207}}}]}, {"ruleId": "scanner-2a33d795ba12d094", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(ai-en)/en/ai/country/[country]/page.tsx:286"}, "properties": {"repobilityId": "76a2de7780767328", "scanner": "scanner-primary", "fingerprint": "2a33d795ba12d094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(ai-en)/en/ai/country/[country]/page.tsx"}, "region": {"startLine": 286}}}]}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-5bda7cc1c4cc354d", "level": "note", "message": {"text": "Very large file: app/(ai)/ai/page.tsx (1600 lines)"}, "properties": {"repobilityId": "1935e4ace3872cb6", "scanner": "scanner-primary", "fingerprint": "5bda7cc1c4cc354d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-79f562fe603cf34d", "level": "note", "message": {"text": "Very large file: app/(public)/artisan/[slug]/page.tsx (1058 lines)"}, "properties": {"repobilityId": "c2d5467bd1a92225", "scanner": "scanner-primary", "fingerprint": "79f562fe603cf34d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e68d62aea457ae97", "level": "note", "message": {"text": "Very large file: lib/specialties.ts (1258 lines)"}, "properties": {"repobilityId": "da2a7447eb6e56d9", "scanner": "scanner-primary", "fingerprint": "e68d62aea457ae97", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "125d2f03af8a5dd9", "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": "a8b235c731a7b153", "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": "cd6b1f1a0ffd05bc", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "044ed52861e9b090", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "c038621ea83f40fa", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "21e072f5eb17a303", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "f4ee95b5e8952331", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "4fde4cd428c4ab75", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "8c552add42af6422", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-17d866d91a7c451e", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: CLAUDE.md"}, "properties": {"repobilityId": "ccce5984e58a48f0", "scanner": "scanner-primary", "fingerprint": "17d866d91a7c451e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 1054}}}]}, {"ruleId": "scanner-2c5f98b152cddb6d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "properties": {"repobilityId": "0de48c0f4ab303d8", "scanner": "scanner-primary", "fingerprint": "2c5f98b152cddb6d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/launch.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-33c44c5670b5d1ce", "level": "none", "message": {"text": "Commented-code block (5 lines) in next.config.ts:26"}, "properties": {"repobilityId": "91128b391307a459", "scanner": "scanner-primary", "fingerprint": "33c44c5670b5d1ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2258102939cb936a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/perplexity-geo-audit.ts:65"}, "properties": {"repobilityId": "01009bb8159f5493", "scanner": "scanner-primary", "fingerprint": "2258102939cb936a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-93d5b144ec58e36e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/brevo-cold-batch3.ts:86"}, "properties": {"repobilityId": "57eb9a9e4d960d53", "scanner": "scanner-primary", "fingerprint": "93d5b144ec58e36e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6c7a7eb1584c3f1f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/enrich-communes-datagouv.ts:61"}, "properties": {"repobilityId": "bdb63ed40a42d183", "scanner": "scanner-primary", "fingerprint": "6c7a7eb1584c3f1f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3fb32596077c859b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/recruit-prospects.ts:67"}, "properties": {"repobilityId": "ced28d2523c742a0", "scanner": "scanner-primary", "fingerprint": "3fb32596077c859b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2237092b1e87adf0", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/enrich-github-tech.ts:58"}, "properties": {"repobilityId": "d3d22209e509639c", "scanner": "scanner-primary", "fingerprint": "2237092b1e87adf0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9bfee3eb45a672db", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/brevo-cold-batch4.ts:74"}, "properties": {"repobilityId": "62b537474afe5777", "scanner": "scanner-primary", "fingerprint": "9bfee3eb45a672db", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ac420f01c20fb28f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ping-indexnow-en.ts:64"}, "properties": {"repobilityId": "0c605aaf65741ee1", "scanner": "scanner-primary", "fingerprint": "ac420f01c20fb28f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c9a0e4d4273263fd", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/recruit-pros.ts:124"}, "properties": {"repobilityId": "672fd840e02c56c8", "scanner": "scanner-primary", "fingerprint": "c9a0e4d4273263fd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ae971369e234a55", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/recruit-pros.ts:84"}, "properties": {"repobilityId": "d173688117b537b7", "scanner": "scanner-primary", "fingerprint": "8ae971369e234a55", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-12cbc7150a7e5dc6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/enrich-google-reviews.ts:82"}, "properties": {"repobilityId": "28af7f0e0506bc40", "scanner": "scanner-primary", "fingerprint": "12cbc7150a7e5dc6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ec9446e48a80c755", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/brevo-launch-na-blast.ts:64"}, "properties": {"repobilityId": "6fa7f9d71214fa21", "scanner": "scanner-primary", "fingerprint": "ec9446e48a80c755", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f55934e09e9826f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-competitor-offers.ts:77"}, "properties": {"repobilityId": "11c6322c3086183c", "scanner": "scanner-primary", "fingerprint": "2f55934e09e9826f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-68d0cebc33f614a4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/_harvest-hagetmau-vitres.ts:38"}, "properties": {"repobilityId": "082330a8a7cdca07", "scanner": "scanner-primary", "fingerprint": "68d0cebc33f614a4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-18854d082ec0707d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/brevo-cold-batch6.ts:87"}, "properties": {"repobilityId": "ce859dfb2e3449c7", "scanner": "scanner-primary", "fingerprint": "18854d082ec0707d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6eb70636e9134a40", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/brevo-fix-templates.ts:144"}, "properties": {"repobilityId": "84c4b3307e825a17", "scanner": "scanner-primary", "fingerprint": "6eb70636e9134a40", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7ff79edf0b0d5283", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/generate-btp-price-guides.ts:77"}, "properties": {"repobilityId": "bee7c70ff5497ffd", "scanner": "scanner-primary", "fingerprint": "7ff79edf0b0d5283", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aad42f457307e271", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/brevo-recovery-batch1.ts:68"}, "properties": {"repobilityId": "bbf4af7895a8c2c0", "scanner": "scanner-primary", "fingerprint": "aad42f457307e271", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-61f487ca85f8a7d6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/import-marseille-arrondissements.ts:50"}, "properties": {"repobilityId": "9018a057a023ba59", "scanner": "scanner-primary", "fingerprint": "61f487ca85f8a7d6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-90dff712eba495a6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-sourced-prices.ts:82"}, "properties": {"repobilityId": "6a5d936c908d9872", "scanner": "scanner-primary", "fingerprint": "90dff712eba495a6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-37d53e64a1af709c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-sourced-market-context.ts:54"}, "properties": {"repobilityId": "2b278f0aaf2b1a34", "scanner": "scanner-primary", "fingerprint": "37d53e64a1af709c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cc8385d894abc8f4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-urgence-content.ts:56"}, "properties": {"repobilityId": "f58bab588d0e0374", "scanner": "scanner-primary", "fingerprint": "cc8385d894abc8f4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b9d030804da4249c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-ai-country-rates.ts:85"}, "properties": {"repobilityId": "c28f133603ed2791", "scanner": "scanner-primary", "fingerprint": "b9d030804da4249c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ee35939f988498ce", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-ai-skill-keywords.ts:79"}, "properties": {"repobilityId": "69b3baaa8434ca79", "scanner": "scanner-primary", "fingerprint": "ee35939f988498ce", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7cee5bc6677155e7", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/_gen-favicons.mjs:1"}, "properties": {"repobilityId": "ebb81b442dd76912", "scanner": "scanner-primary", "fingerprint": "7cee5bc6677155e7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b7f19e52e779fb8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-monaco-market.ts:36"}, "properties": {"repobilityId": "2b82c0f2f38ad96a", "scanner": "scanner-primary", "fingerprint": "6b7f19e52e779fb8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-095a4e418881d7ea", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-digital-nomad-queries.ts:88"}, "properties": {"repobilityId": "20df4b126480240b", "scanner": "scanner-primary", "fingerprint": "095a4e418881d7ea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-89b9c8116f89d40b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/match-rge-pros.ts:81"}, "properties": {"repobilityId": "09fbaa9473ebae96", "scanner": "scanner-primary", "fingerprint": "89b9c8116f89d40b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-40d332bd13415956", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/generate-btp-price-guides-bulk.ts:99"}, "properties": {"repobilityId": "935d3728c5d98bd5", "scanner": "scanner-primary", "fingerprint": "40d332bd13415956", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f8e03e589b15a57a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/brevo-cold-batch5.ts:74"}, "properties": {"repobilityId": "a1c83d104fa277d7", "scanner": "scanner-primary", "fingerprint": "f8e03e589b15a57a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6c187d4c6af0dccf", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ping-google-indexing-listings.ts:143"}, "properties": {"repobilityId": "be7bbdd510016b07", "scanner": "scanner-primary", "fingerprint": "6c187d4c6af0dccf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-666a0ea58d2dbe95", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-pillar-content.ts:49"}, "properties": {"repobilityId": "44b3168452f2a20e", "scanner": "scanner-primary", "fingerprint": "666a0ea58d2dbe95", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ca5aebbd9be1b40b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/_sms-hagetmau-p70.ts:38"}, "properties": {"repobilityId": "ac29a99c7bd9a5da", "scanner": "scanner-primary", "fingerprint": "ca5aebbd9be1b40b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6d8021c4f2796cff", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-sourced-intl-market.ts:63"}, "properties": {"repobilityId": "73974669c428d9c2", "scanner": "scanner-primary", "fingerprint": "6d8021c4f2796cff", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-038661913d547fa1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/recruit-list-sms.ts:48"}, "properties": {"repobilityId": "cc2544f441ebb04d", "scanner": "scanner-primary", "fingerprint": "038661913d547fa1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bf25731365a38c45", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/generate-ai-seo-content.ts:88"}, "properties": {"repobilityId": "202ed9bef4de1e60", "scanner": "scanner-primary", "fingerprint": "bf25731365a38c45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f64ccb09712615ad", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/seed-partnerships.ts:115"}, "properties": {"repobilityId": "1d62204bd5606876", "scanner": "scanner-primary", "fingerprint": "f64ccb09712615ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9ba5c9d80457e3f3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seed-partnerships.ts:100"}, "properties": {"repobilityId": "5be738af09425675", "scanner": "scanner-primary", "fingerprint": "9ba5c9d80457e3f3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-796c6a77424e0ffd", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/generate-seo-na-departments.ts:104"}, "properties": {"repobilityId": "a5dae07396294e82", "scanner": "scanner-primary", "fingerprint": "796c6a77424e0ffd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3243d7979081e0a6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/_archive/_warm-sitemap-cache.ts:67"}, "properties": {"repobilityId": "e8dc78f224106528", "scanner": "scanner-primary", "fingerprint": "3243d7979081e0a6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-16dbe2a5a325d341", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/_archive/_count-sitemap-urls.ts:5"}, "properties": {"repobilityId": "c5e783bd23023bb9", "scanner": "scanner-primary", "fingerprint": "16dbe2a5a325d341", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b111cf317f7be8fc", "level": "none", "message": {"text": "Commented-code block (6 lines) in components/layout/Footer.tsx:26"}, "properties": {"repobilityId": "242882566474459f", "scanner": "scanner-primary", "fingerprint": "b111cf317f7be8fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9428f838806412b6", "level": "none", "message": {"text": "Commented-code block (5 lines) in components/pro/TopProCard.tsx:38"}, "properties": {"repobilityId": "0dbf662fce35d6cf", "scanner": "scanner-primary", "fingerprint": "9428f838806412b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-66ed473ac162c1fa", "level": "none", "message": {"text": "Commented-code block (5 lines) in components/pro/dashboard/FicheEditor.tsx:187"}, "properties": {"repobilityId": "cde7cad755d48a14", "scanner": "scanner-primary", "fingerprint": "66ed473ac162c1fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-96e504e8ad83f76e", "level": "none", "message": {"text": "Commented-code block (5 lines) in components/analytics/UETPixel.tsx:51"}, "properties": {"repobilityId": "b2f46fd189b9868d", "scanner": "scanner-primary", "fingerprint": "96e504e8ad83f76e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd2448ee6230bc0b", "level": "none", "message": {"text": "Commented-code block (6 lines) in components/analytics/ClarityScript.tsx:5"}, "properties": {"repobilityId": "ed385e8b03426bf2", "scanner": "scanner-primary", "fingerprint": "cd2448ee6230bc0b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48e3d8e0b197da9a", "level": "none", "message": {"text": "Commented-code block (6 lines) in components/agent/CommercialAgent.tsx:257"}, "properties": {"repobilityId": "85dec79213ceb601", "scanner": "scanner-primary", "fingerprint": "48e3d8e0b197da9a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef67df1843b36ab8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/admin/layout/AdminHeader.tsx:48"}, "properties": {"repobilityId": "a011da9de9be6bdf", "scanner": "scanner-primary", "fingerprint": "ef67df1843b36ab8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-184c7208e033caf1", "level": "none", "message": {"text": "Commented-code block (6 lines) in components/social-proof/RecentClaimsToast.tsx:10"}, "properties": {"repobilityId": "bc603c0683e62ea2", "scanner": "scanner-primary", "fingerprint": "184c7208e033caf1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b11a76e68f9d2af", "level": "none", "message": {"text": "Commented-code block (5 lines) in components/project/ProjectForm.tsx:47"}, "properties": {"repobilityId": "8cc7946192c0c4ed", "scanner": "scanner-primary", "fingerprint": "8b11a76e68f9d2af", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51c279be8bb25aac", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/robots.ts:21"}, "properties": {"repobilityId": "9fda5a992834d1f5", "scanner": "scanner-primary", "fingerprint": "51c279be8bb25aac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17396a5a95e163be", "level": "none", "message": {"text": "Commented-code block (8 lines) in app/sitemap.ts:20"}, "properties": {"repobilityId": "91ca5b647acea5ad", "scanner": "scanner-primary", "fingerprint": "17396a5a95e163be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-227a7eea066afd99", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/sitemap-index.xml/route.ts:25"}, "properties": {"repobilityId": "68506f05e7c94cae", "scanner": "scanner-primary", "fingerprint": "227a7eea066afd99", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-137e08b0dcffd10a", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/pro/dashboard/leads/page.tsx:102"}, "properties": {"repobilityId": "ba892ac5b88e8980", "scanner": "scanner-primary", "fingerprint": "137e08b0dcffd10a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-031ed97c513635d4", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/pro/dashboard/fiche/actions.ts:232"}, "properties": {"repobilityId": "e86664fa98ebe424", "scanner": "scanner-primary", "fingerprint": "031ed97c513635d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3010fa618c7f80a6", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/feedback-chat/route.ts:75"}, "properties": {"repobilityId": "133df854e5297891", "scanner": "scanner-primary", "fingerprint": "3010fa618c7f80a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fbc77dd5d5cfce99", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/cron/sitemap-audit/route.ts:37"}, "properties": {"repobilityId": "c13aabc719430ca9", "scanner": "scanner-primary", "fingerprint": "fbc77dd5d5cfce99", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ece8a576bde4c648", "level": "none", "message": {"text": "Commented-code block (8 lines) in app/api/stripe/webhook/route.ts:367"}, "properties": {"repobilityId": "92ba562671d81e7b", "scanner": "scanner-primary", "fingerprint": "ece8a576bde4c648", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-419217beb807feed", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/(ai)/ai/dashboard/projets/page.tsx:84"}, "properties": {"repobilityId": "c34ad0e4fc7263cb", "scanner": "scanner-primary", "fingerprint": "419217beb807feed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-efa692e8591113f9", "level": "none", "message": {"text": "Commented-code block (10 lines) in app/(ai)/ai/dashboard/profil/actions.ts:54"}, "properties": {"repobilityId": "122dce888be67d0b", "scanner": "scanner-primary", "fingerprint": "efa692e8591113f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eec8c095f84436d0", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/(ai)/ai/deposer/actions.ts:218"}, "properties": {"repobilityId": "ca3f3c0a76037819", "scanner": "scanner-primary", "fingerprint": "eec8c095f84436d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-125e66b4b5ddf387", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/admin/login/page.tsx:49"}, "properties": {"repobilityId": "e43be7d874b05f92", "scanner": "scanner-primary", "fingerprint": "125e66b4b5ddf387", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c562b2b978ef134f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/admin/(dashboard)/pros/[id]/ProDetailClient.tsx:84"}, "properties": {"repobilityId": "67adc68c337b2518", "scanner": "scanner-primary", "fingerprint": "c562b2b978ef134f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eb1ffd010904efd6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/admin/(dashboard)/projects/[id]/ProjectDetailClient.tsx:97"}, "properties": {"repobilityId": "ccb6565b3d07af46", "scanner": "scanner-primary", "fingerprint": "eb1ffd010904efd6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4de1f484bc93e284", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/(public)/deposer-projet/actions.ts:33"}, "properties": {"repobilityId": "7e0f37f8a0b31728", "scanner": "scanner-primary", "fingerprint": "4de1f484bc93e284", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7138eece02c8260", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/(public)/trouver-des-chantiers/page.tsx:10"}, "properties": {"repobilityId": "908d97ccc98116a8", "scanner": "scanner-primary", "fingerprint": "f7138eece02c8260", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-308d73e1be3f89c6", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/(public)/artisan/[slug]/page.tsx:57"}, "properties": {"repobilityId": "388d3aafb541e9aa", "scanner": "scanner-primary", "fingerprint": "308d73e1be3f89c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b09c9771d3b5952", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/(public)/[metier]/page.tsx:56"}, "properties": {"repobilityId": "c5f4709c3297e71f", "scanner": "scanner-primary", "fingerprint": "7b09c9771d3b5952", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-026a0a5cee7dc7da", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/(public)/[metier]/[location]/page.tsx:116"}, "properties": {"repobilityId": "de51d37d291f5e5c", "scanner": "scanner-primary", "fingerprint": "026a0a5cee7dc7da", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b83307479ec896c7", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/types/database.ts:297"}, "properties": {"repobilityId": "38f42253dcd069c5", "scanner": "scanner-primary", "fingerprint": "b83307479ec896c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-504ec2d53e173bab", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/email/send-review-request.ts:152"}, "properties": {"repobilityId": "fdd3a528b6849ff8", "scanner": "scanner-primary", "fingerprint": "504ec2d53e173bab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f649f93feb3cb636", "level": "none", "message": {"text": "Commented-code block (8 lines) in lib/email/broadcast-btp-project.ts:249"}, "properties": {"repobilityId": "4a752226a54973ca", "scanner": "scanner-primary", "fingerprint": "f649f93feb3cb636", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-72281c7d17f9b8ab", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/email/send-project-notification.ts:12"}, "properties": {"repobilityId": "b26d88faf522b3d6", "scanner": "scanner-primary", "fingerprint": "72281c7d17f9b8ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bbc5262dc00c627a", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/ai/helpers.ts:9"}, "properties": {"repobilityId": "65f579b286774e8d", "scanner": "scanner-primary", "fingerprint": "bbc5262dc00c627a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bed4555d193e2190", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/ai/auth/signin-code.ts:25"}, "properties": {"repobilityId": "6668a70340f92efc", "scanner": "scanner-primary", "fingerprint": "bed4555d193e2190", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94a1c7b45ad72251", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/ai/auth/activate-signup.ts:34"}, "properties": {"repobilityId": "a6232728e5dfdfe6", "scanner": "scanner-primary", "fingerprint": "94a1c7b45ad72251", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-665248d13513d103", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/supabase/public-client.ts:11"}, "properties": {"repobilityId": "e648a39eebf95d44", "scanner": "scanner-primary", "fingerprint": "665248d13513d103", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2de524d59d8df7a4", "level": "none", "message": {"text": "Commented-code block (9 lines) in lib/queries/pros.ts:13"}, "properties": {"repobilityId": "e9b9bbecd234b5f4", "scanner": "scanner-primary", "fingerprint": "2de524d59d8df7a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1719dc28695dec0", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/queries/departments.ts:32"}, "properties": {"repobilityId": "90d18ae391ce2a86", "scanner": "scanner-primary", "fingerprint": "d1719dc28695dec0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a5977299526f480", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/queries/reviews.ts:158"}, "properties": {"repobilityId": "2f332df2c47b07e4", "scanner": "scanner-primary", "fingerprint": "6a5977299526f480", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cbdcebb62a043c55", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/queries/cities.ts:84"}, "properties": {"repobilityId": "3953f5452f5feadf", "scanner": "scanner-primary", "fingerprint": "cbdcebb62a043c55", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-803dfa165acc7d1f", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/queries/admin-pros.ts:73"}, "properties": {"repobilityId": "0aa30abda0bca7b2", "scanner": "scanner-primary", "fingerprint": "803dfa165acc7d1f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3b3867f8faae79f", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/queries/home-public.ts:7"}, "properties": {"repobilityId": "dbfb7cdbeaff43f8", "scanner": "scanner-primary", "fingerprint": "d3b3867f8faae79f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a022ccd82209909", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/queries/top-pros.ts:24"}, "properties": {"repobilityId": "042797975e8ad2fe", "scanner": "scanner-primary", "fingerprint": "9a022ccd82209909", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-973868400fe848e0", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/seo/seo-sections.ts:631"}, "properties": {"repobilityId": "9ae3270e4b835fa2", "scanner": "scanner-primary", "fingerprint": "973868400fe848e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-868a44edeec84c0a", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scraping/backfill_sirene_stock.py:84"}, "properties": {"repobilityId": "d216db8a91f3a5fe", "scanner": "scanner-primary", "fingerprint": "868a44edeec84c0a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-449d2209b384790f", "level": "none", "message": {"text": "Commented-code block (7 lines) in scraping/load_cities_regions.py:24"}, "properties": {"repobilityId": "3587e5a9a80fc472", "scanner": "scanner-primary", "fingerprint": "449d2209b384790f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-65df07ab4020db79", "level": "note", "message": {"text": "18 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "5e334d56f52c02e1", "scanner": "scanner-primary", "fingerprint": "65df07ab4020db79", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}