{"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-ea9df8f16ec5a5f2", "name": "Stray `console.log` in TS/JS \u2014 _patch_cert.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _patch_cert.js: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-074e129eb8236721", "name": "Stray `console.log` in TS/JS \u2014 _gen_seed.js:126", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _gen_seed.js:126"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9334fee001774547", "name": "Stray `console.log` in TS/JS \u2014 _expand_script_base.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _expand_script_base.js: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-df319286f7b8d51a", "name": "Stray `console.log` in TS/JS \u2014 backend/test-db.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-db.js:5"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eaae4a77d5f7a445", "name": "Stray `console.log` in TS/JS \u2014 backend/src/instrument.ts:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/instrument.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-814930287426496d", "name": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/verify-cloud-talent.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/verify-cloud-talent.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e86296bb1b711d57", "name": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/backfill-cloud-talent.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/backfill-cloud-talent.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-208bb968771f4802", "name": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/seed-super-admin.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/seed-super-admin.ts:20"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e16aec78d818b732", "name": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/reindex-all.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/reindex-all.ts:14"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a0de77e5e17dc724", "name": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/create-talent-tenant.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/create-talent-tenant.ts:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c66213027cd80b3b", "name": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/seed-dev.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/seed-dev.ts:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-778fff424773425c", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/services/invoice.service.ts:439", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/services/invoice.service.ts:439"}, "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-6a4b84ade865b91c", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/services/admin.service.ts:1201", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/services/admin.service.ts:1201"}, "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-4d3058de40dfa7bb", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/services/auth.service.ts:1100", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/services/auth.service.ts:1100"}, "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-112c60ea629fcf00", "name": "Stray `console.log` in TS/JS \u2014 backend/src/config/service-status.ts:171", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/config/service-status.ts:171"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1b16ca82245511e4", "name": "Stray `console.log` in TS/JS \u2014 backend/src/config/telemetry.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/config/telemetry.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-03f1dcf0c0ccdaba", "name": "Stray `console.log` in TS/JS \u2014 backend/prisma/seeds/seed.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/prisma/seeds/seed.ts:6"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c68be2d581c9bf65", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/layout.tsx:235", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/layout.tsx:235"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a1fde4c4298ff209", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/company/[id]/page.tsx:563", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/company/[id]/page.tsx:563"}, "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-2f4d245e918c5048", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/billing/payment-methods/page.tsx:178", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/billing/payment-methods/page.tsx:178"}, "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-2afee11b7b590c1c", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/billing/subscriptions/page.tsx:125", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/billing/subscriptions/page.tsx:125"}, "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-f3816d367d734317", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/billing/orders/page.tsx:146", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/billing/orders/page.tsx:146"}, "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-94d2d228ac0fa455", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/billing/invoices/page.tsx:143", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/billing/invoices/page.tsx:143"}, "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-61e7050bff6ef7ca", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/admin/page.tsx:482", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/admin/page.tsx:482"}, "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-d2c1eefd9de7f36f", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/admin/jobs/page.tsx:239", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/admin/jobs/page.tsx:239"}, "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-b4fec49b92695566", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/admin/jobs/[id]/page.tsx:834", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/admin/jobs/[id]/page.tsx:834"}, "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-c1a17a3adc666c8f", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/admin/jobs/[id]/page.tsx:632", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/admin/jobs/[id]/page.tsx:632"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-baabf420b9c9b273", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/admin/analytics/page.tsx:651", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/admin/analytics/page.tsx:651"}, "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-505bd05c5e3d81d4", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/admin/tickets/page.tsx:304", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/admin/tickets/page.tsx:304"}, "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-857a18f5f1caff1e", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/admin/tickets/[id]/page.tsx:216", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/admin/tickets/[id]/page.tsx:216"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-952cfd219fcf9da7", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/page.tsx:642", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/page.tsx:642"}, "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-0d601d7e6017f1fe", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/subscriptions/page.tsx:185", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/subscriptions/page.tsx:185"}, "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-525f2e4468a43630", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/subscriptions/[id]/page.tsx:17", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/subscriptions/[id]/page.tsx:173"}, "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-315492fd20e9021f", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/plans/[id]/page.tsx:101", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/plans/[id]/page.tsx:101"}, "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-fecbad61f990b3f4", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/super-admin/billing/plans/[id]/page.tsx:302", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/super-admin/billing/plans/[id]/page.tsx:302"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-63eee2c313bb8aa0", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/transactions/[id]/page.tsx:202", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/transactions/[id]/page.tsx:202"}, "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-27ba3278981a26a6", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/orders/page.tsx:231", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/orders/page.tsx:231"}, "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-62be3c1ee5add8b7", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/orders/[id]/page.tsx:217", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/orders/[id]/page.tsx:217"}, "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-069294d4bee0c967", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/quotes/page.tsx:117", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/quotes/page.tsx:117"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-24e9f9ffa90ccffb", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/super-admin/billing/coupons/[id]/page.tsx:253", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/super-admin/billing/coupons/[id]/page.tsx:253"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-526ea20a6426279d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/jobs/page.tsx:528", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/jobs/page.tsx:528"}, "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-4c4c9c52732ae4de", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/super-admin/jobs/[id]/page.tsx:638", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/super-admin/jobs/[id]/page.tsx:638"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-70cd89761f7b8c3b", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/analytics/page.tsx:743", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/analytics/page.tsx:743"}, "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-5eca31bf62b1d117", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/follows/page.tsx:123", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/follows/page.tsx:123"}, "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-8c5acd254d04ef23", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/tickets/page.tsx:477", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/tickets/page.tsx:477"}, "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-38c61fcae7183b25", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/companies/[slug]/page.tsx:374", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/companies/[slug]/page.tsx:374"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-affba793cfe3cfaf", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/pricing/[slug]/page.tsx:188", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/pricing/[slug]/page.tsx:188"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-85065ae3e0caed24", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/vendors/page.tsx:214", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/vendors/page.tsx:214"}, "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-2e54c6bafa6f24e7", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/page.tsx:857", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/page.tsx:857"}, "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-a28f4f3720b8d6df", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/jobs/[id]/page.tsx:756", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/jobs/[id]/page.tsx:756"}, "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-d559183cd84b2843", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/employer/jobs/[id]/page.tsx:491", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/employer/jobs/[id]/page.tsx:491"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b05cbf5a7ca626c1", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/employer/jobs/new/page.tsx:1465", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/employer/jobs/new/page.tsx:1465"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bae8bc98d52e817d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/profile/preview/page.tsx:661", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/profile/preview/page.tsx:661"}, "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-be999ac043710fe3", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/settings/page.tsx:2382", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/settings/page.tsx:2382"}, "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-8c7d19c279693c0c", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/onboarding/page.tsx:3023", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/onboarding/page.tsx:3023"}, "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-a08fa3a324f1f429", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/analytics/page.tsx:672", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/analytics/page.tsx:672"}, "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-9bd9d54c41d3ee0d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/candidates/page.tsx:3128", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/candidates/page.tsx:3128"}, "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-fa0b97f54318c825", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/candidates/lists/page.tsx:225", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/candidates/lists/page.tsx:225"}, "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-4616e4cf9f189adf", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/help/page.tsx:341", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/help/page.tsx:341"}, "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-430ef0859e808b65", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/candidate/page.tsx:1063", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/candidate/page.tsx:1063"}, "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-166bd4ff69e125be", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/candidate/jobs/[id]/page.tsx:291", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/candidate/jobs/[id]/page.tsx:291"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fd778746e60bf8ae", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/candidate/profile/page.tsx:716", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/candidate/profile/page.tsx:716"}, "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-b04d0b7f74d0e27b", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/candidate/onboarding/page.tsx:1617", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/candidate/onboarding/page.tsx:1617"}, "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-0b6d8020d94165e3", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/candidate/help/page.tsx:351", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/candidate/help/page.tsx:351"}, "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-4a11eb88f23f8b65", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/billing/InvoiceCard.tsx:23", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/billing/InvoiceCard.tsx:23"}, "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-b315ab29b4fab428", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/billing/BillingAddressesSection.tsx:179", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/billing/BillingAddressesSection.tsx:179"}, "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-bec5382db84f6a38", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/billing/SubscriptionCard.tsx:82", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/billing/SubscriptionCard.tsx:82"}, "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-6bb0c1a59face0bd", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/billing/OrderCard.tsx:44", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/billing/OrderCard.tsx:44"}, "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-c2e4e77fcd0c3a22", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/jobs/CandidateCompactJobCard.tsx:105", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/jobs/CandidateCompactJobCard.tsx:105"}, "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-88d28d0ded7d27de", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/layout/MobileSidebar.tsx:155", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/layout/MobileSidebar.tsx:155"}, "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-2bc2a21980d47b1d", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/components/seo/JsonLd.tsx:8", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/components/seo/JsonLd.tsx:8"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7e940fa9beef999f", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/reviews/CompanyAutocomplete.tsx:137", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/reviews/CompanyAutocomplete.tsx:137"}, "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-737e4c56bdf1126f", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/reviews/CriteriaBars.tsx:28", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/reviews/CriteriaBars.tsx:28"}, "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-5fc1d4e658f40cc9", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/reviews/ReviewsByJobProfilesPreview.tsx:56", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/reviews/ReviewsByJobProfilesPreview.tsx:56"}, "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-5901bfc2453bbb60", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/super-admin/TeamsVendorsWidget.tsx:101", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/super-admin/TeamsVendorsWidget.tsx:101"}, "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-b88c68336ab56b72", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/super-admin/FollowDrillPanels.tsx:87", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/super-admin/FollowDrillPanels.tsx:87"}, "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-67915c1e1519eaf0", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/components/job-search/PublicJobDetailView.tsx:254", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/components/job-search/PublicJobDetailView.tsx:254"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a8767999d5d6701e", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/job-search/JobSearchHistoryChips.tsx:294", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/job-search/JobSearchHistoryChips.tsx:294"}, "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-6530b1d29e90c233", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/job-search/TopStickyLoginBanner.tsx:66", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/job-search/TopStickyLoginBanner.tsx:66"}, "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-acdaa6b17f07199e", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/job-search/StickyMobileBottomCta.tsx:38", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/job-search/StickyMobileBottomCta.tsx:38"}, "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-afe426b52aa66a36", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/candidates/MapView.tsx:198", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/candidates/MapView.tsx:198"}, "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-b38e6944d74f914b", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/common/ResumeParseReview.tsx:1721", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/common/ResumeParseReview.tsx:1721"}, "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-e43b3a6f3b0931a7", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/common/SocialLinksBento.tsx:92", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/common/SocialLinksBento.tsx:92"}, "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-6360005bcd34d38e", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/SearchBar.tsx:571", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/SearchBar.tsx:571"}, "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-dfc683f7571fad27", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/AutoSuggest.tsx:637", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/AutoSuggest.tsx:637"}, "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-f942a15d4214f597", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/FileUpload.tsx:103", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/FileUpload.tsx:103"}, "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-7f7e77c68f6e79e1", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/CurrencyAmountInput.tsx:252", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/CurrencyAmountInput.tsx:252"}, "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-2d327c19675926db", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/CurrencySelect.tsx:181", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/CurrencySelect.tsx:181"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-964bcee46f855803", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/PhoneInput.tsx:412", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/PhoneInput.tsx:412"}, "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-687f1d809d644295", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/Select.tsx:239", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/Select.tsx:239"}, "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-e7b54b027b79e685", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/AdvancedFilters.tsx:298", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/AdvancedFilters.tsx:298"}, "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-a7ce60af6fd4f54e", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/ExperienceSelect.tsx:128", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/ExperienceSelect.tsx:128"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-168493c27f05f3d1", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/candidate/ResumeTemplatePicker.tsx:153", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/candidate/ResumeTemplatePicker.tsx:153"}, "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-93570bf67a5148ca", "name": "Privileged port 587 in use", "shortDescription": {"text": "Privileged port 587 in use"}, "fullDescription": {"text": "Port 587 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-97878a1ac5ae48fe", "name": "Privileged port 465 in use", "shortDescription": {"text": "Privileged port 465 in use"}, "fullDescription": {"text": "Port 465 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aa7c01eb25efca2b", "name": "Privileged port 143 in use", "shortDescription": {"text": "Privileged port 143 in use"}, "fullDescription": {"text": "Port 143 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-42c05edfeedb0231", "name": "Privileged port 993 in use", "shortDescription": {"text": "Privileged port 993 in use"}, "fullDescription": {"text": "Port 993 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-19a71ca2b3bcdaf2", "name": "Insecure pattern 'node_child_process' in backend/src/jobs/backup.worker.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in backend/src/jobs/backup.worker.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6313f67bc17fad5a", "name": "Possible secret in backend/src/scripts/seed-dev.ts", "shortDescription": {"text": "Possible secret in backend/src/scripts/seed-dev.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4bda894c2e69aa35", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/layout.tsx:235", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/layout.tsx:235"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a84464f1fe92d0e4", "name": "Insecure pattern 'node_child_process' in frontend/src/app/sitemap.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in frontend/src/app/sitemap.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-fbbace2cd9403533", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/admin/jobs/[id]/page.tsx:632", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/admin/jobs/[id]/page.tsx:632"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-591f48f0ad321d6f", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/admin/tickets/[id]/page.tsx:216", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/admin/tickets/[id]/page.tsx:216"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b05f58f565fc1710", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/super-admin/billing/plans/[id]/page.tsx:302", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/super-admin/billing/plans/[id]/page.tsx:302"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-956933e5073cc3b5", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/super-admin/billing/coupons/[id]/page.tsx:253", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/super-admin/billing/coupons/[id]/page.tsx:253"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1680286bea4c798a", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/super-admin/jobs/[id]/page.tsx:638", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/super-admin/jobs/[id]/page.tsx:638"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-70425a6c349a91ec", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/companies/[slug]/page.tsx:374", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/companies/[slug]/page.tsx:374"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-830944016e0fcb82", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/pricing/[slug]/page.tsx:188", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/pricing/[slug]/page.tsx:188"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-04bea6914fe2ed09", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/employer/jobs/[id]/page.tsx:491", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/employer/jobs/[id]/page.tsx:491"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4333502b095d6803", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/employer/jobs/new/page.tsx:1465", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/employer/jobs/new/page.tsx:1465"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f8c0c1c6b9423c21", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/candidate/jobs/[id]/page.tsx:291", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/candidate/jobs/[id]/page.tsx:291"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-83941ed6253c3bfd", "name": "Insecure pattern 'local_storage_auth_token' in frontend/src/components/auth/RoleLoginForm.tsx:59", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/components/auth/RoleLoginForm.tsx:59"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f7db952b267a98ec", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/src/components/job-search/PublicJobDetailView.tsx:254", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/components/job-search/PublicJobDetailView.tsx:254"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-10b02179756042ed", "name": "Possible secret in frontend/src/constants/api.ts", "shortDescription": {"text": "Possible secret in frontend/src/constants/api.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-8818889d033e67d5", "name": "Possible secret in frontend/src/constants/routes.ts", "shortDescription": {"text": "Possible secret in frontend/src/constants/routes.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-077d6475fafb3c8d", "name": "Possible secret in infra/scripts/sealed-secret-create.sh", "shortDescription": {"text": "Possible secret in infra/scripts/sealed-secret-create.sh"}, "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-3b3b8ffcc5de07af", "name": "Possible secret in infra/k8s/monitoring/kube-prometheus-values.yaml", "shortDescription": {"text": "Possible secret in infra/k8s/monitoring/kube-prometheus-values.yaml"}, "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-4fbd0cab25648a4b", "name": "Possible secret in infra/k8s/apps/backend/configmap.yaml", "shortDescription": {"text": "Possible secret in infra/k8s/apps/backend/configmap.yaml"}, "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-c2b703cf54649df1", "name": "Possible secret in infra/ansible/playbooks/03-post-install.yml", "shortDescription": {"text": "Possible secret in infra/ansible/playbooks/03-post-install.yml"}, "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-2a776c16dd0fe7d7", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "docker/login-action@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-76b2ab6e6efb8a12", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-89efbd11891cbff3", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "shimataro/ssh-key-action@v2 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7f1e4527e6fecffa", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "aquasecurity/trivy-action@master can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "high", "confidence": 1.0}}, {"id": "scanner-23275a81025207c4", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "shimataro/ssh-key-action@v2 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ae6d7eeb05603f40", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2e61e14582ad4b6f", "name": "Very large file: backend/src/services/notification.service.ts (1697 lines)", "shortDescription": {"text": "Very large file: backend/src/services/notification.service.ts (1697 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-4ef7637d735d4a03", "name": "Very large file: backend/src/services/search.service.ts (3599 lines)", "shortDescription": {"text": "Very large file: backend/src/services/search.service.ts (3599 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-4edb78efc87d85c5", "name": "Very large file: backend/src/services/candidate.service.ts (1522 lines)", "shortDescription": {"text": "Very large file: backend/src/services/candidate.service.ts (1522 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-0883b45cd60c8621", "name": "Very large file: backend/src/services/auth.service.ts (1671 lines)", "shortDescription": {"text": "Very large file: backend/src/services/auth.service.ts (1671 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-f27e9486559366c1", "name": "Very large file: backend/src/services/job.service.ts (1846 lines)", "shortDescription": {"text": "Very large file: backend/src/services/job.service.ts (1846 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-d1afd22d348c0109", "name": "Very large file: frontend/src/app/admin/users/[id]/page.tsx (1544 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/admin/users/[id]/page.tsx (1544 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-ab6dd8a0c9b32053", "name": "Very large file: frontend/src/app/admin/analytics/page.tsx (1754 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/admin/analytics/page.tsx (1754 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-9a7fe8839f9fcf7b", "name": "Very large file: frontend/src/app/super-admin/page.tsx (1684 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/super-admin/page.tsx (1684 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-3c4c366641681305", "name": "Very large file: frontend/src/app/super-admin/users/[id]/page.tsx (4603 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/super-admin/users/[id]/page.tsx (4603 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-0b8365900fac9d35", "name": "Very large file: frontend/src/app/super-admin/settings/page.tsx (1495 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/super-admin/settings/page.tsx (1495 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-0d62d70da4dcbdb3", "name": "Very large file: frontend/src/app/super-admin/analytics/page.tsx (2234 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/super-admin/analytics/page.tsx (2234 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-c6c89f1a2f7f1b95", "name": "Very large file: frontend/src/app/employer/page.tsx (1369 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/employer/page.tsx (1369 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-7862947948774472", "name": "Very large file: frontend/src/app/employer/jobs/[id]/page.tsx (1239 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/employer/jobs/[id]/page.tsx (1239 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-9a021db2087cd2aa", "name": "Very large file: frontend/src/app/employer/jobs/new/page.tsx (1980 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/employer/jobs/new/page.tsx (1980 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-0a0bad8417143cfe", "name": "Very large file: frontend/src/app/employer/profile/preview/page.tsx (1135 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/employer/profile/preview/page.tsx (1135 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-2e7e361f2badc8ab", "name": "Very large file: frontend/src/app/employer/settings/page.tsx (3017 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/employer/settings/page.tsx (3017 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-3cef2a2d1e6a0a5c", "name": "Very large file: frontend/src/app/employer/onboarding/page.tsx (3211 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/employer/onboarding/page.tsx (3211 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-0d880c10a9d1fb21", "name": "Very large file: frontend/src/app/employer/candidates/page.tsx (3289 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/employer/candidates/page.tsx (3289 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-4656c8b9ad773631", "name": "Very large file: frontend/src/app/employer/candidates/[id]/page.tsx (1847 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/employer/candidates/[id]/page.tsx (1847 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-d45fce2445b7b8a5", "name": "Very large file: frontend/src/app/candidate/page.tsx (1318 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/candidate/page.tsx (1318 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-4ac8133f7bcd3618", "name": "Very large file: frontend/src/app/candidate/jobs/page.tsx (1658 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/candidate/jobs/page.tsx (1658 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-cb004b0792093a67", "name": "Very large file: frontend/src/app/candidate/profile/page.tsx (1602 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/candidate/profile/page.tsx (1602 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-a59b645193e30c6e", "name": "Very large file: frontend/src/app/candidate/profile/preview/page.tsx (1268 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/candidate/profile/preview/page.tsx (1268 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-925ac8181a21adc5", "name": "Very large file: frontend/src/app/candidate/settings/page.tsx (2495 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/candidate/settings/page.tsx (2495 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-efca713e43307144", "name": "Very large file: frontend/src/app/candidate/onboarding/page.tsx (4818 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/candidate/onboarding/page.tsx (4818 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-3eba34bc3c92ec5b", "name": "Very large file: frontend/src/components/common/ResumeParseReview.tsx (1740 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/common/ResumeParseReview.tsx (1740 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-0f2b65b39b4b6754", "name": "Very large file: frontend/src/constants/suggestions.ts (6844 lines)", "shortDescription": {"text": "Very large file: frontend/src/constants/suggestions.ts (6844 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-b0e49332999b751b", "name": "Very large file: frontend/src/constants/indian-cities.ts (4074 lines)", "shortDescription": {"text": "Very large file: frontend/src/constants/indian-cities.ts (4074 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-0befbfdc341dc59b", "name": "Very large file: frontend/src/lib/json-ld.ts (1509 lines)", "shortDescription": {"text": "Very large file: frontend/src/lib/json-ld.ts (1509 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "9 test file(s) for 1159 source file(s) (ratio 0.01). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 109 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 886 placeholder/mock markers across 161 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-7efc221a227e49cf", "name": "Commented-code block (6 lines) in backend/src/index.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/index.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f79bb81cbacfe485", "name": "Commented-code block (5 lines) in backend/src/app.ts:124", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/app.ts:124"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b7065e70bcc8d11a", "name": "Commented-code block (7 lines) in backend/src/jobs/resume-parse.worker.ts:52", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/jobs/resume-parse.worker.ts:52"}, "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-c3d3c321753b66e1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/jobs/image-processing.worker.ts:37", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/jobs/image-processing.worker.ts:37"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b5a0aeabfaacb252", "name": "Commented-code block (8 lines) in backend/src/scripts/seed-curated-listings.ts:269", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/scripts/seed-curated-listings.ts:269"}, "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-60f9790dc3828ea6", "name": "Commented-code block (7 lines) in backend/src/utils/invoice-pdf.ts:110", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/utils/invoice-pdf.ts:110"}, "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-88c7cff04148932e", "name": "Commented-code block (6 lines) in backend/src/controllers/super-admin-follows.controller.ts:19", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/controllers/super-admin-follows.controller.ts:19"}, "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-7eb3d32aace43e79", "name": "Commented-code block (6 lines) in backend/src/controllers/auth.controller.ts:233", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/controllers/auth.controller.ts:233"}, "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-86305aef20d01902", "name": "Commented-code block (6 lines) in backend/src/controllers/employer.controller.ts:499", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/controllers/employer.controller.ts:499"}, "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-5f921257673dfc4a", "name": "Commented-code block (5 lines) in backend/src/controllers/order.controller.ts:186", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/controllers/order.controller.ts:186"}, "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-ecb81deaf35c7aa1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/kafka/event-router.ts:16", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/kafka/event-router.ts:16"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-682fb088a426869e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/middleware/turnstile.ts:36", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/middleware/turnstile.ts:36"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-75255a3ae02a5ae0", "name": "Commented-code block (6 lines) in backend/src/lib/slugs.ts:66", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/lib/slugs.ts:66"}, "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-a280f95c87f18bce", "name": "Commented-code block (7 lines) in backend/src/services/razorpay-webhook.service.ts:265", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/services/razorpay-webhook.service.ts:265"}, "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-5c94476427a1a200", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/services/geocoding.service.ts:85", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/services/geocoding.service.ts:85"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f8d624277fee4d58", "name": "Commented-code block (7 lines) in backend/src/services/resume-schema.ts:128", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/services/resume-schema.ts:128"}, "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-19556ce535b4fb67", "name": "Commented-code block (5 lines) in backend/src/services/employer.service.ts:157", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/services/employer.service.ts:157"}, "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-1ca71ea7c828365f", "name": "Commented-code block (6 lines) in backend/src/services/public-companies.service.ts:214", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/services/public-companies.service.ts:214"}, "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-6137a2a3eb8b1f1c", "name": "Commented-code block (5 lines) in backend/src/services/invoice.service.ts:112", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/services/invoice.service.ts:112"}, "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-664fc6e5cd6e2d75", "name": "Commented-code block (5 lines) in backend/src/services/company-review.service.ts:599", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/services/company-review.service.ts:599"}, "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-a12232fa2ddcc1d4", "name": "Commented-code block (5 lines) in backend/src/services/vendor.service.ts:905", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/services/vendor.service.ts:905"}, "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-5ce8004c61daaf4a", "name": "Commented-code block (9 lines) in backend/src/services/search.service.ts:1079", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/services/search.service.ts:1079"}, "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-618f23a92920ce3c", "name": "Commented-code block (6 lines) in backend/src/services/public-stats.service.ts:52", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/services/public-stats.service.ts:52"}, "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-604dd340b226745b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/services/public-stats.service.ts:209", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/services/public-stats.service.ts:209"}, "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-440d2082ac16934a", "name": "Commented-code block (6 lines) in backend/src/services/ticket.service.ts:78", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/services/ticket.service.ts:78"}, "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-7d81ea3a0ebd331c", "name": "Commented-code block (5 lines) in backend/src/services/refund.service.ts:364", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/services/refund.service.ts:364"}, "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-efac5854de6855f3", "name": "Commented-code block (6 lines) in backend/src/services/gemini-extractor.service.ts:52", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/services/gemini-extractor.service.ts:52"}, "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-4f043348e27546f3", "name": "Commented-code block (6 lines) in backend/src/services/curated.service.ts:97", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/services/curated.service.ts:97"}, "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-ccd44fcf98d1fffb", "name": "Commented-code block (5 lines) in backend/src/services/upgrade.service.ts:231", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/services/upgrade.service.ts:231"}, "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-ebe26887437895fe", "name": "Commented-code block (5 lines) in backend/src/services/cv-unlock.service.ts:34", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/services/cv-unlock.service.ts:34"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-66f78332b0223e00", "name": "Commented-code block (6 lines) in backend/src/services/resume-parser.service.ts:153", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/services/resume-parser.service.ts:153"}, "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-2a593ee4d13d302d", "name": "Commented-code block (5 lines) in backend/src/services/entitlement.service.ts:152", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/services/entitlement.service.ts:152"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-36e3d1b49e0aea2f", "name": "Commented-code block (6 lines) in backend/src/services/auth.service.ts:778", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/services/auth.service.ts:778"}, "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-97932661713b65ea", "name": "Commented-code block (5 lines) in backend/src/services/job.service.ts:390", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/services/job.service.ts:390"}, "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-2a376bf623d6c78f", "name": "Commented-code block (7 lines) in backend/src/config/env.ts:158", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/config/env.ts:158"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-456e944c9a4e051e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/config/razorpay.ts:243", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/config/razorpay.ts:243"}, "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-304a7a599cd6cbd3", "name": "Commented-code block (5 lines) in backend/src/routes/quote.routes.ts:50", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/routes/quote.routes.ts:50"}, "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-acece4067079e3f8", "name": "Commented-code block (6 lines) in backend/src/routes/public.routes.ts:114", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/routes/public.routes.ts:114"}, "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-b566d27d5304dc34", "name": "Commented-code block (5 lines) in backend/src/routes/auth.routes.ts:43", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/routes/auth.routes.ts:43"}, "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-d0f9bbd7695f4525", "name": "Commented-code block (9 lines) in backend/prisma/seeds/seed.ts:8", "shortDescription": {"text": "Commented-code block (9 lines) in backend/prisma/seeds/seed.ts:8"}, "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-fcb9e3f4a84d8717", "name": "Commented-code block (14 lines) in frontend/next.config.ts:50", "shortDescription": {"text": "Commented-code block (14 lines) in frontend/next.config.ts:50"}, "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-2ec6947156d7fe8a", "name": "Commented-code block (5 lines) in frontend/scripts/validate-structured-data.mjs:243", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/scripts/validate-structured-data.mjs:243"}, "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-bd290b591217b08c", "name": "Commented-code block (33 lines) in frontend/src/proxy.ts:54", "shortDescription": {"text": "Commented-code block (33 lines) in frontend/src/proxy.ts:54"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-821c72cd53063425", "name": "Commented-code block (7 lines) in frontend/src/instrumentation-client.ts:11", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/instrumentation-client.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7467631f3f47b824", "name": "Commented-code block (5 lines) in frontend/src/app/page.tsx:77", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/page.tsx:77"}, "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-4985ff2c84c9cff4", "name": "Commented-code block (5 lines) in frontend/src/app/sitemap.ts:114", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/sitemap.ts:114"}, "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-6628b125a6faa2f1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/sitemap.ts:689", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/sitemap.ts:689"}, "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-cb456fd10ae05405", "name": "Commented-code block (5 lines) in frontend/src/app/company/[id]/layout.tsx:114", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/company/[id]/layout.tsx:114"}, "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-6761112470075be8", "name": "Commented-code block (6 lines) in frontend/src/app/billing/quote/QuoteRequestForm.tsx:89", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/app/billing/quote/QuoteRequestForm.tsx:89"}, "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-3e88477088d809c1", "name": "Commented-code block (11 lines) in frontend/src/app/api/proxy/[...path]/route.ts:49", "shortDescription": {"text": "Commented-code block (11 lines) in frontend/src/app/api/proxy/[...path]/route.ts:49"}, "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-31bbfe75a3f9f760", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/proxy/[...path]/route.ts:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/proxy/[...path]/route.ts:84"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-072a43f1891aeb13", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/csrf-token/route.ts:22", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/csrf-token/route.ts:22"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c8ac1c125bf1d9a4", "name": "Commented-code block (5 lines) in frontend/src/app/robots.txt/route.ts:45", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/robots.txt/route.ts:45"}, "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-c4a7ad81b9e5b1f8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/auth/callback/page.tsx:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/auth/callback/page.tsx:50"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cec75b679806180c", "name": "Commented-code block (5 lines) in frontend/src/app/companies/[slug]/page.tsx:109", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/companies/[slug]/page.tsx:109"}, "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-e1df72ae7f945bba", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/companies/[slug]/reviews/ReviewsClient.tsx:8", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/companies/[slug]/reviews/ReviewsClient.tsx:8"}, "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-a6f61408dda879af", "name": "Commented-code block (6 lines) in frontend/src/app/employer/page.tsx:164", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/app/employer/page.tsx:164"}, "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-17cf36c74f50863d", "name": "Commented-code block (6 lines) in frontend/src/app/employer/jobs/new/page.tsx:83", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/app/employer/jobs/new/page.tsx:83"}, "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-c03157f3dcf33021", "name": "Commented-code block (5 lines) in frontend/src/app/employer/followers/page.tsx:53", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/employer/followers/page.tsx:53"}, "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-cc9c4c84716e751c", "name": "Commented-code block (7 lines) in frontend/src/app/employer/onboarding/page.tsx:402", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/app/employer/onboarding/page.tsx:402"}, "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-651a1b4147e842a4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/employer/candidates/page.tsx:902", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/employer/candidates/page.tsx:902"}, "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-fbbbfb26cc3dcee7", "name": "Commented-code block (10 lines) in frontend/src/app/candidate/page.tsx:231", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/src/app/candidate/page.tsx:231"}, "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-792c68c558aaff2d", "name": "Commented-code block (6 lines) in frontend/src/app/candidate/jobs/page.tsx:50", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/app/candidate/jobs/page.tsx:50"}, "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-bfa4827ce09383cb", "name": "Commented-code block (7 lines) in frontend/src/app/candidate/profile/page.tsx:496", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/app/candidate/profile/page.tsx:496"}, "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-670662df43c18b12", "name": "Commented-code block (6 lines) in frontend/src/app/candidate/onboarding/page.tsx:637", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/app/candidate/onboarding/page.tsx:637"}, "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-a7a9be8f30f311dd", "name": "Commented-code block (7 lines) in frontend/src/utils/build-applyable-resume-fields.ts:324", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/utils/build-applyable-resume-fields.ts:324"}, "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-b18bea3b36b28365", "name": "Commented-code block (5 lines) in frontend/src/hooks/use-entitlements.ts:31", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/hooks/use-entitlements.ts:31"}, "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-789eb4d387f1a733", "name": "Commented-code block (11 lines) in frontend/src/hooks/use-socket.ts:64", "shortDescription": {"text": "Commented-code block (11 lines) in frontend/src/hooks/use-socket.ts:64"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c8f7bda25a5834d5", "name": "Commented-code block (7 lines) in frontend/src/types/resume-parse.ts:370", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/types/resume-parse.ts:370"}, "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-e4c1ab8a27d88d4d", "name": "Commented-code block (8 lines) in frontend/src/components/billing/PlanCard.tsx:45", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/components/billing/PlanCard.tsx:45"}, "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-13519a3abaf525d2", "name": "Commented-code block (7 lines) in frontend/src/components/billing/BillingAlertBadge.tsx:90", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/components/billing/BillingAlertBadge.tsx:90"}, "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-9581da0d232f78d0", "name": "Commented-code block (8 lines) in frontend/src/components/billing/VerifiedBadge.tsx:58", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/components/billing/VerifiedBadge.tsx:58"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4f21f66403531e02", "name": "Commented-code block (5 lines) in frontend/src/components/billing/UpgradeModal.tsx:400", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/billing/UpgradeModal.tsx:400"}, "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-d41a8c993ebae74c", "name": "Commented-code block (7 lines) in frontend/src/components/billing/CouponInput.tsx:47", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/components/billing/CouponInput.tsx:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cabecb51f5e2301a", "name": "Commented-code block (6 lines) in frontend/src/components/billing/QuotaBar.tsx:81", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/billing/QuotaBar.tsx:81"}, "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-09aa08dc8871421f", "name": "Commented-code block (8 lines) in frontend/src/components/support/WhatsappSupportCard.tsx:88", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/components/support/WhatsappSupportCard.tsx:88"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-96d1c8eaf5d178fe", "name": "Commented-code block (5 lines) in frontend/src/components/profile/ExperienceSection.tsx:30", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/profile/ExperienceSection.tsx:30"}, "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-66c890a9665613c7", "name": "Commented-code block (5 lines) in frontend/src/components/layout/Header.tsx:184", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/layout/Header.tsx:184"}, "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-cb480df084a46064", "name": "Commented-code block (5 lines) in frontend/src/components/layout/DashboardHeader.tsx:58", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/layout/DashboardHeader.tsx:58"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e3fe90201894452c", "name": "Commented-code block (5 lines) in frontend/src/components/layout/Sidebar.tsx:233", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/layout/Sidebar.tsx:233"}, "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-50694a6e7a35b67b", "name": "Commented-code block (6 lines) in frontend/src/components/layout/PublicLayout.tsx:98", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/layout/PublicLayout.tsx:98"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-785a23919b2a6129", "name": "Commented-code block (7 lines) in frontend/src/components/company-search/CompanyDetailTabs.tsx:106", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/components/company-search/CompanyDetailTabs.tsx:106"}, "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-e099979ef8d6270b", "name": "Commented-code block (5 lines) in frontend/src/components/company-search/PublicCompanyListingShell.tsx:214", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/company-search/PublicCompanyListingShell.tsx:214"}, "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-ff58e6d2cb85f6cc", "name": "Commented-code block (5 lines) in frontend/src/components/home/JobsCategoriesChipsSection.tsx:111", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/home/JobsCategoriesChipsSection.tsx:111"}, "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-35454f88afc079e9", "name": "Commented-code block (6 lines) in frontend/src/components/job-search/PublicJobListingShell.tsx:211", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/job-search/PublicJobListingShell.tsx:211"}, "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-24a32e2ebd66a22f", "name": "Commented-code block (9 lines) in frontend/src/components/onboarding/OnboardingShell.tsx:202", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/src/components/onboarding/OnboardingShell.tsx:202"}, "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-fdb059fbfea1a94a", "name": "Commented-code block (12 lines) in frontend/src/components/common/ResumeParseReview.tsx:127", "shortDescription": {"text": "Commented-code block (12 lines) in frontend/src/components/common/ResumeParseReview.tsx:127"}, "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-ed48f40a99c019a0", "name": "Commented-code block (9 lines) in frontend/src/components/common/Logo.tsx:12", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/src/components/common/Logo.tsx: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-466b7201c8635c24", "name": "Commented-code block (7 lines) in frontend/src/components/common/WelcomeScreen.tsx:158", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/components/common/WelcomeScreen.tsx:158"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2dfaa58ef7a1178e", "name": "Commented-code block (5 lines) in frontend/src/components/common/BackToTop.tsx:13", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/common/BackToTop.tsx: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-8dcd31f42ead405e", "name": "Commented-code block (7 lines) in frontend/src/components/common/SEO.tsx:132", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/components/common/SEO.tsx:132"}, "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-26780beb8bff3840", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/ui/ServerAutoSuggest.tsx:12", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/ui/ServerAutoSuggest.tsx:12"}, "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-446776ebd78f9eb4", "name": "Commented-code block (5 lines) in frontend/src/components/ui/MaskedCodeInput.tsx:124", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/ui/MaskedCodeInput.tsx:124"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2fa245c8291b91c7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/ui/ServerSuggestionInput.tsx:14", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/ui/ServerSuggestionInput.tsx:14"}, "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-7bb62f0d84cdc36c", "name": "Commented-code block (9 lines) in frontend/src/components/ui/Modal.tsx:121", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/src/components/ui/Modal.tsx:121"}, "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-ebe2bb2000bb9f33", "name": "Commented-code block (8 lines) in frontend/src/components/ui/Tabs.tsx:53", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/components/ui/Tabs.tsx:53"}, "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-0da3d1d952e41ce6", "name": "Commented-code block (5 lines) in frontend/src/components/ui/PhoneInput.tsx:159", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/ui/PhoneInput.tsx:159"}, "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-4ea2840e36d5c8e8", "name": "Commented-code block (5 lines) in frontend/src/components/ui/Select.tsx:86", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/ui/Select.tsx:86"}, "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-e27e306873b6cf40", "name": "Commented-code block (6 lines) in frontend/src/store/auth.store.ts:95", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/store/auth.store.ts:95"}, "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-ff7cac4446211e97", "name": "Commented-code block (10 lines) in frontend/src/constants/seo.ts:97", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/src/constants/seo.ts:97"}, "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-449a270203406910", "name": "Commented-code block (5 lines) in frontend/src/lib/otel-browser.ts:74", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/lib/otel-browser.ts:74"}, "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-45b678ead6c3eb62", "name": "Commented-code block (6 lines) in frontend/src/lib/analytics/track.ts:308", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/lib/analytics/track.ts:308"}, "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-9acb1dcbb788c63c", "name": "Commented-code block (6 lines) in frontend/src/lib/analytics/consent.ts:98", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/lib/analytics/consent.ts:98"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-82108edf9f3a71a7", "name": "Commented-code block (7 lines) in frontend/public/sw.js:97", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/public/sw.js:97"}, "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-6b507549e228470d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/public/sw.js:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/public/sw.js:84"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ad1f2c0971b89ce0", "name": "10 env vars used in code but missing from .env.example", "shortDescription": {"text": "10 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `CI`, `CONTAINER`, `KUBERNETES_SERVICE_HOST`, `LOG_AGGREGATION_TOKEN`, `LOG_AGGREGATION_URL`, `NEXT_PUBLIC_MAINTENANCE_BYPASS_KEY`, `NEXT_PUBLIC_OTEL_COLLECTOR_URL`, `NEXT_RUNTIME` + 2 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-f12915fc65fc020d", "name": "Dangling fetch: POST https://challenges.cloudflare.com/turnstile/v0/siteverify (backend/src/middleware/turnstile.ts:36)", "shortDescription": {"text": "Dangling fetch: POST https://challenges.cloudflare.com/turnstile/v0/siteverify (backend/src/middleware/turnstile.ts:36)"}, "fullDescription": {"text": "`backend/src/middleware/turnstile.ts:36` calls `POST https://challenges.cloudflare.com/turnstile/v0/siteverify` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/challenges.cloudflare.com/turnstile/v0/siteverify`\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-160b4cde4f9c8f04", "name": "Dangling fetch: GET http://ip-api.com/json/${ip}?fields=status,country,city,lat,lon (backend/src/services/device-securit", "shortDescription": {"text": "Dangling fetch: GET http://ip-api.com/json/${ip}?fields=status,country,city,lat,lon (backend/src/services/device-security.service.ts:29)"}, "fullDescription": {"text": "`backend/src/services/device-security.service.ts:29` calls `GET http://ip-api.com/json/${ip}?fields=status,country,city,lat,lon` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/ip-api.com/json/<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-ff4c7e0e509e6597", "name": "Dangling fetch: POST https://www.google-analytics.com/mp/collect?measurement_id=${measurementId}&api_secret=${apiSecret}", "shortDescription": {"text": "Dangling fetch: POST https://www.google-analytics.com/mp/collect?measurement_id=${measurementId}&api_secret=${apiSecret} (backend/src/services/analytics.service.ts:29)"}, "fullDescription": {"text": "`backend/src/services/analytics.service.ts:29` calls `POST https://www.google-analytics.com/mp/collect?measurement_id=${measurementId}&api_secret=${apiSecret}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.google-analytics.com/mp/collect`\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-ae3ccbb1719d90fe", "name": "Dangling fetch: POST /api/auth/migrate (frontend/src/app/auth/callback/page.tsx:50)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/migrate (frontend/src/app/auth/callback/page.tsx:50)"}, "fullDescription": {"text": "`frontend/src/app/auth/callback/page.tsx:50` calls `POST /api/auth/migrate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/migrate`\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-f129fcad1fdda5ec", "name": "Dangling fetch: GET https://nominatim.openstreetmap.org/search?format=json&viewbox=${viewbox}&bounded=1&featuretype=city", "shortDescription": {"text": "Dangling fetch: GET https://nominatim.openstreetmap.org/search?format=json&viewbox=${viewbox}&bounded=1&featuretype=city&limit=15&addressdetails=0 (frontend/src/app/employer/candidates/page.tsx:902)"}, "fullDescription": {"text": "`frontend/src/app/employer/candidates/page.tsx:902` calls `GET https://nominatim.openstreetmap.org/search?format=json&viewbox=${viewbox}&bounded=1&featuretype=city&limit=15&addressdetails=0` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/nominatim.openstreetmap.org/search`\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-918e44b121492472", "name": "Dangling fetch: GET https://nominatim.openstreetmap.org/reverse?lat=${lat}&lon=${lon}&format=json&zoom=10 (frontend/src/", "shortDescription": {"text": "Dangling fetch: GET https://nominatim.openstreetmap.org/reverse?lat=${lat}&lon=${lon}&format=json&zoom=10 (frontend/src/app/employer/candidates/page.tsx:943)"}, "fullDescription": {"text": "`frontend/src/app/employer/candidates/page.tsx:943` calls `GET https://nominatim.openstreetmap.org/reverse?lat=${lat}&lon=${lon}&format=json&zoom=10` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/nominatim.openstreetmap.org/reverse`\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-3429f98dc5015629", "name": "Dangling fetch: GET /api/auth/socket-token (frontend/src/hooks/use-socket.ts:37)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/socket-token (frontend/src/hooks/use-socket.ts:37)"}, "fullDescription": {"text": "`frontend/src/hooks/use-socket.ts:37` calls `GET /api/auth/socket-token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/socket-token`\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-6e9a71690f8657a7", "name": "Dangling fetch: POST /api/auth/logout (frontend/src/lib/api.ts:138)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/logout (frontend/src/lib/api.ts:138)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:138` calls `POST /api/auth/logout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/auth/logout`\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-b2405266f122e633", "name": "Dangling fetch: GET /api/auth/firebase-token (frontend/src/lib/firebase.ts:133)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/firebase-token (frontend/src/lib/firebase.ts:133)"}, "fullDescription": {"text": "`frontend/src/lib/firebase.ts:133` calls `GET /api/auth/firebase-token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/firebase-token`\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-26f736c5e4b1527e", "name": "Dangling fetch: POST /api/auth/register (frontend/src/services/auth.service.ts:70)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/register (frontend/src/services/auth.service.ts:70)"}, "fullDescription": {"text": "`frontend/src/services/auth.service.ts:70` calls `POST /api/auth/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\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-3af1ba4b948318bd", "name": "Dangling fetch: POST /api/auth/login (frontend/src/services/auth.service.ts:86)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/login (frontend/src/services/auth.service.ts:86)"}, "fullDescription": {"text": "`frontend/src/services/auth.service.ts:86` calls `POST /api/auth/login` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/auth/login`\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-2dcf40306a82e836", "name": "Dangling fetch: POST /api/auth/logout (frontend/src/services/auth.service.ts:105)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/logout (frontend/src/services/auth.service.ts:105)"}, "fullDescription": {"text": "`frontend/src/services/auth.service.ts:105` calls `POST /api/auth/logout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/auth/logout`\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-49de3acfb4fe89d9", "name": "Dangling fetch: GET /api/auth/me (frontend/src/services/auth.service.ts:114)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/me (frontend/src/services/auth.service.ts:114)"}, "fullDescription": {"text": "`frontend/src/services/auth.service.ts:114` calls `GET /api/auth/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\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-3eecbf29fdbe5954", "name": "Dangling fetch: POST /api/auth/refresh (frontend/src/services/auth.service.ts:123)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/refresh (frontend/src/services/auth.service.ts:123)"}, "fullDescription": {"text": "`frontend/src/services/auth.service.ts:123` calls `POST /api/auth/refresh` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/auth/refresh`\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-feb16d9050374440", "name": "Dangling fetch: POST /api/auth/firebase-login (frontend/src/services/auth.service.ts:135)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/firebase-login (frontend/src/services/auth.service.ts:135)"}, "fullDescription": {"text": "`frontend/src/services/auth.service.ts:135` calls `POST /api/auth/firebase-login` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/auth/firebase-login`\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-d68d0bf7d18fe1c1", "name": "Dangling fetch: POST /api/auth/verify-email (frontend/src/services/auth.service.ts:150)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/verify-email (frontend/src/services/auth.service.ts:150)"}, "fullDescription": {"text": "`frontend/src/services/auth.service.ts:150` calls `POST /api/auth/verify-email` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/auth/verify-email`\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-f9082d09e2b961fe", "name": "Dangling fetch: POST /api/auth/mfa-recovery (frontend/src/services/auth.service.ts:235)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/mfa-recovery (frontend/src/services/auth.service.ts:235)"}, "fullDescription": {"text": "`frontend/src/services/auth.service.ts:235` calls `POST /api/auth/mfa-recovery` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/auth/mfa-recovery`\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-3a007a977fe5f01d", "name": "Dangling fetch: PATCH /api/auth/me/profile (frontend/src/services/auth.service.ts:324)", "shortDescription": {"text": "Dangling fetch: PATCH /api/auth/me/profile (frontend/src/services/auth.service.ts:324)"}, "fullDescription": {"text": "`frontend/src/services/auth.service.ts:324` calls `PATCH /api/auth/me/profile` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/auth/me/profile`\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-dde3adb27bf7eebe", "name": "Unused endpoint: USE /api", "shortDescription": {"text": "Unused endpoint: USE /api"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /api` 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-61de4198f0195111", "name": "Unused endpoint: POST /api/v1/webhooks/razorpay", "shortDescription": {"text": "Unused endpoint: POST /api/v1/webhooks/razorpay"}, "fullDescription": {"text": "`backend/src/app.ts` declares `POST /api/v1/webhooks/razorpay` 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-6ad67c39ae34cae3", "name": "Unused endpoint: USE /api-docs", "shortDescription": {"text": "Unused endpoint: USE /api-docs"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /api-docs` 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-1992692ae67a02be", "name": "Unused endpoint: POST /api/csp-report", "shortDescription": {"text": "Unused endpoint: POST /api/csp-report"}, "fullDescription": {"text": "`backend/src/app.ts` declares `POST /api/csp-report` 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-b4c6498016393290", "name": "Unused endpoint: GET /api/config/otp", "shortDescription": {"text": "Unused endpoint: GET /api/config/otp"}, "fullDescription": {"text": "`backend/src/app.ts` declares `GET /api/config/otp` 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-8d782012eec1297c", "name": "Unused endpoint: GET /api/config/security", "shortDescription": {"text": "Unused endpoint: GET /api/config/security"}, "fullDescription": {"text": "`backend/src/app.ts` declares `GET /api/config/security` 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-eb510ff107b90e88", "name": "Unused endpoint: USE /internal/alertmanager", "shortDescription": {"text": "Unused endpoint: USE /internal/alertmanager"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /internal/alertmanager` 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-b28d92215a503990", "name": "Unused endpoint: USE /auth", "shortDescription": {"text": "Unused endpoint: USE /auth"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /auth` 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-ba91e3af8e0454a5", "name": "Unused endpoint: USE /candidates", "shortDescription": {"text": "Unused endpoint: USE /candidates"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /candidates` 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-fa319626dd1244a8", "name": "Unused endpoint: USE /employers", "shortDescription": {"text": "Unused endpoint: USE /employers"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /employers` 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-280d2202a0925ebd", "name": "Unused endpoint: USE /jobs", "shortDescription": {"text": "Unused endpoint: USE /jobs"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /jobs` 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-3a12264d51315a42", "name": "Unused endpoint: USE /verifications", "shortDescription": {"text": "Unused endpoint: USE /verifications"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /verifications` 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-b2d8849fb6b1ac47", "name": "Unused endpoint: USE /admin", "shortDescription": {"text": "Unused endpoint: USE /admin"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /admin` 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-d80629752210b855", "name": "Unused endpoint: USE /notifications", "shortDescription": {"text": "Unused endpoint: USE /notifications"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /notifications` 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-1b64856104b06f0f", "name": "Unused endpoint: USE /devices", "shortDescription": {"text": "Unused endpoint: USE /devices"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /devices` 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-3fda9e3b0c940d3c", "name": "Unused endpoint: USE /drafts", "shortDescription": {"text": "Unused endpoint: USE /drafts"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /drafts` 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-8ee6847ba3d7ee55", "name": "Unused endpoint: USE /sessions", "shortDescription": {"text": "Unused endpoint: USE /sessions"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /sessions` 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-0587cde6c4481ba4", "name": "Unused endpoint: USE /super-admin", "shortDescription": {"text": "Unused endpoint: USE /super-admin"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /super-admin` 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-4008977b9edf6af6", "name": "Unused endpoint: USE /saved-candidates", "shortDescription": {"text": "Unused endpoint: USE /saved-candidates"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /saved-candidates` 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-f126da46f2c2bd1f", "name": "Unused endpoint: USE /employer/team", "shortDescription": {"text": "Unused endpoint: USE /employer/team"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /employer/team` 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-5b09350d77b25de4", "name": "Unused endpoint: USE /vendor", "shortDescription": {"text": "Unused endpoint: USE /vendor"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /vendor` 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-404802ade7f487c5", "name": "Unused endpoint: USE /vendors", "shortDescription": {"text": "Unused endpoint: USE /vendors"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /vendors` 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-2a73b3630e403d97", "name": "Unused endpoint: USE /candidate-lists", "shortDescription": {"text": "Unused endpoint: USE /candidate-lists"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /candidate-lists` 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-aac0c14c92ca5c18", "name": "Unused endpoint: USE /saved-searches", "shortDescription": {"text": "Unused endpoint: USE /saved-searches"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /saved-searches` 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-44a8d35cd092dc20", "name": "Unused endpoint: USE /search", "shortDescription": {"text": "Unused endpoint: USE /search"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /search` 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-7a8f40a426fdfb45", "name": "Unused endpoint: USE /reports", "shortDescription": {"text": "Unused endpoint: USE /reports"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /reports` 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-db52b256d6ea54f3", "name": "Unused endpoint: USE /feature-flags", "shortDescription": {"text": "Unused endpoint: USE /feature-flags"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /feature-flags` 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-c8ca19f93152dd7b", "name": "Unused endpoint: USE /webauthn", "shortDescription": {"text": "Unused endpoint: USE /webauthn"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /webauthn` 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-1e05ba1cd37b6101", "name": "Unused endpoint: USE /webhooks", "shortDescription": {"text": "Unused endpoint: USE /webhooks"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /webhooks` 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-1ed2c849ffa9bbbb", "name": "Unused endpoint: USE /recommendations", "shortDescription": {"text": "Unused endpoint: USE /recommendations"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /recommendations` 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-14c8cdf42637261c", "name": "Unused endpoint: USE /analytics", "shortDescription": {"text": "Unused endpoint: USE /analytics"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /analytics` 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-4517d88e3e4bbf4e", "name": "Unused endpoint: USE /contact", "shortDescription": {"text": "Unused endpoint: USE /contact"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /contact` 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-7dcf108ac689d9b4", "name": "Unused endpoint: USE /public", "shortDescription": {"text": "Unused endpoint: USE /public"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /public` 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-858cb8cb10d83bfe", "name": "Unused endpoint: USE /tickets", "shortDescription": {"text": "Unused endpoint: USE /tickets"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /tickets` 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-9de4213c527180ab", "name": "Unused endpoint: USE /plans", "shortDescription": {"text": "Unused endpoint: USE /plans"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /plans` 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-0fe4383ecb7eaaf4", "name": "Unused endpoint: USE /super-admin/plans", "shortDescription": {"text": "Unused endpoint: USE /super-admin/plans"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /super-admin/plans` 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-2c4df4b148d3b983", "name": "Unused endpoint: USE /billing/orders", "shortDescription": {"text": "Unused endpoint: USE /billing/orders"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /billing/orders` 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-125aa261e6b8c85e", "name": "Unused endpoint: USE /billing/subscriptions", "shortDescription": {"text": "Unused endpoint: USE /billing/subscriptions"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /billing/subscriptions` 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-78898781a2385bfa", "name": "Unused endpoint: USE /billing/upgrade", "shortDescription": {"text": "Unused endpoint: USE /billing/upgrade"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /billing/upgrade` 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-89930312aea52c04", "name": "Unused endpoint: USE /billing/coupons", "shortDescription": {"text": "Unused endpoint: USE /billing/coupons"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /billing/coupons` 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-d854b9d271fe567a", "name": "Unused endpoint: USE /billing/quotes", "shortDescription": {"text": "Unused endpoint: USE /billing/quotes"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /billing/quotes` 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-0866c365a2100338", "name": "Unused endpoint: USE /super-admin/coupons", "shortDescription": {"text": "Unused endpoint: USE /super-admin/coupons"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /super-admin/coupons` 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-1eafbbb1f36af373", "name": "Unused endpoint: USE /super-admin/quotes", "shortDescription": {"text": "Unused endpoint: USE /super-admin/quotes"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /super-admin/quotes` 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-56a0e174a644fd04", "name": "Unused endpoint: USE /billing/invoices", "shortDescription": {"text": "Unused endpoint: USE /billing/invoices"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /billing/invoices` 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-0544640d79a3e32a", "name": "Unused endpoint: USE /super-admin/invoices", "shortDescription": {"text": "Unused endpoint: USE /super-admin/invoices"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /super-admin/invoices` 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-a41c87a0ed92a0fd", "name": "Unused endpoint: USE /billing", "shortDescription": {"text": "Unused endpoint: USE /billing"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /billing` 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-413d6ae0f623291d", "name": "Unused endpoint: USE /super-admin/entitlements", "shortDescription": {"text": "Unused endpoint: USE /super-admin/entitlements"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /super-admin/entitlements` 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-8ce867dbaf67fba3", "name": "Unused endpoint: USE /super-admin/billing", "shortDescription": {"text": "Unused endpoint: USE /super-admin/billing"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /super-admin/billing` 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-77b6a72671da2a19", "name": "Unused endpoint: USE /super-admin/teams", "shortDescription": {"text": "Unused endpoint: USE /super-admin/teams"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /super-admin/teams` 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-efa667e1b26d848a", "name": "Unused endpoint: USE /super-admin/vendors", "shortDescription": {"text": "Unused endpoint: USE /super-admin/vendors"}, "fullDescription": {"text": "`backend/src/app.ts` declares `USE /super-admin/vendors` 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/25368"}, "properties": {"repository": "dev-technotaau/hire-adda", "repoUrl": "https://github.com/dev-technotaau/hire-adda", "branch": "main"}, "results": [{"ruleId": "scanner-ea9df8f16ec5a5f2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _patch_cert.js:7"}, "properties": {"repobilityId": "7ae3449a7cb029c5", "scanner": "scanner-primary", "fingerprint": "ea9df8f16ec5a5f2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-074e129eb8236721", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _gen_seed.js:126"}, "properties": {"repobilityId": "40d234312bf551c3", "scanner": "scanner-primary", "fingerprint": "074e129eb8236721", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9334fee001774547", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _expand_script_base.js:16"}, "properties": {"repobilityId": "be4599a4e3340847", "scanner": "scanner-primary", "fingerprint": "9334fee001774547", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df319286f7b8d51a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-db.js:5"}, "properties": {"repobilityId": "9f764a44f7a686ca", "scanner": "scanner-primary", "fingerprint": "df319286f7b8d51a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eaae4a77d5f7a445", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/instrument.ts:59"}, "properties": {"repobilityId": "ef49cff803dc23bc", "scanner": "scanner-primary", "fingerprint": "eaae4a77d5f7a445", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-814930287426496d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/verify-cloud-talent.ts:19"}, "properties": {"repobilityId": "77924591b9aaec0a", "scanner": "scanner-primary", "fingerprint": "814930287426496d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e86296bb1b711d57", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/backfill-cloud-talent.ts:29"}, "properties": {"repobilityId": "ce27f1b7dc98710c", "scanner": "scanner-primary", "fingerprint": "e86296bb1b711d57", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-208bb968771f4802", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/seed-super-admin.ts:20"}, "properties": {"repobilityId": "ac78a83775b6fd76", "scanner": "scanner-primary", "fingerprint": "208bb968771f4802", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e16aec78d818b732", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/reindex-all.ts:14"}, "properties": {"repobilityId": "666152704d16ccb4", "scanner": "scanner-primary", "fingerprint": "e16aec78d818b732", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a0de77e5e17dc724", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/create-talent-tenant.ts:28"}, "properties": {"repobilityId": "ce6c50caf8a48ca9", "scanner": "scanner-primary", "fingerprint": "a0de77e5e17dc724", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c66213027cd80b3b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/seed-dev.ts:40"}, "properties": {"repobilityId": "c7638e5408243d21", "scanner": "scanner-primary", "fingerprint": "c66213027cd80b3b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-778fff424773425c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/services/invoice.service.ts:439"}, "properties": {"repobilityId": "f1e4184f3d4be36e", "scanner": "scanner-primary", "fingerprint": "778fff424773425c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6a4b84ade865b91c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/services/admin.service.ts:1201"}, "properties": {"repobilityId": "599f465f31291dc5", "scanner": "scanner-primary", "fingerprint": "6a4b84ade865b91c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-4d3058de40dfa7bb", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/services/auth.service.ts:1100"}, "properties": {"repobilityId": "6d464db2fe19fa81", "scanner": "scanner-primary", "fingerprint": "4d3058de40dfa7bb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-112c60ea629fcf00", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/config/service-status.ts:171"}, "properties": {"repobilityId": "e3f1a9e97f63c5f2", "scanner": "scanner-primary", "fingerprint": "112c60ea629fcf00", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1b16ca82245511e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/config/telemetry.ts:16"}, "properties": {"repobilityId": "35cc06b53c1e7e5c", "scanner": "scanner-primary", "fingerprint": "1b16ca82245511e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-03f1dcf0c0ccdaba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/prisma/seeds/seed.ts:6"}, "properties": {"repobilityId": "bb37d49109ae24e2", "scanner": "scanner-primary", "fingerprint": "03f1dcf0c0ccdaba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c68be2d581c9bf65", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/layout.tsx:235"}, "properties": {"repobilityId": "62009cc81f939b61", "scanner": "scanner-primary", "fingerprint": "c68be2d581c9bf65", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-a1fde4c4298ff209", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/company/[id]/page.tsx:563"}, "properties": {"repobilityId": "69a6b065a3ff3841", "scanner": "scanner-primary", "fingerprint": "a1fde4c4298ff209", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2f4d245e918c5048", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/billing/payment-methods/page.tsx:178"}, "properties": {"repobilityId": "d6880714afd83723", "scanner": "scanner-primary", "fingerprint": "2f4d245e918c5048", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2afee11b7b590c1c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/billing/subscriptions/page.tsx:125"}, "properties": {"repobilityId": "e8b36bac54ccd73b", "scanner": "scanner-primary", "fingerprint": "2afee11b7b590c1c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f3816d367d734317", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/billing/orders/page.tsx:146"}, "properties": {"repobilityId": "d9ee6686ac92fff0", "scanner": "scanner-primary", "fingerprint": "f3816d367d734317", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-94d2d228ac0fa455", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/billing/invoices/page.tsx:143"}, "properties": {"repobilityId": "d996ccf873d91f02", "scanner": "scanner-primary", "fingerprint": "94d2d228ac0fa455", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-61e7050bff6ef7ca", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/admin/page.tsx:482"}, "properties": {"repobilityId": "07861c13e1626063", "scanner": "scanner-primary", "fingerprint": "61e7050bff6ef7ca", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d2c1eefd9de7f36f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/admin/jobs/page.tsx:239"}, "properties": {"repobilityId": "bd93cd1e0ca8a3a5", "scanner": "scanner-primary", "fingerprint": "d2c1eefd9de7f36f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b4fec49b92695566", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/admin/jobs/[id]/page.tsx:834"}, "properties": {"repobilityId": "df93aa4796241208", "scanner": "scanner-primary", "fingerprint": "b4fec49b92695566", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c1a17a3adc666c8f", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/admin/jobs/[id]/page.tsx:632"}, "properties": {"repobilityId": "575f1b9727df67d6", "scanner": "scanner-primary", "fingerprint": "c1a17a3adc666c8f", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-baabf420b9c9b273", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/admin/analytics/page.tsx:651"}, "properties": {"repobilityId": "7db7b1cad446b98d", "scanner": "scanner-primary", "fingerprint": "baabf420b9c9b273", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-505bd05c5e3d81d4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/admin/tickets/page.tsx:304"}, "properties": {"repobilityId": "e98295a85371b07c", "scanner": "scanner-primary", "fingerprint": "505bd05c5e3d81d4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-857a18f5f1caff1e", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/admin/tickets/[id]/page.tsx:216"}, "properties": {"repobilityId": "99a610d12f43ad97", "scanner": "scanner-primary", "fingerprint": "857a18f5f1caff1e", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-952cfd219fcf9da7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/page.tsx:642"}, "properties": {"repobilityId": "37a2f7e0b07b2f76", "scanner": "scanner-primary", "fingerprint": "952cfd219fcf9da7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0d601d7e6017f1fe", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/subscriptions/page.tsx:185"}, "properties": {"repobilityId": "57678880138b7cec", "scanner": "scanner-primary", "fingerprint": "0d601d7e6017f1fe", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-525f2e4468a43630", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/subscriptions/[id]/page.tsx:173"}, "properties": {"repobilityId": "72c1bd3774cae040", "scanner": "scanner-primary", "fingerprint": "525f2e4468a43630", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-315492fd20e9021f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/plans/[id]/page.tsx:101"}, "properties": {"repobilityId": "bd1e86528e51c727", "scanner": "scanner-primary", "fingerprint": "315492fd20e9021f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fecbad61f990b3f4", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/super-admin/billing/plans/[id]/page.tsx:302"}, "properties": {"repobilityId": "0354a2c771277f01", "scanner": "scanner-primary", "fingerprint": "fecbad61f990b3f4", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-63eee2c313bb8aa0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/transactions/[id]/page.tsx:202"}, "properties": {"repobilityId": "68aba688a16aff58", "scanner": "scanner-primary", "fingerprint": "63eee2c313bb8aa0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-27ba3278981a26a6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/orders/page.tsx:231"}, "properties": {"repobilityId": "d2371be84a97c9df", "scanner": "scanner-primary", "fingerprint": "27ba3278981a26a6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-62be3c1ee5add8b7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/orders/[id]/page.tsx:217"}, "properties": {"repobilityId": "40c04035943f5990", "scanner": "scanner-primary", "fingerprint": "62be3c1ee5add8b7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-069294d4bee0c967", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/billing/quotes/page.tsx:117"}, "properties": {"repobilityId": "4b3dcf3c20516dd4", "scanner": "scanner-primary", "fingerprint": "069294d4bee0c967", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-24e9f9ffa90ccffb", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/super-admin/billing/coupons/[id]/page.tsx:253"}, "properties": {"repobilityId": "58bf71114742c47a", "scanner": "scanner-primary", "fingerprint": "24e9f9ffa90ccffb", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-526ea20a6426279d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/jobs/page.tsx:528"}, "properties": {"repobilityId": "26c0f4c5978f620e", "scanner": "scanner-primary", "fingerprint": "526ea20a6426279d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4c4c9c52732ae4de", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/super-admin/jobs/[id]/page.tsx:638"}, "properties": {"repobilityId": "72ac82ba66491869", "scanner": "scanner-primary", "fingerprint": "4c4c9c52732ae4de", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-70cd89761f7b8c3b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/analytics/page.tsx:743"}, "properties": {"repobilityId": "fcb06b422f697a04", "scanner": "scanner-primary", "fingerprint": "70cd89761f7b8c3b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5eca31bf62b1d117", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/follows/page.tsx:123"}, "properties": {"repobilityId": "3b1908bc51bd4632", "scanner": "scanner-primary", "fingerprint": "5eca31bf62b1d117", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8c5acd254d04ef23", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/super-admin/tickets/page.tsx:477"}, "properties": {"repobilityId": "ed653a7b1b087d9c", "scanner": "scanner-primary", "fingerprint": "8c5acd254d04ef23", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-38c61fcae7183b25", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/companies/[slug]/page.tsx:374"}, "properties": {"repobilityId": "3009b9bb8d72dbc0", "scanner": "scanner-primary", "fingerprint": "38c61fcae7183b25", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-affba793cfe3cfaf", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/pricing/[slug]/page.tsx:188"}, "properties": {"repobilityId": "2ca51edb9bf364a0", "scanner": "scanner-primary", "fingerprint": "affba793cfe3cfaf", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-85065ae3e0caed24", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/vendors/page.tsx:214"}, "properties": {"repobilityId": "d0dd22cbb5f3daa2", "scanner": "scanner-primary", "fingerprint": "85065ae3e0caed24", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2e54c6bafa6f24e7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/page.tsx:857"}, "properties": {"repobilityId": "c4575b6e02a3b440", "scanner": "scanner-primary", "fingerprint": "2e54c6bafa6f24e7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a28f4f3720b8d6df", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/jobs/[id]/page.tsx:756"}, "properties": {"repobilityId": "1a919b7f8ac140d0", "scanner": "scanner-primary", "fingerprint": "a28f4f3720b8d6df", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d559183cd84b2843", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/employer/jobs/[id]/page.tsx:491"}, "properties": {"repobilityId": "4536c1ac23cafacd", "scanner": "scanner-primary", "fingerprint": "d559183cd84b2843", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b05cbf5a7ca626c1", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/employer/jobs/new/page.tsx:1465"}, "properties": {"repobilityId": "57a793054328f5b5", "scanner": "scanner-primary", "fingerprint": "b05cbf5a7ca626c1", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-bae8bc98d52e817d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/profile/preview/page.tsx:661"}, "properties": {"repobilityId": "d1e8e84fcd0e90e0", "scanner": "scanner-primary", "fingerprint": "bae8bc98d52e817d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-be999ac043710fe3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/settings/page.tsx:2382"}, "properties": {"repobilityId": "959c3e7aec6b72c0", "scanner": "scanner-primary", "fingerprint": "be999ac043710fe3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8c7d19c279693c0c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/onboarding/page.tsx:3023"}, "properties": {"repobilityId": "07555f87fb811cc9", "scanner": "scanner-primary", "fingerprint": "8c7d19c279693c0c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a08fa3a324f1f429", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/analytics/page.tsx:672"}, "properties": {"repobilityId": "bdd996d026c53003", "scanner": "scanner-primary", "fingerprint": "a08fa3a324f1f429", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9bd9d54c41d3ee0d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/candidates/page.tsx:3128"}, "properties": {"repobilityId": "b0d48a4407a54987", "scanner": "scanner-primary", "fingerprint": "9bd9d54c41d3ee0d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fa0b97f54318c825", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/candidates/lists/page.tsx:225"}, "properties": {"repobilityId": "e0daed35d8121efc", "scanner": "scanner-primary", "fingerprint": "fa0b97f54318c825", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4616e4cf9f189adf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/employer/help/page.tsx:341"}, "properties": {"repobilityId": "39df7a9c26cdc31f", "scanner": "scanner-primary", "fingerprint": "4616e4cf9f189adf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-430ef0859e808b65", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/candidate/page.tsx:1063"}, "properties": {"repobilityId": "a25cbfb6527e3c3a", "scanner": "scanner-primary", "fingerprint": "430ef0859e808b65", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-166bd4ff69e125be", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/candidate/jobs/[id]/page.tsx:291"}, "properties": {"repobilityId": "f3d2fbed69805135", "scanner": "scanner-primary", "fingerprint": "166bd4ff69e125be", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-fd778746e60bf8ae", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/candidate/profile/page.tsx:716"}, "properties": {"repobilityId": "deedf8eeff2bcc23", "scanner": "scanner-primary", "fingerprint": "fd778746e60bf8ae", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b04d0b7f74d0e27b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/candidate/onboarding/page.tsx:1617"}, "properties": {"repobilityId": "21fac16ab9596ed7", "scanner": "scanner-primary", "fingerprint": "b04d0b7f74d0e27b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0b6d8020d94165e3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/candidate/help/page.tsx:351"}, "properties": {"repobilityId": "68b9fdba4536774f", "scanner": "scanner-primary", "fingerprint": "0b6d8020d94165e3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4a11eb88f23f8b65", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/billing/InvoiceCard.tsx:23"}, "properties": {"repobilityId": "8910c44ccbeeaa4e", "scanner": "scanner-primary", "fingerprint": "4a11eb88f23f8b65", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b315ab29b4fab428", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/billing/BillingAddressesSection.tsx:179"}, "properties": {"repobilityId": "4c52d5bee4f9a715", "scanner": "scanner-primary", "fingerprint": "b315ab29b4fab428", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bec5382db84f6a38", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/billing/SubscriptionCard.tsx:82"}, "properties": {"repobilityId": "376803b4acad2671", "scanner": "scanner-primary", "fingerprint": "bec5382db84f6a38", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6bb0c1a59face0bd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/billing/OrderCard.tsx:44"}, "properties": {"repobilityId": "d6c32b6387b2c74a", "scanner": "scanner-primary", "fingerprint": "6bb0c1a59face0bd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c2e4e77fcd0c3a22", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/jobs/CandidateCompactJobCard.tsx:105"}, "properties": {"repobilityId": "55fc24785cb6b338", "scanner": "scanner-primary", "fingerprint": "c2e4e77fcd0c3a22", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-88d28d0ded7d27de", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/layout/MobileSidebar.tsx:155"}, "properties": {"repobilityId": "d1b148a7d99cdaa5", "scanner": "scanner-primary", "fingerprint": "88d28d0ded7d27de", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2bc2a21980d47b1d", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/components/seo/JsonLd.tsx:8"}, "properties": {"repobilityId": "c9734b5ee9fdcb13", "scanner": "scanner-primary", "fingerprint": "2bc2a21980d47b1d", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-7e940fa9beef999f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/reviews/CompanyAutocomplete.tsx:137"}, "properties": {"repobilityId": "cc4b6eb7eeabc17d", "scanner": "scanner-primary", "fingerprint": "7e940fa9beef999f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-737e4c56bdf1126f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/reviews/CriteriaBars.tsx:28"}, "properties": {"repobilityId": "d689ca79993cefec", "scanner": "scanner-primary", "fingerprint": "737e4c56bdf1126f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5fc1d4e658f40cc9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/reviews/ReviewsByJobProfilesPreview.tsx:56"}, "properties": {"repobilityId": "385af48fb1f4fb0b", "scanner": "scanner-primary", "fingerprint": "5fc1d4e658f40cc9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5901bfc2453bbb60", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/super-admin/TeamsVendorsWidget.tsx:101"}, "properties": {"repobilityId": "5b056e1380e028cf", "scanner": "scanner-primary", "fingerprint": "5901bfc2453bbb60", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b88c68336ab56b72", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/super-admin/FollowDrillPanels.tsx:87"}, "properties": {"repobilityId": "bca12f4df6d8d92f", "scanner": "scanner-primary", "fingerprint": "b88c68336ab56b72", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-67915c1e1519eaf0", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/components/job-search/PublicJobDetailView.tsx:254"}, "properties": {"repobilityId": "409c8ab058c059d6", "scanner": "scanner-primary", "fingerprint": "67915c1e1519eaf0", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-a8767999d5d6701e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/job-search/JobSearchHistoryChips.tsx:294"}, "properties": {"repobilityId": "283c945f84642378", "scanner": "scanner-primary", "fingerprint": "a8767999d5d6701e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6530b1d29e90c233", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/job-search/TopStickyLoginBanner.tsx:66"}, "properties": {"repobilityId": "0956c2bffe36758b", "scanner": "scanner-primary", "fingerprint": "6530b1d29e90c233", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-acdaa6b17f07199e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/job-search/StickyMobileBottomCta.tsx:38"}, "properties": {"repobilityId": "6826fc2e9f703bc4", "scanner": "scanner-primary", "fingerprint": "acdaa6b17f07199e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-afe426b52aa66a36", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/candidates/MapView.tsx:198"}, "properties": {"repobilityId": "0347e827e583140d", "scanner": "scanner-primary", "fingerprint": "afe426b52aa66a36", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b38e6944d74f914b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/common/ResumeParseReview.tsx:1721"}, "properties": {"repobilityId": "c6b27c04735536e2", "scanner": "scanner-primary", "fingerprint": "b38e6944d74f914b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e43b3a6f3b0931a7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/common/SocialLinksBento.tsx:92"}, "properties": {"repobilityId": "0ccbc9b87d5fb8c3", "scanner": "scanner-primary", "fingerprint": "e43b3a6f3b0931a7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6360005bcd34d38e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/SearchBar.tsx:571"}, "properties": {"repobilityId": "8ca76d722e3dbf56", "scanner": "scanner-primary", "fingerprint": "6360005bcd34d38e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dfc683f7571fad27", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/AutoSuggest.tsx:637"}, "properties": {"repobilityId": "64c7bdce90773b6a", "scanner": "scanner-primary", "fingerprint": "dfc683f7571fad27", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f942a15d4214f597", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/FileUpload.tsx:103"}, "properties": {"repobilityId": "9e2f67f29c2dcb78", "scanner": "scanner-primary", "fingerprint": "f942a15d4214f597", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7f7e77c68f6e79e1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/CurrencyAmountInput.tsx:252"}, "properties": {"repobilityId": "9cd36e024c1e495c", "scanner": "scanner-primary", "fingerprint": "7f7e77c68f6e79e1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2d327c19675926db", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/CurrencySelect.tsx:181"}, "properties": {"repobilityId": "9579b158c87b45c0", "scanner": "scanner-primary", "fingerprint": "2d327c19675926db", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-964bcee46f855803", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/PhoneInput.tsx:412"}, "properties": {"repobilityId": "dddd6cd85bbb8c55", "scanner": "scanner-primary", "fingerprint": "964bcee46f855803", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-687f1d809d644295", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/Select.tsx:239"}, "properties": {"repobilityId": "9053ceb9a02aa151", "scanner": "scanner-primary", "fingerprint": "687f1d809d644295", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e7b54b027b79e685", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/AdvancedFilters.tsx:298"}, "properties": {"repobilityId": "a83c1e93fdcfb7e5", "scanner": "scanner-primary", "fingerprint": "e7b54b027b79e685", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a7ce60af6fd4f54e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/ExperienceSelect.tsx:128"}, "properties": {"repobilityId": "842cfd970cfe86a3", "scanner": "scanner-primary", "fingerprint": "a7ce60af6fd4f54e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-168493c27f05f3d1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/candidate/ResumeTemplatePicker.tsx:153"}, "properties": {"repobilityId": "dc4d6d0a292415b3", "scanner": "scanner-primary", "fingerprint": "168493c27f05f3d1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-93570bf67a5148ca", "level": "warning", "message": {"text": "Privileged port 587 in use"}, "properties": {"repobilityId": "a87a96c3b2e62c08", "scanner": "scanner-primary", "fingerprint": "93570bf67a5148ca", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infra/k8s/security/network-policies/backend-policy.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-97878a1ac5ae48fe", "level": "warning", "message": {"text": "Privileged port 465 in use"}, "properties": {"repobilityId": "bcd1f06b60a2b6bc", "scanner": "scanner-primary", "fingerprint": "97878a1ac5ae48fe", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infra/k8s/security/network-policies/backend-policy.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa7c01eb25efca2b", "level": "warning", "message": {"text": "Privileged port 143 in use"}, "properties": {"repobilityId": "6c7e204c24478bfe", "scanner": "scanner-primary", "fingerprint": "aa7c01eb25efca2b", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infra/k8s/security/network-policies/roundcube-policy.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-42c05edfeedb0231", "level": "warning", "message": {"text": "Privileged port 993 in use"}, "properties": {"repobilityId": "a36e56a26353e9ee", "scanner": "scanner-primary", "fingerprint": "42c05edfeedb0231", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infra/k8s/security/network-policies/roundcube-policy.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-19a71ca2b3bcdaf2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in backend/src/jobs/backup.worker.ts:2"}, "properties": {"repobilityId": "35fe7a9d88343390", "scanner": "scanner-primary", "fingerprint": "19a71ca2b3bcdaf2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/jobs/backup.worker.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-6313f67bc17fad5a", "level": "error", "message": {"text": "Possible secret in backend/src/scripts/seed-dev.ts"}, "properties": {"repobilityId": "c3e6a2afe8e59afb", "scanner": "scanner-primary", "fingerprint": "6313f67bc17fad5a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/scripts/seed-dev.ts"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-4bda894c2e69aa35", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/layout.tsx:235"}, "properties": {"repobilityId": "fe5cbdb460d93202", "scanner": "scanner-primary", "fingerprint": "4bda894c2e69aa35", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/layout.tsx"}, "region": {"startLine": 235}}}]}, {"ruleId": "scanner-a84464f1fe92d0e4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in frontend/src/app/sitemap.ts:1"}, "properties": {"repobilityId": "c0dbf2a839fc2f3f", "scanner": "scanner-primary", "fingerprint": "a84464f1fe92d0e4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/sitemap.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fbbace2cd9403533", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/admin/jobs/[id]/page.tsx:632"}, "properties": {"repobilityId": "eea8e0cd4c7eef7e", "scanner": "scanner-primary", "fingerprint": "fbbace2cd9403533", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/admin/jobs/[id]/page.tsx"}, "region": {"startLine": 632}}}]}, {"ruleId": "scanner-591f48f0ad321d6f", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/admin/tickets/[id]/page.tsx:216"}, "properties": {"repobilityId": "629143d91c8892ea", "scanner": "scanner-primary", "fingerprint": "591f48f0ad321d6f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/admin/tickets/[id]/page.tsx"}, "region": {"startLine": 216}}}]}, {"ruleId": "scanner-b05f58f565fc1710", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/super-admin/billing/plans/[id]/page.tsx:302"}, "properties": {"repobilityId": "dd282046eea0f58f", "scanner": "scanner-primary", "fingerprint": "b05f58f565fc1710", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/super-admin/billing/plans/[id]/page.tsx"}, "region": {"startLine": 302}}}]}, {"ruleId": "scanner-956933e5073cc3b5", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/super-admin/billing/coupons/[id]/page.tsx:253"}, "properties": {"repobilityId": "837ddfb9dfc49194", "scanner": "scanner-primary", "fingerprint": "956933e5073cc3b5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/super-admin/billing/coupons/[id]/page.tsx"}, "region": {"startLine": 253}}}]}, {"ruleId": "scanner-1680286bea4c798a", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/super-admin/jobs/[id]/page.tsx:638"}, "properties": {"repobilityId": "f3620d2d94095817", "scanner": "scanner-primary", "fingerprint": "1680286bea4c798a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/super-admin/jobs/[id]/page.tsx"}, "region": {"startLine": 638}}}]}, {"ruleId": "scanner-70425a6c349a91ec", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/companies/[slug]/page.tsx:374"}, "properties": {"repobilityId": "274660fa166cf03f", "scanner": "scanner-primary", "fingerprint": "70425a6c349a91ec", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/companies/[slug]/page.tsx"}, "region": {"startLine": 374}}}]}, {"ruleId": "scanner-830944016e0fcb82", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/pricing/[slug]/page.tsx:188"}, "properties": {"repobilityId": "0e0055b6ad42e883", "scanner": "scanner-primary", "fingerprint": "830944016e0fcb82", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/pricing/[slug]/page.tsx"}, "region": {"startLine": 188}}}]}, {"ruleId": "scanner-04bea6914fe2ed09", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/employer/jobs/[id]/page.tsx:491"}, "properties": {"repobilityId": "64c9efdaf81c4c44", "scanner": "scanner-primary", "fingerprint": "04bea6914fe2ed09", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/employer/jobs/[id]/page.tsx"}, "region": {"startLine": 491}}}]}, {"ruleId": "scanner-4333502b095d6803", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/employer/jobs/new/page.tsx:1465"}, "properties": {"repobilityId": "9b8ee0b6850df2d3", "scanner": "scanner-primary", "fingerprint": "4333502b095d6803", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/employer/jobs/new/page.tsx"}, "region": {"startLine": 1465}}}]}, {"ruleId": "scanner-f8c0c1c6b9423c21", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/candidate/jobs/[id]/page.tsx:291"}, "properties": {"repobilityId": "2e5c1cfe9346d707", "scanner": "scanner-primary", "fingerprint": "f8c0c1c6b9423c21", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/candidate/jobs/[id]/page.tsx"}, "region": {"startLine": 291}}}]}, {"ruleId": "scanner-83941ed6253c3bfd", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/components/auth/RoleLoginForm.tsx:59"}, "properties": {"repobilityId": "e4daa2d3bd2d3d24", "scanner": "scanner-primary", "fingerprint": "83941ed6253c3bfd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/auth/RoleLoginForm.tsx"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-f7db952b267a98ec", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/components/job-search/PublicJobDetailView.tsx:254"}, "properties": {"repobilityId": "5c49b97e4850cc30", "scanner": "scanner-primary", "fingerprint": "f7db952b267a98ec", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/job-search/PublicJobDetailView.tsx"}, "region": {"startLine": 254}}}]}, {"ruleId": "scanner-10b02179756042ed", "level": "error", "message": {"text": "Possible secret in frontend/src/constants/api.ts"}, "properties": {"repobilityId": "5ee9a538be5d9e79", "scanner": "scanner-primary", "fingerprint": "10b02179756042ed", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/constants/api.ts"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-10b02179756042ed", "level": "error", "message": {"text": "Possible secret in frontend/src/constants/api.ts"}, "properties": {"repobilityId": "5ee9a538be5d9e79", "scanner": "scanner-primary", "fingerprint": "10b02179756042ed", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/constants/api.ts"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-8818889d033e67d5", "level": "error", "message": {"text": "Possible secret in frontend/src/constants/routes.ts"}, "properties": {"repobilityId": "aa81940405b2eb3a", "scanner": "scanner-primary", "fingerprint": "8818889d033e67d5", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/constants/routes.ts"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-8818889d033e67d5", "level": "error", "message": {"text": "Possible secret in frontend/src/constants/routes.ts"}, "properties": {"repobilityId": "aa81940405b2eb3a", "scanner": "scanner-primary", "fingerprint": "8818889d033e67d5", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/constants/routes.ts"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-077d6475fafb3c8d", "level": "error", "message": {"text": "Possible secret in infra/scripts/sealed-secret-create.sh"}, "properties": {"repobilityId": "9551a1bd747df955", "scanner": "scanner-primary", "fingerprint": "077d6475fafb3c8d", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infra/scripts/sealed-secret-create.sh"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-3b3b8ffcc5de07af", "level": "error", "message": {"text": "Possible secret in infra/k8s/monitoring/kube-prometheus-values.yaml"}, "properties": {"repobilityId": "6c389066e4f5e01f", "scanner": "scanner-primary", "fingerprint": "3b3b8ffcc5de07af", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infra/k8s/monitoring/kube-prometheus-values.yaml"}, "region": {"startLine": 134}}}]}, {"ruleId": "scanner-4fbd0cab25648a4b", "level": "error", "message": {"text": "Possible secret in infra/k8s/apps/backend/configmap.yaml"}, "properties": {"repobilityId": "5c1e13d4841be6b1", "scanner": "scanner-primary", "fingerprint": "4fbd0cab25648a4b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infra/k8s/apps/backend/configmap.yaml"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-c2b703cf54649df1", "level": "error", "message": {"text": "Possible secret in infra/ansible/playbooks/03-post-install.yml"}, "properties": {"repobilityId": "67f8cdcbd6bbb448", "scanner": "scanner-primary", "fingerprint": "c2b703cf54649df1", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infra/ansible/playbooks/03-post-install.yml"}, "region": {"startLine": 108}}}]}, {"ruleId": "scanner-2a776c16dd0fe7d7", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "528d7e62df96b22d", "scanner": "scanner-primary", "fingerprint": "2a776c16dd0fe7d7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/cd.yml"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-2a776c16dd0fe7d7", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "35177982ada423c4", "scanner": "scanner-primary", "fingerprint": "2a776c16dd0fe7d7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/cd.yml"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-2a776c16dd0fe7d7", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "840e2523036b66bc", "scanner": "scanner-primary", "fingerprint": "2a776c16dd0fe7d7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/cd.yml"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-2a776c16dd0fe7d7", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "528d7e62df96b22d", "scanner": "scanner-primary", "fingerprint": "2a776c16dd0fe7d7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/cd.yml"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-2a776c16dd0fe7d7", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "35177982ada423c4", "scanner": "scanner-primary", "fingerprint": "2a776c16dd0fe7d7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/cd.yml"}, "region": {"startLine": 106}}}]}, {"ruleId": "scanner-2a776c16dd0fe7d7", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "840e2523036b66bc", "scanner": "scanner-primary", "fingerprint": "2a776c16dd0fe7d7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/cd.yml"}, "region": {"startLine": 119}}}]}, {"ruleId": "scanner-76b2ab6e6efb8a12", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "190f1b1d806af718", "scanner": "scanner-primary", "fingerprint": "76b2ab6e6efb8a12", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/cd.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-89efbd11891cbff3", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7da172eb74791f8f", "scanner": "scanner-primary", "fingerprint": "89efbd11891cbff3", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-k8s.yml"}, "region": {"startLine": 165}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 145}}}]}, {"ruleId": "scanner-7f1e4527e6fecffa", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "e790d4d334398ef3", "scanner": "scanner-primary", "fingerprint": "7f1e4527e6fecffa", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 182}}}]}, {"ruleId": "scanner-7f1e4527e6fecffa", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "e790d4d334398ef3", "scanner": "scanner-primary", "fingerprint": "7f1e4527e6fecffa", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 193}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 211}}}]}, {"ruleId": "scanner-23275a81025207c4", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0961a8b863337f8e", "scanner": "scanner-primary", "fingerprint": "23275a81025207c4", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-vps.yml"}, "region": {"startLine": 165}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "b86179956da3a4a8", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ae6d7eeb05603f40", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "f713e9ae4c454beb", "scanner": "scanner-primary", "fingerprint": "ae6d7eeb05603f40", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2e61e14582ad4b6f", "level": "note", "message": {"text": "Very large file: backend/src/services/notification.service.ts (1697 lines)"}, "properties": {"repobilityId": "d94cb05a315d08de", "scanner": "scanner-primary", "fingerprint": "2e61e14582ad4b6f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4ef7637d735d4a03", "level": "note", "message": {"text": "Very large file: backend/src/services/search.service.ts (3599 lines)"}, "properties": {"repobilityId": "af07e89cf19e238f", "scanner": "scanner-primary", "fingerprint": "4ef7637d735d4a03", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4edb78efc87d85c5", "level": "note", "message": {"text": "Very large file: backend/src/services/candidate.service.ts (1522 lines)"}, "properties": {"repobilityId": "a50ba9d63888f3a9", "scanner": "scanner-primary", "fingerprint": "4edb78efc87d85c5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0883b45cd60c8621", "level": "note", "message": {"text": "Very large file: backend/src/services/auth.service.ts (1671 lines)"}, "properties": {"repobilityId": "f254ab06b2557c08", "scanner": "scanner-primary", "fingerprint": "0883b45cd60c8621", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f27e9486559366c1", "level": "note", "message": {"text": "Very large file: backend/src/services/job.service.ts (1846 lines)"}, "properties": {"repobilityId": "51dae4c8115f7e6e", "scanner": "scanner-primary", "fingerprint": "f27e9486559366c1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d1afd22d348c0109", "level": "note", "message": {"text": "Very large file: frontend/src/app/admin/users/[id]/page.tsx (1544 lines)"}, "properties": {"repobilityId": "93f77dd430d8b3af", "scanner": "scanner-primary", "fingerprint": "d1afd22d348c0109", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ab6dd8a0c9b32053", "level": "note", "message": {"text": "Very large file: frontend/src/app/admin/analytics/page.tsx (1754 lines)"}, "properties": {"repobilityId": "b32bd741da367188", "scanner": "scanner-primary", "fingerprint": "ab6dd8a0c9b32053", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9a7fe8839f9fcf7b", "level": "note", "message": {"text": "Very large file: frontend/src/app/super-admin/page.tsx (1684 lines)"}, "properties": {"repobilityId": "c300d560cb37abfd", "scanner": "scanner-primary", "fingerprint": "9a7fe8839f9fcf7b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3c4c366641681305", "level": "note", "message": {"text": "Very large file: frontend/src/app/super-admin/users/[id]/page.tsx (4603 lines)"}, "properties": {"repobilityId": "bb6bce3d85c651a1", "scanner": "scanner-primary", "fingerprint": "3c4c366641681305", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0b8365900fac9d35", "level": "note", "message": {"text": "Very large file: frontend/src/app/super-admin/settings/page.tsx (1495 lines)"}, "properties": {"repobilityId": "9220177c4e01c115", "scanner": "scanner-primary", "fingerprint": "0b8365900fac9d35", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0d62d70da4dcbdb3", "level": "note", "message": {"text": "Very large file: frontend/src/app/super-admin/analytics/page.tsx (2234 lines)"}, "properties": {"repobilityId": "db983e2eb1b2b8a6", "scanner": "scanner-primary", "fingerprint": "0d62d70da4dcbdb3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c6c89f1a2f7f1b95", "level": "note", "message": {"text": "Very large file: frontend/src/app/employer/page.tsx (1369 lines)"}, "properties": {"repobilityId": "265c2ea18b563dd1", "scanner": "scanner-primary", "fingerprint": "c6c89f1a2f7f1b95", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7862947948774472", "level": "note", "message": {"text": "Very large file: frontend/src/app/employer/jobs/[id]/page.tsx (1239 lines)"}, "properties": {"repobilityId": "fbcacc1c3afb4ed0", "scanner": "scanner-primary", "fingerprint": "7862947948774472", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9a021db2087cd2aa", "level": "note", "message": {"text": "Very large file: frontend/src/app/employer/jobs/new/page.tsx (1980 lines)"}, "properties": {"repobilityId": "08901bd0568d6c7a", "scanner": "scanner-primary", "fingerprint": "9a021db2087cd2aa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0a0bad8417143cfe", "level": "note", "message": {"text": "Very large file: frontend/src/app/employer/profile/preview/page.tsx (1135 lines)"}, "properties": {"repobilityId": "cbdfcf16a0d7b0c3", "scanner": "scanner-primary", "fingerprint": "0a0bad8417143cfe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2e7e361f2badc8ab", "level": "note", "message": {"text": "Very large file: frontend/src/app/employer/settings/page.tsx (3017 lines)"}, "properties": {"repobilityId": "c1f7571d239a56f8", "scanner": "scanner-primary", "fingerprint": "2e7e361f2badc8ab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3cef2a2d1e6a0a5c", "level": "note", "message": {"text": "Very large file: frontend/src/app/employer/onboarding/page.tsx (3211 lines)"}, "properties": {"repobilityId": "f3455899ab4a47be", "scanner": "scanner-primary", "fingerprint": "3cef2a2d1e6a0a5c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0d880c10a9d1fb21", "level": "note", "message": {"text": "Very large file: frontend/src/app/employer/candidates/page.tsx (3289 lines)"}, "properties": {"repobilityId": "2543d1c55e9051f4", "scanner": "scanner-primary", "fingerprint": "0d880c10a9d1fb21", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4656c8b9ad773631", "level": "note", "message": {"text": "Very large file: frontend/src/app/employer/candidates/[id]/page.tsx (1847 lines)"}, "properties": {"repobilityId": "7290408e43e4de3f", "scanner": "scanner-primary", "fingerprint": "4656c8b9ad773631", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d45fce2445b7b8a5", "level": "note", "message": {"text": "Very large file: frontend/src/app/candidate/page.tsx (1318 lines)"}, "properties": {"repobilityId": "acc4b9a298c01281", "scanner": "scanner-primary", "fingerprint": "d45fce2445b7b8a5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4ac8133f7bcd3618", "level": "note", "message": {"text": "Very large file: frontend/src/app/candidate/jobs/page.tsx (1658 lines)"}, "properties": {"repobilityId": "0fe89ed34a76a0fb", "scanner": "scanner-primary", "fingerprint": "4ac8133f7bcd3618", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cb004b0792093a67", "level": "note", "message": {"text": "Very large file: frontend/src/app/candidate/profile/page.tsx (1602 lines)"}, "properties": {"repobilityId": "c1a8f729a313eef5", "scanner": "scanner-primary", "fingerprint": "cb004b0792093a67", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a59b645193e30c6e", "level": "note", "message": {"text": "Very large file: frontend/src/app/candidate/profile/preview/page.tsx (1268 lines)"}, "properties": {"repobilityId": "9177bde80fd7807a", "scanner": "scanner-primary", "fingerprint": "a59b645193e30c6e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-925ac8181a21adc5", "level": "note", "message": {"text": "Very large file: frontend/src/app/candidate/settings/page.tsx (2495 lines)"}, "properties": {"repobilityId": "a0e6c0932e3c7e05", "scanner": "scanner-primary", "fingerprint": "925ac8181a21adc5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-efca713e43307144", "level": "note", "message": {"text": "Very large file: frontend/src/app/candidate/onboarding/page.tsx (4818 lines)"}, "properties": {"repobilityId": "533d5cf99dce28a8", "scanner": "scanner-primary", "fingerprint": "efca713e43307144", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3eba34bc3c92ec5b", "level": "note", "message": {"text": "Very large file: frontend/src/components/common/ResumeParseReview.tsx (1740 lines)"}, "properties": {"repobilityId": "bb3323e564a9d363", "scanner": "scanner-primary", "fingerprint": "3eba34bc3c92ec5b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0f2b65b39b4b6754", "level": "note", "message": {"text": "Very large file: frontend/src/constants/suggestions.ts (6844 lines)"}, "properties": {"repobilityId": "9d568ea8855b0718", "scanner": "scanner-primary", "fingerprint": "0f2b65b39b4b6754", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b0e49332999b751b", "level": "note", "message": {"text": "Very large file: frontend/src/constants/indian-cities.ts (4074 lines)"}, "properties": {"repobilityId": "8e66c298c9382e36", "scanner": "scanner-primary", "fingerprint": "b0e49332999b751b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0befbfdc341dc59b", "level": "note", "message": {"text": "Very large file: frontend/src/lib/json-ld.ts (1509 lines)"}, "properties": {"repobilityId": "452fd5d7ec1badc6", "scanner": "scanner-primary", "fingerprint": "0befbfdc341dc59b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "5824617f84dd263c", "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": "b35bd830e252318f", "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": "d12ffb2fec4d364d", "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": "6f4ea9939761c543", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-7efc221a227e49cf", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/index.ts:1"}, "properties": {"repobilityId": "1eab274312fc4fbe", "scanner": "scanner-primary", "fingerprint": "7efc221a227e49cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f79bb81cbacfe485", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/app.ts:124"}, "properties": {"repobilityId": "044e3e4d8f9a2ba5", "scanner": "scanner-primary", "fingerprint": "f79bb81cbacfe485", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7065e70bcc8d11a", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/jobs/resume-parse.worker.ts:52"}, "properties": {"repobilityId": "649f95ee3f2c7d78", "scanner": "scanner-primary", "fingerprint": "b7065e70bcc8d11a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c3d3c321753b66e1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/jobs/image-processing.worker.ts:37"}, "properties": {"repobilityId": "19e7e462103e7975", "scanner": "scanner-primary", "fingerprint": "c3d3c321753b66e1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b5a0aeabfaacb252", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/scripts/seed-curated-listings.ts:269"}, "properties": {"repobilityId": "ca49fb75043e2c50", "scanner": "scanner-primary", "fingerprint": "b5a0aeabfaacb252", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-60f9790dc3828ea6", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/utils/invoice-pdf.ts:110"}, "properties": {"repobilityId": "e3fe84e7e77e459e", "scanner": "scanner-primary", "fingerprint": "60f9790dc3828ea6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-88c7cff04148932e", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/controllers/super-admin-follows.controller.ts:19"}, "properties": {"repobilityId": "97f14c5932167b38", "scanner": "scanner-primary", "fingerprint": "88c7cff04148932e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7eb3d32aace43e79", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/controllers/auth.controller.ts:233"}, "properties": {"repobilityId": "5f51e1a8645d1c09", "scanner": "scanner-primary", "fingerprint": "7eb3d32aace43e79", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-86305aef20d01902", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/controllers/employer.controller.ts:499"}, "properties": {"repobilityId": "6202651dfc0c8088", "scanner": "scanner-primary", "fingerprint": "86305aef20d01902", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f921257673dfc4a", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/controllers/order.controller.ts:186"}, "properties": {"repobilityId": "3463617fcff4c876", "scanner": "scanner-primary", "fingerprint": "5f921257673dfc4a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ecb81deaf35c7aa1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/kafka/event-router.ts:16"}, "properties": {"repobilityId": "c17ffb2d68fe7f2a", "scanner": "scanner-primary", "fingerprint": "ecb81deaf35c7aa1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-682fb088a426869e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/middleware/turnstile.ts:36"}, "properties": {"repobilityId": "3808869abf1212a0", "scanner": "scanner-primary", "fingerprint": "682fb088a426869e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-75255a3ae02a5ae0", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/lib/slugs.ts:66"}, "properties": {"repobilityId": "b731b86e311baf35", "scanner": "scanner-primary", "fingerprint": "75255a3ae02a5ae0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a280f95c87f18bce", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/services/razorpay-webhook.service.ts:265"}, "properties": {"repobilityId": "05c3523f8f6d2425", "scanner": "scanner-primary", "fingerprint": "a280f95c87f18bce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5c94476427a1a200", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/services/geocoding.service.ts:85"}, "properties": {"repobilityId": "ef51ac6db8f6f8bf", "scanner": "scanner-primary", "fingerprint": "5c94476427a1a200", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f8d624277fee4d58", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/services/resume-schema.ts:128"}, "properties": {"repobilityId": "c5ec33b1de426b98", "scanner": "scanner-primary", "fingerprint": "f8d624277fee4d58", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19556ce535b4fb67", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/services/employer.service.ts:157"}, "properties": {"repobilityId": "0393d5e2f82a1afa", "scanner": "scanner-primary", "fingerprint": "19556ce535b4fb67", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ca71ea7c828365f", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/services/public-companies.service.ts:214"}, "properties": {"repobilityId": "164364982865ff11", "scanner": "scanner-primary", "fingerprint": "1ca71ea7c828365f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6137a2a3eb8b1f1c", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/services/invoice.service.ts:112"}, "properties": {"repobilityId": "b15101b582621d57", "scanner": "scanner-primary", "fingerprint": "6137a2a3eb8b1f1c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-664fc6e5cd6e2d75", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/services/company-review.service.ts:599"}, "properties": {"repobilityId": "09d2e1aab66140c4", "scanner": "scanner-primary", "fingerprint": "664fc6e5cd6e2d75", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a12232fa2ddcc1d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/services/vendor.service.ts:905"}, "properties": {"repobilityId": "e78ca27cc6d6cffa", "scanner": "scanner-primary", "fingerprint": "a12232fa2ddcc1d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ce8004c61daaf4a", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/services/search.service.ts:1079"}, "properties": {"repobilityId": "64ef8bffe509033e", "scanner": "scanner-primary", "fingerprint": "5ce8004c61daaf4a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-618f23a92920ce3c", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/services/public-stats.service.ts:52"}, "properties": {"repobilityId": "afa414ce8016ad68", "scanner": "scanner-primary", "fingerprint": "618f23a92920ce3c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-604dd340b226745b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/services/public-stats.service.ts:209"}, "properties": {"repobilityId": "00423eb3505efdf7", "scanner": "scanner-primary", "fingerprint": "604dd340b226745b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-440d2082ac16934a", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/services/ticket.service.ts:78"}, "properties": {"repobilityId": "3f4c724a955f2758", "scanner": "scanner-primary", "fingerprint": "440d2082ac16934a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d81ea3a0ebd331c", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/services/refund.service.ts:364"}, "properties": {"repobilityId": "f14508f0cf18f478", "scanner": "scanner-primary", "fingerprint": "7d81ea3a0ebd331c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-efac5854de6855f3", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/services/gemini-extractor.service.ts:52"}, "properties": {"repobilityId": "c7a67d9e69c488ca", "scanner": "scanner-primary", "fingerprint": "efac5854de6855f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f043348e27546f3", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/services/curated.service.ts:97"}, "properties": {"repobilityId": "bee4168e8772cb98", "scanner": "scanner-primary", "fingerprint": "4f043348e27546f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ccd44fcf98d1fffb", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/services/upgrade.service.ts:231"}, "properties": {"repobilityId": "eebb03e0a275b71d", "scanner": "scanner-primary", "fingerprint": "ccd44fcf98d1fffb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ebe26887437895fe", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/services/cv-unlock.service.ts:34"}, "properties": {"repobilityId": "37d344b1a2478cb3", "scanner": "scanner-primary", "fingerprint": "ebe26887437895fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-66f78332b0223e00", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/services/resume-parser.service.ts:153"}, "properties": {"repobilityId": "f64f335481e838da", "scanner": "scanner-primary", "fingerprint": "66f78332b0223e00", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a593ee4d13d302d", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/services/entitlement.service.ts:152"}, "properties": {"repobilityId": "16148ef257b56161", "scanner": "scanner-primary", "fingerprint": "2a593ee4d13d302d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-36e3d1b49e0aea2f", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/services/auth.service.ts:778"}, "properties": {"repobilityId": "1160c355f9c6d491", "scanner": "scanner-primary", "fingerprint": "36e3d1b49e0aea2f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97932661713b65ea", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/services/job.service.ts:390"}, "properties": {"repobilityId": "6b2eb709f1d54142", "scanner": "scanner-primary", "fingerprint": "97932661713b65ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a376bf623d6c78f", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/config/env.ts:158"}, "properties": {"repobilityId": "b29d9a30a252dfdf", "scanner": "scanner-primary", "fingerprint": "2a376bf623d6c78f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-456e944c9a4e051e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/config/razorpay.ts:243"}, "properties": {"repobilityId": "62a2399c918f92e4", "scanner": "scanner-primary", "fingerprint": "456e944c9a4e051e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-304a7a599cd6cbd3", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/routes/quote.routes.ts:50"}, "properties": {"repobilityId": "2eea5138b325964d", "scanner": "scanner-primary", "fingerprint": "304a7a599cd6cbd3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-acece4067079e3f8", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/routes/public.routes.ts:114"}, "properties": {"repobilityId": "987e0c4c1c1a33b3", "scanner": "scanner-primary", "fingerprint": "acece4067079e3f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b566d27d5304dc34", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/routes/auth.routes.ts:43"}, "properties": {"repobilityId": "e648bb25deb726e7", "scanner": "scanner-primary", "fingerprint": "b566d27d5304dc34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0f9bbd7695f4525", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/prisma/seeds/seed.ts:8"}, "properties": {"repobilityId": "9691322072571f70", "scanner": "scanner-primary", "fingerprint": "d0f9bbd7695f4525", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fcb9e3f4a84d8717", "level": "none", "message": {"text": "Commented-code block (14 lines) in frontend/next.config.ts:50"}, "properties": {"repobilityId": "2f20c687db9497a5", "scanner": "scanner-primary", "fingerprint": "fcb9e3f4a84d8717", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ec6947156d7fe8a", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/scripts/validate-structured-data.mjs:243"}, "properties": {"repobilityId": "ac5174a58438ddb2", "scanner": "scanner-primary", "fingerprint": "2ec6947156d7fe8a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd290b591217b08c", "level": "none", "message": {"text": "Commented-code block (33 lines) in frontend/src/proxy.ts:54"}, "properties": {"repobilityId": "50aa88077a5f9944", "scanner": "scanner-primary", "fingerprint": "bd290b591217b08c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-821c72cd53063425", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/instrumentation-client.ts:11"}, "properties": {"repobilityId": "07294e303f8f825b", "scanner": "scanner-primary", "fingerprint": "821c72cd53063425", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7467631f3f47b824", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/page.tsx:77"}, "properties": {"repobilityId": "12e31f3ebb9a2ab9", "scanner": "scanner-primary", "fingerprint": "7467631f3f47b824", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4985ff2c84c9cff4", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/sitemap.ts:114"}, "properties": {"repobilityId": "52cc69ce32542642", "scanner": "scanner-primary", "fingerprint": "4985ff2c84c9cff4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6628b125a6faa2f1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/sitemap.ts:689"}, "properties": {"repobilityId": "3f5b6cf45d25d579", "scanner": "scanner-primary", "fingerprint": "6628b125a6faa2f1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cb456fd10ae05405", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/company/[id]/layout.tsx:114"}, "properties": {"repobilityId": "4054509799e81684", "scanner": "scanner-primary", "fingerprint": "cb456fd10ae05405", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6761112470075be8", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/app/billing/quote/QuoteRequestForm.tsx:89"}, "properties": {"repobilityId": "751167606ba4728d", "scanner": "scanner-primary", "fingerprint": "6761112470075be8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e88477088d809c1", "level": "none", "message": {"text": "Commented-code block (11 lines) in frontend/src/app/api/proxy/[...path]/route.ts:49"}, "properties": {"repobilityId": "6e88f489742cf184", "scanner": "scanner-primary", "fingerprint": "3e88477088d809c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-31bbfe75a3f9f760", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/proxy/[...path]/route.ts:84"}, "properties": {"repobilityId": "01dab2af51a684e1", "scanner": "scanner-primary", "fingerprint": "31bbfe75a3f9f760", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-072a43f1891aeb13", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/csrf-token/route.ts:22"}, "properties": {"repobilityId": "a2e3147297bb768a", "scanner": "scanner-primary", "fingerprint": "072a43f1891aeb13", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c8ac1c125bf1d9a4", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/robots.txt/route.ts:45"}, "properties": {"repobilityId": "04d0082f89d0d473", "scanner": "scanner-primary", "fingerprint": "c8ac1c125bf1d9a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c4a7ad81b9e5b1f8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/auth/callback/page.tsx:50"}, "properties": {"repobilityId": "425fb7a39ace279e", "scanner": "scanner-primary", "fingerprint": "c4a7ad81b9e5b1f8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cec75b679806180c", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/companies/[slug]/page.tsx:109"}, "properties": {"repobilityId": "afcd12924e1ec07f", "scanner": "scanner-primary", "fingerprint": "cec75b679806180c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1df72ae7f945bba", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/companies/[slug]/reviews/ReviewsClient.tsx:8"}, "properties": {"repobilityId": "8045895d34e08a5c", "scanner": "scanner-primary", "fingerprint": "e1df72ae7f945bba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a6f61408dda879af", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/app/employer/page.tsx:164"}, "properties": {"repobilityId": "132bc5b1b77c5c33", "scanner": "scanner-primary", "fingerprint": "a6f61408dda879af", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17cf36c74f50863d", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/app/employer/jobs/new/page.tsx:83"}, "properties": {"repobilityId": "aaf87fd385a5236f", "scanner": "scanner-primary", "fingerprint": "17cf36c74f50863d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c03157f3dcf33021", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/employer/followers/page.tsx:53"}, "properties": {"repobilityId": "758785786c3166e9", "scanner": "scanner-primary", "fingerprint": "c03157f3dcf33021", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc9c4c84716e751c", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/app/employer/onboarding/page.tsx:402"}, "properties": {"repobilityId": "68d9230226a62994", "scanner": "scanner-primary", "fingerprint": "cc9c4c84716e751c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-651a1b4147e842a4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/employer/candidates/page.tsx:902"}, "properties": {"repobilityId": "a7cddc1989cce933", "scanner": "scanner-primary", "fingerprint": "651a1b4147e842a4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fbbbfb26cc3dcee7", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/src/app/candidate/page.tsx:231"}, "properties": {"repobilityId": "931f98761269c740", "scanner": "scanner-primary", "fingerprint": "fbbbfb26cc3dcee7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-792c68c558aaff2d", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/app/candidate/jobs/page.tsx:50"}, "properties": {"repobilityId": "9473348b69511513", "scanner": "scanner-primary", "fingerprint": "792c68c558aaff2d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bfa4827ce09383cb", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/app/candidate/profile/page.tsx:496"}, "properties": {"repobilityId": "378cfe86da02afd7", "scanner": "scanner-primary", "fingerprint": "bfa4827ce09383cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-670662df43c18b12", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/app/candidate/onboarding/page.tsx:637"}, "properties": {"repobilityId": "4eeb29af9d8f0fab", "scanner": "scanner-primary", "fingerprint": "670662df43c18b12", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7a9be8f30f311dd", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/utils/build-applyable-resume-fields.ts:324"}, "properties": {"repobilityId": "1e352fc65df2cbdb", "scanner": "scanner-primary", "fingerprint": "a7a9be8f30f311dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b18bea3b36b28365", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/hooks/use-entitlements.ts:31"}, "properties": {"repobilityId": "a78f4aba1f346cde", "scanner": "scanner-primary", "fingerprint": "b18bea3b36b28365", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-789eb4d387f1a733", "level": "none", "message": {"text": "Commented-code block (11 lines) in frontend/src/hooks/use-socket.ts:64"}, "properties": {"repobilityId": "8f650250fa30b7ca", "scanner": "scanner-primary", "fingerprint": "789eb4d387f1a733", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8f7bda25a5834d5", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/types/resume-parse.ts:370"}, "properties": {"repobilityId": "a4897a03cf376b5d", "scanner": "scanner-primary", "fingerprint": "c8f7bda25a5834d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4c1ab8a27d88d4d", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/components/billing/PlanCard.tsx:45"}, "properties": {"repobilityId": "f61d2f6c04765a8d", "scanner": "scanner-primary", "fingerprint": "e4c1ab8a27d88d4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-13519a3abaf525d2", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/components/billing/BillingAlertBadge.tsx:90"}, "properties": {"repobilityId": "af4cef4881ec36c2", "scanner": "scanner-primary", "fingerprint": "13519a3abaf525d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9581da0d232f78d0", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/components/billing/VerifiedBadge.tsx:58"}, "properties": {"repobilityId": "23c3f290555f9f90", "scanner": "scanner-primary", "fingerprint": "9581da0d232f78d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f21f66403531e02", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/billing/UpgradeModal.tsx:400"}, "properties": {"repobilityId": "2ac4a9b2112db331", "scanner": "scanner-primary", "fingerprint": "4f21f66403531e02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d41a8c993ebae74c", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/components/billing/CouponInput.tsx:47"}, "properties": {"repobilityId": "83bef5794df456f8", "scanner": "scanner-primary", "fingerprint": "d41a8c993ebae74c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cabecb51f5e2301a", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/billing/QuotaBar.tsx:81"}, "properties": {"repobilityId": "7253b3de720f6571", "scanner": "scanner-primary", "fingerprint": "cabecb51f5e2301a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09aa08dc8871421f", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/components/support/WhatsappSupportCard.tsx:88"}, "properties": {"repobilityId": "9c457fcdef23bf91", "scanner": "scanner-primary", "fingerprint": "09aa08dc8871421f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-96d1c8eaf5d178fe", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/profile/ExperienceSection.tsx:30"}, "properties": {"repobilityId": "0b8b0b000657960b", "scanner": "scanner-primary", "fingerprint": "96d1c8eaf5d178fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-66c890a9665613c7", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/layout/Header.tsx:184"}, "properties": {"repobilityId": "18a21d59f3233de8", "scanner": "scanner-primary", "fingerprint": "66c890a9665613c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb480df084a46064", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/layout/DashboardHeader.tsx:58"}, "properties": {"repobilityId": "02eae11e17562799", "scanner": "scanner-primary", "fingerprint": "cb480df084a46064", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3fe90201894452c", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/layout/Sidebar.tsx:233"}, "properties": {"repobilityId": "1e09e46e3042ffdc", "scanner": "scanner-primary", "fingerprint": "e3fe90201894452c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-50694a6e7a35b67b", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/layout/PublicLayout.tsx:98"}, "properties": {"repobilityId": "4e0072149e4c5da1", "scanner": "scanner-primary", "fingerprint": "50694a6e7a35b67b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-785a23919b2a6129", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/components/company-search/CompanyDetailTabs.tsx:106"}, "properties": {"repobilityId": "28ad5e5a04863db6", "scanner": "scanner-primary", "fingerprint": "785a23919b2a6129", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e099979ef8d6270b", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/company-search/PublicCompanyListingShell.tsx:214"}, "properties": {"repobilityId": "f2055743a1a83b73", "scanner": "scanner-primary", "fingerprint": "e099979ef8d6270b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff58e6d2cb85f6cc", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/home/JobsCategoriesChipsSection.tsx:111"}, "properties": {"repobilityId": "2f1c5de44e870055", "scanner": "scanner-primary", "fingerprint": "ff58e6d2cb85f6cc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35454f88afc079e9", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/job-search/PublicJobListingShell.tsx:211"}, "properties": {"repobilityId": "1029ce4345c04b73", "scanner": "scanner-primary", "fingerprint": "35454f88afc079e9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-24a32e2ebd66a22f", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/src/components/onboarding/OnboardingShell.tsx:202"}, "properties": {"repobilityId": "7a513e94de2ffb8f", "scanner": "scanner-primary", "fingerprint": "24a32e2ebd66a22f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fdb059fbfea1a94a", "level": "none", "message": {"text": "Commented-code block (12 lines) in frontend/src/components/common/ResumeParseReview.tsx:127"}, "properties": {"repobilityId": "99a82ece7de31b59", "scanner": "scanner-primary", "fingerprint": "fdb059fbfea1a94a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed48f40a99c019a0", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/src/components/common/Logo.tsx:12"}, "properties": {"repobilityId": "f89b115eb5f459bc", "scanner": "scanner-primary", "fingerprint": "ed48f40a99c019a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-466b7201c8635c24", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/components/common/WelcomeScreen.tsx:158"}, "properties": {"repobilityId": "30470eb7d2c1a47f", "scanner": "scanner-primary", "fingerprint": "466b7201c8635c24", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2dfaa58ef7a1178e", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/common/BackToTop.tsx:13"}, "properties": {"repobilityId": "c8fcae1fa9e467d3", "scanner": "scanner-primary", "fingerprint": "2dfaa58ef7a1178e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8dcd31f42ead405e", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/components/common/SEO.tsx:132"}, "properties": {"repobilityId": "4259ecb261b3b4ec", "scanner": "scanner-primary", "fingerprint": "8dcd31f42ead405e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26780beb8bff3840", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/ui/ServerAutoSuggest.tsx:12"}, "properties": {"repobilityId": "547036c928413009", "scanner": "scanner-primary", "fingerprint": "26780beb8bff3840", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-446776ebd78f9eb4", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/ui/MaskedCodeInput.tsx:124"}, "properties": {"repobilityId": "e673498ce0c3ac98", "scanner": "scanner-primary", "fingerprint": "446776ebd78f9eb4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2fa245c8291b91c7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/ui/ServerSuggestionInput.tsx:14"}, "properties": {"repobilityId": "a569c463fef1a70a", "scanner": "scanner-primary", "fingerprint": "2fa245c8291b91c7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7bb62f0d84cdc36c", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/src/components/ui/Modal.tsx:121"}, "properties": {"repobilityId": "9398cd94322d2aea", "scanner": "scanner-primary", "fingerprint": "7bb62f0d84cdc36c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ebe2bb2000bb9f33", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/components/ui/Tabs.tsx:53"}, "properties": {"repobilityId": "fdad090c6aad875d", "scanner": "scanner-primary", "fingerprint": "ebe2bb2000bb9f33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0da3d1d952e41ce6", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/ui/PhoneInput.tsx:159"}, "properties": {"repobilityId": "6565f7c8c2f277e7", "scanner": "scanner-primary", "fingerprint": "0da3d1d952e41ce6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ea2840e36d5c8e8", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/ui/Select.tsx:86"}, "properties": {"repobilityId": "896726c3616ee0c1", "scanner": "scanner-primary", "fingerprint": "4ea2840e36d5c8e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e27e306873b6cf40", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/store/auth.store.ts:95"}, "properties": {"repobilityId": "2a20ef865908a276", "scanner": "scanner-primary", "fingerprint": "e27e306873b6cf40", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff7cac4446211e97", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/src/constants/seo.ts:97"}, "properties": {"repobilityId": "f4a06554becae979", "scanner": "scanner-primary", "fingerprint": "ff7cac4446211e97", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-449a270203406910", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/lib/otel-browser.ts:74"}, "properties": {"repobilityId": "dadb084160263dfa", "scanner": "scanner-primary", "fingerprint": "449a270203406910", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-45b678ead6c3eb62", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/lib/analytics/track.ts:308"}, "properties": {"repobilityId": "8dcee9da158321f3", "scanner": "scanner-primary", "fingerprint": "45b678ead6c3eb62", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9acb1dcbb788c63c", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/lib/analytics/consent.ts:98"}, "properties": {"repobilityId": "9642244f9b519bf0", "scanner": "scanner-primary", "fingerprint": "9acb1dcbb788c63c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82108edf9f3a71a7", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/public/sw.js:97"}, "properties": {"repobilityId": "3526d908f04690b0", "scanner": "scanner-primary", "fingerprint": "82108edf9f3a71a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b507549e228470d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/public/sw.js:84"}, "properties": {"repobilityId": "55acd4523c36292c", "scanner": "scanner-primary", "fingerprint": "6b507549e228470d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ad1f2c0971b89ce0", "level": "note", "message": {"text": "10 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "3bfdc60c61f1870e", "scanner": "scanner-primary", "fingerprint": "ad1f2c0971b89ce0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-f12915fc65fc020d", "level": "error", "message": {"text": "Dangling fetch: POST https://challenges.cloudflare.com/turnstile/v0/siteverify (backend/src/middleware/turnstile.ts:36)"}, "properties": {"repobilityId": "a85765a94e5b5dd3", "scanner": "scanner-primary", "fingerprint": "f12915fc65fc020d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-160b4cde4f9c8f04", "level": "error", "message": {"text": "Dangling fetch: GET http://ip-api.com/json/${ip}?fields=status,country,city,lat,lon (backend/src/services/device-security.service.ts:29)"}, "properties": {"repobilityId": "1103e62ed26f67f4", "scanner": "scanner-primary", "fingerprint": "160b4cde4f9c8f04", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ff4c7e0e509e6597", "level": "error", "message": {"text": "Dangling fetch: POST https://www.google-analytics.com/mp/collect?measurement_id=${measurementId}&api_secret=${apiSecret} (backend/src/services/analytics.service.ts:29)"}, "properties": {"repobilityId": "80a4198049e81374", "scanner": "scanner-primary", "fingerprint": "ff4c7e0e509e6597", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ae3ccbb1719d90fe", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/migrate (frontend/src/app/auth/callback/page.tsx:50)"}, "properties": {"repobilityId": "05c54098a57e5260", "scanner": "scanner-primary", "fingerprint": "ae3ccbb1719d90fe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f129fcad1fdda5ec", "level": "error", "message": {"text": "Dangling fetch: GET https://nominatim.openstreetmap.org/search?format=json&viewbox=${viewbox}&bounded=1&featuretype=city&limit=15&addressdetails=0 (frontend/src/app/employer/candidates/page.tsx:902)"}, "properties": {"repobilityId": "2fff86a2ed7a417b", "scanner": "scanner-primary", "fingerprint": "f129fcad1fdda5ec", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-918e44b121492472", "level": "error", "message": {"text": "Dangling fetch: GET https://nominatim.openstreetmap.org/reverse?lat=${lat}&lon=${lon}&format=json&zoom=10 (frontend/src/app/employer/candidates/page.tsx:943)"}, "properties": {"repobilityId": "4001287334db3da1", "scanner": "scanner-primary", "fingerprint": "918e44b121492472", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3429f98dc5015629", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/socket-token (frontend/src/hooks/use-socket.ts:37)"}, "properties": {"repobilityId": "8fc8781d0cb88f01", "scanner": "scanner-primary", "fingerprint": "3429f98dc5015629", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6e9a71690f8657a7", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/logout (frontend/src/lib/api.ts:138)"}, "properties": {"repobilityId": "57f07d460d1ac323", "scanner": "scanner-primary", "fingerprint": "6e9a71690f8657a7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-b2405266f122e633", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/firebase-token (frontend/src/lib/firebase.ts:133)"}, "properties": {"repobilityId": "9309dc717e1cef51", "scanner": "scanner-primary", "fingerprint": "b2405266f122e633", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-26f736c5e4b1527e", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/register (frontend/src/services/auth.service.ts:70)"}, "properties": {"repobilityId": "1df4c711f5e0df77", "scanner": "scanner-primary", "fingerprint": "26f736c5e4b1527e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-3af1ba4b948318bd", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/login (frontend/src/services/auth.service.ts:86)"}, "properties": {"repobilityId": "83179a0fee92e7be", "scanner": "scanner-primary", "fingerprint": "3af1ba4b948318bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-2dcf40306a82e836", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/logout (frontend/src/services/auth.service.ts:105)"}, "properties": {"repobilityId": "abf7fe920dda3db1", "scanner": "scanner-primary", "fingerprint": "2dcf40306a82e836", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-49de3acfb4fe89d9", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/me (frontend/src/services/auth.service.ts:114)"}, "properties": {"repobilityId": "b41660a550700c58", "scanner": "scanner-primary", "fingerprint": "49de3acfb4fe89d9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-3eecbf29fdbe5954", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/refresh (frontend/src/services/auth.service.ts:123)"}, "properties": {"repobilityId": "39c72be7979240f5", "scanner": "scanner-primary", "fingerprint": "3eecbf29fdbe5954", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-feb16d9050374440", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/firebase-login (frontend/src/services/auth.service.ts:135)"}, "properties": {"repobilityId": "c46aeb3f1a239cc4", "scanner": "scanner-primary", "fingerprint": "feb16d9050374440", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-d68d0bf7d18fe1c1", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/verify-email (frontend/src/services/auth.service.ts:150)"}, "properties": {"repobilityId": "ee1b14b3b6083026", "scanner": "scanner-primary", "fingerprint": "d68d0bf7d18fe1c1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-f9082d09e2b961fe", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/mfa-recovery (frontend/src/services/auth.service.ts:235)"}, "properties": {"repobilityId": "f2bbcbe172dba4dd", "scanner": "scanner-primary", "fingerprint": "f9082d09e2b961fe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-3a007a977fe5f01d", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/auth/me/profile (frontend/src/services/auth.service.ts:324)"}, "properties": {"repobilityId": "c5cb2b9c5711d498", "scanner": "scanner-primary", "fingerprint": "3a007a977fe5f01d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-dde3adb27bf7eebe", "level": "note", "message": {"text": "Unused endpoint: USE /api"}, "properties": {"repobilityId": "3c5ef0fb4fad728c", "scanner": "scanner-primary", "fingerprint": "dde3adb27bf7eebe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-61de4198f0195111", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/webhooks/razorpay"}, "properties": {"repobilityId": "de4117db36acffab", "scanner": "scanner-primary", "fingerprint": "61de4198f0195111", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6ad67c39ae34cae3", "level": "note", "message": {"text": "Unused endpoint: USE /api-docs"}, "properties": {"repobilityId": "67dc9fcb4659fcba", "scanner": "scanner-primary", "fingerprint": "6ad67c39ae34cae3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1992692ae67a02be", "level": "note", "message": {"text": "Unused endpoint: POST /api/csp-report"}, "properties": {"repobilityId": "07fb7a25f542a5a9", "scanner": "scanner-primary", "fingerprint": "1992692ae67a02be", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b4c6498016393290", "level": "note", "message": {"text": "Unused endpoint: GET /api/config/otp"}, "properties": {"repobilityId": "81b05c7dd567dd53", "scanner": "scanner-primary", "fingerprint": "b4c6498016393290", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8d782012eec1297c", "level": "note", "message": {"text": "Unused endpoint: GET /api/config/security"}, "properties": {"repobilityId": "1cba4b515955ddf7", "scanner": "scanner-primary", "fingerprint": "8d782012eec1297c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-eb510ff107b90e88", "level": "note", "message": {"text": "Unused endpoint: USE /internal/alertmanager"}, "properties": {"repobilityId": "51943d7114b994b0", "scanner": "scanner-primary", "fingerprint": "eb510ff107b90e88", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b28d92215a503990", "level": "note", "message": {"text": "Unused endpoint: USE /auth"}, "properties": {"repobilityId": "40aa0d748fea38b4", "scanner": "scanner-primary", "fingerprint": "b28d92215a503990", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ba91e3af8e0454a5", "level": "note", "message": {"text": "Unused endpoint: USE /candidates"}, "properties": {"repobilityId": "20ae133500f7d98b", "scanner": "scanner-primary", "fingerprint": "ba91e3af8e0454a5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fa319626dd1244a8", "level": "note", "message": {"text": "Unused endpoint: USE /employers"}, "properties": {"repobilityId": "d63f38e790be49df", "scanner": "scanner-primary", "fingerprint": "fa319626dd1244a8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-280d2202a0925ebd", "level": "note", "message": {"text": "Unused endpoint: USE /jobs"}, "properties": {"repobilityId": "501a9460c5a140b0", "scanner": "scanner-primary", "fingerprint": "280d2202a0925ebd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3a12264d51315a42", "level": "note", "message": {"text": "Unused endpoint: USE /verifications"}, "properties": {"repobilityId": "dcf4167648983965", "scanner": "scanner-primary", "fingerprint": "3a12264d51315a42", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b2d8849fb6b1ac47", "level": "note", "message": {"text": "Unused endpoint: USE /admin"}, "properties": {"repobilityId": "cf9a369ad906e4a3", "scanner": "scanner-primary", "fingerprint": "b2d8849fb6b1ac47", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d80629752210b855", "level": "note", "message": {"text": "Unused endpoint: USE /notifications"}, "properties": {"repobilityId": "4f39d0eed164cb3f", "scanner": "scanner-primary", "fingerprint": "d80629752210b855", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1b64856104b06f0f", "level": "note", "message": {"text": "Unused endpoint: USE /devices"}, "properties": {"repobilityId": "f508ac84964186e1", "scanner": "scanner-primary", "fingerprint": "1b64856104b06f0f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3fda9e3b0c940d3c", "level": "note", "message": {"text": "Unused endpoint: USE /drafts"}, "properties": {"repobilityId": "5a706b6727f96693", "scanner": "scanner-primary", "fingerprint": "3fda9e3b0c940d3c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8ee6847ba3d7ee55", "level": "note", "message": {"text": "Unused endpoint: USE /sessions"}, "properties": {"repobilityId": "d34bf7b6e956a672", "scanner": "scanner-primary", "fingerprint": "8ee6847ba3d7ee55", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0587cde6c4481ba4", "level": "note", "message": {"text": "Unused endpoint: USE /super-admin"}, "properties": {"repobilityId": "a568a20659e0c1c3", "scanner": "scanner-primary", "fingerprint": "0587cde6c4481ba4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4008977b9edf6af6", "level": "note", "message": {"text": "Unused endpoint: USE /saved-candidates"}, "properties": {"repobilityId": "4cbc8246f5a21c1f", "scanner": "scanner-primary", "fingerprint": "4008977b9edf6af6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f126da46f2c2bd1f", "level": "note", "message": {"text": "Unused endpoint: USE /employer/team"}, "properties": {"repobilityId": "8e6f6aef58f30241", "scanner": "scanner-primary", "fingerprint": "f126da46f2c2bd1f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5b09350d77b25de4", "level": "note", "message": {"text": "Unused endpoint: USE /vendor"}, "properties": {"repobilityId": "4654a477f94b5e14", "scanner": "scanner-primary", "fingerprint": "5b09350d77b25de4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-404802ade7f487c5", "level": "note", "message": {"text": "Unused endpoint: USE /vendors"}, "properties": {"repobilityId": "ec91d0a22ad9589d", "scanner": "scanner-primary", "fingerprint": "404802ade7f487c5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2a73b3630e403d97", "level": "note", "message": {"text": "Unused endpoint: USE /candidate-lists"}, "properties": {"repobilityId": "180f95582ba0c2e6", "scanner": "scanner-primary", "fingerprint": "2a73b3630e403d97", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-aac0c14c92ca5c18", "level": "note", "message": {"text": "Unused endpoint: USE /saved-searches"}, "properties": {"repobilityId": "336bab194277d74f", "scanner": "scanner-primary", "fingerprint": "aac0c14c92ca5c18", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-44a8d35cd092dc20", "level": "note", "message": {"text": "Unused endpoint: USE /search"}, "properties": {"repobilityId": "db1755fbf50f0eee", "scanner": "scanner-primary", "fingerprint": "44a8d35cd092dc20", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a8f40a426fdfb45", "level": "note", "message": {"text": "Unused endpoint: USE /reports"}, "properties": {"repobilityId": "1c09a5cd083f5c5c", "scanner": "scanner-primary", "fingerprint": "7a8f40a426fdfb45", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-db52b256d6ea54f3", "level": "note", "message": {"text": "Unused endpoint: USE /feature-flags"}, "properties": {"repobilityId": "f41779625272f178", "scanner": "scanner-primary", "fingerprint": "db52b256d6ea54f3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c8ca19f93152dd7b", "level": "note", "message": {"text": "Unused endpoint: USE /webauthn"}, "properties": {"repobilityId": "7cf6190bdc59d472", "scanner": "scanner-primary", "fingerprint": "c8ca19f93152dd7b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1e05ba1cd37b6101", "level": "note", "message": {"text": "Unused endpoint: USE /webhooks"}, "properties": {"repobilityId": "f436e8e3aae2f653", "scanner": "scanner-primary", "fingerprint": "1e05ba1cd37b6101", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1ed2c849ffa9bbbb", "level": "note", "message": {"text": "Unused endpoint: USE /recommendations"}, "properties": {"repobilityId": "519e837c070e2ebb", "scanner": "scanner-primary", "fingerprint": "1ed2c849ffa9bbbb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-14c8cdf42637261c", "level": "note", "message": {"text": "Unused endpoint: USE /analytics"}, "properties": {"repobilityId": "d5275bbeede739e2", "scanner": "scanner-primary", "fingerprint": "14c8cdf42637261c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4517d88e3e4bbf4e", "level": "note", "message": {"text": "Unused endpoint: USE /contact"}, "properties": {"repobilityId": "d516199b3d5b298f", "scanner": "scanner-primary", "fingerprint": "4517d88e3e4bbf4e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7dcf108ac689d9b4", "level": "note", "message": {"text": "Unused endpoint: USE /public"}, "properties": {"repobilityId": "c71f369f19c8fb21", "scanner": "scanner-primary", "fingerprint": "7dcf108ac689d9b4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-858cb8cb10d83bfe", "level": "note", "message": {"text": "Unused endpoint: USE /tickets"}, "properties": {"repobilityId": "4879d66a556de189", "scanner": "scanner-primary", "fingerprint": "858cb8cb10d83bfe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9de4213c527180ab", "level": "note", "message": {"text": "Unused endpoint: USE /plans"}, "properties": {"repobilityId": "398dc2541a9bb7d0", "scanner": "scanner-primary", "fingerprint": "9de4213c527180ab", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0fe4383ecb7eaaf4", "level": "note", "message": {"text": "Unused endpoint: USE /super-admin/plans"}, "properties": {"repobilityId": "1672077d93b1b2b8", "scanner": "scanner-primary", "fingerprint": "0fe4383ecb7eaaf4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2c4df4b148d3b983", "level": "note", "message": {"text": "Unused endpoint: USE /billing/orders"}, "properties": {"repobilityId": "b11dca118f3f2ca4", "scanner": "scanner-primary", "fingerprint": "2c4df4b148d3b983", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-125aa261e6b8c85e", "level": "note", "message": {"text": "Unused endpoint: USE /billing/subscriptions"}, "properties": {"repobilityId": "823a6b960aade6eb", "scanner": "scanner-primary", "fingerprint": "125aa261e6b8c85e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-78898781a2385bfa", "level": "note", "message": {"text": "Unused endpoint: USE /billing/upgrade"}, "properties": {"repobilityId": "4d6f02858af89719", "scanner": "scanner-primary", "fingerprint": "78898781a2385bfa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-89930312aea52c04", "level": "note", "message": {"text": "Unused endpoint: USE /billing/coupons"}, "properties": {"repobilityId": "b207399f4436d569", "scanner": "scanner-primary", "fingerprint": "89930312aea52c04", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d854b9d271fe567a", "level": "note", "message": {"text": "Unused endpoint: USE /billing/quotes"}, "properties": {"repobilityId": "8febc1b83eca6b9d", "scanner": "scanner-primary", "fingerprint": "d854b9d271fe567a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0866c365a2100338", "level": "note", "message": {"text": "Unused endpoint: USE /super-admin/coupons"}, "properties": {"repobilityId": "07010a15f9d36f11", "scanner": "scanner-primary", "fingerprint": "0866c365a2100338", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1eafbbb1f36af373", "level": "note", "message": {"text": "Unused endpoint: USE /super-admin/quotes"}, "properties": {"repobilityId": "f650c6fe5a1a103e", "scanner": "scanner-primary", "fingerprint": "1eafbbb1f36af373", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-56a0e174a644fd04", "level": "note", "message": {"text": "Unused endpoint: USE /billing/invoices"}, "properties": {"repobilityId": "f4ba809d31958926", "scanner": "scanner-primary", "fingerprint": "56a0e174a644fd04", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0544640d79a3e32a", "level": "note", "message": {"text": "Unused endpoint: USE /super-admin/invoices"}, "properties": {"repobilityId": "700310964ee96bb4", "scanner": "scanner-primary", "fingerprint": "0544640d79a3e32a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a41c87a0ed92a0fd", "level": "note", "message": {"text": "Unused endpoint: USE /billing"}, "properties": {"repobilityId": "eece7e8cd61b87bd", "scanner": "scanner-primary", "fingerprint": "a41c87a0ed92a0fd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-413d6ae0f623291d", "level": "note", "message": {"text": "Unused endpoint: USE /super-admin/entitlements"}, "properties": {"repobilityId": "89eb3b4d5e9f92f0", "scanner": "scanner-primary", "fingerprint": "413d6ae0f623291d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8ce867dbaf67fba3", "level": "note", "message": {"text": "Unused endpoint: USE /super-admin/billing"}, "properties": {"repobilityId": "1381816a78755896", "scanner": "scanner-primary", "fingerprint": "8ce867dbaf67fba3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-77b6a72671da2a19", "level": "note", "message": {"text": "Unused endpoint: USE /super-admin/teams"}, "properties": {"repobilityId": "9f93be0f4c83cc92", "scanner": "scanner-primary", "fingerprint": "77b6a72671da2a19", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-efa667e1b26d848a", "level": "note", "message": {"text": "Unused endpoint: USE /super-admin/vendors"}, "properties": {"repobilityId": "ec991ce907ef636d", "scanner": "scanner-primary", "fingerprint": "efa667e1b26d848a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}