{"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-5d7da1c5c865e67f", "name": "Stray `console.log` in TS/JS \u2014 frontend/tests/run-sera-logic-tests.ts:147", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/tests/run-sera-logic-tests.ts:147"}, "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-544c1f516e0de3aa", "name": "Icon-only button without accessible name \u2014 frontend/src/components/DidacticModal.tsx:45", "shortDescription": {"text": "Icon-only button without accessible name \u2014 frontend/src/components/DidacticModal.tsx:45"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-083a645651918ead", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/sera/DocumentUpload.tsx:133", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/sera/DocumentUpload.tsx:133"}, "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-637548300bbdaf82", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/app/api/org/ai-insight/route.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/app/api/org/ai-insight/route.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-cf5f33ef17bdefc4", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/(dashboard)/layout.tsx:248", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/(dashboard)/layout.tsx:248"}, "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-047660321b58c97d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/(dashboard)/events/page.tsx:420", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/(dashboard)/events/page.tsx:420"}, "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-f8c73446689b5db1", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/(dashboard)/events/[id]/page.tsx:113", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/(dashboard)/events/[id]/page.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-2975f7a4a0aa8a4a", "name": "Icon-only button without accessible name \u2014 frontend/src/app/(dashboard)/dashboard/page.tsx:180", "shortDescription": {"text": "Icon-only button without accessible name \u2014 frontend/src/app/(dashboard)/dashboard/page.tsx:180"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2519f5fbee04b334", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/(dashboard)/dashboard/page.tsx:411", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/(dashboard)/dashboard/page.tsx:411"}, "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-e696277684b75fd7", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/(dashboard)/admin/sera-vnext/analyses/page.tsx:111", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/(dashboard)/admin/sera-vnext/analyses/page.tsx:111"}, "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-127f3998a81c8d76", "name": "Icon-only button without accessible name \u2014 frontend/src/app/(dashboard)/risk-profile/page.tsx:206", "shortDescription": {"text": "Icon-only button without accessible name \u2014 frontend/src/app/(dashboard)/risk-profile/page.tsx:206"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8dba73326770178e", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/(dashboard)/risk-profile/page.tsx:1143", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/(dashboard)/risk-profile/page.tsx:1143"}, "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-289b8e0734733666", "name": "TODO/FIXME marker in shipping code \u2014 frontend/src/lib/sera-vnext/steps/08-limitations.ts:4", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/lib/sera-vnext/steps/08-limitations.ts:4"}, "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-cd83c3472c0a451f", "name": "TODO/FIXME marker in shipping code \u2014 frontend/src/lib/sera-vnext/steps/07-preconditions.ts:4", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/lib/sera-vnext/steps/07-preconditions.ts:4"}, "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-59e8638784cf3420", "name": "TODO/FIXME marker in shipping code \u2014 frontend/src/lib/sera-vnext/steps/09-recommendations.ts:8", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/lib/sera-vnext/steps/09-recommendations.ts:8"}, "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-1def8cdd8beaf3ff", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/lib/sera/llm.ts:112", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/lib/sera/llm.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-9c7d72f574095956", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/lib/sera/all-steps.ts:1868", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/lib/sera/all-steps.ts:1868"}, "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-f3298ad07591cbc6", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/human-pilot-preparation-security-trial-001.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/human-pilot-preparation-security-trial-001.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-36c234442612829a", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/code-release-gate-trial-001.ts:298", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/code-release-gate-trial-001.ts:298"}, "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-40a8342b620dd68d", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/deep-extraction-batch-1-a4r202a-trial-001.ts:161", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/deep-extraction-batch-1-a4r202a-trial-001.ts:161"}, "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-53c1e6b68fe3d741", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/colgan-escape-point-reaudit-a4r202f-trial-001.ts:183", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/colgan-escape-point-reaudit-a4r202f-trial-001.ts:183"}, "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-1d82ef3265912ac8", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/opus-synthetic-design-review-a4r197d-trial-001.ts:153", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/opus-synthetic-design-review-a4r197d-trial-001.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-799281ddf5ca55f5", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-traversal-adapter-trial-001.ts:312", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-traversal-adapter-trial-001.ts:312"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8dc7d2cc4c547268", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-intake-validation-trial-001.ts:294", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-intake-validation-trial-001.ts:294"}, "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-f648986b801922de", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/methodological-state-consolidation-trial-001.ts:142", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/methodological-state-consolidation-trial-001.ts:142"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-037692583b52a941", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-consolidated-hold-closure-trial-001.ts:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-consolidated-hold-closure-trial-001.ts:114"}, "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-2e00df26096d9728", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/perplexity-reconciliation-a4r201b-trial-001.ts:154", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/perplexity-reconciliation-a4r201b-trial-001.ts:154"}, "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-25d8b532c8a9b3b8", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-integrity-trial-001.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-integrity-trial-001.ts:49"}, "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-bd07a408a2f990b1", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-gap-design-pack-trial-001.ts:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-gap-design-pack-trial-001.ts:89"}, "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-bac5a1ed696c68ff", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/methodology-governance-board-trial-001.ts:144", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/methodology-governance-board-trial-001.ts:144"}, "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-8e149f9c551fba82", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/source-depth-normalization-a4r201c-trial-001.ts:229", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/source-depth-normalization-a4r201c-trial-001.ts:229"}, "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-364d083cee238520", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-boundary-validation-trial-001.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-boundary-validation-trial-001.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-3c17b32131963670", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/controlled-pilot-api-real-trial-001.ts:492", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/controlled-pilot-api-real-trial-001.ts:492"}, "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-8a7e3f1969c1915c", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-regression-validation-trial-001.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-regression-validation-trial-001.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-28d1432855275619", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-api-trial-001.ts:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-api-trial-001.ts:86"}, "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-76338be91711bcc7", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-api-trial-001.ts:211", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-api-trial-001.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-4de03d1d1b35682b", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-preconditions-trial-001.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-preconditions-trial-001.ts:23"}, "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-5acf7c328d4e64c7", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-source-enrichment-batch-trial-001.ts:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-source-enrichment-batch-trial-001.ts:118"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a6e8848067506b9c", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-final-draft-audit-trial-001.ts:162", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-final-draft-audit-trial-001.ts:162"}, "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-1cdadd533b69ba11", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/auth-feature-flags-a4r222max-trial-001.ts:204", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/auth-feature-flags-a4r222max-trial-001.ts:204"}, "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-c4c66ea57d745454", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/vnext-baseline-v0-a4r215final-trial-001.ts:308", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/vnext-baseline-v0-a4r215final-trial-001.ts:308"}, "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-864b0b60f2564b9d", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/frontend-sera-vnext-e2e-readiness-trial-001.ts:190", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/frontend-sera-vnext-e2e-readiness-trial-001.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-cd82b4a17231acd8", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/preconditions-from-released-codes-trial-001.ts:298", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/preconditions-from-released-codes-trial-001.ts:298"}, "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-6035c810558270d9", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-source-enrichment-batch2-trial-001.ts:156", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-source-enrichment-batch2-trial-001.ts:156"}, "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-5a3b91d3e03bd9be", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/source-recovery-authorization-bridge-a4r199a-trial-001.ts:121", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/source-recovery-authorization-bridge-a4r199a-trial-001.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-3089be3c0cf9b436", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/expected-output-fixture-dry-run-a4r210big-trial-001.ts:257", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/expected-output-fixture-dry-run-a4r210big-trial-001.ts:257"}, "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-6f5a3f0e6ed24ef1", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-peasmarsh-vigo-source-recovery-trial-001.ts:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-peasmarsh-vigo-source-recovery-trial-001.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-9382af904116b758", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-contract-trial-001.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-contract-trial-001.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-b1e74e21ffbafde3", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-product-alpha-parity-trial-001.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-product-alpha-parity-trial-001.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-4ca0e8912dce345a", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/official-fixture-set-a4r214max-trial-001.ts:377", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/official-fixture-set-a4r214max-trial-001.ts:377"}, "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-9026db1b506310a7", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-controlled-materialization-draft-trial-001.ts:197", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-controlled-materialization-draft-trial-001.ts:197"}, "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-123bac7a91e5edba", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/oe-nonexistent-normalization-trial-001.ts:169", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/oe-nonexistent-normalization-trial-001.ts:169"}, "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-8d685e459073ed88", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/reviewer-output-ui-trial-001.ts:214", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/reviewer-output-ui-trial-001.ts:214"}, "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-94364638f06815cd", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/evidence-category-coverage-trial-001.ts:207", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/evidence-category-coverage-trial-001.ts:207"}, "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-efb2512fc8bf3706", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-thebaud-gate-trial-001.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-thebaud-gate-trial-001.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-c887024823a27f4b", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-security-trial-001.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-security-trial-001.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-23447e76feb813b7", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/reviewer-utility-rerun-trial-001.ts:244", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/reviewer-utility-rerun-trial-001.ts:244"}, "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-0be2a3e578b9f411", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/expanded-cohort-runner-trial-001.ts:807", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/expanded-cohort-runner-trial-001.ts:807"}, "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-73aab9d64d54d78b", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/opus-consolidation-a4r202dr2-trial-001.ts:141", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/opus-consolidation-a4r202dr2-trial-001.ts:141"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2bf1c7940a31d709", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/reference-corpus-acceleration-a4r200a-trial-001.ts:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/reference-corpus-acceleration-a4r200a-trial-001.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-060235c4ab7377d0", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-generalization-trial-001.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-generalization-trial-001.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-e83c78a0e644e0ff", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/controlled-internal-activation-a4r223max-trial-001.ts:136", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/controlled-internal-activation-a4r223max-trial-001.ts:136"}, "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-3ff6c62f41e04564", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-post-j-closure-trial-001.ts:188", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-post-j-closure-trial-001.ts:188"}, "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-c399bec1e54254bf", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/expanded-cohort-metrics-trial-001.ts:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/expanded-cohort-metrics-trial-001.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-b365eb9629f800d8", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/human-pilot-preparation-integrity-trial-001.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/human-pilot-preparation-integrity-trial-001.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-02b3b4155b6725ae", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-real-data-trial-001.ts:143", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-real-data-trial-001.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-d74c2f1c9142344f", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-ui-trial-001.ts:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-ui-trial-001.ts:62"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ab337a2e32aa1979", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-product-alpha-e2e-trial-001.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-product-alpha-e2e-trial-001.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-751983b6c261e0e5", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/preconditions-traceability-refinement-trial-001.ts:306", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/preconditions-traceability-refinement-trial-001.ts:306"}, "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-3bac19d25249eef7", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/code-traceability-trial-001.ts:222", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/code-traceability-trial-001.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-9e7a8b5bf5a6a3ff", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-code-enforcement-trial-001.ts:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-code-enforcement-trial-001.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-9786a98d1e8cc9ea", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-intake-bridge-trial-001.ts:207", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-intake-bridge-trial-001.ts:207"}, "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-dc93ddb5dbd0698c", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/dry-run-trial-001.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/dry-run-trial-001.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-debbe3c4cf970816", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-scope-contract-trial-001.ts:179", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-scope-contract-trial-001.ts:179"}, "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-e66c8b2264a1cc54", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-readiness-a4r216max-trial-001.ts:273", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-readiness-a4r216max-trial-001.ts:273"}, "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-127c1529979d4a84", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-intake-contract-trial-001.ts:232", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-intake-contract-trial-001.ts:232"}, "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-7ac58484ca1c7c6b", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-schema-trial-001.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-schema-trial-001.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-9cb23e4a5c0b33e7", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/human-pilot-seed-trial-001.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/human-pilot-seed-trial-001.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-215070d95b2ef451", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/reviewer-output-contract-trial-001.ts:279", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/reviewer-output-contract-trial-001.ts:279"}, "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-fb22c0bf5fadc1d5", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-draft-clarification-trial-001.ts:180", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-draft-clarification-trial-001.ts:180"}, "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-74f47e07b221e0eb", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-admin-session-a4r224max-trial-001.ts:210", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-admin-session-a4r224max-trial-001.ts:210"}, "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-2319e58351648536", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/candidate-only-method-review-a4r202e-trial-001.ts:196", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/candidate-only-method-review-a4r202e-trial-001.ts:196"}, "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-c5750efeeba28e12", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-canonical-tree-trial-001.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-canonical-tree-trial-001.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-7280bc765f3d4e88", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-security-trial-001.ts:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-security-trial-001.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-d76198ac90da3085", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-integrity-trial-001.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-integrity-trial-001.ts:47"}, "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-8112a2d55b7efe66", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/human-pilot-shared-agreement-trial-001.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/human-pilot-shared-agreement-trial-001.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-e1093bd32fe32165", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/benchmark-fixture-design-a4r206big-trial-001.ts:253", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/benchmark-fixture-design-a4r206big-trial-001.ts:253"}, "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-2e4034c961f5f52a", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-gap-design-audit-trial-001.ts:95", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-gap-design-audit-trial-001.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-0a76421b9d1fa541", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/rollback-flags-a4r223max-trial-001.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/rollback-flags-a4r223max-trial-001.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-6bde650fc4aca384", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-controlled-materialization-authorization-trial-00", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-controlled-materialization-authorization-trial-001.ts:182"}, "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-6ca1ecf7c408e666", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/methodology-human-decision-intake-trial-001.ts:184", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/methodology-human-decision-intake-trial-001.ts:184"}, "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-52d81f12f1fba89e", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/company-dashboard-readiness-trial-001.ts:125", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/company-dashboard-readiness-trial-001.ts:125"}, "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-daaa789023c6e8c6", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/integrity-hash-a4r223max-trial-001.ts:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/integrity-hash-a4r223max-trial-001.ts:59"}, "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-f22309e2f16eccf8", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-adapter-wiring-trial-001.ts:411", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-adapter-wiring-trial-001.ts:411"}, "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-cb7ea15d5404e1a2", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/frontend-navigation-readiness-trial-001.ts:144", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/frontend-navigation-readiness-trial-001.ts:144"}, "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-3ad97590a38ad1fb", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/candidate-review-batch1-a4r202b-trial-001.ts:152", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/candidate-review-batch1-a4r202b-trial-001.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-8f53298b4b1effa9", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-rls-real-trial-001.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-rls-real-trial-001.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-66fd022ab4cb9529", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-blueprint-audit-trial-001.ts:135", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-blueprint-audit-trial-001.ts:135"}, "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-38795a4c280419d7", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-source-enrichment-decision-trial-001.ts:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-source-enrichment-decision-trial-001.ts:109"}, "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-95d72258d285aa36", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-codes-trial-001.ts:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-codes-trial-001.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-007c6cad20c812df", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-case-draft-design-trial-001.ts:131", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-case-draft-design-trial-001.ts:131"}, "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-fda420da1f6d8582", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-american-965-trial-001.ts:175", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-american-965-trial-001.ts:175"}, "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-7e246656869fd570", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-traversal-hardening-trial-001.ts:235", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-traversal-hardening-trial-001.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-b57da91723b8e091", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-p1-package-a4r204big-trial-001.ts:182", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-p1-package-a4r204big-trial-001.ts:182"}, "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-5232d2366177a050", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-rls-trial-001.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-rls-trial-001.ts:36"}, "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-eb6cf2fc6be0bb93", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/expanded-cohort-security-trial-001.ts:189", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/expanded-cohort-security-trial-001.ts:189"}, "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-91e910d98d0bb08a", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-service-a4r221max-trial-001.ts:85", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-service-a4r221max-trial-001.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-0d9e6e4f7b52a4bb", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-exclusion-trial-001.ts:147", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-exclusion-trial-001.ts:147"}, "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-70d3f186db7d9cd6", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-traversal-leaf-coverage-trial-001.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-traversal-leaf-coverage-trial-001.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-6333a62eeed2a169", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-determinism-validation-trial-001.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-determinism-validation-trial-001.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-89522d60c2a1175d", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/controlled-pilot-ui-real-trial-001.ts:176", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/controlled-pilot-ui-real-trial-001.ts:176"}, "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-a3a108bfb0664dd2", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/internal-pilot-a4r222max-trial-001.ts:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/internal-pilot-a4r222max-trial-001.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-0a30d680dfb3989b", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/big-governance-closure-a4r203big-trial-001.ts:270", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/big-governance-closure-a4r203big-trial-001.ts:270"}, "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-dd92fbe0189e5724", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/expanded-cohort-integrity-trial-001.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/expanded-cohort-integrity-trial-001.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-64d616da778844f0", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/semantic-consistency-released-codes-trial-001.ts:219", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/semantic-consistency-released-codes-trial-001.ts:219"}, "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-e53b848450170a59", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/adversarial-set-2-contract-trial-001.ts:318", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/adversarial-set-2-contract-trial-001.ts:318"}, "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-4776d3285a9dfbd8", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/opus-audit-a4r197b-trial-001.ts:132", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/opus-audit-a4r197b-trial-001.ts:132"}, "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-7cf945883a9d44a5", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-integrity-a4r222max-trial-001.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-integrity-a4r222max-trial-001.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-af949946afcd1f55", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-thebaud-pfpm-sequence-recovery-trial-001.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-thebaud-pfpm-sequence-recovery-trial-001.ts:71"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ff16b22242de4c9b", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-batch3-trial-001.ts:214", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-batch3-trial-001.ts:214"}, "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-a470f765bd240e1c", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-released-code-typing-trial-001.ts:213", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-released-code-typing-trial-001.ts:213"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8536dc4eb8822a73", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-adapter-a4r218max-trial-001.ts:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-adapter-a4r218max-trial-001.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-d45f62a46f60d7c0", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-traversal-exhaustive-leaf-trial-001.ts:383", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-traversal-exhaustive-leaf-trial-001.ts:383"}, "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-9d58dc2a223aa493", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-workflow-trial-001.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-workflow-trial-001.ts:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-74a2edbb0fac30ca", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-post-batch3-metrics-trial-001.ts:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-post-batch3-metrics-trial-001.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-53a3a464d50b09c9", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/calibration-corpus-closure-a4r205big-trial-001.ts:217", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/calibration-corpus-closure-a4r205big-trial-001.ts:217"}, "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-2e4fc6c6cb6bd3ec", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-performance-a4r222max-trial-001.ts:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-performance-a4r222max-trial-001.ts:62"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a3f5cf2a7eeb3565", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/reviewer-output-api-trial-001.ts:205", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/reviewer-output-api-trial-001.ts:205"}, "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-eb65491c60408b43", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-preintegration-regression-trial-001.ts:240", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-preintegration-regression-trial-001.ts:240"}, "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-e60b83b218b0cd5b", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-enforcement-hardening-trial-001.ts:258", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-enforcement-hardening-trial-001.ts:258"}, "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-b8630e8a57683bb2", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-source-recovery-continuation-trial-001.ts:101", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-source-recovery-continuation-trial-001.ts:101"}, "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-9eacb6c764a5c252", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-db-real-trial-001.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-db-real-trial-001.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-ea7768ffd23f4338", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-audit-trial-001.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-audit-trial-001.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-22819a270ed74913", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/author-decision-intake-a4r202d-trial-001.ts:166", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/author-decision-intake-a4r202d-trial-001.ts:166"}, "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-46f59c79e554cb2e", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/combined-synthetic-blueprint-a4r198a-trial-001.ts:137", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/combined-synthetic-blueprint-a4r198a-trial-001.ts:137"}, "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-4c4745893923dd9e", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-dashboard-trial-001.ts:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-dashboard-trial-001.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-e06b67c886d2074d", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/frontend-responsive-readiness-trial-001.ts:159", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/frontend-responsive-readiness-trial-001.ts:159"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2862aba8a650d24a", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/top3-author-dossiers-a4r202c-trial-001.ts:146", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/top3-author-dossiers-a4r202c-trial-001.ts:146"}, "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-f7488bcd5e6bc7b7", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/fixture-candidate-authorization-a4r209big-trial-001.ts:259", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/fixture-candidate-authorization-a4r209big-trial-001.ts:259"}, "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-325bf1dee7f94eea", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/author-node-intake-adapter-trial-001.ts:396", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/author-node-intake-adapter-trial-001.ts:396"}, "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-b1baeac62afeb85e", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-consolidated-metrics-trial-001.ts:113", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-consolidated-metrics-trial-001.ts:113"}, "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-8cf551b86ed65f76", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-traversal-skeleton-trial-001.ts:139", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-traversal-skeleton-trial-001.ts:139"}, "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-cf98970fc4b13466", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-copterline-s76-trial-001.ts:182", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-copterline-s76-trial-001.ts:182"}, "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-4edfb8376c22b843", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-traversal-wiring-trial-001.ts:300", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-traversal-wiring-trial-001.ts:300"}, "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-9c47e52103639ad2", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-generalization-validation-trial-001.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-generalization-validation-trial-001.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-f4c83a70674ffcfe", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/frontend-auth-tenant-readiness-trial-001.ts:213", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/frontend-auth-tenant-readiness-trial-001.ts:213"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-89e346fa5bc73df8", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/sera-vnext-checkpoint-roadmap-closure-trial-001.ts:167", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/sera-vnext-checkpoint-roadmap-closure-trial-001.ts:167"}, "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-72eba91101fce91a", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-enforcement-topology-trial-001.ts:314", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-enforcement-topology-trial-001.ts:314"}, "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-735815f109203e63", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-ui-real-trial-001.ts:189", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-ui-real-trial-001.ts:189"}, "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-0bd49d0002c4a268", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-alpha-integrity-trial-001.ts:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-alpha-integrity-trial-001.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-3743a93362981a32", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-materialization-blueprint-trial-001.ts:106", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-materialization-blueprint-trial-001.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-4009032b777ecf84", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-pilot-trial-001.ts:108", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-pilot-trial-001.ts:108"}, "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-fca7ed233911f1f8", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/fixture-gate-dry-run-a4r207big-trial-001.ts:316", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/fixture-gate-dry-run-a4r207big-trial-001.ts:316"}, "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-85efcf4238a26f02", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/frontend-data-parity-real-trial-001.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/frontend-data-parity-real-trial-001.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-48978588c2b06860", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-enforcement-diagnostics-trial-001.ts:375", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-enforcement-diagnostics-trial-001.ts:375"}, "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-3d13b7002145c6cf", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-alpha-candidate-only-trial-001.ts:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-alpha-candidate-only-trial-001.ts:109"}, "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-879bd0d1255ca36e", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/human-pilot-metrics-trial-001.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/human-pilot-metrics-trial-001.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-5225e522a80c2399", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/batch1-source-recovery-a4r197e-trial-001.ts:155", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/batch1-source-recovery-a4r197e-trial-001.ts:155"}, "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-04dc7b4b38ddc7fd", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/authenticated-smoke-a4r223max-trial-001.ts:221", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/authenticated-smoke-a4r223max-trial-001.ts:221"}, "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-096f94d03446c9a8", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/staging-tenant-isolation-a4r224max-trial-001.ts:211", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/staging-tenant-isolation-a4r224max-trial-001.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-9984cad71a40a4ab", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/staging-integrity-a4r224max-trial-001.ts:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/staging-integrity-a4r224max-trial-001.ts:105"}, "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-fbe81819c449f34e", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-module-a4r220max-trial-001.ts:190", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-module-a4r220max-trial-001.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-0f60febacaaf22a1", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-pfpm-design-audit-trial-001.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-pfpm-design-audit-trial-001.ts:71"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e1b08d7aa337c051", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-batch2-trial-001.ts:271", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-batch2-trial-001.ts:271"}, "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-caa72da6095c853f", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/staging-rollback-a4r224max-trial-001.ts:85", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/staging-rollback-a4r224max-trial-001.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-d016c6b64b7e7f33", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/fixture-candidate-package-a4r208big-trial-001.ts:263", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/fixture-candidate-package-a4r208big-trial-001.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-316d77bb2fc9a372", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/typecheck-closure-runtime-gate-a4r217max-trial-001.ts:201", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/typecheck-closure-runtime-gate-a4r217max-trial-001.ts:201"}, "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-12184fb606628642", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-tree-trial-001.ts:112", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-tree-trial-001.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-cb74720c054913d2", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/dry-run-trial-set-1.ts:568", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/dry-run-trial-set-1.ts:568"}, "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-76c0841290eb7996", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-harness-a4r219max-trial-001.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-harness-a4r219max-trial-001.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-51a4c52e3689a15a", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-endpoint-page-a4r221max-trial-001.ts:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-endpoint-page-a4r221max-trial-001.ts:59"}, "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-3898040b8bf353d1", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-post-american-965-metrics-trial-001.ts:127", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-post-american-965-metrics-trial-001.ts:127"}, "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-7cf20e9dd7fe480c", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-regression-trial-001.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-regression-trial-001.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-c018654f8ada5888", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-determinism-trial-001.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-determinism-trial-001.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-0c1d7b57f8f01c99", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-enforcement-trial-001.ts:295", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-enforcement-trial-001.ts:295"}, "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-650cbcbd339fd2eb", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-adversarial-trial-001.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-adversarial-trial-001.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-2af57c8aadcb7acc", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/daumas-prior-work-reconciliation-trial-001.ts:223", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/daumas-prior-work-reconciliation-trial-001.ts:223"}, "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-8a8f9373bb8acebe", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-fail-closed-a4r221max-trial-001.ts:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-fail-closed-a4r221max-trial-001.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-a1374744c7d08131", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/final-methodology-closure-trial-001.ts:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/final-methodology-closure-trial-001.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-f61ccb0d19c7b414", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-api-real-trial-001.ts:254", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-api-real-trial-001.ts:254"}, "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-8cf7728108b81e59", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/managed-staging-activation-a4r224max-trial-001.ts:187", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/managed-staging-activation-a4r224max-trial-001.ts:187"}, "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-c4bb02809354923e", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/manual-classification-trial-001.ts:329", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/manual-classification-trial-001.ts:329"}, "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-b57b1bae798f52f8", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-pfpm-design-trial-001.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-pfpm-design-trial-001.ts:56"}, "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-4520306e4b14fa88", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/evidence-categories-passive-trial-001.ts:176", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/evidence-categories-passive-trial-001.ts:176"}, "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-6539848fc8b1e5fc", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/opus-review-source-recovery-campaign-plan-trial-001.ts:127", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/opus-review-source-recovery-campaign-plan-trial-001.ts:127"}, "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-d7272a6a837871f6", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/frontend-error-observability-trial-001.ts:134", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/frontend-error-observability-trial-001.ts:134"}, "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-bb4aa8d7a9435e37", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/opus-gap-prioritization-a4r197c-trial-001.ts:152", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/opus-gap-prioritization-a4r197c-trial-001.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-3a6299059236b605", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/daumas-calibration-extraction-a4r203a-trial-001.ts:221", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/daumas-calibration-extraction-a4r203a-trial-001.ts:221"}, "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-9ca04e0f102d7508", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/author-node-intake-diagnostics-trial-001.ts:300", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/author-node-intake-diagnostics-trial-001.ts:300"}, "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-56b9aa8f5639c6c4", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-alpha-security-trial-001.ts:208", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-alpha-security-trial-001.ts:208"}, "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-562b1d23a769d49a", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/risk-profile-real-trial-001.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/risk-profile-real-trial-001.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-d03db9f1a77c674d", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/unified-adapter-trial-001.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/unified-adapter-trial-001.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-5fec9a90e259527e", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/provenance-api-real-trial-001.ts:215", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/provenance-api-real-trial-001.ts:215"}, "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-31691747b90deebf", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/dashboard-risk-profile-e2e-trial-001.ts:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/dashboard-risk-profile-e2e-trial-001.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-41ce9efd557d6ff0", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/error-sanitization-trial-001.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/error-sanitization-trial-001.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-68beb19b9fc2807a", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/final-output-lock-trial-001.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/final-output-lock-trial-001.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-beeb1b0d767bdc72", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/canonical-routing-dynamic-real-trial-001.ts:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/canonical-routing-dynamic-real-trial-001.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-dfdbdfddaf68aaf5", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/risk-profile-provenance-trial-001.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/risk-profile-provenance-trial-001.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-72815c4399fc323d", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/feature-flags-trial-001.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/feature-flags-trial-001.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-98a597a870690565", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/risk-profile-endpoint-parity-real-trial-001.ts:134", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/risk-profile-endpoint-parity-real-trial-001.ts:134"}, "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-d6be4a66ee008ab6", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/provenance-model-trial-001.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/provenance-model-trial-001.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-a5bc3e0d0469d818", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/provenance-db-real-trial-001.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/provenance-db-real-trial-001.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-980b7e17877cf778", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/error-observability-e2e-trial-001.ts:137", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/error-observability-e2e-trial-001.ts:137"}, "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-17f8b9d60aef5b90", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/v02-guardrail-api-ui-trial-001.ts:174", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/v02-guardrail-api-ui-trial-001.ts:174"}, "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-d6370e7807c147b8", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/provenance-rls-real-trial-001.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/provenance-rls-real-trial-001.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-6f22a74bfb0fa7ab", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/provenance-reanalysis-api-real-trial-001.ts:167", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/provenance-reanalysis-api-real-trial-001.ts:167"}, "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-af237c3af11607eb", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/canonical-routing-real-trial-001.ts:154", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/canonical-routing-real-trial-001.ts:154"}, "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-0e060a33c47192f1", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v02/reachability/run-reachability.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v02/reachability/run-reachability.ts:47"}, "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-30ffad3e84a19d9b", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-validation-v03-naturalistic/run-all.ts:246", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-validation-v03-naturalistic/run-all.ts:246"}, "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-7e20170227e2b600", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-validation-v02/run-all.ts:405", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-validation-v02/run-all.ts:405"}, "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-945977b1c309ab28", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-validation-v0/run-all.ts:163", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-validation-v0/run-all.ts:163"}, "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-05eccc32ec90b396", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/purge-execute-synthetic-real-trial-001.ts:141", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/purge-execute-synthetic-real-trial-001.ts:141"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8feef0dfda252fdb", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/event-deletion-ui-real-trial-001.ts:202", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/event-deletion-ui-real-trial-001.ts:202"}, "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-8209f41e6533e002", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/event-delete-corrective-action-block-trial-001.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/event-delete-corrective-action-block-trial-001.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-929b561622baa50b", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/complete-event-deletion-real-trial-001.ts:379", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/complete-event-deletion-real-trial-001.ts:379"}, "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-cccd992b88771d1e", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/error-sanitization-contract-trial-001.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/error-sanitization-contract-trial-001.ts:58"}, "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-09beecbcffbc188f", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/hard-delete-disabled-trial-001.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/hard-delete-disabled-trial-001.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-73be2941f2d043db", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/event-delete-storage-dry-run-trial-001.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/event-delete-storage-dry-run-trial-001.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-84e0978425d203dd", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/atomicity-rpc-contract-trial-001.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/atomicity-rpc-contract-trial-001.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-be8f79f9f1578483", "name": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-validation-v01/run-all.ts:230", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-validation-v01/run-all.ts:230"}, "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-9c91bcf624f846e1", "name": "Stray `console.log` in TS/JS \u2014 tests/product/test-trial-usage.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/product/test-trial-usage.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-dbe2fb66fdfa7d03", "name": "Stray `console.log` in TS/JS \u2014 tests/sera/run.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/run.ts:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-901416d50b8e0ef9", "name": "Stray `console.log` in TS/JS \u2014 tests/sera/objective-generalization-static.ts:161", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/objective-generalization-static.ts:161"}, "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-ffcb2b64253a701c", "name": "Stray `console.log` in TS/JS \u2014 tests/sera/compare-baseline.ts:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/compare-baseline.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-56ce2e2b1b6b92c8", "name": "Stray `console.log` in TS/JS \u2014 tests/sera/test-data-confidence.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/test-data-confidence.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-4f6fbd1d71ee534f", "name": "Stray `console.log` in TS/JS \u2014 tests/sera/report.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/report.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-afbf6a423911b465", "name": "Stray `console.log` in TS/JS \u2014 tests/sera/coverage.ts:120", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/coverage.ts:120"}, "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-826748dc4159c891", "name": "Stray `console.log` in TS/JS \u2014 tests/sera/test-erc-modal.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/test-erc-modal.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-b0a0b81230804c84", "name": "Stray `console.log` in TS/JS \u2014 tests/sera/preconditions-generalization-static.ts:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/preconditions-generalization-static.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-2a8de88ba265a52e", "name": "Stray `console.log` in TS/JS \u2014 tests/sera/test-erc-api-ui-contract.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/test-erc-api-ui-contract.ts:36"}, "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-f4d74614aeb7ba8e", "name": "Stray `console.log` in TS/JS \u2014 tests/sera/assert-sera-causal-report-clean.js:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/assert-sera-causal-report-clean.js:76"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-abe8a0c65d155c99", "name": "Stray `console.log` in TS/JS \u2014 tests/sera/interview-sufficiency-static.ts:95", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/interview-sufficiency-static.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-4abdfde7b5458923", "name": "Stray `console.log` in TS/JS \u2014 tests/sera/test-erc-conversion.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/test-erc-conversion.ts:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-24c88654a74c70b0", "name": "Stray `console.log` in TS/JS \u2014 tests/sera/runner.ts:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/runner.ts:64"}, "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-6229abaea8f6d10d", "name": "Stray `console.log` in TS/JS \u2014 tests/sera/test-risk-quality-trend.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/test-risk-quality-trend.ts:23"}, "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-eaf9e3d1847fd41f", "name": "Stray `console.log` in TS/JS \u2014 tests/sera/analyze-precondition-critical-recall.ts:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/analyze-precondition-critical-recall.ts:118"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-60aadf23b6cfbe09", "name": "Stray `console.log` in TS/JS \u2014 tests/sera/test-safety-issue-candidates.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/test-safety-issue-candidates.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-e03abbb3708e61c7", "name": "Stray `console.log` in TS/JS \u2014 tests/sera/preconditions-static.ts:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/preconditions-static.ts:104"}, "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-33a51b50e27e3b9d", "name": "Stray `console.log` in TS/JS \u2014 tests/sera/analyze-risk-validation-contract.ts:151", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/analyze-risk-validation-contract.ts:151"}, "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-90ab87436f10f53e", "name": "Stray `console.log` in TS/JS \u2014 tests/sera/test-erc-presentation.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/test-erc-presentation.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-667ac97fa8c1e65a", "name": "Stray `console.log` in TS/JS \u2014 docs/sera-vnext/opus-closure-verification-114b5fc/independent-case-runner.ts:173", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/sera-vnext/opus-closure-verification-114b5fc/independent-case-runner.ts:173"}, "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-2c0525808b8e56bc", "name": "Stray `console.log` in TS/JS \u2014 scripts/run-sera-vnext-regression.ts:149", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/run-sera-vnext-regression.ts:149"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-61c1ca38235aaaae", "name": "Stray `console.log` in TS/JS \u2014 scripts/assert-sera-report-clean.js:99", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/assert-sera-report-clean.js:99"}, "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-80b63ca322864dc1", "name": "Stray `console.log` in TS/JS \u2014 scripts/sera-vnext/reconcile-duplicate-events.ts:222", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sera-vnext/reconcile-duplicate-events.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-410f4d0c7242a922", "name": "Stray `console.log` in TS/JS \u2014 scripts/sera-vnext/inventory-events.ts:149", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sera-vnext/inventory-events.ts:149"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa8c9aca42807dcc", "name": "Stray `console.log` in TS/JS \u2014 scripts/sera-vnext/find-duplicate-events.ts:372", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sera-vnext/find-duplicate-events.ts:372"}, "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-d63da3583b14afc0", "name": "Dockerfile runs as root: Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ce1fec675e91d850", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim-bookworm", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim-bookworm"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f66ad88286ca30a", "name": "Dockerfile runs as root: backend/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: backend/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-96f86999eb078087", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim-bookworm", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim-bookworm"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a399389f5f17b106", "name": "Runtime dotenv file present in repo: frontend/.env.production", "shortDescription": {"text": "Runtime dotenv file present in repo: frontend/.env.production"}, "fullDescription": {"text": "`frontend/.env.production` looks like a runtime dotenv file. No high-confidence secret value was matched, but runtime dotenv files often drift into live credentials. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3c44b84cac72e8ad", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components/FlowDiagram.tsx:26", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components/FlowDiagram.tsx:26"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9f6d1f5762318ee9", "name": "Possible secret in frontend/src/components/sera/DocumentUpload.tsx", "shortDescription": {"text": "Possible secret in frontend/src/components/sera/DocumentUpload.tsx"}, "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-41609561ec2c1528", "name": "Possible secret in docs/sera-vnext/source-corpus/official-reports/a4r105-curated/KEGWORTH-GOBME-AAIB-4-1990.html", "shortDescription": {"text": "Possible secret in docs/sera-vnext/source-corpus/official-reports/a4r105-curated/KEGWORTH-GOBME-AAIB-4-1990.html"}, "fullDescription": {"text": "Detected pattern matching openai_or_anthropic_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-ef078c3509f868f2", "name": "Possible secret in docs/sera-vnext/source-corpus/official-reports/a4r105-curated/G-BLUN-OFFSHORE-AAIB-AAR-7-2008.html", "shortDescription": {"text": "Possible secret in docs/sera-vnext/source-corpus/official-reports/a4r105-curated/G-BLUN-OFFSHORE-AAIB-AAR-7-2008.html"}, "fullDescription": {"text": "Detected pattern matching openai_or_anthropic_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-dc7512a0fd20426a", "name": "Insecure pattern 'node_child_process' in docs/sera-vnext/candidate-runner-a4r175/validate-reference-p1b-candidate-runner", "shortDescription": {"text": "Insecure pattern 'node_child_process' in docs/sera-vnext/candidate-runner-a4r175/validate-reference-p1b-candidate-runner.mjs:3"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eb4e36fed656d969", "name": "Insecure pattern 'node_child_process' in docs/sera-vnext/candidate-runner-a4r175/validate-reference-p1-candidate-suite.m", "shortDescription": {"text": "Insecure pattern 'node_child_process' in docs/sera-vnext/candidate-runner-a4r175/validate-reference-p1-candidate-suite.mjs:3"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b7c3c07a3e3ce3bf", "name": "Insecure pattern 'node_child_process' in scripts/run-sera-vnext-regression.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/run-sera-vnext-regression.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-720832316a5798ed", "name": "Very large file: setup-sera-tests.mjs (881 lines)", "shortDescription": {"text": "Very large file: setup-sera-tests.mjs (881 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-3ee4fb8a1b6f7dfe", "name": "Very large file: frontend/src/app/page.tsx (1145 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/page.tsx (1145 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-9bac6b432a62f7a9", "name": "Very large file: frontend/src/app/(dashboard)/risk-profile/page.tsx (2108 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/(dashboard)/risk-profile/page.tsx (2108 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-8e0058747b006f4a", "name": "Very large file: frontend/src/lib/sera/pipeline.ts (2377 lines)", "shortDescription": {"text": "Very large file: frontend/src/lib/sera/pipeline.ts (2377 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-0fe5a9f9a2c78996", "name": "Very large file: frontend/src/lib/sera/all-steps.ts (3895 lines)", "shortDescription": {"text": "Very large file: frontend/src/lib/sera/all-steps.ts (3895 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-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 75 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 41 placeholder/mock markers across 23 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-788c50d46fa2dd04", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/middleware.ts:92", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/middleware.ts:92"}, "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-4d8e5cc1baaaa734", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/(dashboard)/events/new/page.tsx:132", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/(dashboard)/events/new/page.tsx:132"}, "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-92535196921ab709", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/(dashboard)/admin/settings/page.tsx:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/(dashboard)/admin/settings/page.tsx:66"}, "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-41741c6dc476466b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/(dashboard)/admin/ai/page.tsx:144", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/(dashboard)/admin/ai/page.tsx: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-fae6ac27dd61fb46", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/(dashboard)/admin/tenants/page.tsx:108", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/(dashboard)/admin/tenants/page.tsx:108"}, "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-d0460654c29994d7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/(dashboard)/admin/plans/page.tsx:119", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/(dashboard)/admin/plans/page.tsx:119"}, "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-2fe91d958e9f562c", "name": "Legacy-named symbol `SERA_PT_CANONICAL_v1` in frontend/src/lib/sera-vnext/preconditions.ts:13", "shortDescription": {"text": "Legacy-named symbol `SERA_PT_CANONICAL_v1` in frontend/src/lib/sera-vnext/preconditions.ts:13"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-175393a5c377879f", "name": "Legacy-named symbol `SERA_PT_CANONICAL_v1` in frontend/src/lib/sera-vnext/code-traceability.ts:12", "shortDescription": {"text": "Legacy-named symbol `SERA_PT_CANONICAL_v1` in frontend/src/lib/sera-vnext/code-traceability.ts:12"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-321b45adad6285ae", "name": "Legacy-named symbol `SERA_PT_CANONICAL_v1` in frontend/src/lib/sera-vnext/types.ts:559", "shortDescription": {"text": "Legacy-named symbol `SERA_PT_CANONICAL_v1` in frontend/src/lib/sera-vnext/types.ts:559"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e33eb7951424d120", "name": "Legacy-named symbol `runStep3Legacy` in frontend/src/lib/sera/all-steps.ts:2352", "shortDescription": {"text": "Legacy-named symbol `runStep3Legacy` in frontend/src/lib/sera/all-steps.ts:2352"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0467480e81b5db5a", "name": "Commented-code block (11 lines) in frontend/src/lib/sera/all-steps.ts:1309", "shortDescription": {"text": "Commented-code block (11 lines) in frontend/src/lib/sera/all-steps.ts:1309"}, "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-70870882875201f1", "name": "Commented-code block (5 lines) in frontend/src/lib/sera-vnext-product/versioning.ts:12", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/lib/sera-vnext-product/versioning.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-741fda3be662e6c4", "name": "Legacy-named symbol `SERA_PT_CANONICAL_v1` in tests/sera-vnext/code-traceability-trial-001.ts:148", "shortDescription": {"text": "Legacy-named symbol `SERA_PT_CANONICAL_v1` in tests/sera-vnext/code-traceability-trial-001.ts:148"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-74a58b0e95fb84aa", "name": "Legacy-named symbol `SERA_PT_CANONICAL_v1` in tests/sera-vnext/reviewer-output-contract-trial-001.ts:20", "shortDescription": {"text": "Legacy-named symbol `SERA_PT_CANONICAL_v1` in tests/sera-vnext/reviewer-output-contract-trial-001.ts:20"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8efecd26c012f0a0", "name": "Legacy-named symbol `activeLegacy` in tests/sera-vnext/escape-point-enforcement-trial-001.ts:113", "shortDescription": {"text": "Legacy-named symbol `activeLegacy` in tests/sera-vnext/escape-point-enforcement-trial-001.ts:113"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a3726f052b2f67a6", "name": "Legacy-named symbol `response_canonical_tree_version_sera_pt_v1` in tests/sera-vnext/product-unification/provenance-api-", "shortDescription": {"text": "Legacy-named symbol `response_canonical_tree_version_sera_pt_v1` in tests/sera-vnext/product-unification/provenance-api-real-trial-001.ts:89"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fe57c7148aeb8503", "name": "Legacy-named symbol `hasLegacy` in tests/sera-vnext/product-unification/risk-profile-provenance-trial-001.ts:95", "shortDescription": {"text": "Legacy-named symbol `hasLegacy` in tests/sera-vnext/product-unification/risk-profile-provenance-trial-001.ts:95"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-787edd6742d82563", "name": "Commented-code block (12 lines) in tests/sera-vnext/engine-validation-v03-naturalistic/cases.ts:37", "shortDescription": {"text": "Commented-code block (12 lines) in tests/sera-vnext/engine-validation-v03-naturalistic/cases.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-46a19b2f655b60b4", "name": "Commented-code block (6 lines) in tests/sera/test-erc-api-ui-contract.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in tests/sera/test-erc-api-ui-contract.ts: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-6ab4487c169199d0", "name": "Commented-code block (5 lines) in tests/sera/analyze-precondition-critical-recall.ts:13", "shortDescription": {"text": "Commented-code block (5 lines) in tests/sera/analyze-precondition-critical-recall.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-22951e3e30ce4a06", "name": "Commented-code block (5 lines) in backend/app/sera/pipeline.py:9", "shortDescription": {"text": "Commented-code block (5 lines) in backend/app/sera/pipeline.py: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-51dbf90b6ad9e4e9", "name": "28 env vars used in code but missing from .env.example", "shortDescription": {"text": "28 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ALLOWED_ORIGINS`, `ALLOWED_ORIGIN_REGEX`, `ANTHROPIC_MODEL`, `DEEPSEEK_MODEL`, `DEEPSEEK_TEMPERATURE`, `DEEPSEEK_TOP_P`, `EVENT_PURGE_SYNTHETIC_EXECUTE_ENABLED`, `GIT_COMMIT_SHA` + 20 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}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nbackend/app/sera/recalculate.py:norm_precondition, backend/app/sera/pipeline.py:norm_precondition\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-204b60ac93f55f32", "name": "Dangling fetch: GET /api/trial/status (frontend/src/components/product/TrialUsageCard.tsx:58)", "shortDescription": {"text": "Dangling fetch: GET /api/trial/status (frontend/src/components/product/TrialUsageCard.tsx:58)"}, "fullDescription": {"text": "`frontend/src/components/product/TrialUsageCard.tsx:58` calls `GET /api/trial/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/trial/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eb3bf72e9ce8d134", "name": "Dangling fetch: POST /api/org/ai-insight (frontend/src/components/sera/AiInsightPanel.tsx:51)", "shortDescription": {"text": "Dangling fetch: POST /api/org/ai-insight (frontend/src/components/sera/AiInsightPanel.tsx:51)"}, "fullDescription": {"text": "`frontend/src/components/sera/AiInsightPanel.tsx:51` calls `POST /api/org/ai-insight` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/org/ai-insight`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-90cdfe6a20362f37", "name": "Dangling fetch: POST /api/extract-document (frontend/src/components/sera/DocumentUpload.tsx:49)", "shortDescription": {"text": "Dangling fetch: POST /api/extract-document (frontend/src/components/sera/DocumentUpload.tsx:49)"}, "fullDescription": {"text": "`frontend/src/components/sera/DocumentUpload.tsx:49` calls `POST /api/extract-document` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/extract-document`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e243173c0468a60b", "name": "Dangling fetch: GET /api/settings/ai (frontend/src/app/(dashboard)/settings/ai/page.tsx:61)", "shortDescription": {"text": "Dangling fetch: GET /api/settings/ai (frontend/src/app/(dashboard)/settings/ai/page.tsx:61)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/settings/ai/page.tsx:61` calls `GET /api/settings/ai` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/settings/ai`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2168e6e5d27ac1e5", "name": "Dangling fetch: POST /api/settings/ai (frontend/src/app/(dashboard)/settings/ai/page.tsx:104)", "shortDescription": {"text": "Dangling fetch: POST /api/settings/ai (frontend/src/app/(dashboard)/settings/ai/page.tsx:104)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/settings/ai/page.tsx:104` calls `POST /api/settings/ai` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/settings/ai`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0a3dfdbcc542715b", "name": "Dangling fetch: POST /api/settings/ai/test (frontend/src/app/(dashboard)/settings/ai/page.tsx:135)", "shortDescription": {"text": "Dangling fetch: POST /api/settings/ai/test (frontend/src/app/(dashboard)/settings/ai/page.tsx:135)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/settings/ai/page.tsx:135` calls `POST /api/settings/ai/test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/settings/ai/test`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-149826041657ea4a", "name": "Dangling fetch: POST /api/risk-profile/exclusions (frontend/src/app/(dashboard)/events/page.tsx:261)", "shortDescription": {"text": "Dangling fetch: POST /api/risk-profile/exclusions (frontend/src/app/(dashboard)/events/page.tsx:261)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/events/page.tsx:261` calls `POST /api/risk-profile/exclusions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/risk-profile/exclusions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-176d91be18a49c57", "name": "Dangling fetch: DELETE /api/risk-profile/exclusions/${event.risk_profile_exclusion_id} (frontend/src/app/(dashboard)/eve", "shortDescription": {"text": "Dangling fetch: DELETE /api/risk-profile/exclusions/${event.risk_profile_exclusion_id} (frontend/src/app/(dashboard)/events/page.tsx:291)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/events/page.tsx:291` calls `DELETE /api/risk-profile/exclusions/${event.risk_profile_exclusion_id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/risk-profile/exclusions/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-caf620ff781bd4ca", "name": "Dangling fetch: GET /api/events/${event.id}/deletion-impact (frontend/src/app/(dashboard)/events/page.tsx:317)", "shortDescription": {"text": "Dangling fetch: GET /api/events/${event.id}/deletion-impact (frontend/src/app/(dashboard)/events/page.tsx:317)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/events/page.tsx:317` calls `GET /api/events/${event.id}/deletion-impact` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/events/<p>/deletion-impact`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-25088f79851d8b9f", "name": "Dangling fetch: POST /api/events/${deleteTarget.id}/delete-request (frontend/src/app/(dashboard)/events/page.tsx:340)", "shortDescription": {"text": "Dangling fetch: POST /api/events/${deleteTarget.id}/delete-request (frontend/src/app/(dashboard)/events/page.tsx:340)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/events/page.tsx:340` calls `POST /api/events/${deleteTarget.id}/delete-request` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/events/<p>/delete-request`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-188505279104de1b", "name": "Dangling fetch: POST /events/ (frontend/src/app/(dashboard)/events/page.tsx:241)", "shortDescription": {"text": "Dangling fetch: POST /events/ (frontend/src/app/(dashboard)/events/page.tsx:241)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/events/page.tsx:241` calls `POST /events/` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:apiCall\nNormalized path used for matching: `/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0e391b1752f85092", "name": "Dangling fetch: POST /api/actions (frontend/src/app/(dashboard)/events/[id]/page.tsx:423)", "shortDescription": {"text": "Dangling fetch: POST /api/actions (frontend/src/app/(dashboard)/events/[id]/page.tsx:423)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/events/[id]/page.tsx:423` calls `POST /api/actions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/actions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-79f68702ab28043f", "name": "Dangling fetch: GET /api/events/${event.id}/deletion-impact (frontend/src/app/(dashboard)/events/[id]/page.tsx:451)", "shortDescription": {"text": "Dangling fetch: GET /api/events/${event.id}/deletion-impact (frontend/src/app/(dashboard)/events/[id]/page.tsx:451)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/events/[id]/page.tsx:451` calls `GET /api/events/${event.id}/deletion-impact` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/events/<p>/deletion-impact`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-92383f432878bb4c", "name": "Dangling fetch: POST /api/events/${event.id}/delete-request (frontend/src/app/(dashboard)/events/[id]/page.tsx:469)", "shortDescription": {"text": "Dangling fetch: POST /api/events/${event.id}/delete-request (frontend/src/app/(dashboard)/events/[id]/page.tsx:469)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/events/[id]/page.tsx:469` calls `POST /api/events/${event.id}/delete-request` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/events/<p>/delete-request`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f17b1a3264d7614e", "name": "Dangling fetch: POST /api/events/${event.id}/restore (frontend/src/app/(dashboard)/events/[id]/page.tsx:489)", "shortDescription": {"text": "Dangling fetch: POST /api/events/${event.id}/restore (frontend/src/app/(dashboard)/events/[id]/page.tsx:489)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/events/[id]/page.tsx:489` calls `POST /api/events/${event.id}/restore` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/events/<p>/restore`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6455d27d0523690e", "name": "Dangling fetch: GET /events/${id}?scope=${scope} (frontend/src/app/(dashboard)/events/[id]/page.tsx:348)", "shortDescription": {"text": "Dangling fetch: GET /events/${id}?scope=${scope} (frontend/src/app/(dashboard)/events/[id]/page.tsx:348)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/events/[id]/page.tsx:348` calls `GET /events/${id}?scope=${scope}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:apiCall\nNormalized path used for matching: `/events/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-66aace6c556cec2c", "name": "Dangling fetch: POST /api/events/${id}/restore (frontend/src/app/(dashboard)/events/deleted/page.tsx:59)", "shortDescription": {"text": "Dangling fetch: POST /api/events/${id}/restore (frontend/src/app/(dashboard)/events/deleted/page.tsx:59)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/events/deleted/page.tsx:59` calls `POST /api/events/${id}/restore` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/events/<p>/restore`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-301df1a8789ed21f", "name": "Dangling fetch: POST /events/?scope=deleted (frontend/src/app/(dashboard)/events/deleted/page.tsx:41)", "shortDescription": {"text": "Dangling fetch: POST /events/?scope=deleted (frontend/src/app/(dashboard)/events/deleted/page.tsx:41)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/events/deleted/page.tsx:41` calls `POST /events/?scope=deleted` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:apiCall\nNormalized path used for matching: `/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3ab91a7f855a01d2", "name": "Dangling fetch: GET /api/admin/stats (frontend/src/app/(dashboard)/admin/page.tsx:28)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/stats (frontend/src/app/(dashboard)/admin/page.tsx:28)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/page.tsx:28` calls `GET /api/admin/stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/stats`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4647e326bb362331", "name": "Dangling fetch: GET /api/admin/settings (frontend/src/app/(dashboard)/admin/settings/page.tsx:29)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/settings (frontend/src/app/(dashboard)/admin/settings/page.tsx:29)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/settings/page.tsx:29` calls `GET /api/admin/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-067f33b91ff1098d", "name": "Dangling fetch: PATCH /api/admin/settings (frontend/src/app/(dashboard)/admin/settings/page.tsx:66)", "shortDescription": {"text": "Dangling fetch: PATCH /api/admin/settings (frontend/src/app/(dashboard)/admin/settings/page.tsx:66)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/settings/page.tsx:66` calls `PATCH /api/admin/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eacc43845bb059fb", "name": "Dangling fetch: POST /api/admin/settings/password-reset (frontend/src/app/(dashboard)/admin/settings/page.tsx:89)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/settings/password-reset (frontend/src/app/(dashboard)/admin/settings/page.tsx:89)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/settings/page.tsx:89` calls `POST /api/admin/settings/password-reset` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/settings/password-reset`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-286a6cfb96d31613", "name": "Dangling fetch: GET /api/admin/sera-vnext/status (frontend/src/app/(dashboard)/admin/sera-vnext/page.tsx:51)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/sera-vnext/status (frontend/src/app/(dashboard)/admin/sera-vnext/page.tsx:51)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/sera-vnext/page.tsx:51` calls `GET /api/admin/sera-vnext/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/sera-vnext/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a66b3089a47e0e3a", "name": "Dangling fetch: POST /api/admin/sera-vnext/candidate (frontend/src/app/(dashboard)/admin/sera-vnext/candidate/page.tsx:1", "shortDescription": {"text": "Dangling fetch: POST /api/admin/sera-vnext/candidate (frontend/src/app/(dashboard)/admin/sera-vnext/candidate/page.tsx:137)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/sera-vnext/candidate/page.tsx:137` calls `POST /api/admin/sera-vnext/candidate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/sera-vnext/candidate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ec1698b6933c1ddf", "name": "Dangling fetch: GET /api/admin/sera-vnext/analyses?${params.toString()} (frontend/src/app/(dashboard)/admin/sera-vnext/a", "shortDescription": {"text": "Dangling fetch: GET /api/admin/sera-vnext/analyses?${params.toString()} (frontend/src/app/(dashboard)/admin/sera-vnext/analyses/page.tsx:47)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/sera-vnext/analyses/page.tsx:47` calls `GET /api/admin/sera-vnext/analyses?${params.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/sera-vnext/analyses`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-28a0e830e3beaa71", "name": "Dangling fetch: POST /api/admin/sera-vnext/analyses (frontend/src/app/(dashboard)/admin/sera-vnext/analyses/new/page.tsx", "shortDescription": {"text": "Dangling fetch: POST /api/admin/sera-vnext/analyses (frontend/src/app/(dashboard)/admin/sera-vnext/analyses/new/page.tsx:31)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/sera-vnext/analyses/new/page.tsx:31` calls `POST /api/admin/sera-vnext/analyses` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/sera-vnext/analyses`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1c654f45a91110f6", "name": "Dangling fetch: POST /api/admin/sera-vnext/analyses/${params.id}/reviews (frontend/src/app/(dashboard)/admin/sera-vnext/", "shortDescription": {"text": "Dangling fetch: POST /api/admin/sera-vnext/analyses/${params.id}/reviews (frontend/src/app/(dashboard)/admin/sera-vnext/analyses/[id]/review/page.tsx:69)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/sera-vnext/analyses/[id]/review/page.tsx:69` calls `POST /api/admin/sera-vnext/analyses/${params.id}/reviews` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/sera-vnext/analyses/<p>/reviews`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b3b79ed9f6249563", "name": "Dangling fetch: GET /api/admin/settings (frontend/src/app/(dashboard)/admin/ai/page.tsx:90)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/settings (frontend/src/app/(dashboard)/admin/ai/page.tsx:90)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/ai/page.tsx:90` calls `GET /api/admin/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c7921d532f028d9d", "name": "Dangling fetch: PATCH /api/admin/settings (frontend/src/app/(dashboard)/admin/ai/page.tsx:144)", "shortDescription": {"text": "Dangling fetch: PATCH /api/admin/settings (frontend/src/app/(dashboard)/admin/ai/page.tsx:144)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/ai/page.tsx:144` calls `PATCH /api/admin/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c5de6010ecef0c17", "name": "Dangling fetch: POST /api/admin/ai/test (frontend/src/app/(dashboard)/admin/ai/page.tsx:176)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/ai/test (frontend/src/app/(dashboard)/admin/ai/page.tsx:176)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/ai/page.tsx:176` calls `POST /api/admin/ai/test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/ai/test`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bd99256fadbd544b", "name": "Dangling fetch: GET /api/admin/tenants?q=${encodeURIComponent(query)} (frontend/src/app/(dashboard)/admin/tenants/page.t", "shortDescription": {"text": "Dangling fetch: GET /api/admin/tenants?q=${encodeURIComponent(query)} (frontend/src/app/(dashboard)/admin/tenants/page.tsx:57)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/tenants/page.tsx:57` calls `GET /api/admin/tenants?q=${encodeURIComponent(query)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/tenants`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bd20d3da5c6bfae2", "name": "Dangling fetch: PATCH /api/admin/tenants/${editing.id} (frontend/src/app/(dashboard)/admin/tenants/page.tsx:108)", "shortDescription": {"text": "Dangling fetch: PATCH /api/admin/tenants/${editing.id} (frontend/src/app/(dashboard)/admin/tenants/page.tsx:108)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/tenants/page.tsx:108` calls `PATCH /api/admin/tenants/${editing.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/tenants/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-21f7b824c5383dca", "name": "Dangling fetch: GET /api/admin/settings (frontend/src/app/(dashboard)/admin/payments/page.tsx:48)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/settings (frontend/src/app/(dashboard)/admin/payments/page.tsx:48)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/payments/page.tsx:48` calls `GET /api/admin/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7125302e924870e2", "name": "Dangling fetch: GET /api/admin/payments/transactions (frontend/src/app/(dashboard)/admin/payments/page.tsx:49)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/payments/transactions (frontend/src/app/(dashboard)/admin/payments/page.tsx:49)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/payments/page.tsx:49` calls `GET /api/admin/payments/transactions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/payments/transactions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f46475f262b61027", "name": "Dangling fetch: PATCH /api/admin/settings (frontend/src/app/(dashboard)/admin/payments/page.tsx:80)", "shortDescription": {"text": "Dangling fetch: PATCH /api/admin/settings (frontend/src/app/(dashboard)/admin/payments/page.tsx:80)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/payments/page.tsx:80` calls `PATCH /api/admin/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-79067fffe8db4fde", "name": "Dangling fetch: GET /api/admin/settings (frontend/src/app/(dashboard)/admin/plans/page.tsx:48)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/settings (frontend/src/app/(dashboard)/admin/plans/page.tsx:48)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/plans/page.tsx:48` calls `GET /api/admin/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-155e00042eec073a", "name": "Dangling fetch: GET /api/admin/packages (frontend/src/app/(dashboard)/admin/plans/page.tsx:49)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/packages (frontend/src/app/(dashboard)/admin/plans/page.tsx:49)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/plans/page.tsx:49` calls `GET /api/admin/packages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/packages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ba86d15d64a4ca19", "name": "Dangling fetch: PATCH /api/admin/settings (frontend/src/app/(dashboard)/admin/plans/page.tsx:83)", "shortDescription": {"text": "Dangling fetch: PATCH /api/admin/settings (frontend/src/app/(dashboard)/admin/plans/page.tsx:83)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/plans/page.tsx:83` calls `PATCH /api/admin/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-795d59d0c7c76c8e", "name": "Dangling fetch: DELETE /api/admin/packages/${item.id} (frontend/src/app/(dashboard)/admin/plans/page.tsx:143)", "shortDescription": {"text": "Dangling fetch: DELETE /api/admin/packages/${item.id} (frontend/src/app/(dashboard)/admin/plans/page.tsx:143)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/admin/plans/page.tsx:143` calls `DELETE /api/admin/packages/${item.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/packages/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ce026e47f13f80e6", "name": "Dangling fetch: GET /api/actions (frontend/src/app/(dashboard)/actions/page.tsx:76)", "shortDescription": {"text": "Dangling fetch: GET /api/actions (frontend/src/app/(dashboard)/actions/page.tsx:76)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/actions/page.tsx:76` calls `GET /api/actions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/actions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9b920051016599e9", "name": "Dangling fetch: PATCH /api/actions/${id} (frontend/src/app/(dashboard)/actions/page.tsx:97)", "shortDescription": {"text": "Dangling fetch: PATCH /api/actions/${id} (frontend/src/app/(dashboard)/actions/page.tsx:97)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/actions/page.tsx:97` calls `PATCH /api/actions/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/actions/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3ddfd08b47ff6f02", "name": "Dangling fetch: POST /api/risk-profile/exclusions (frontend/src/app/(dashboard)/risk-profile/page.tsx:1569)", "shortDescription": {"text": "Dangling fetch: POST /api/risk-profile/exclusions (frontend/src/app/(dashboard)/risk-profile/page.tsx:1569)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/risk-profile/page.tsx:1569` calls `POST /api/risk-profile/exclusions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/risk-profile/exclusions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-975ebe1d6686565f", "name": "Dangling fetch: DELETE /api/risk-profile/exclusions/${source.exclusionId} (frontend/src/app/(dashboard)/risk-profile/pag", "shortDescription": {"text": "Dangling fetch: DELETE /api/risk-profile/exclusions/${source.exclusionId} (frontend/src/app/(dashboard)/risk-profile/page.tsx:1602)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/risk-profile/page.tsx:1602` calls `DELETE /api/risk-profile/exclusions/${source.exclusionId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/risk-profile/exclusions/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-994c9f9fd6b06027", "name": "Dangling fetch: GET /api/actions (frontend/src/app/(dashboard)/reports/executive/page.tsx:33)", "shortDescription": {"text": "Dangling fetch: GET /api/actions (frontend/src/app/(dashboard)/reports/executive/page.tsx:33)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/reports/executive/page.tsx:33` calls `GET /api/actions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/actions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9f1ee62b7d9df094", "name": "Dangling fetch: GET /api/credits (frontend/src/app/(dashboard)/credits/page.tsx:70)", "shortDescription": {"text": "Dangling fetch: GET /api/credits (frontend/src/app/(dashboard)/credits/page.tsx:70)"}, "fullDescription": {"text": "`frontend/src/app/(dashboard)/credits/page.tsx:70` calls `GET /api/credits` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/credits`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c33a3dfa8a88a2bd", "name": "Dangling fetch: POST /auth/register (frontend/src/app/(auth)/register/page.tsx:27)", "shortDescription": {"text": "Dangling fetch: POST /auth/register (frontend/src/app/(auth)/register/page.tsx:27)"}, "fullDescription": {"text": "`frontend/src/app/(auth)/register/page.tsx:27` calls `POST /auth/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:apiCall\nNormalized path used for matching: `/auth/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9eeb610fb7e56339", "name": "Dangling fetch: GET /api/auth/me (frontend/src/hooks/useMe.ts:37)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/me (frontend/src/hooks/useMe.ts:37)"}, "fullDescription": {"text": "`frontend/src/hooks/useMe.ts:37` calls `GET /api/auth/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f5cdbbf98fe4e1f6", "name": "Dangling fetch: GET http://localhost/api/admin/sera-vnext/analyses?page=1&pageSize=10 (tests/sera-vnext/product-beta-api", "shortDescription": {"text": "Dangling fetch: GET http://localhost/api/admin/sera-vnext/analyses?page=1&pageSize=10 (tests/sera-vnext/product-beta-api-trial-001.ts:173)"}, "fullDescription": {"text": "`tests/sera-vnext/product-beta-api-trial-001.ts:173` calls `GET http://localhost/api/admin/sera-vnext/analyses?page=1&pageSize=10` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http:/localhost/api/admin/sera-vnext/analyses`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3c8bc15f93268376", "name": "Dangling fetch: GET http://localhost/api/admin/sera-vnext/analyses/${analysis.id} (tests/sera-vnext/product-beta-api-tri", "shortDescription": {"text": "Dangling fetch: GET http://localhost/api/admin/sera-vnext/analyses/${analysis.id} (tests/sera-vnext/product-beta-api-trial-001.ts:177)"}, "fullDescription": {"text": "`tests/sera-vnext/product-beta-api-trial-001.ts:177` calls `GET http://localhost/api/admin/sera-vnext/analyses/${analysis.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http:/localhost/api/admin/sera-vnext/analyses/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5645661656a160db", "name": "Dangling fetch: GET http://localhost/api/admin/sera-vnext/analyses/${analysis.id}/export (tests/sera-vnext/product-beta-", "shortDescription": {"text": "Dangling fetch: GET http://localhost/api/admin/sera-vnext/analyses/${analysis.id}/export (tests/sera-vnext/product-beta-api-trial-001.ts:199)"}, "fullDescription": {"text": "`tests/sera-vnext/product-beta-api-trial-001.ts:199` calls `GET http://localhost/api/admin/sera-vnext/analyses/${analysis.id}/export` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http:/localhost/api/admin/sera-vnext/analyses/<p>/export`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-304b6f2b403d93f7", "name": "Unused endpoint: POST /register", "shortDescription": {"text": "Unused endpoint: POST /register"}, "fullDescription": {"text": "`backend/app/api/routes/auth.py` declares `POST /register` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-618721b912bad1c2", "name": "Unused endpoint: POST /login", "shortDescription": {"text": "Unused endpoint: POST /login"}, "fullDescription": {"text": "`backend/app/api/routes/auth.py` declares `POST /login` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd1dc91abf32142d", "name": "Unused endpoint: GET /me", "shortDescription": {"text": "Unused endpoint: GET /me"}, "fullDescription": {"text": "`backend/app/api/routes/auth.py` declares `GET /me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f7af4fd8d36710ca", "name": "Unused endpoint: POST /oauth/bootstrap", "shortDescription": {"text": "Unused endpoint: POST /oauth/bootstrap"}, "fullDescription": {"text": "`backend/app/api/routes/auth.py` declares `POST /oauth/bootstrap` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`backend/app/api/routes/events.py` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a009b1a56794f45", "name": "Unused endpoint: POST /", "shortDescription": {"text": "Unused endpoint: POST /"}, "fullDescription": {"text": "`backend/app/api/routes/events.py` declares `POST /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-39058efd4b63e7a9", "name": "Unused endpoint: GET /{event_id}", "shortDescription": {"text": "Unused endpoint: GET /{event_id}"}, "fullDescription": {"text": "`backend/app/api/routes/events.py` declares `GET /{event_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d5eaea18d92af7f1", "name": "Unused endpoint: PATCH /{action_id}", "shortDescription": {"text": "Unused endpoint: PATCH /{action_id}"}, "fullDescription": {"text": "`backend/app/api/routes/actions.py` declares `PATCH /{action_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-26d3bb1589d06372", "name": "Unused endpoint: GET /{analysis_id}", "shortDescription": {"text": "Unused endpoint: GET /{analysis_id}"}, "fullDescription": {"text": "`backend/app/api/routes/analyses.py` declares `GET /{analysis_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-70a5bf56719ffb57", "name": "Unused endpoint: GET /{analysis_id}/pdf", "shortDescription": {"text": "Unused endpoint: GET /{analysis_id}/pdf"}, "fullDescription": {"text": "`backend/app/api/routes/analyses.py` declares `GET /{analysis_id}/pdf` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6b42313ad7c1e8cf", "name": "Unused endpoint: POST /{analysis_id}/recalculate", "shortDescription": {"text": "Unused endpoint: POST /{analysis_id}/recalculate"}, "fullDescription": {"text": "`backend/app/api/routes/analyses.py` declares `POST /{analysis_id}/recalculate` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4e05dfc5df2531b3", "name": "Unused endpoint: GET /{analysis_id}/edits", "shortDescription": {"text": "Unused endpoint: GET /{analysis_id}/edits"}, "fullDescription": {"text": "`backend/app/api/routes/analyses.py` declares `GET /{analysis_id}/edits` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9fb0e93b803faad2", "name": "Unused endpoint: DELETE /{analysis_id}/edits/{edit_id}", "shortDescription": {"text": "Unused endpoint: DELETE /{analysis_id}/edits/{edit_id}"}, "fullDescription": {"text": "`backend/app/api/routes/analyses.py` declares `DELETE /{analysis_id}/edits/{edit_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ba6375ea0d5de8b5", "name": "Unused endpoint: GET /{analysis_id}/flows", "shortDescription": {"text": "Unused endpoint: GET /{analysis_id}/flows"}, "fullDescription": {"text": "`backend/app/api/routes/analyses.py` declares `GET /{analysis_id}/flows` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fa761affc2b136c7", "name": "Unused endpoint: GET /packages", "shortDescription": {"text": "Unused endpoint: GET /packages"}, "fullDescription": {"text": "`backend/app/api/routes/credits.py` declares `GET /packages` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d7fa8929da9cbe3f", "name": "Unused endpoint: GET /balance", "shortDescription": {"text": "Unused endpoint: GET /balance"}, "fullDescription": {"text": "`backend/app/api/routes/credits.py` declares `GET /balance` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6f08d6f1fbc3efd7", "name": "Unused endpoint: GET /ai/providers", "shortDescription": {"text": "Unused endpoint: GET /ai/providers"}, "fullDescription": {"text": "`backend/app/api/routes/credits.py` declares `GET /ai/providers` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/20710"}, "properties": {"repository": "system-hfa/HFA", "repoUrl": "https://github.com/system-hfa/HFA", "branch": "main"}, "results": [{"ruleId": "scanner-5d7da1c5c865e67f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/tests/run-sera-logic-tests.ts:147"}, "properties": {"repobilityId": "df59347e53e657bc", "scanner": "scanner-primary", "fingerprint": "5d7da1c5c865e67f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-544c1f516e0de3aa", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 frontend/src/components/DidacticModal.tsx:45"}, "properties": {"repobilityId": "76ff171ff980eb55", "scanner": "scanner-primary", "fingerprint": "544c1f516e0de3aa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-083a645651918ead", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/sera/DocumentUpload.tsx:133"}, "properties": {"repobilityId": "d579e8ce42e73e99", "scanner": "scanner-primary", "fingerprint": "083a645651918ead", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-637548300bbdaf82", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/app/api/org/ai-insight/route.ts:43"}, "properties": {"repobilityId": "7614596d68ce2e12", "scanner": "scanner-primary", "fingerprint": "637548300bbdaf82", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cf5f33ef17bdefc4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/(dashboard)/layout.tsx:248"}, "properties": {"repobilityId": "db48eeb487871503", "scanner": "scanner-primary", "fingerprint": "cf5f33ef17bdefc4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-047660321b58c97d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/(dashboard)/events/page.tsx:420"}, "properties": {"repobilityId": "1dcd9b5190d6bcc8", "scanner": "scanner-primary", "fingerprint": "047660321b58c97d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f8c73446689b5db1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/(dashboard)/events/[id]/page.tsx:113"}, "properties": {"repobilityId": "a0802ba3f96c71b4", "scanner": "scanner-primary", "fingerprint": "f8c73446689b5db1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2975f7a4a0aa8a4a", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 frontend/src/app/(dashboard)/dashboard/page.tsx:180"}, "properties": {"repobilityId": "a8dfecf1e6f5f010", "scanner": "scanner-primary", "fingerprint": "2975f7a4a0aa8a4a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-2519f5fbee04b334", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/(dashboard)/dashboard/page.tsx:411"}, "properties": {"repobilityId": "d57667936e2c77f7", "scanner": "scanner-primary", "fingerprint": "2519f5fbee04b334", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e696277684b75fd7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/(dashboard)/admin/sera-vnext/analyses/page.tsx:111"}, "properties": {"repobilityId": "5984cdd98c6c653a", "scanner": "scanner-primary", "fingerprint": "e696277684b75fd7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-127f3998a81c8d76", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 frontend/src/app/(dashboard)/risk-profile/page.tsx:206"}, "properties": {"repobilityId": "735fb38e5638149c", "scanner": "scanner-primary", "fingerprint": "127f3998a81c8d76", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-8dba73326770178e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/(dashboard)/risk-profile/page.tsx:1143"}, "properties": {"repobilityId": "72d3f0ca3c7546f5", "scanner": "scanner-primary", "fingerprint": "8dba73326770178e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-289b8e0734733666", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/lib/sera-vnext/steps/08-limitations.ts:4"}, "properties": {"repobilityId": "4489cd422a26741f", "scanner": "scanner-primary", "fingerprint": "289b8e0734733666", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-cd83c3472c0a451f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/lib/sera-vnext/steps/07-preconditions.ts:4"}, "properties": {"repobilityId": "b4111d646f84d088", "scanner": "scanner-primary", "fingerprint": "cd83c3472c0a451f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-59e8638784cf3420", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/lib/sera-vnext/steps/09-recommendations.ts:8"}, "properties": {"repobilityId": "10057afa250ea013", "scanner": "scanner-primary", "fingerprint": "59e8638784cf3420", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-1def8cdd8beaf3ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/lib/sera/llm.ts:112"}, "properties": {"repobilityId": "d7bae5e45b707e06", "scanner": "scanner-primary", "fingerprint": "1def8cdd8beaf3ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9c7d72f574095956", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/lib/sera/all-steps.ts:1868"}, "properties": {"repobilityId": "697451ce0e636628", "scanner": "scanner-primary", "fingerprint": "9c7d72f574095956", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f3298ad07591cbc6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/human-pilot-preparation-security-trial-001.ts:51"}, "properties": {"repobilityId": "38208cf793c0822b", "scanner": "scanner-primary", "fingerprint": "f3298ad07591cbc6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36c234442612829a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/code-release-gate-trial-001.ts:298"}, "properties": {"repobilityId": "8dba9924bed63db2", "scanner": "scanner-primary", "fingerprint": "36c234442612829a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40a8342b620dd68d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/deep-extraction-batch-1-a4r202a-trial-001.ts:161"}, "properties": {"repobilityId": "4e9d790a5de1cd58", "scanner": "scanner-primary", "fingerprint": "40a8342b620dd68d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-53c1e6b68fe3d741", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/colgan-escape-point-reaudit-a4r202f-trial-001.ts:183"}, "properties": {"repobilityId": "0802c0f09d19a854", "scanner": "scanner-primary", "fingerprint": "53c1e6b68fe3d741", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1d82ef3265912ac8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/opus-synthetic-design-review-a4r197d-trial-001.ts:153"}, "properties": {"repobilityId": "9942dabd8f8f4258", "scanner": "scanner-primary", "fingerprint": "1d82ef3265912ac8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-799281ddf5ca55f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-traversal-adapter-trial-001.ts:312"}, "properties": {"repobilityId": "3a2e7b1863fe6ea6", "scanner": "scanner-primary", "fingerprint": "799281ddf5ca55f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8dc7d2cc4c547268", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-intake-validation-trial-001.ts:294"}, "properties": {"repobilityId": "c389f7a7d6e3c0cb", "scanner": "scanner-primary", "fingerprint": "8dc7d2cc4c547268", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f648986b801922de", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/methodological-state-consolidation-trial-001.ts:142"}, "properties": {"repobilityId": "e6ab7f2c5d54296f", "scanner": "scanner-primary", "fingerprint": "f648986b801922de", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-037692583b52a941", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-consolidated-hold-closure-trial-001.ts:114"}, "properties": {"repobilityId": "bfa6e4463a784b2e", "scanner": "scanner-primary", "fingerprint": "037692583b52a941", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2e00df26096d9728", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/perplexity-reconciliation-a4r201b-trial-001.ts:154"}, "properties": {"repobilityId": "e1b86c12bb81337d", "scanner": "scanner-primary", "fingerprint": "2e00df26096d9728", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-25d8b532c8a9b3b8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-integrity-trial-001.ts:49"}, "properties": {"repobilityId": "b2c79708df49d61c", "scanner": "scanner-primary", "fingerprint": "25d8b532c8a9b3b8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bd07a408a2f990b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-gap-design-pack-trial-001.ts:89"}, "properties": {"repobilityId": "065a8a6ebf3171d7", "scanner": "scanner-primary", "fingerprint": "bd07a408a2f990b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bac5a1ed696c68ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/methodology-governance-board-trial-001.ts:144"}, "properties": {"repobilityId": "b735473e9aaa3933", "scanner": "scanner-primary", "fingerprint": "bac5a1ed696c68ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e149f9c551fba82", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/source-depth-normalization-a4r201c-trial-001.ts:229"}, "properties": {"repobilityId": "75c20eaa7d895190", "scanner": "scanner-primary", "fingerprint": "8e149f9c551fba82", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-364d083cee238520", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-boundary-validation-trial-001.ts:7"}, "properties": {"repobilityId": "67e6f43f781ea93f", "scanner": "scanner-primary", "fingerprint": "364d083cee238520", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c17b32131963670", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/controlled-pilot-api-real-trial-001.ts:492"}, "properties": {"repobilityId": "cd0a1b47b0d6c3e1", "scanner": "scanner-primary", "fingerprint": "3c17b32131963670", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8a7e3f1969c1915c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-regression-validation-trial-001.ts:7"}, "properties": {"repobilityId": "af94bc3bc8d80049", "scanner": "scanner-primary", "fingerprint": "8a7e3f1969c1915c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-28d1432855275619", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-api-trial-001.ts:86"}, "properties": {"repobilityId": "ca8f83766286ccd1", "scanner": "scanner-primary", "fingerprint": "28d1432855275619", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-76338be91711bcc7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-api-trial-001.ts:211"}, "properties": {"repobilityId": "01729d4aba2d6d1a", "scanner": "scanner-primary", "fingerprint": "76338be91711bcc7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4de03d1d1b35682b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-preconditions-trial-001.ts:23"}, "properties": {"repobilityId": "33a3b8b1ffa598ed", "scanner": "scanner-primary", "fingerprint": "4de03d1d1b35682b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5acf7c328d4e64c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-source-enrichment-batch-trial-001.ts:118"}, "properties": {"repobilityId": "1ec9c3d22b1cf04d", "scanner": "scanner-primary", "fingerprint": "5acf7c328d4e64c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a6e8848067506b9c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-final-draft-audit-trial-001.ts:162"}, "properties": {"repobilityId": "75b570dee3df48cc", "scanner": "scanner-primary", "fingerprint": "a6e8848067506b9c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1cdadd533b69ba11", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/auth-feature-flags-a4r222max-trial-001.ts:204"}, "properties": {"repobilityId": "248ff2997757c972", "scanner": "scanner-primary", "fingerprint": "1cdadd533b69ba11", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c4c66ea57d745454", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/vnext-baseline-v0-a4r215final-trial-001.ts:308"}, "properties": {"repobilityId": "591ad2837e1ddf3d", "scanner": "scanner-primary", "fingerprint": "c4c66ea57d745454", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-864b0b60f2564b9d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/frontend-sera-vnext-e2e-readiness-trial-001.ts:190"}, "properties": {"repobilityId": "6cdabc8013f36fd5", "scanner": "scanner-primary", "fingerprint": "864b0b60f2564b9d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cd82b4a17231acd8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/preconditions-from-released-codes-trial-001.ts:298"}, "properties": {"repobilityId": "030f3ff6e62d5022", "scanner": "scanner-primary", "fingerprint": "cd82b4a17231acd8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6035c810558270d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-source-enrichment-batch2-trial-001.ts:156"}, "properties": {"repobilityId": "16914beaf69c50d2", "scanner": "scanner-primary", "fingerprint": "6035c810558270d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5a3b91d3e03bd9be", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/source-recovery-authorization-bridge-a4r199a-trial-001.ts:121"}, "properties": {"repobilityId": "0031591540fe0334", "scanner": "scanner-primary", "fingerprint": "5a3b91d3e03bd9be", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3089be3c0cf9b436", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/expected-output-fixture-dry-run-a4r210big-trial-001.ts:257"}, "properties": {"repobilityId": "84d0e66cb48b25d5", "scanner": "scanner-primary", "fingerprint": "3089be3c0cf9b436", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6f5a3f0e6ed24ef1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-peasmarsh-vigo-source-recovery-trial-001.ts:100"}, "properties": {"repobilityId": "9d1681bc75f74f0b", "scanner": "scanner-primary", "fingerprint": "6f5a3f0e6ed24ef1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9382af904116b758", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-contract-trial-001.ts:31"}, "properties": {"repobilityId": "d7b3d6ce1bb69639", "scanner": "scanner-primary", "fingerprint": "9382af904116b758", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1e74e21ffbafde3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-product-alpha-parity-trial-001.ts:7"}, "properties": {"repobilityId": "84afb4130de945a5", "scanner": "scanner-primary", "fingerprint": "b1e74e21ffbafde3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4ca0e8912dce345a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/official-fixture-set-a4r214max-trial-001.ts:377"}, "properties": {"repobilityId": "3991da76be35b450", "scanner": "scanner-primary", "fingerprint": "4ca0e8912dce345a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9026db1b506310a7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-controlled-materialization-draft-trial-001.ts:197"}, "properties": {"repobilityId": "ede2da1cca62a92b", "scanner": "scanner-primary", "fingerprint": "9026db1b506310a7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-123bac7a91e5edba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/oe-nonexistent-normalization-trial-001.ts:169"}, "properties": {"repobilityId": "d80fe42930dd6446", "scanner": "scanner-primary", "fingerprint": "123bac7a91e5edba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8d685e459073ed88", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/reviewer-output-ui-trial-001.ts:214"}, "properties": {"repobilityId": "5754c45973fda230", "scanner": "scanner-primary", "fingerprint": "8d685e459073ed88", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-94364638f06815cd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/evidence-category-coverage-trial-001.ts:207"}, "properties": {"repobilityId": "697802ae77e6b681", "scanner": "scanner-primary", "fingerprint": "94364638f06815cd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-efb2512fc8bf3706", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-thebaud-gate-trial-001.ts:42"}, "properties": {"repobilityId": "cb82e3758cf4f5e1", "scanner": "scanner-primary", "fingerprint": "efb2512fc8bf3706", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c887024823a27f4b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-security-trial-001.ts:43"}, "properties": {"repobilityId": "f32ad3e821d3962b", "scanner": "scanner-primary", "fingerprint": "c887024823a27f4b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-23447e76feb813b7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/reviewer-utility-rerun-trial-001.ts:244"}, "properties": {"repobilityId": "18903beeade88901", "scanner": "scanner-primary", "fingerprint": "23447e76feb813b7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0be2a3e578b9f411", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/expanded-cohort-runner-trial-001.ts:807"}, "properties": {"repobilityId": "365f40d5812701bc", "scanner": "scanner-primary", "fingerprint": "0be2a3e578b9f411", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-73aab9d64d54d78b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/opus-consolidation-a4r202dr2-trial-001.ts:141"}, "properties": {"repobilityId": "d325f052384328c5", "scanner": "scanner-primary", "fingerprint": "73aab9d64d54d78b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2bf1c7940a31d709", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/reference-corpus-acceleration-a4r200a-trial-001.ts:111"}, "properties": {"repobilityId": "2bd86c5d17fad0e4", "scanner": "scanner-primary", "fingerprint": "2bf1c7940a31d709", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-060235c4ab7377d0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-generalization-trial-001.ts:8"}, "properties": {"repobilityId": "c10069c64d098b96", "scanner": "scanner-primary", "fingerprint": "060235c4ab7377d0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e83c78a0e644e0ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/controlled-internal-activation-a4r223max-trial-001.ts:136"}, "properties": {"repobilityId": "f12ed91d06fbbd1f", "scanner": "scanner-primary", "fingerprint": "e83c78a0e644e0ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3ff6c62f41e04564", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-post-j-closure-trial-001.ts:188"}, "properties": {"repobilityId": "1beaa6d8cd607640", "scanner": "scanner-primary", "fingerprint": "3ff6c62f41e04564", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c399bec1e54254bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/expanded-cohort-metrics-trial-001.ts:122"}, "properties": {"repobilityId": "5bc22709e7f78c65", "scanner": "scanner-primary", "fingerprint": "c399bec1e54254bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b365eb9629f800d8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/human-pilot-preparation-integrity-trial-001.ts:72"}, "properties": {"repobilityId": "c936ac94c4b1c6cf", "scanner": "scanner-primary", "fingerprint": "b365eb9629f800d8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-02b3b4155b6725ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-real-data-trial-001.ts:143"}, "properties": {"repobilityId": "4086ed6bcf6f2bc5", "scanner": "scanner-primary", "fingerprint": "02b3b4155b6725ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d74c2f1c9142344f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-ui-trial-001.ts:62"}, "properties": {"repobilityId": "f373b4607af195f2", "scanner": "scanner-primary", "fingerprint": "d74c2f1c9142344f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ab337a2e32aa1979", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-product-alpha-e2e-trial-001.ts:7"}, "properties": {"repobilityId": "4b352dc5fa5ba790", "scanner": "scanner-primary", "fingerprint": "ab337a2e32aa1979", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-751983b6c261e0e5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/preconditions-traceability-refinement-trial-001.ts:306"}, "properties": {"repobilityId": "f0c7d01299f0989f", "scanner": "scanner-primary", "fingerprint": "751983b6c261e0e5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3bac19d25249eef7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/code-traceability-trial-001.ts:222"}, "properties": {"repobilityId": "a8a3e41beff6db89", "scanner": "scanner-primary", "fingerprint": "3bac19d25249eef7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9e7a8b5bf5a6a3ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-code-enforcement-trial-001.ts:119"}, "properties": {"repobilityId": "3cf37b8dfa27ec67", "scanner": "scanner-primary", "fingerprint": "9e7a8b5bf5a6a3ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9786a98d1e8cc9ea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-intake-bridge-trial-001.ts:207"}, "properties": {"repobilityId": "707ef2c206380703", "scanner": "scanner-primary", "fingerprint": "9786a98d1e8cc9ea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dc93ddb5dbd0698c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/dry-run-trial-001.ts:39"}, "properties": {"repobilityId": "bd502229108048d8", "scanner": "scanner-primary", "fingerprint": "dc93ddb5dbd0698c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-debbe3c4cf970816", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-scope-contract-trial-001.ts:179"}, "properties": {"repobilityId": "8e8d963e9722b6fa", "scanner": "scanner-primary", "fingerprint": "debbe3c4cf970816", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e66c8b2264a1cc54", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-readiness-a4r216max-trial-001.ts:273"}, "properties": {"repobilityId": "d0a89e3c3f9f306e", "scanner": "scanner-primary", "fingerprint": "e66c8b2264a1cc54", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-127c1529979d4a84", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-intake-contract-trial-001.ts:232"}, "properties": {"repobilityId": "270c77aa05c782d6", "scanner": "scanner-primary", "fingerprint": "127c1529979d4a84", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ac58484ca1c7c6b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-schema-trial-001.ts:46"}, "properties": {"repobilityId": "edbf05eb99ab4f2a", "scanner": "scanner-primary", "fingerprint": "7ac58484ca1c7c6b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9cb23e4a5c0b33e7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/human-pilot-seed-trial-001.ts:43"}, "properties": {"repobilityId": "b10d0902b07cc31f", "scanner": "scanner-primary", "fingerprint": "9cb23e4a5c0b33e7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-215070d95b2ef451", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/reviewer-output-contract-trial-001.ts:279"}, "properties": {"repobilityId": "75d48365ecbb1bfa", "scanner": "scanner-primary", "fingerprint": "215070d95b2ef451", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fb22c0bf5fadc1d5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-draft-clarification-trial-001.ts:180"}, "properties": {"repobilityId": "4214a1c7989d26d0", "scanner": "scanner-primary", "fingerprint": "fb22c0bf5fadc1d5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-74f47e07b221e0eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-admin-session-a4r224max-trial-001.ts:210"}, "properties": {"repobilityId": "340d1ff0f5550f83", "scanner": "scanner-primary", "fingerprint": "74f47e07b221e0eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2319e58351648536", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/candidate-only-method-review-a4r202e-trial-001.ts:196"}, "properties": {"repobilityId": "75275dff4a4b122b", "scanner": "scanner-primary", "fingerprint": "2319e58351648536", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c5750efeeba28e12", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-canonical-tree-trial-001.ts:8"}, "properties": {"repobilityId": "8fda4a3deacdc53f", "scanner": "scanner-primary", "fingerprint": "c5750efeeba28e12", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7280bc765f3d4e88", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-security-trial-001.ts:77"}, "properties": {"repobilityId": "6b9fc4fdb754b8a7", "scanner": "scanner-primary", "fingerprint": "7280bc765f3d4e88", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d76198ac90da3085", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-integrity-trial-001.ts:47"}, "properties": {"repobilityId": "3c0ba4c1992f6608", "scanner": "scanner-primary", "fingerprint": "d76198ac90da3085", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8112a2d55b7efe66", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/human-pilot-shared-agreement-trial-001.ts:39"}, "properties": {"repobilityId": "52714c749892fb3c", "scanner": "scanner-primary", "fingerprint": "8112a2d55b7efe66", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e1093bd32fe32165", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/benchmark-fixture-design-a4r206big-trial-001.ts:253"}, "properties": {"repobilityId": "609b14889ab0572c", "scanner": "scanner-primary", "fingerprint": "e1093bd32fe32165", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2e4034c961f5f52a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-gap-design-audit-trial-001.ts:95"}, "properties": {"repobilityId": "df05962f7944a2d4", "scanner": "scanner-primary", "fingerprint": "2e4034c961f5f52a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0a76421b9d1fa541", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/rollback-flags-a4r223max-trial-001.ts:46"}, "properties": {"repobilityId": "d90d4fe17c67228b", "scanner": "scanner-primary", "fingerprint": "0a76421b9d1fa541", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6bde650fc4aca384", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-controlled-materialization-authorization-trial-001.ts:182"}, "properties": {"repobilityId": "bff6dbe92876a935", "scanner": "scanner-primary", "fingerprint": "6bde650fc4aca384", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ca1ecf7c408e666", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/methodology-human-decision-intake-trial-001.ts:184"}, "properties": {"repobilityId": "8f014e301fd20e6e", "scanner": "scanner-primary", "fingerprint": "6ca1ecf7c408e666", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52d81f12f1fba89e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/company-dashboard-readiness-trial-001.ts:125"}, "properties": {"repobilityId": "336a2fea9d0a9f8c", "scanner": "scanner-primary", "fingerprint": "52d81f12f1fba89e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-daaa789023c6e8c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/integrity-hash-a4r223max-trial-001.ts:59"}, "properties": {"repobilityId": "a828540f203da50d", "scanner": "scanner-primary", "fingerprint": "daaa789023c6e8c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f22309e2f16eccf8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-adapter-wiring-trial-001.ts:411"}, "properties": {"repobilityId": "d44c4c5b232e90f1", "scanner": "scanner-primary", "fingerprint": "f22309e2f16eccf8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb7ea15d5404e1a2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/frontend-navigation-readiness-trial-001.ts:144"}, "properties": {"repobilityId": "60f8ccf963908ca2", "scanner": "scanner-primary", "fingerprint": "cb7ea15d5404e1a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3ad97590a38ad1fb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/candidate-review-batch1-a4r202b-trial-001.ts:152"}, "properties": {"repobilityId": "921e77b9bf963fd1", "scanner": "scanner-primary", "fingerprint": "3ad97590a38ad1fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8f53298b4b1effa9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-rls-real-trial-001.ts:45"}, "properties": {"repobilityId": "a4d57246f1046fd1", "scanner": "scanner-primary", "fingerprint": "8f53298b4b1effa9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-66fd022ab4cb9529", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-blueprint-audit-trial-001.ts:135"}, "properties": {"repobilityId": "8e48d94afdd586f6", "scanner": "scanner-primary", "fingerprint": "66fd022ab4cb9529", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-38795a4c280419d7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-source-enrichment-decision-trial-001.ts:109"}, "properties": {"repobilityId": "e9ae607191b95e4d", "scanner": "scanner-primary", "fingerprint": "38795a4c280419d7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-95d72258d285aa36", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-codes-trial-001.ts:70"}, "properties": {"repobilityId": "35982bda8c8113e4", "scanner": "scanner-primary", "fingerprint": "95d72258d285aa36", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-007c6cad20c812df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-case-draft-design-trial-001.ts:131"}, "properties": {"repobilityId": "a004c46f93352872", "scanner": "scanner-primary", "fingerprint": "007c6cad20c812df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fda420da1f6d8582", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-american-965-trial-001.ts:175"}, "properties": {"repobilityId": "49e0e200dedddb04", "scanner": "scanner-primary", "fingerprint": "fda420da1f6d8582", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7e246656869fd570", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-traversal-hardening-trial-001.ts:235"}, "properties": {"repobilityId": "d1ab66acc32690e2", "scanner": "scanner-primary", "fingerprint": "7e246656869fd570", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b57da91723b8e091", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-p1-package-a4r204big-trial-001.ts:182"}, "properties": {"repobilityId": "c0d53134496d2e64", "scanner": "scanner-primary", "fingerprint": "b57da91723b8e091", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5232d2366177a050", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-rls-trial-001.ts:36"}, "properties": {"repobilityId": "1266e56223437ffb", "scanner": "scanner-primary", "fingerprint": "5232d2366177a050", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eb6cf2fc6be0bb93", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/expanded-cohort-security-trial-001.ts:189"}, "properties": {"repobilityId": "499841b8bc4a85c6", "scanner": "scanner-primary", "fingerprint": "eb6cf2fc6be0bb93", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-91e910d98d0bb08a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-service-a4r221max-trial-001.ts:85"}, "properties": {"repobilityId": "58d76ceea060a7d9", "scanner": "scanner-primary", "fingerprint": "91e910d98d0bb08a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0d9e6e4f7b52a4bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-exclusion-trial-001.ts:147"}, "properties": {"repobilityId": "6a690b5260427cc8", "scanner": "scanner-primary", "fingerprint": "0d9e6e4f7b52a4bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-70d3f186db7d9cd6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-traversal-leaf-coverage-trial-001.ts:43"}, "properties": {"repobilityId": "91e580bbbc7705ed", "scanner": "scanner-primary", "fingerprint": "70d3f186db7d9cd6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6333a62eeed2a169", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-determinism-validation-trial-001.ts:7"}, "properties": {"repobilityId": "0a0f032f698aa05a", "scanner": "scanner-primary", "fingerprint": "6333a62eeed2a169", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-89522d60c2a1175d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/controlled-pilot-ui-real-trial-001.ts:176"}, "properties": {"repobilityId": "f5f600cc80346f98", "scanner": "scanner-primary", "fingerprint": "89522d60c2a1175d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a3a108bfb0664dd2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/internal-pilot-a4r222max-trial-001.ts:69"}, "properties": {"repobilityId": "5073d9a6959829c8", "scanner": "scanner-primary", "fingerprint": "a3a108bfb0664dd2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0a30d680dfb3989b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/big-governance-closure-a4r203big-trial-001.ts:270"}, "properties": {"repobilityId": "d697fac010ee7719", "scanner": "scanner-primary", "fingerprint": "0a30d680dfb3989b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dd92fbe0189e5724", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/expanded-cohort-integrity-trial-001.ts:51"}, "properties": {"repobilityId": "e469c490b2ea0217", "scanner": "scanner-primary", "fingerprint": "dd92fbe0189e5724", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-64d616da778844f0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/semantic-consistency-released-codes-trial-001.ts:219"}, "properties": {"repobilityId": "880ca0488e5b763f", "scanner": "scanner-primary", "fingerprint": "64d616da778844f0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e53b848450170a59", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/adversarial-set-2-contract-trial-001.ts:318"}, "properties": {"repobilityId": "e349ec076a0cada4", "scanner": "scanner-primary", "fingerprint": "e53b848450170a59", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4776d3285a9dfbd8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/opus-audit-a4r197b-trial-001.ts:132"}, "properties": {"repobilityId": "832fa5d34ef65779", "scanner": "scanner-primary", "fingerprint": "4776d3285a9dfbd8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7cf945883a9d44a5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-integrity-a4r222max-trial-001.ts:73"}, "properties": {"repobilityId": "78de21d1a550131a", "scanner": "scanner-primary", "fingerprint": "7cf945883a9d44a5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-af949946afcd1f55", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-thebaud-pfpm-sequence-recovery-trial-001.ts:71"}, "properties": {"repobilityId": "bd66b8cfefd643d6", "scanner": "scanner-primary", "fingerprint": "af949946afcd1f55", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ff16b22242de4c9b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-batch3-trial-001.ts:214"}, "properties": {"repobilityId": "86cbcbabf003f1b2", "scanner": "scanner-primary", "fingerprint": "ff16b22242de4c9b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a470f765bd240e1c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-released-code-typing-trial-001.ts:213"}, "properties": {"repobilityId": "7db43d009a717859", "scanner": "scanner-primary", "fingerprint": "a470f765bd240e1c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8536dc4eb8822a73", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-adapter-a4r218max-trial-001.ts:76"}, "properties": {"repobilityId": "54a0d15b27bebd00", "scanner": "scanner-primary", "fingerprint": "8536dc4eb8822a73", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d45f62a46f60d7c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-traversal-exhaustive-leaf-trial-001.ts:383"}, "properties": {"repobilityId": "e0a3a57fd2f2c30d", "scanner": "scanner-primary", "fingerprint": "d45f62a46f60d7c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d58dc2a223aa493", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-workflow-trial-001.ts:35"}, "properties": {"repobilityId": "d6dba745cc379be7", "scanner": "scanner-primary", "fingerprint": "9d58dc2a223aa493", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-74a2edbb0fac30ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-post-batch3-metrics-trial-001.ts:100"}, "properties": {"repobilityId": "4f12ce4f7552eb76", "scanner": "scanner-primary", "fingerprint": "74a2edbb0fac30ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-53a3a464d50b09c9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/calibration-corpus-closure-a4r205big-trial-001.ts:217"}, "properties": {"repobilityId": "c4887bacc52b5c12", "scanner": "scanner-primary", "fingerprint": "53a3a464d50b09c9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2e4fc6c6cb6bd3ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-performance-a4r222max-trial-001.ts:62"}, "properties": {"repobilityId": "608bc301be81b797", "scanner": "scanner-primary", "fingerprint": "2e4fc6c6cb6bd3ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a3f5cf2a7eeb3565", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/reviewer-output-api-trial-001.ts:205"}, "properties": {"repobilityId": "ac20fbd9e06fed9d", "scanner": "scanner-primary", "fingerprint": "a3f5cf2a7eeb3565", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eb65491c60408b43", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-preintegration-regression-trial-001.ts:240"}, "properties": {"repobilityId": "03f1c7fd92aac3b9", "scanner": "scanner-primary", "fingerprint": "eb65491c60408b43", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e60b83b218b0cd5b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-enforcement-hardening-trial-001.ts:258"}, "properties": {"repobilityId": "a4569e5571d71c14", "scanner": "scanner-primary", "fingerprint": "e60b83b218b0cd5b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b8630e8a57683bb2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-source-recovery-continuation-trial-001.ts:101"}, "properties": {"repobilityId": "2338a815398d230e", "scanner": "scanner-primary", "fingerprint": "b8630e8a57683bb2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9eacb6c764a5c252", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-db-real-trial-001.ts:50"}, "properties": {"repobilityId": "9206e1d7fe0bc867", "scanner": "scanner-primary", "fingerprint": "9eacb6c764a5c252", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ea7768ffd23f4338", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-audit-trial-001.ts:50"}, "properties": {"repobilityId": "a2532607b633414c", "scanner": "scanner-primary", "fingerprint": "ea7768ffd23f4338", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-22819a270ed74913", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/author-decision-intake-a4r202d-trial-001.ts:166"}, "properties": {"repobilityId": "009278f158cd4bbc", "scanner": "scanner-primary", "fingerprint": "22819a270ed74913", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-46f59c79e554cb2e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/combined-synthetic-blueprint-a4r198a-trial-001.ts:137"}, "properties": {"repobilityId": "b635e570dae310ec", "scanner": "scanner-primary", "fingerprint": "46f59c79e554cb2e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4c4745893923dd9e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/risk-profile-dashboard-trial-001.ts:54"}, "properties": {"repobilityId": "c8a4283daef807e5", "scanner": "scanner-primary", "fingerprint": "4c4745893923dd9e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e06b67c886d2074d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/frontend-responsive-readiness-trial-001.ts:159"}, "properties": {"repobilityId": "1eb9409ae264f761", "scanner": "scanner-primary", "fingerprint": "e06b67c886d2074d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2862aba8a650d24a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/top3-author-dossiers-a4r202c-trial-001.ts:146"}, "properties": {"repobilityId": "bcb88ef1c55009ab", "scanner": "scanner-primary", "fingerprint": "2862aba8a650d24a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f7488bcd5e6bc7b7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/fixture-candidate-authorization-a4r209big-trial-001.ts:259"}, "properties": {"repobilityId": "f9581a89b31bc75f", "scanner": "scanner-primary", "fingerprint": "f7488bcd5e6bc7b7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-325bf1dee7f94eea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/author-node-intake-adapter-trial-001.ts:396"}, "properties": {"repobilityId": "f22886208de8f346", "scanner": "scanner-primary", "fingerprint": "325bf1dee7f94eea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1baeac62afeb85e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-consolidated-metrics-trial-001.ts:113"}, "properties": {"repobilityId": "c48387a8ef7d3c23", "scanner": "scanner-primary", "fingerprint": "b1baeac62afeb85e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8cf551b86ed65f76", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-traversal-skeleton-trial-001.ts:139"}, "properties": {"repobilityId": "ec55d4a100bf1866", "scanner": "scanner-primary", "fingerprint": "8cf551b86ed65f76", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cf98970fc4b13466", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-copterline-s76-trial-001.ts:182"}, "properties": {"repobilityId": "d304b98808806d76", "scanner": "scanner-primary", "fingerprint": "cf98970fc4b13466", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4edfb8376c22b843", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-traversal-wiring-trial-001.ts:300"}, "properties": {"repobilityId": "b9a7c0af1f2303ff", "scanner": "scanner-primary", "fingerprint": "4edfb8376c22b843", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9c47e52103639ad2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-generalization-validation-trial-001.ts:7"}, "properties": {"repobilityId": "90194116b1524f5d", "scanner": "scanner-primary", "fingerprint": "9c47e52103639ad2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f4c83a70674ffcfe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/frontend-auth-tenant-readiness-trial-001.ts:213"}, "properties": {"repobilityId": "dea5cb3d4c24de59", "scanner": "scanner-primary", "fingerprint": "f4c83a70674ffcfe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-89e346fa5bc73df8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/sera-vnext-checkpoint-roadmap-closure-trial-001.ts:167"}, "properties": {"repobilityId": "966d316ef085b1d2", "scanner": "scanner-primary", "fingerprint": "89e346fa5bc73df8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-72eba91101fce91a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-enforcement-topology-trial-001.ts:314"}, "properties": {"repobilityId": "2dc861d5b07b0a86", "scanner": "scanner-primary", "fingerprint": "72eba91101fce91a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-735815f109203e63", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-ui-real-trial-001.ts:189"}, "properties": {"repobilityId": "8a0b2bdd2edc28a6", "scanner": "scanner-primary", "fingerprint": "735815f109203e63", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0bd49d0002c4a268", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-alpha-integrity-trial-001.ts:92"}, "properties": {"repobilityId": "c553245397910dc6", "scanner": "scanner-primary", "fingerprint": "0bd49d0002c4a268", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3743a93362981a32", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-materialization-blueprint-trial-001.ts:106"}, "properties": {"repobilityId": "60653f888c74adc4", "scanner": "scanner-primary", "fingerprint": "3743a93362981a32", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4009032b777ecf84", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-pilot-trial-001.ts:108"}, "properties": {"repobilityId": "6ea631a9a88122b7", "scanner": "scanner-primary", "fingerprint": "4009032b777ecf84", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fca7ed233911f1f8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/fixture-gate-dry-run-a4r207big-trial-001.ts:316"}, "properties": {"repobilityId": "33d4d7ac09652fa4", "scanner": "scanner-primary", "fingerprint": "fca7ed233911f1f8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-85efcf4238a26f02", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/frontend-data-parity-real-trial-001.ts:26"}, "properties": {"repobilityId": "3d3aada9db88bcb2", "scanner": "scanner-primary", "fingerprint": "85efcf4238a26f02", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-48978588c2b06860", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-enforcement-diagnostics-trial-001.ts:375"}, "properties": {"repobilityId": "f705b34861d75fe7", "scanner": "scanner-primary", "fingerprint": "48978588c2b06860", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3d13b7002145c6cf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-alpha-candidate-only-trial-001.ts:109"}, "properties": {"repobilityId": "adc3e22af00029e6", "scanner": "scanner-primary", "fingerprint": "3d13b7002145c6cf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-879bd0d1255ca36e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/human-pilot-metrics-trial-001.ts:32"}, "properties": {"repobilityId": "b69838978eb2820a", "scanner": "scanner-primary", "fingerprint": "879bd0d1255ca36e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5225e522a80c2399", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/batch1-source-recovery-a4r197e-trial-001.ts:155"}, "properties": {"repobilityId": "b6534bf7381c11fd", "scanner": "scanner-primary", "fingerprint": "5225e522a80c2399", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-04dc7b4b38ddc7fd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/authenticated-smoke-a4r223max-trial-001.ts:221"}, "properties": {"repobilityId": "b02cea363d1b2b50", "scanner": "scanner-primary", "fingerprint": "04dc7b4b38ddc7fd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-096f94d03446c9a8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/staging-tenant-isolation-a4r224max-trial-001.ts:211"}, "properties": {"repobilityId": "e6a0b215484f1f6f", "scanner": "scanner-primary", "fingerprint": "096f94d03446c9a8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9984cad71a40a4ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/staging-integrity-a4r224max-trial-001.ts:105"}, "properties": {"repobilityId": "ece45424b98f5173", "scanner": "scanner-primary", "fingerprint": "9984cad71a40a4ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fbe81819c449f34e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-module-a4r220max-trial-001.ts:190"}, "properties": {"repobilityId": "40da17d5bef5138a", "scanner": "scanner-primary", "fingerprint": "fbe81819c449f34e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f60febacaaf22a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-pfpm-design-audit-trial-001.ts:71"}, "properties": {"repobilityId": "7cefd1558a18fcef", "scanner": "scanner-primary", "fingerprint": "0f60febacaaf22a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e1b08d7aa337c051", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-batch2-trial-001.ts:271"}, "properties": {"repobilityId": "c1f1b81b4f41213f", "scanner": "scanner-primary", "fingerprint": "e1b08d7aa337c051", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-caa72da6095c853f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/staging-rollback-a4r224max-trial-001.ts:85"}, "properties": {"repobilityId": "0f175b16f1b6bfa8", "scanner": "scanner-primary", "fingerprint": "caa72da6095c853f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d016c6b64b7e7f33", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/fixture-candidate-package-a4r208big-trial-001.ts:263"}, "properties": {"repobilityId": "46dc50c0ea6bfba1", "scanner": "scanner-primary", "fingerprint": "d016c6b64b7e7f33", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-316d77bb2fc9a372", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/typecheck-closure-runtime-gate-a4r217max-trial-001.ts:201"}, "properties": {"repobilityId": "ad91aed06fbfd394", "scanner": "scanner-primary", "fingerprint": "316d77bb2fc9a372", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-12184fb606628642", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/canonical-tree-trial-001.ts:112"}, "properties": {"repobilityId": "6c89756cdfaffb41", "scanner": "scanner-primary", "fingerprint": "12184fb606628642", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb74720c054913d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/dry-run-trial-set-1.ts:568"}, "properties": {"repobilityId": "dac79113c34ffb6c", "scanner": "scanner-primary", "fingerprint": "cb74720c054913d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-76c0841290eb7996", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-harness-a4r219max-trial-001.ts:50"}, "properties": {"repobilityId": "8e64bc2a9894ebdf", "scanner": "scanner-primary", "fingerprint": "76c0841290eb7996", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-51a4c52e3689a15a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-endpoint-page-a4r221max-trial-001.ts:59"}, "properties": {"repobilityId": "d86101370bc35389", "scanner": "scanner-primary", "fingerprint": "51a4c52e3689a15a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3898040b8bf353d1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/real-event-reentry-post-american-965-metrics-trial-001.ts:127"}, "properties": {"repobilityId": "46ad6b082ab5bda0", "scanner": "scanner-primary", "fingerprint": "3898040b8bf353d1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7cf20e9dd7fe480c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-regression-trial-001.ts:8"}, "properties": {"repobilityId": "579676fc877e0ee1", "scanner": "scanner-primary", "fingerprint": "7cf20e9dd7fe480c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c018654f8ada5888", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-determinism-trial-001.ts:8"}, "properties": {"repobilityId": "f2cdc2866becd01a", "scanner": "scanner-primary", "fingerprint": "c018654f8ada5888", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0c1d7b57f8f01c99", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/escape-point-enforcement-trial-001.ts:295"}, "properties": {"repobilityId": "6948a12d7d6ec272", "scanner": "scanner-primary", "fingerprint": "0c1d7b57f8f01c99", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-650cbcbd339fd2eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v0-adversarial-trial-001.ts:8"}, "properties": {"repobilityId": "1a36e641b6d0fe29", "scanner": "scanner-primary", "fingerprint": "650cbcbd339fd2eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2af57c8aadcb7acc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/daumas-prior-work-reconciliation-trial-001.ts:223"}, "properties": {"repobilityId": "9913d449194730f0", "scanner": "scanner-primary", "fingerprint": "2af57c8aadcb7acc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8a8f9373bb8acebe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/runtime-fail-closed-a4r221max-trial-001.ts:78"}, "properties": {"repobilityId": "59c58586fae320ae", "scanner": "scanner-primary", "fingerprint": "8a8f9373bb8acebe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a1374744c7d08131", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/final-methodology-closure-trial-001.ts:90"}, "properties": {"repobilityId": "c31c207861ab9aa3", "scanner": "scanner-primary", "fingerprint": "a1374744c7d08131", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f61ccb0d19c7b414", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-beta-api-real-trial-001.ts:254"}, "properties": {"repobilityId": "e322498b7cd1ccda", "scanner": "scanner-primary", "fingerprint": "f61ccb0d19c7b414", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8cf7728108b81e59", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/managed-staging-activation-a4r224max-trial-001.ts:187"}, "properties": {"repobilityId": "541f79b4a598daa0", "scanner": "scanner-primary", "fingerprint": "8cf7728108b81e59", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c4bb02809354923e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/manual-classification-trial-001.ts:329"}, "properties": {"repobilityId": "6019983eb2f550e0", "scanner": "scanner-primary", "fingerprint": "c4bb02809354923e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b57b1bae798f52f8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/synthetic-pilot-gap001-pfpm-design-trial-001.ts:56"}, "properties": {"repobilityId": "3ef6c6f0f3054385", "scanner": "scanner-primary", "fingerprint": "b57b1bae798f52f8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4520306e4b14fa88", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/evidence-categories-passive-trial-001.ts:176"}, "properties": {"repobilityId": "96fa5cde4e7e2fc7", "scanner": "scanner-primary", "fingerprint": "4520306e4b14fa88", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6539848fc8b1e5fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/opus-review-source-recovery-campaign-plan-trial-001.ts:127"}, "properties": {"repobilityId": "b57f9aaf6b055cee", "scanner": "scanner-primary", "fingerprint": "6539848fc8b1e5fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d7272a6a837871f6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/frontend-error-observability-trial-001.ts:134"}, "properties": {"repobilityId": "5dd288357b0d3d6f", "scanner": "scanner-primary", "fingerprint": "d7272a6a837871f6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bb4aa8d7a9435e37", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/opus-gap-prioritization-a4r197c-trial-001.ts:152"}, "properties": {"repobilityId": "4d40e3a91db0ed5b", "scanner": "scanner-primary", "fingerprint": "bb4aa8d7a9435e37", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a6299059236b605", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/daumas-calibration-extraction-a4r203a-trial-001.ts:221"}, "properties": {"repobilityId": "979914c7f76d57c8", "scanner": "scanner-primary", "fingerprint": "3a6299059236b605", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9ca04e0f102d7508", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/author-node-intake-diagnostics-trial-001.ts:300"}, "properties": {"repobilityId": "efbf7e67a145f3ef", "scanner": "scanner-primary", "fingerprint": "9ca04e0f102d7508", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-56b9aa8f5639c6c4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-alpha-security-trial-001.ts:208"}, "properties": {"repobilityId": "5641124e4d3bf02b", "scanner": "scanner-primary", "fingerprint": "56b9aa8f5639c6c4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-562b1d23a769d49a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/risk-profile-real-trial-001.ts:30"}, "properties": {"repobilityId": "9d49edbfbcb450d3", "scanner": "scanner-primary", "fingerprint": "562b1d23a769d49a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d03db9f1a77c674d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/unified-adapter-trial-001.ts:17"}, "properties": {"repobilityId": "3a07ceb3e0cb513b", "scanner": "scanner-primary", "fingerprint": "d03db9f1a77c674d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5fec9a90e259527e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/provenance-api-real-trial-001.ts:215"}, "properties": {"repobilityId": "45ac3b9ee3d61f95", "scanner": "scanner-primary", "fingerprint": "5fec9a90e259527e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-31691747b90deebf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/dashboard-risk-profile-e2e-trial-001.ts:98"}, "properties": {"repobilityId": "9063582d8cb274e2", "scanner": "scanner-primary", "fingerprint": "31691747b90deebf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-41ce9efd557d6ff0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/error-sanitization-trial-001.ts:13"}, "properties": {"repobilityId": "ff1ed7f744bfa696", "scanner": "scanner-primary", "fingerprint": "41ce9efd557d6ff0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-68beb19b9fc2807a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/final-output-lock-trial-001.ts:13"}, "properties": {"repobilityId": "53c02f4fabeaad45", "scanner": "scanner-primary", "fingerprint": "68beb19b9fc2807a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-beeb1b0d767bdc72", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/canonical-routing-dynamic-real-trial-001.ts:111"}, "properties": {"repobilityId": "1ff22a0f54918b0e", "scanner": "scanner-primary", "fingerprint": "beeb1b0d767bdc72", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dfdbdfddaf68aaf5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/risk-profile-provenance-trial-001.ts:12"}, "properties": {"repobilityId": "b2043c8339ab782a", "scanner": "scanner-primary", "fingerprint": "dfdbdfddaf68aaf5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-72815c4399fc323d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/feature-flags-trial-001.ts:17"}, "properties": {"repobilityId": "d50c3c37cf308b66", "scanner": "scanner-primary", "fingerprint": "72815c4399fc323d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-98a597a870690565", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/risk-profile-endpoint-parity-real-trial-001.ts:134"}, "properties": {"repobilityId": "b60849e4ce3c23ed", "scanner": "scanner-primary", "fingerprint": "98a597a870690565", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d6be4a66ee008ab6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/provenance-model-trial-001.ts:13"}, "properties": {"repobilityId": "199baed182d74382", "scanner": "scanner-primary", "fingerprint": "d6be4a66ee008ab6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a5bc3e0d0469d818", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/provenance-db-real-trial-001.ts:29"}, "properties": {"repobilityId": "e58d95e4fe16b88a", "scanner": "scanner-primary", "fingerprint": "a5bc3e0d0469d818", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-980b7e17877cf778", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/error-observability-e2e-trial-001.ts:137"}, "properties": {"repobilityId": "45baeba579e114da", "scanner": "scanner-primary", "fingerprint": "980b7e17877cf778", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17f8b9d60aef5b90", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/v02-guardrail-api-ui-trial-001.ts:174"}, "properties": {"repobilityId": "c0128cdf5c74341f", "scanner": "scanner-primary", "fingerprint": "17f8b9d60aef5b90", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d6370e7807c147b8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/provenance-rls-real-trial-001.ts:46"}, "properties": {"repobilityId": "451f996cf7b310f2", "scanner": "scanner-primary", "fingerprint": "d6370e7807c147b8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6f22a74bfb0fa7ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/provenance-reanalysis-api-real-trial-001.ts:167"}, "properties": {"repobilityId": "27009bd455e84782", "scanner": "scanner-primary", "fingerprint": "6f22a74bfb0fa7ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-af237c3af11607eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/product-unification/canonical-routing-real-trial-001.ts:154"}, "properties": {"repobilityId": "31be0011a56b7e01", "scanner": "scanner-primary", "fingerprint": "af237c3af11607eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0e060a33c47192f1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-v02/reachability/run-reachability.ts:47"}, "properties": {"repobilityId": "29e655ef5b32bcce", "scanner": "scanner-primary", "fingerprint": "0e060a33c47192f1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-30ffad3e84a19d9b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-validation-v03-naturalistic/run-all.ts:246"}, "properties": {"repobilityId": "69834918a2d0dd9d", "scanner": "scanner-primary", "fingerprint": "30ffad3e84a19d9b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7e20170227e2b600", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-validation-v02/run-all.ts:405"}, "properties": {"repobilityId": "5b20d492dafe6ccc", "scanner": "scanner-primary", "fingerprint": "7e20170227e2b600", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-945977b1c309ab28", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-validation-v0/run-all.ts:163"}, "properties": {"repobilityId": "168816b158758bb5", "scanner": "scanner-primary", "fingerprint": "945977b1c309ab28", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05eccc32ec90b396", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/purge-execute-synthetic-real-trial-001.ts:141"}, "properties": {"repobilityId": "560073dcce53a0cf", "scanner": "scanner-primary", "fingerprint": "05eccc32ec90b396", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8feef0dfda252fdb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/event-deletion-ui-real-trial-001.ts:202"}, "properties": {"repobilityId": "e8a9a11331f038d0", "scanner": "scanner-primary", "fingerprint": "8feef0dfda252fdb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8209f41e6533e002", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/event-delete-corrective-action-block-trial-001.ts:16"}, "properties": {"repobilityId": "2905b0630c9c42d8", "scanner": "scanner-primary", "fingerprint": "8209f41e6533e002", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-929b561622baa50b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/complete-event-deletion-real-trial-001.ts:379"}, "properties": {"repobilityId": "ebb775797da2b52f", "scanner": "scanner-primary", "fingerprint": "929b561622baa50b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cccd992b88771d1e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/error-sanitization-contract-trial-001.ts:58"}, "properties": {"repobilityId": "a42ccb80c44976b5", "scanner": "scanner-primary", "fingerprint": "cccd992b88771d1e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-09beecbcffbc188f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/hard-delete-disabled-trial-001.ts:15"}, "properties": {"repobilityId": "6d3a348812442289", "scanner": "scanner-primary", "fingerprint": "09beecbcffbc188f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-73be2941f2d043db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/event-delete-storage-dry-run-trial-001.ts:18"}, "properties": {"repobilityId": "6a82c544364f563f", "scanner": "scanner-primary", "fingerprint": "73be2941f2d043db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-84e0978425d203dd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/event-deletion/atomicity-rpc-contract-trial-001.ts:72"}, "properties": {"repobilityId": "6735d3d655457fe7", "scanner": "scanner-primary", "fingerprint": "84e0978425d203dd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-be8f79f9f1578483", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera-vnext/engine-validation-v01/run-all.ts:230"}, "properties": {"repobilityId": "6c97640c5083b64e", "scanner": "scanner-primary", "fingerprint": "be8f79f9f1578483", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9c91bcf624f846e1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/product/test-trial-usage.ts:10"}, "properties": {"repobilityId": "65fd5e4bfaacfa4a", "scanner": "scanner-primary", "fingerprint": "9c91bcf624f846e1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dbe2fb66fdfa7d03", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/run.ts:35"}, "properties": {"repobilityId": "2825a8ebc955a22d", "scanner": "scanner-primary", "fingerprint": "dbe2fb66fdfa7d03", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-901416d50b8e0ef9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/objective-generalization-static.ts:161"}, "properties": {"repobilityId": "78228d0d20880074", "scanner": "scanner-primary", "fingerprint": "901416d50b8e0ef9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ffcb2b64253a701c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/compare-baseline.ts:60"}, "properties": {"repobilityId": "e8a76eae8d8371e8", "scanner": "scanner-primary", "fingerprint": "ffcb2b64253a701c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-56ce2e2b1b6b92c8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/test-data-confidence.ts:22"}, "properties": {"repobilityId": "1f3522862c05907b", "scanner": "scanner-primary", "fingerprint": "56ce2e2b1b6b92c8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4f6fbd1d71ee534f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/report.ts:24"}, "properties": {"repobilityId": "8957b6cf5eea1c64", "scanner": "scanner-primary", "fingerprint": "4f6fbd1d71ee534f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-afbf6a423911b465", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/coverage.ts:120"}, "properties": {"repobilityId": "529d35c726b51e68", "scanner": "scanner-primary", "fingerprint": "afbf6a423911b465", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-826748dc4159c891", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/test-erc-modal.ts:21"}, "properties": {"repobilityId": "d6073b2ddd806a0b", "scanner": "scanner-primary", "fingerprint": "826748dc4159c891", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b0a0b81230804c84", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/preconditions-generalization-static.ts:92"}, "properties": {"repobilityId": "1af62341172dd768", "scanner": "scanner-primary", "fingerprint": "b0a0b81230804c84", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2a8de88ba265a52e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/test-erc-api-ui-contract.ts:36"}, "properties": {"repobilityId": "7fa77ffa7ac7413f", "scanner": "scanner-primary", "fingerprint": "2a8de88ba265a52e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f4d74614aeb7ba8e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/assert-sera-causal-report-clean.js:76"}, "properties": {"repobilityId": "7e8af39b93ba6717", "scanner": "scanner-primary", "fingerprint": "f4d74614aeb7ba8e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-abe8a0c65d155c99", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/interview-sufficiency-static.ts:95"}, "properties": {"repobilityId": "f747f63e63bb189f", "scanner": "scanner-primary", "fingerprint": "abe8a0c65d155c99", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4abdfde7b5458923", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/test-erc-conversion.ts:38"}, "properties": {"repobilityId": "3fffd2eb4de882cd", "scanner": "scanner-primary", "fingerprint": "4abdfde7b5458923", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-24c88654a74c70b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/runner.ts:64"}, "properties": {"repobilityId": "b3b5f215941a3256", "scanner": "scanner-primary", "fingerprint": "24c88654a74c70b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6229abaea8f6d10d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/test-risk-quality-trend.ts:23"}, "properties": {"repobilityId": "3f93ecc4e8efd8b2", "scanner": "scanner-primary", "fingerprint": "6229abaea8f6d10d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eaf9e3d1847fd41f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/analyze-precondition-critical-recall.ts:118"}, "properties": {"repobilityId": "860d3be6c4769ab7", "scanner": "scanner-primary", "fingerprint": "eaf9e3d1847fd41f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-60aadf23b6cfbe09", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/test-safety-issue-candidates.ts:25"}, "properties": {"repobilityId": "24bd738a569d7b45", "scanner": "scanner-primary", "fingerprint": "60aadf23b6cfbe09", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e03abbb3708e61c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/preconditions-static.ts:104"}, "properties": {"repobilityId": "224acf805684c0c9", "scanner": "scanner-primary", "fingerprint": "e03abbb3708e61c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-33a51b50e27e3b9d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/analyze-risk-validation-contract.ts:151"}, "properties": {"repobilityId": "c05ec560325e737c", "scanner": "scanner-primary", "fingerprint": "33a51b50e27e3b9d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-90ab87436f10f53e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sera/test-erc-presentation.ts:21"}, "properties": {"repobilityId": "1504da1a16016319", "scanner": "scanner-primary", "fingerprint": "90ab87436f10f53e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-667ac97fa8c1e65a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/sera-vnext/opus-closure-verification-114b5fc/independent-case-runner.ts:173"}, "properties": {"repobilityId": "46afea3051272af4", "scanner": "scanner-primary", "fingerprint": "667ac97fa8c1e65a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c0525808b8e56bc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/run-sera-vnext-regression.ts:149"}, "properties": {"repobilityId": "50845d8cd5f4b0a2", "scanner": "scanner-primary", "fingerprint": "2c0525808b8e56bc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-61c1ca38235aaaae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/assert-sera-report-clean.js:99"}, "properties": {"repobilityId": "22735ed1307ea5b8", "scanner": "scanner-primary", "fingerprint": "61c1ca38235aaaae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-80b63ca322864dc1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sera-vnext/reconcile-duplicate-events.ts:222"}, "properties": {"repobilityId": "ed64ef21480c52da", "scanner": "scanner-primary", "fingerprint": "80b63ca322864dc1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-410f4d0c7242a922", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sera-vnext/inventory-events.ts:149"}, "properties": {"repobilityId": "b44ad66b5f946405", "scanner": "scanner-primary", "fingerprint": "410f4d0c7242a922", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa8c9aca42807dcc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sera-vnext/find-duplicate-events.ts:372"}, "properties": {"repobilityId": "1eba511f7780f059", "scanner": "scanner-primary", "fingerprint": "aa8c9aca42807dcc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d63da3583b14afc0", "level": "warning", "message": {"text": "Dockerfile runs as root: Dockerfile"}, "properties": {"repobilityId": "a2ed1bd120e507db", "scanner": "scanner-primary", "fingerprint": "d63da3583b14afc0", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-ce1fec675e91d850", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim-bookworm"}, "properties": {"repobilityId": "b670476427eddbca", "scanner": "scanner-primary", "fingerprint": "ce1fec675e91d850", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1f66ad88286ca30a", "level": "warning", "message": {"text": "Dockerfile runs as root: backend/Dockerfile"}, "properties": {"repobilityId": "7afd2b0e8a8c9eeb", "scanner": "scanner-primary", "fingerprint": "1f66ad88286ca30a", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-96f86999eb078087", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim-bookworm"}, "properties": {"repobilityId": "8c013c28ad246cce", "scanner": "scanner-primary", "fingerprint": "96f86999eb078087", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-a399389f5f17b106", "level": "error", "message": {"text": "Runtime dotenv file present in repo: frontend/.env.production"}, "properties": {"repobilityId": "f727d22a89e309c5", "scanner": "scanner-primary", "fingerprint": "a399389f5f17b106", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/.env.production"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3c44b84cac72e8ad", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components/FlowDiagram.tsx:26"}, "properties": {"repobilityId": "7bff6caa14725558", "scanner": "scanner-primary", "fingerprint": "3c44b84cac72e8ad", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/FlowDiagram.tsx"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-9f6d1f5762318ee9", "level": "error", "message": {"text": "Possible secret in frontend/src/components/sera/DocumentUpload.tsx"}, "properties": {"repobilityId": "f1a8453d3942aa22", "scanner": "scanner-primary", "fingerprint": "9f6d1f5762318ee9", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/sera/DocumentUpload.tsx"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-41609561ec2c1528", "level": "error", "message": {"text": "Possible secret in docs/sera-vnext/source-corpus/official-reports/a4r105-curated/KEGWORTH-GOBME-AAIB-4-1990.html"}, "properties": {"repobilityId": "d6b8b89f1f1559f5", "scanner": "scanner-primary", "fingerprint": "41609561ec2c1528", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/sera-vnext/source-corpus/official-reports/a4r105-curated/KEGWORTH-GOBME-AAIB-4-1990.html"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-ef078c3509f868f2", "level": "error", "message": {"text": "Possible secret in docs/sera-vnext/source-corpus/official-reports/a4r105-curated/G-BLUN-OFFSHORE-AAIB-AAR-7-2008.html"}, "properties": {"repobilityId": "20d17010d70c9db4", "scanner": "scanner-primary", "fingerprint": "ef078c3509f868f2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/sera-vnext/source-corpus/official-reports/a4r105-curated/G-BLUN-OFFSHORE-AAIB-AAR-7-2008.html"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-dc7512a0fd20426a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in docs/sera-vnext/candidate-runner-a4r175/validate-reference-p1b-candidate-runner.mjs:3"}, "properties": {"repobilityId": "ed4e67e7bcc109bc", "scanner": "scanner-primary", "fingerprint": "dc7512a0fd20426a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/sera-vnext/candidate-runner-a4r175/validate-reference-p1b-candidate-runner.mjs"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-eb4e36fed656d969", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in docs/sera-vnext/candidate-runner-a4r175/validate-reference-p1-candidate-suite.mjs:3"}, "properties": {"repobilityId": "f1257112ffef7c90", "scanner": "scanner-primary", "fingerprint": "eb4e36fed656d969", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/sera-vnext/candidate-runner-a4r175/validate-reference-p1-candidate-suite.mjs"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-b7c3c07a3e3ce3bf", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/run-sera-vnext-regression.ts:1"}, "properties": {"repobilityId": "30753d0b51c4d937", "scanner": "scanner-primary", "fingerprint": "b7c3c07a3e3ce3bf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/run-sera-vnext-regression.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-720832316a5798ed", "level": "note", "message": {"text": "Very large file: setup-sera-tests.mjs (881 lines)"}, "properties": {"repobilityId": "033b68a39dbdcf50", "scanner": "scanner-primary", "fingerprint": "720832316a5798ed", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3ee4fb8a1b6f7dfe", "level": "note", "message": {"text": "Very large file: frontend/src/app/page.tsx (1145 lines)"}, "properties": {"repobilityId": "9a4a972451c48ae9", "scanner": "scanner-primary", "fingerprint": "3ee4fb8a1b6f7dfe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9bac6b432a62f7a9", "level": "note", "message": {"text": "Very large file: frontend/src/app/(dashboard)/risk-profile/page.tsx (2108 lines)"}, "properties": {"repobilityId": "6303a88f548b94a5", "scanner": "scanner-primary", "fingerprint": "9bac6b432a62f7a9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8e0058747b006f4a", "level": "note", "message": {"text": "Very large file: frontend/src/lib/sera/pipeline.ts (2377 lines)"}, "properties": {"repobilityId": "ea02e11e8162dd10", "scanner": "scanner-primary", "fingerprint": "8e0058747b006f4a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0fe5a9f9a2c78996", "level": "note", "message": {"text": "Very large file: frontend/src/lib/sera/all-steps.ts (3895 lines)"}, "properties": {"repobilityId": "f1254b85b08c77f8", "scanner": "scanner-primary", "fingerprint": "0fe5a9f9a2c78996", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "e3dc021619cb2fff", "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": "72ef41e0fed0e3d3", "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": "5182420b01289d62", "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": "04ee474aadd18cba", "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": "c970085dc5cd31a3", "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": "ec108d09035becb8", "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": "04f0b656a9611e96", "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": "604e422e01a19974", "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": "60865d7a05f65ccd", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-788c50d46fa2dd04", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/middleware.ts:92"}, "properties": {"repobilityId": "34cd1ea6c36d3025", "scanner": "scanner-primary", "fingerprint": "788c50d46fa2dd04", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4d8e5cc1baaaa734", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/(dashboard)/events/new/page.tsx:132"}, "properties": {"repobilityId": "9dbf72470b6ec2e4", "scanner": "scanner-primary", "fingerprint": "4d8e5cc1baaaa734", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-92535196921ab709", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/(dashboard)/admin/settings/page.tsx:66"}, "properties": {"repobilityId": "6464e6626b1a661d", "scanner": "scanner-primary", "fingerprint": "92535196921ab709", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-41741c6dc476466b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/(dashboard)/admin/ai/page.tsx:144"}, "properties": {"repobilityId": "5d7e43ca9a0d1a79", "scanner": "scanner-primary", "fingerprint": "41741c6dc476466b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fae6ac27dd61fb46", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/(dashboard)/admin/tenants/page.tsx:108"}, "properties": {"repobilityId": "f23d83f90bfc3e91", "scanner": "scanner-primary", "fingerprint": "fae6ac27dd61fb46", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d0460654c29994d7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/(dashboard)/admin/plans/page.tsx:119"}, "properties": {"repobilityId": "ee0a29517be33391", "scanner": "scanner-primary", "fingerprint": "d0460654c29994d7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2fe91d958e9f562c", "level": "note", "message": {"text": "Legacy-named symbol `SERA_PT_CANONICAL_v1` in frontend/src/lib/sera-vnext/preconditions.ts:13"}, "properties": {"repobilityId": "d3e647e7224a564a", "scanner": "scanner-primary", "fingerprint": "2fe91d958e9f562c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-175393a5c377879f", "level": "note", "message": {"text": "Legacy-named symbol `SERA_PT_CANONICAL_v1` in frontend/src/lib/sera-vnext/code-traceability.ts:12"}, "properties": {"repobilityId": "ab4322394893a77b", "scanner": "scanner-primary", "fingerprint": "175393a5c377879f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-321b45adad6285ae", "level": "note", "message": {"text": "Legacy-named symbol `SERA_PT_CANONICAL_v1` in frontend/src/lib/sera-vnext/types.ts:559"}, "properties": {"repobilityId": "53c180525c1cd7d8", "scanner": "scanner-primary", "fingerprint": "321b45adad6285ae", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e33eb7951424d120", "level": "note", "message": {"text": "Legacy-named symbol `runStep3Legacy` in frontend/src/lib/sera/all-steps.ts:2352"}, "properties": {"repobilityId": "32bb552dab30e174", "scanner": "scanner-primary", "fingerprint": "e33eb7951424d120", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0467480e81b5db5a", "level": "none", "message": {"text": "Commented-code block (11 lines) in frontend/src/lib/sera/all-steps.ts:1309"}, "properties": {"repobilityId": "c45a8889b082338a", "scanner": "scanner-primary", "fingerprint": "0467480e81b5db5a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-70870882875201f1", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/lib/sera-vnext-product/versioning.ts:12"}, "properties": {"repobilityId": "696a3e2a548a59d9", "scanner": "scanner-primary", "fingerprint": "70870882875201f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-741fda3be662e6c4", "level": "note", "message": {"text": "Legacy-named symbol `SERA_PT_CANONICAL_v1` in tests/sera-vnext/code-traceability-trial-001.ts:148"}, "properties": {"repobilityId": "407c9119f8cea320", "scanner": "scanner-primary", "fingerprint": "741fda3be662e6c4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-74a58b0e95fb84aa", "level": "note", "message": {"text": "Legacy-named symbol `SERA_PT_CANONICAL_v1` in tests/sera-vnext/reviewer-output-contract-trial-001.ts:20"}, "properties": {"repobilityId": "5a2fd4154b600dec", "scanner": "scanner-primary", "fingerprint": "74a58b0e95fb84aa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8efecd26c012f0a0", "level": "note", "message": {"text": "Legacy-named symbol `activeLegacy` in tests/sera-vnext/escape-point-enforcement-trial-001.ts:113"}, "properties": {"repobilityId": "698f321cc79699c1", "scanner": "scanner-primary", "fingerprint": "8efecd26c012f0a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a3726f052b2f67a6", "level": "note", "message": {"text": "Legacy-named symbol `response_canonical_tree_version_sera_pt_v1` in tests/sera-vnext/product-unification/provenance-api-real-trial-001.ts:89"}, "properties": {"repobilityId": "c9bac1282c84579b", "scanner": "scanner-primary", "fingerprint": "a3726f052b2f67a6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fe57c7148aeb8503", "level": "note", "message": {"text": "Legacy-named symbol `hasLegacy` in tests/sera-vnext/product-unification/risk-profile-provenance-trial-001.ts:95"}, "properties": {"repobilityId": "f6df3e51723939ba", "scanner": "scanner-primary", "fingerprint": "fe57c7148aeb8503", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-787edd6742d82563", "level": "none", "message": {"text": "Commented-code block (12 lines) in tests/sera-vnext/engine-validation-v03-naturalistic/cases.ts:37"}, "properties": {"repobilityId": "239dbe81181a4ae6", "scanner": "scanner-primary", "fingerprint": "787edd6742d82563", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-46a19b2f655b60b4", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/sera/test-erc-api-ui-contract.ts:5"}, "properties": {"repobilityId": "42b20113756f7a7d", "scanner": "scanner-primary", "fingerprint": "46a19b2f655b60b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6ab4487c169199d0", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/sera/analyze-precondition-critical-recall.ts:13"}, "properties": {"repobilityId": "c0fd0af2bf58e8ac", "scanner": "scanner-primary", "fingerprint": "6ab4487c169199d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22951e3e30ce4a06", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/app/sera/pipeline.py:9"}, "properties": {"repobilityId": "ce08d073331dff5f", "scanner": "scanner-primary", "fingerprint": "22951e3e30ce4a06", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51dbf90b6ad9e4e9", "level": "note", "message": {"text": "28 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "b01aa43f6ad2a3c8", "scanner": "scanner-primary", "fingerprint": "51dbf90b6ad9e4e9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "4255c4fe68d3fa32", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "a3d403db4258d53a", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-204b60ac93f55f32", "level": "error", "message": {"text": "Dangling fetch: GET /api/trial/status (frontend/src/components/product/TrialUsageCard.tsx:58)"}, "properties": {"repobilityId": "3a4a14dcd2e2feaf", "scanner": "scanner-primary", "fingerprint": "204b60ac93f55f32", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eb3bf72e9ce8d134", "level": "error", "message": {"text": "Dangling fetch: POST /api/org/ai-insight (frontend/src/components/sera/AiInsightPanel.tsx:51)"}, "properties": {"repobilityId": "a99666a33005f708", "scanner": "scanner-primary", "fingerprint": "eb3bf72e9ce8d134", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-90cdfe6a20362f37", "level": "error", "message": {"text": "Dangling fetch: POST /api/extract-document (frontend/src/components/sera/DocumentUpload.tsx:49)"}, "properties": {"repobilityId": "bb73a0f3d26c48b3", "scanner": "scanner-primary", "fingerprint": "90cdfe6a20362f37", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e243173c0468a60b", "level": "error", "message": {"text": "Dangling fetch: GET /api/settings/ai (frontend/src/app/(dashboard)/settings/ai/page.tsx:61)"}, "properties": {"repobilityId": "d8a37019bce16e59", "scanner": "scanner-primary", "fingerprint": "e243173c0468a60b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2168e6e5d27ac1e5", "level": "error", "message": {"text": "Dangling fetch: POST /api/settings/ai (frontend/src/app/(dashboard)/settings/ai/page.tsx:104)"}, "properties": {"repobilityId": "a101daf6fe4f7a5e", "scanner": "scanner-primary", "fingerprint": "2168e6e5d27ac1e5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0a3dfdbcc542715b", "level": "error", "message": {"text": "Dangling fetch: POST /api/settings/ai/test (frontend/src/app/(dashboard)/settings/ai/page.tsx:135)"}, "properties": {"repobilityId": "f964f5111b2ba488", "scanner": "scanner-primary", "fingerprint": "0a3dfdbcc542715b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-149826041657ea4a", "level": "error", "message": {"text": "Dangling fetch: POST /api/risk-profile/exclusions (frontend/src/app/(dashboard)/events/page.tsx:261)"}, "properties": {"repobilityId": "24f52fbbcc94317d", "scanner": "scanner-primary", "fingerprint": "149826041657ea4a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-176d91be18a49c57", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/risk-profile/exclusions/${event.risk_profile_exclusion_id} (frontend/src/app/(dashboard)/events/page.tsx:291)"}, "properties": {"repobilityId": "b7bc5a62b551da56", "scanner": "scanner-primary", "fingerprint": "176d91be18a49c57", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-caf620ff781bd4ca", "level": "error", "message": {"text": "Dangling fetch: GET /api/events/${event.id}/deletion-impact (frontend/src/app/(dashboard)/events/page.tsx:317)"}, "properties": {"repobilityId": "64ad4c0348da1e1c", "scanner": "scanner-primary", "fingerprint": "caf620ff781bd4ca", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-25088f79851d8b9f", "level": "error", "message": {"text": "Dangling fetch: POST /api/events/${deleteTarget.id}/delete-request (frontend/src/app/(dashboard)/events/page.tsx:340)"}, "properties": {"repobilityId": "5935ca0f012eed89", "scanner": "scanner-primary", "fingerprint": "25088f79851d8b9f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-188505279104de1b", "level": "error", "message": {"text": "Dangling fetch: POST /events/ (frontend/src/app/(dashboard)/events/page.tsx:241)"}, "properties": {"repobilityId": "16b7bdb70c2c77d9", "scanner": "scanner-primary", "fingerprint": "188505279104de1b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:apiCall"]}}, {"ruleId": "scanner-0e391b1752f85092", "level": "error", "message": {"text": "Dangling fetch: POST /api/actions (frontend/src/app/(dashboard)/events/[id]/page.tsx:423)"}, "properties": {"repobilityId": "3d92e89cbffa1d27", "scanner": "scanner-primary", "fingerprint": "0e391b1752f85092", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-79f68702ab28043f", "level": "error", "message": {"text": "Dangling fetch: GET /api/events/${event.id}/deletion-impact (frontend/src/app/(dashboard)/events/[id]/page.tsx:451)"}, "properties": {"repobilityId": "ab0ced59d5f489a5", "scanner": "scanner-primary", "fingerprint": "79f68702ab28043f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-92383f432878bb4c", "level": "error", "message": {"text": "Dangling fetch: POST /api/events/${event.id}/delete-request (frontend/src/app/(dashboard)/events/[id]/page.tsx:469)"}, "properties": {"repobilityId": "f4edfcc10e323d99", "scanner": "scanner-primary", "fingerprint": "92383f432878bb4c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f17b1a3264d7614e", "level": "error", "message": {"text": "Dangling fetch: POST /api/events/${event.id}/restore (frontend/src/app/(dashboard)/events/[id]/page.tsx:489)"}, "properties": {"repobilityId": "d691489ce7e3cdf1", "scanner": "scanner-primary", "fingerprint": "f17b1a3264d7614e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6455d27d0523690e", "level": "error", "message": {"text": "Dangling fetch: GET /events/${id}?scope=${scope} (frontend/src/app/(dashboard)/events/[id]/page.tsx:348)"}, "properties": {"repobilityId": "42ee5b03c479aeb3", "scanner": "scanner-primary", "fingerprint": "6455d27d0523690e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:apiCall"]}}, {"ruleId": "scanner-66aace6c556cec2c", "level": "error", "message": {"text": "Dangling fetch: POST /api/events/${id}/restore (frontend/src/app/(dashboard)/events/deleted/page.tsx:59)"}, "properties": {"repobilityId": "b208dc7ff7e2b2ab", "scanner": "scanner-primary", "fingerprint": "66aace6c556cec2c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-301df1a8789ed21f", "level": "error", "message": {"text": "Dangling fetch: POST /events/?scope=deleted (frontend/src/app/(dashboard)/events/deleted/page.tsx:41)"}, "properties": {"repobilityId": "f02f21dd4701e9fe", "scanner": "scanner-primary", "fingerprint": "301df1a8789ed21f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:apiCall"]}}, {"ruleId": "scanner-3ab91a7f855a01d2", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/stats (frontend/src/app/(dashboard)/admin/page.tsx:28)"}, "properties": {"repobilityId": "b8905085141ceade", "scanner": "scanner-primary", "fingerprint": "3ab91a7f855a01d2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4647e326bb362331", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/settings (frontend/src/app/(dashboard)/admin/settings/page.tsx:29)"}, "properties": {"repobilityId": "020893d69bc3a5e6", "scanner": "scanner-primary", "fingerprint": "4647e326bb362331", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-067f33b91ff1098d", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/admin/settings (frontend/src/app/(dashboard)/admin/settings/page.tsx:66)"}, "properties": {"repobilityId": "d04d897c6a7ed6db", "scanner": "scanner-primary", "fingerprint": "067f33b91ff1098d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eacc43845bb059fb", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/settings/password-reset (frontend/src/app/(dashboard)/admin/settings/page.tsx:89)"}, "properties": {"repobilityId": "65183d9a29898a97", "scanner": "scanner-primary", "fingerprint": "eacc43845bb059fb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-286a6cfb96d31613", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/sera-vnext/status (frontend/src/app/(dashboard)/admin/sera-vnext/page.tsx:51)"}, "properties": {"repobilityId": "4314c29ef5666e7c", "scanner": "scanner-primary", "fingerprint": "286a6cfb96d31613", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a66b3089a47e0e3a", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/sera-vnext/candidate (frontend/src/app/(dashboard)/admin/sera-vnext/candidate/page.tsx:137)"}, "properties": {"repobilityId": "21e17b1ba5c6adec", "scanner": "scanner-primary", "fingerprint": "a66b3089a47e0e3a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ec1698b6933c1ddf", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/sera-vnext/analyses?${params.toString()} (frontend/src/app/(dashboard)/admin/sera-vnext/analyses/page.tsx:47)"}, "properties": {"repobilityId": "1a2e43e59e35028e", "scanner": "scanner-primary", "fingerprint": "ec1698b6933c1ddf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-28a0e830e3beaa71", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/sera-vnext/analyses (frontend/src/app/(dashboard)/admin/sera-vnext/analyses/new/page.tsx:31)"}, "properties": {"repobilityId": "0e5e96f65dedea46", "scanner": "scanner-primary", "fingerprint": "28a0e830e3beaa71", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1c654f45a91110f6", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/sera-vnext/analyses/${params.id}/reviews (frontend/src/app/(dashboard)/admin/sera-vnext/analyses/[id]/review/page.tsx:69)"}, "properties": {"repobilityId": "e76d5ca8ed3b5573", "scanner": "scanner-primary", "fingerprint": "1c654f45a91110f6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b3b79ed9f6249563", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/settings (frontend/src/app/(dashboard)/admin/ai/page.tsx:90)"}, "properties": {"repobilityId": "69dfea928870c10c", "scanner": "scanner-primary", "fingerprint": "b3b79ed9f6249563", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c7921d532f028d9d", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/admin/settings (frontend/src/app/(dashboard)/admin/ai/page.tsx:144)"}, "properties": {"repobilityId": "d2041be2ac22a367", "scanner": "scanner-primary", "fingerprint": "c7921d532f028d9d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c5de6010ecef0c17", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/ai/test (frontend/src/app/(dashboard)/admin/ai/page.tsx:176)"}, "properties": {"repobilityId": "79d616d6e182b3cd", "scanner": "scanner-primary", "fingerprint": "c5de6010ecef0c17", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bd99256fadbd544b", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/tenants?q=${encodeURIComponent(query)} (frontend/src/app/(dashboard)/admin/tenants/page.tsx:57)"}, "properties": {"repobilityId": "4a64155e861021c4", "scanner": "scanner-primary", "fingerprint": "bd99256fadbd544b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bd20d3da5c6bfae2", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/admin/tenants/${editing.id} (frontend/src/app/(dashboard)/admin/tenants/page.tsx:108)"}, "properties": {"repobilityId": "5ed3446c1284c2d4", "scanner": "scanner-primary", "fingerprint": "bd20d3da5c6bfae2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-21f7b824c5383dca", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/settings (frontend/src/app/(dashboard)/admin/payments/page.tsx:48)"}, "properties": {"repobilityId": "269ec73ade03ac87", "scanner": "scanner-primary", "fingerprint": "21f7b824c5383dca", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7125302e924870e2", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/payments/transactions (frontend/src/app/(dashboard)/admin/payments/page.tsx:49)"}, "properties": {"repobilityId": "2993a65315b47a30", "scanner": "scanner-primary", "fingerprint": "7125302e924870e2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f46475f262b61027", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/admin/settings (frontend/src/app/(dashboard)/admin/payments/page.tsx:80)"}, "properties": {"repobilityId": "e5c39e58371ae530", "scanner": "scanner-primary", "fingerprint": "f46475f262b61027", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-79067fffe8db4fde", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/settings (frontend/src/app/(dashboard)/admin/plans/page.tsx:48)"}, "properties": {"repobilityId": "9e0105dece08bb70", "scanner": "scanner-primary", "fingerprint": "79067fffe8db4fde", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-155e00042eec073a", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/packages (frontend/src/app/(dashboard)/admin/plans/page.tsx:49)"}, "properties": {"repobilityId": "df403bd024a0ca8f", "scanner": "scanner-primary", "fingerprint": "155e00042eec073a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ba86d15d64a4ca19", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/admin/settings (frontend/src/app/(dashboard)/admin/plans/page.tsx:83)"}, "properties": {"repobilityId": "3a3ea9c5d2b06fd0", "scanner": "scanner-primary", "fingerprint": "ba86d15d64a4ca19", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-795d59d0c7c76c8e", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/admin/packages/${item.id} (frontend/src/app/(dashboard)/admin/plans/page.tsx:143)"}, "properties": {"repobilityId": "aff5f57a21bb3b1e", "scanner": "scanner-primary", "fingerprint": "795d59d0c7c76c8e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ce026e47f13f80e6", "level": "error", "message": {"text": "Dangling fetch: GET /api/actions (frontend/src/app/(dashboard)/actions/page.tsx:76)"}, "properties": {"repobilityId": "a83f15a717c2bd5f", "scanner": "scanner-primary", "fingerprint": "ce026e47f13f80e6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9b920051016599e9", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/actions/${id} (frontend/src/app/(dashboard)/actions/page.tsx:97)"}, "properties": {"repobilityId": "6414ce6395dac892", "scanner": "scanner-primary", "fingerprint": "9b920051016599e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3ddfd08b47ff6f02", "level": "error", "message": {"text": "Dangling fetch: POST /api/risk-profile/exclusions (frontend/src/app/(dashboard)/risk-profile/page.tsx:1569)"}, "properties": {"repobilityId": "708316a3fcf37eb1", "scanner": "scanner-primary", "fingerprint": "3ddfd08b47ff6f02", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-975ebe1d6686565f", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/risk-profile/exclusions/${source.exclusionId} (frontend/src/app/(dashboard)/risk-profile/page.tsx:1602)"}, "properties": {"repobilityId": "2dd089ccc7b955e6", "scanner": "scanner-primary", "fingerprint": "975ebe1d6686565f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-994c9f9fd6b06027", "level": "error", "message": {"text": "Dangling fetch: GET /api/actions (frontend/src/app/(dashboard)/reports/executive/page.tsx:33)"}, "properties": {"repobilityId": "ccba2dbaa100c5f0", "scanner": "scanner-primary", "fingerprint": "994c9f9fd6b06027", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9f1ee62b7d9df094", "level": "error", "message": {"text": "Dangling fetch: GET /api/credits (frontend/src/app/(dashboard)/credits/page.tsx:70)"}, "properties": {"repobilityId": "a7b23a57b26705f2", "scanner": "scanner-primary", "fingerprint": "9f1ee62b7d9df094", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c33a3dfa8a88a2bd", "level": "error", "message": {"text": "Dangling fetch: POST /auth/register (frontend/src/app/(auth)/register/page.tsx:27)"}, "properties": {"repobilityId": "21cde43c578053c7", "scanner": "scanner-primary", "fingerprint": "c33a3dfa8a88a2bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:apiCall"]}}, {"ruleId": "scanner-9eeb610fb7e56339", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/me (frontend/src/hooks/useMe.ts:37)"}, "properties": {"repobilityId": "35941126ec50b736", "scanner": "scanner-primary", "fingerprint": "9eeb610fb7e56339", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f5cdbbf98fe4e1f6", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/api/admin/sera-vnext/analyses?page=1&pageSize=10 (tests/sera-vnext/product-beta-api-trial-001.ts:173)"}, "properties": {"repobilityId": "e3160170e8e4fcca", "scanner": "scanner-primary", "fingerprint": "f5cdbbf98fe4e1f6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3c8bc15f93268376", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/api/admin/sera-vnext/analyses/${analysis.id} (tests/sera-vnext/product-beta-api-trial-001.ts:177)"}, "properties": {"repobilityId": "9ac1bb9aa8d24897", "scanner": "scanner-primary", "fingerprint": "3c8bc15f93268376", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5645661656a160db", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/api/admin/sera-vnext/analyses/${analysis.id}/export (tests/sera-vnext/product-beta-api-trial-001.ts:199)"}, "properties": {"repobilityId": "f2007e32b6d12143", "scanner": "scanner-primary", "fingerprint": "5645661656a160db", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-304b6f2b403d93f7", "level": "note", "message": {"text": "Unused endpoint: POST /register"}, "properties": {"repobilityId": "9fb4500c048b8973", "scanner": "scanner-primary", "fingerprint": "304b6f2b403d93f7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-618721b912bad1c2", "level": "note", "message": {"text": "Unused endpoint: POST /login"}, "properties": {"repobilityId": "8b639b9ee39ab3fd", "scanner": "scanner-primary", "fingerprint": "618721b912bad1c2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fd1dc91abf32142d", "level": "note", "message": {"text": "Unused endpoint: GET /me"}, "properties": {"repobilityId": "0fc00699633911b7", "scanner": "scanner-primary", "fingerprint": "fd1dc91abf32142d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f7af4fd8d36710ca", "level": "note", "message": {"text": "Unused endpoint: POST /oauth/bootstrap"}, "properties": {"repobilityId": "787c55ee56ff9011", "scanner": "scanner-primary", "fingerprint": "f7af4fd8d36710ca", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "41a6eb597f18e871", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a009b1a56794f45", "level": "note", "message": {"text": "Unused endpoint: POST /"}, "properties": {"repobilityId": "6d3b98635ead7705", "scanner": "scanner-primary", "fingerprint": "7a009b1a56794f45", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-39058efd4b63e7a9", "level": "note", "message": {"text": "Unused endpoint: GET /{event_id}"}, "properties": {"repobilityId": "e819d1f83bcbad61", "scanner": "scanner-primary", "fingerprint": "39058efd4b63e7a9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d5eaea18d92af7f1", "level": "note", "message": {"text": "Unused endpoint: PATCH /{action_id}"}, "properties": {"repobilityId": "9c6db7b230d043a4", "scanner": "scanner-primary", "fingerprint": "d5eaea18d92af7f1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-26d3bb1589d06372", "level": "note", "message": {"text": "Unused endpoint: GET /{analysis_id}"}, "properties": {"repobilityId": "ac8d7b8eacfc2c3b", "scanner": "scanner-primary", "fingerprint": "26d3bb1589d06372", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-70a5bf56719ffb57", "level": "note", "message": {"text": "Unused endpoint: GET /{analysis_id}/pdf"}, "properties": {"repobilityId": "494d0ac83723c9e8", "scanner": "scanner-primary", "fingerprint": "70a5bf56719ffb57", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6b42313ad7c1e8cf", "level": "note", "message": {"text": "Unused endpoint: POST /{analysis_id}/recalculate"}, "properties": {"repobilityId": "4840747891d492b4", "scanner": "scanner-primary", "fingerprint": "6b42313ad7c1e8cf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4e05dfc5df2531b3", "level": "note", "message": {"text": "Unused endpoint: GET /{analysis_id}/edits"}, "properties": {"repobilityId": "2130c77896153e91", "scanner": "scanner-primary", "fingerprint": "4e05dfc5df2531b3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9fb0e93b803faad2", "level": "note", "message": {"text": "Unused endpoint: DELETE /{analysis_id}/edits/{edit_id}"}, "properties": {"repobilityId": "191d18eee9bdb1e4", "scanner": "scanner-primary", "fingerprint": "9fb0e93b803faad2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ba6375ea0d5de8b5", "level": "note", "message": {"text": "Unused endpoint: GET /{analysis_id}/flows"}, "properties": {"repobilityId": "30bbe30b1f0514a8", "scanner": "scanner-primary", "fingerprint": "ba6375ea0d5de8b5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fa761affc2b136c7", "level": "note", "message": {"text": "Unused endpoint: GET /packages"}, "properties": {"repobilityId": "326d71bd40c4395f", "scanner": "scanner-primary", "fingerprint": "fa761affc2b136c7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d7fa8929da9cbe3f", "level": "note", "message": {"text": "Unused endpoint: GET /balance"}, "properties": {"repobilityId": "40c1aee1c8879ec3", "scanner": "scanner-primary", "fingerprint": "d7fa8929da9cbe3f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6f08d6f1fbc3efd7", "level": "note", "message": {"text": "Unused endpoint: GET /ai/providers"}, "properties": {"repobilityId": "93b7e12340b03a8e", "scanner": "scanner-primary", "fingerprint": "6f08d6f1fbc3efd7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}