{"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-b117f5c06d083150", "name": "Possibly dead Python function: run_scrape_all", "shortDescription": {"text": "Possibly dead Python function: run_scrape_all"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f64e390711752405", "name": "Possibly dead Python function: run_health_check", "shortDescription": {"text": "Possibly dead Python function: run_health_check"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4b88cc4f074ecd86", "name": "Possibly dead Python function: shutdown", "shortDescription": {"text": "Possibly dead Python function: shutdown"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-22789007e8d438a6", "name": "Possibly dead Python function: matches_role", "shortDescription": {"text": "Possibly dead Python function: matches_role"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2e340034c9ece874", "name": "Possibly dead Python function: scrape_amazon", "shortDescription": {"text": "Possibly dead Python function: scrape_amazon"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7ac12e5d10a6d05e", "name": "Possibly dead Python function: scrape_apple", "shortDescription": {"text": "Possibly dead Python function: scrape_apple"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-38b00b6367590363", "name": "Possibly dead Python function: scrape_google", "shortDescription": {"text": "Possibly dead Python function: scrape_google"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0f14e917ae7959c4", "name": "Possibly dead Python function: scrape_meta", "shortDescription": {"text": "Possibly dead Python function: scrape_meta"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c27edf6640a01a9f", "name": "Possibly dead Python function: scrape_microsoft", "shortDescription": {"text": "Possibly dead Python function: scrape_microsoft"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9cbc02ffee94e1d8", "name": "Possibly dead Python function: scrape_netflix", "shortDescription": {"text": "Possibly dead Python function: scrape_netflix"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0df7aedbf28b642f", "name": "Possibly dead Python function: enqueue_enrich", "shortDescription": {"text": "Possibly dead Python function: enqueue_enrich"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eebfbbe78aed446f", "name": "Possibly dead Python function: enqueue_scoring", "shortDescription": {"text": "Possibly dead Python function: enqueue_scoring"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-efdcc761b4144541", "name": "Possibly dead Python function: score_jobs_batch", "shortDescription": {"text": "Possibly dead Python function: score_jobs_batch"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd5fe0369eb531d3", "name": "Possibly dead Python function: classify_roles_multi", "shortDescription": {"text": "Possibly dead Python function: classify_roles_multi"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bdd1282d897cafca", "name": "Possibly dead Python function: is_role_match", "shortDescription": {"text": "Possibly dead Python function: is_role_match"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-08232b0c672044d8", "name": "Possibly dead Python function: analyze_outcome", "shortDescription": {"text": "Possibly dead Python function: analyze_outcome"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9e3399f14d787180", "name": "Possibly dead Python function: embed_text", "shortDescription": {"text": "Possibly dead Python function: embed_text"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e26cb3094af1dd7a", "name": "Possibly dead Python function: embed_batch", "shortDescription": {"text": "Possibly dead Python function: embed_batch"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dcac5f2f4ccb89fb", "name": "Possibly dead Python function: matches_role", "shortDescription": {"text": "Possibly dead Python function: matches_role"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-45c1852432786818", "name": "Possibly dead Python function: scrape_amazon", "shortDescription": {"text": "Possibly dead Python function: scrape_amazon"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7900fdc35947a032", "name": "Possibly dead Python function: scrape_apple", "shortDescription": {"text": "Possibly dead Python function: scrape_apple"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c7adb6ec3b862e9a", "name": "Possibly dead Python function: scrape_google", "shortDescription": {"text": "Possibly dead Python function: scrape_google"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f61e0af0e63aec60", "name": "Possibly dead Python function: scrape_meta", "shortDescription": {"text": "Possibly dead Python function: scrape_meta"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d81d43570be2bc14", "name": "Possibly dead Python function: scrape_microsoft", "shortDescription": {"text": "Possibly dead Python function: scrape_microsoft"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-111e93c61ad99243", "name": "Possibly dead Python function: scrape_netflix", "shortDescription": {"text": "Possibly dead Python function: scrape_netflix"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d60e9ab0500fd62", "name": "Stray `console.log` in TS/JS \u2014 frontend/extension/content.js:694", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/extension/content.js:694"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5a69706082309b7d", "name": "Stray `console.log` in TS/JS \u2014 job_app/extension/content.js:694", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 job_app/extension/content.js:694"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f66ad88286ca30a", "name": "Dockerfile runs as root: backend/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: backend/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0cf17c5709fbc3c3", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.13-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.13-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f34c5a1ef0e3b9a", "name": "Insecure pattern 'document_write' in frontend/src/app/page.tsx:258", "shortDescription": {"text": "Insecure pattern 'document_write' in frontend/src/app/page.tsx:258"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a28c792e92cc4e2c", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/extension/content.js:871", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/extension/content.js:871"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ba04bcc455c69473", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/extension/popup.js:16", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/extension/popup.js:16"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bda9023f18f6270f", "name": "Insecure pattern 'direct_innerhtml_assignment' in job_app/extension/content.js:871", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in job_app/extension/content.js:871"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e081df3935c979e8", "name": "Insecure pattern 'direct_innerhtml_assignment' in job_app/extension/popup.js:16", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in job_app/extension/popup.js:16"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 71 source file(s) (ratio 0.00). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 62 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 18 placeholder/mock markers across 5 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8e6a3ad5eb425c1f", "name": "Commented-code block (5 lines) in backend/app/workers/__init__.py:495", "shortDescription": {"text": "Commented-code block (5 lines) in backend/app/workers/__init__.py:495"}, "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-5f1b89cf9c403631", "name": "Commented-code block (6 lines) in backend/app/services/scraper_service.py:30", "shortDescription": {"text": "Commented-code block (6 lines) in backend/app/services/scraper_service.py: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-40ecbf06a90fc31c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/signals/page.tsx:128", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/signals/page.tsx:128"}, "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-3d88221559ba5d56", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/api.ts:107", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/api.ts:107"}, "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-697555cb3d10ff46", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/extension/background.js:138", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/extension/background.js:138"}, "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-959c9e5822635418", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/extension/content.js:818", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/extension/content.js:818"}, "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-5fc02e4d1e30ccd1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 job_app/extension/background.js:138", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 job_app/extension/background.js:138"}, "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-6b4b97f91708443f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 job_app/extension/content.js:818", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 job_app/extension/content.js:818"}, "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-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nbackend/app/services/bigtech_scrapers.py:is_us_location, backend/app/services/scraper_service.py:is_us_location, job_app/bigtech_scrapers.py:is_us_location, job_app/scraper_service.py:is_us_location\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nbackend/app/services/bigtech_scrapers.py:strip_html, job_app/bigtech_scrapers.py:strip_html\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nbackend/app/services/bigtech_scrapers.py:scrape_amazon, backend/app/services/bigtech_scrapers.py:scrape_google, job_app/bigtech_scrapers.py:scrape_amazon\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9dad557909b86499", "name": "Near-duplicate function bodies in 10 places", "shortDescription": {"text": "Near-duplicate function bodies in 10 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nbackend/app/services/scraper_service.py:scrape_greenhouse, backend/app/services/scraper_service.py:scrape_lever, backend/app/services/scraper_service.py:scrape_ashby, backend/app/services/scraper_service.py:scrape_smartrecruiters\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2fa8e3858f2a09d", "name": "FastAPI POST `tick` without auth dependency \u2014 backend/app/routes/tasks.py:86", "shortDescription": {"text": "FastAPI POST `tick` without auth dependency \u2014 backend/app/routes/tasks.py:86"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b7650dd613f0156b", "name": "FastAPI POST `generate_memo` without auth dependency \u2014 backend/app/routes/tasks.py:119", "shortDescription": {"text": "FastAPI POST `generate_memo` without auth dependency \u2014 backend/app/routes/tasks.py:119"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-64da3bf8f3f0964c", "name": "FastAPI POST `generate_pm_concept` without auth dependency \u2014 backend/app/routes/tasks.py:138", "shortDescription": {"text": "FastAPI POST `generate_pm_concept` without auth dependency \u2014 backend/app/routes/tasks.py:138"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bd0dd2d908735a03", "name": "FastAPI POST `generate_article` without auth dependency \u2014 backend/app/routes/tasks.py:146", "shortDescription": {"text": "FastAPI POST `generate_article` without auth dependency \u2014 backend/app/routes/tasks.py:146"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6ed475f5544ba53e", "name": "FastAPI POST `generate_answers` without auth dependency \u2014 backend/app/routes/answers.py:14", "shortDescription": {"text": "FastAPI POST `generate_answers` without auth dependency \u2014 backend/app/routes/answers.py:14"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8e7642dd7220168b", "name": "FastAPI POST `lookup_answer` without auth dependency \u2014 backend/app/routes/answers.py:78", "shortDescription": {"text": "FastAPI POST `lookup_answer` without auth dependency \u2014 backend/app/routes/answers.py:78"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5d40940238e4575b", "name": "FastAPI POST `trigger_daily_health_email` without auth dependency \u2014 backend/app/routes/health.py:16", "shortDescription": {"text": "FastAPI POST `trigger_daily_health_email` without auth dependency \u2014 backend/app/routes/health.py:16"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-52769449fc9a2e3a", "name": "FastAPI POST `trigger_scan` without auth dependency \u2014 backend/app/routes/signals.py:56", "shortDescription": {"text": "FastAPI POST `trigger_scan` without auth dependency \u2014 backend/app/routes/signals.py:56"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-af886d5ef5aaa41c", "name": "FastAPI POST `generate_outreach` without auth dependency \u2014 backend/app/routes/signals.py:120", "shortDescription": {"text": "FastAPI POST `generate_outreach` without auth dependency \u2014 backend/app/routes/signals.py:120"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9b15481479a31dbd", "name": "FastAPI POST `batch_outreach` without auth dependency \u2014 backend/app/routes/signals.py:152", "shortDescription": {"text": "FastAPI POST `batch_outreach` without auth dependency \u2014 backend/app/routes/signals.py:152"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f6fb2ba9d1a48a82", "name": "FastAPI POST `discover_people` without auth dependency \u2014 backend/app/routes/referrals.py:76", "shortDescription": {"text": "FastAPI POST `discover_people` without auth dependency \u2014 backend/app/routes/referrals.py:76"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-465deb75348e24fa", "name": "FastAPI POST `referral_outreach` without auth dependency \u2014 backend/app/routes/referrals.py:92", "shortDescription": {"text": "FastAPI POST `referral_outreach` without auth dependency \u2014 backend/app/routes/referrals.py:92"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-96c8af1a03786e43", "name": "FastAPI POST `track_application` without auth dependency \u2014 backend/app/routes/applications.py:27", "shortDescription": {"text": "FastAPI POST `track_application` without auth dependency \u2014 backend/app/routes/applications.py:27"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5132d7fd139833c8", "name": "FastAPI PATCH `update_status` without auth dependency \u2014 backend/app/routes/applications.py:51", "shortDescription": {"text": "FastAPI PATCH `update_status` without auth dependency \u2014 backend/app/routes/applications.py:51"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cd84cb12f4cba481", "name": "FastAPI POST `rescore_all` without auth dependency \u2014 backend/app/routes/jobs.py:66", "shortDescription": {"text": "FastAPI POST `rescore_all` without auth dependency \u2014 backend/app/routes/jobs.py:66"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2a115c84bc72a56f", "name": "FastAPI POST `generate_message` without auth dependency \u2014 backend/app/routes/jobs.py:90", "shortDescription": {"text": "FastAPI POST `generate_message` without auth dependency \u2014 backend/app/routes/jobs.py:90"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e88e7dad94a899de", "name": "FastAPI POST `generate_cover_letter` without auth dependency \u2014 backend/app/routes/jobs.py:105", "shortDescription": {"text": "FastAPI POST `generate_cover_letter` without auth dependency \u2014 backend/app/routes/jobs.py:105"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9c502d348042ca7b", "name": "FastAPI POST `fix_dates` without auth dependency \u2014 backend/app/routes/jobs.py:146", "shortDescription": {"text": "FastAPI POST `fix_dates` without auth dependency \u2014 backend/app/routes/jobs.py:146"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7624b0e5b156854d", "name": "FastAPI PUT `update_profile` without auth dependency \u2014 backend/app/routes/profile.py:32", "shortDescription": {"text": "FastAPI PUT `update_profile` without auth dependency \u2014 backend/app/routes/profile.py:32"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cc05237c5efef212", "name": "FastAPI POST `upload_resume` without auth dependency \u2014 backend/app/routes/profile.py:41", "shortDescription": {"text": "FastAPI POST `upload_resume` without auth dependency \u2014 backend/app/routes/profile.py:41"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-549cd67ecde3fe0e", "name": "FastAPI DELETE `delete_resume` without auth dependency \u2014 backend/app/routes/profile.py:122", "shortDescription": {"text": "FastAPI DELETE `delete_resume` without auth dependency \u2014 backend/app/routes/profile.py:122"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-faa80df83d7d3a8a", "name": "FastAPI POST `start_ats_scrape` without auth dependency \u2014 backend/app/routes/scraper.py:55", "shortDescription": {"text": "FastAPI POST `start_ats_scrape` without auth dependency \u2014 backend/app/routes/scraper.py:55"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a7f8cf34e62b11e0", "name": "FastAPI POST `start_bigtech_scrape` without auth dependency \u2014 backend/app/routes/scraper.py:89", "shortDescription": {"text": "FastAPI POST `start_bigtech_scrape` without auth dependency \u2014 backend/app/routes/scraper.py:89"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-03ff285dadfa4d11", "name": "FastAPI POST `start_apify_scrape` without auth dependency \u2014 backend/app/routes/scraper.py:124", "shortDescription": {"text": "FastAPI POST `start_apify_scrape` without auth dependency \u2014 backend/app/routes/scraper.py:124"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b2718a3d5d9de884", "name": "FastAPI POST `start_full_scrape` without auth dependency \u2014 backend/app/routes/scraper.py:168", "shortDescription": {"text": "FastAPI POST `start_full_scrape` without auth dependency \u2014 backend/app/routes/scraper.py:168"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-64b95d67c2fb0f25", "name": "FastAPI PUT `update_settings` without auth dependency \u2014 backend/app/routes/auto_apply.py:20", "shortDescription": {"text": "FastAPI PUT `update_settings` without auth dependency \u2014 backend/app/routes/auto_apply.py:20"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-86cc824fde37d38a", "name": "FastAPI POST `trigger_run` without auth dependency \u2014 backend/app/routes/auto_apply.py:64", "shortDescription": {"text": "FastAPI POST `trigger_run` without auth dependency \u2014 backend/app/routes/auto_apply.py:64"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-012f9eaa1c32048b", "name": "FastAPI POST `dry_run` without auth dependency \u2014 backend/app/routes/auto_apply.py:92", "shortDescription": {"text": "FastAPI POST `dry_run` without auth dependency \u2014 backend/app/routes/auto_apply.py:92"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3655ac78396df57b", "name": "FastAPI PUT `update_settings` without auth dependency \u2014 backend/app/routes/night_shift.py:33", "shortDescription": {"text": "FastAPI PUT `update_settings` without auth dependency \u2014 backend/app/routes/night_shift.py:33"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e18e16a67db3094f", "name": "FastAPI POST `select` without auth dependency \u2014 backend/app/routes/night_shift.py:49", "shortDescription": {"text": "FastAPI POST `select` without auth dependency \u2014 backend/app/routes/night_shift.py:49"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5a530f56c612b017", "name": "FastAPI POST `update_queue_item` without auth dependency \u2014 backend/app/routes/night_shift.py:69", "shortDescription": {"text": "FastAPI POST `update_queue_item` without auth dependency \u2014 backend/app/routes/night_shift.py:69"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-65902e472c0848ca", "name": "FastAPI POST `save_profile` without auth dependency \u2014 job_app/app.py:152", "shortDescription": {"text": "FastAPI POST `save_profile` without auth dependency \u2014 job_app/app.py:152"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b5aa121c60663d49", "name": "FastAPI POST `upload_resume` without auth dependency \u2014 job_app/app.py:163", "shortDescription": {"text": "FastAPI POST `upload_resume` without auth dependency \u2014 job_app/app.py:163"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b00f952835d8faad", "name": "FastAPI POST `delete_resume` without auth dependency \u2014 job_app/app.py:178", "shortDescription": {"text": "FastAPI POST `delete_resume` without auth dependency \u2014 job_app/app.py:178"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e8a15140f53f53ba", "name": "FastAPI POST `start_scrape` without auth dependency \u2014 job_app/app.py:192", "shortDescription": {"text": "FastAPI POST `start_scrape` without auth dependency \u2014 job_app/app.py:192"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a79bc16634b7f971", "name": "FastAPI POST `track_application` without auth dependency \u2014 job_app/app.py:232", "shortDescription": {"text": "FastAPI POST `track_application` without auth dependency \u2014 job_app/app.py:232"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-088abe02e80e4581", "name": "FastAPI POST `update_status` without auth dependency \u2014 job_app/app.py:239", "shortDescription": {"text": "FastAPI POST `update_status` without auth dependency \u2014 job_app/app.py:239"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-de546160c43374c9", "name": "FastAPI POST `generate_answers` without auth dependency \u2014 job_app/app.py:249", "shortDescription": {"text": "FastAPI POST `generate_answers` without auth dependency \u2014 job_app/app.py:249"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7d0947054dd359d9", "name": "FastAPI POST `start_bigtech_scrape` without auth dependency \u2014 job_app/app.py:272", "shortDescription": {"text": "FastAPI POST `start_bigtech_scrape` without auth dependency \u2014 job_app/app.py:272"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b3dc7d6df0cb2345", "name": "FastAPI POST `start_apify_scrape` without auth dependency \u2014 job_app/app.py:312", "shortDescription": {"text": "FastAPI POST `start_apify_scrape` without auth dependency \u2014 job_app/app.py:312"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-172bedfd5ee2aba7", "name": "FastAPI POST `rescore_all` without auth dependency \u2014 job_app/app.py:363", "shortDescription": {"text": "FastAPI POST `rescore_all` without auth dependency \u2014 job_app/app.py:363"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3b9d181581218efa", "name": "FastAPI POST `generate_message` without auth dependency \u2014 job_app/app.py:383", "shortDescription": {"text": "FastAPI POST `generate_message` without auth dependency \u2014 job_app/app.py:383"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2781617c8ecc6dc3", "name": "FastAPI POST `start_full_scrape` without auth dependency \u2014 job_app/app.py:410", "shortDescription": {"text": "FastAPI POST `start_full_scrape` without auth dependency \u2014 job_app/app.py:410"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-06de952ade3543cb", "name": "Dangling fetch: GET /api/applications${qs} (frontend/src/lib/api.ts:117)", "shortDescription": {"text": "Dangling fetch: GET /api/applications${qs} (frontend/src/lib/api.ts:117)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:117` calls `GET /api/applications${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/applications/<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-b98ec8f9cf12dafc", "name": "Dangling fetch: GET /api/signals/stats (frontend/src/lib/api.ts:208)", "shortDescription": {"text": "Dangling fetch: GET /api/signals/stats (frontend/src/lib/api.ts:208)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:208` calls `GET /api/signals/stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/signals/stats`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6da107c3c4e4a987", "name": "Dangling fetch: POST /api/signals/scan (frontend/src/lib/api.ts:212)", "shortDescription": {"text": "Dangling fetch: POST /api/signals/scan (frontend/src/lib/api.ts:212)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:212` calls `POST /api/signals/scan` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/signals/scan`\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-7a5e59f8a8a16a51", "name": "Dangling fetch: POST /api/signals/outreach (frontend/src/lib/api.ts:226)", "shortDescription": {"text": "Dangling fetch: POST /api/signals/outreach (frontend/src/lib/api.ts:226)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:226` calls `POST /api/signals/outreach` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/signals/outreach`\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-7615a14e8e7e1579", "name": "Dangling fetch: GET /api/night-shift/settings (frontend/src/lib/api.ts:283)", "shortDescription": {"text": "Dangling fetch: GET /api/night-shift/settings (frontend/src/lib/api.ts:283)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:283` calls `GET /api/night-shift/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/night-shift/settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8fa5297c8889f63d", "name": "Dangling fetch: PUT /api/night-shift/settings (frontend/src/lib/api.ts:289)", "shortDescription": {"text": "Dangling fetch: PUT /api/night-shift/settings (frontend/src/lib/api.ts:289)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:289` calls `PUT /api/night-shift/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/night-shift/settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ae4c03f77b1a10f2", "name": "Dangling fetch: POST /api/night-shift/select?dry_run=${dryRun} (frontend/src/lib/api.ts:296)", "shortDescription": {"text": "Dangling fetch: POST /api/night-shift/select?dry_run=${dryRun} (frontend/src/lib/api.ts:296)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:296` calls `POST /api/night-shift/select?dry_run=${dryRun}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/night-shift/select`\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-58f87dabd74b82ba", "name": "Dangling fetch: GET /api/night-shift/queue${qs} (frontend/src/lib/api.ts:304)", "shortDescription": {"text": "Dangling fetch: GET /api/night-shift/queue${qs} (frontend/src/lib/api.ts:304)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:304` calls `GET /api/night-shift/queue${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/night-shift/queue/<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-c5981b0a9cd70b46", "name": "Dangling fetch: POST /api/night-shift/queue/${id} (frontend/src/lib/api.ts:308)", "shortDescription": {"text": "Dangling fetch: POST /api/night-shift/queue/${id} (frontend/src/lib/api.ts:308)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:308` calls `POST /api/night-shift/queue/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/night-shift/queue/<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-90ee3ddd94498e7c", "name": "Dangling fetch: GET /api/night-shift/tiers (frontend/src/lib/api.ts:320)", "shortDescription": {"text": "Dangling fetch: GET /api/night-shift/tiers (frontend/src/lib/api.ts:320)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:320` calls `GET /api/night-shift/tiers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/night-shift/tiers`\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-d68b79448c27286a", "name": "Dangling fetch: GET /api/tasks/today (frontend/src/lib/api.ts:344)", "shortDescription": {"text": "Dangling fetch: GET /api/tasks/today (frontend/src/lib/api.ts:344)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:344` calls `GET /api/tasks/today` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/tasks/today`\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-def8c420c748e02e", "name": "Dangling fetch: GET /api/tasks/week (frontend/src/lib/api.ts:348)", "shortDescription": {"text": "Dangling fetch: GET /api/tasks/week (frontend/src/lib/api.ts:348)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:348` calls `GET /api/tasks/week` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/tasks/week`\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-431c1c6c8754eb3b", "name": "Dangling fetch: POST /api/tasks/tick (frontend/src/lib/api.ts:352)", "shortDescription": {"text": "Dangling fetch: POST /api/tasks/tick (frontend/src/lib/api.ts:352)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:352` calls `POST /api/tasks/tick` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/tasks/tick`\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-029e9d9efbe7d6ff", "name": "Dangling fetch: GET /api/tasks/memo-target (frontend/src/lib/api.ts:359)", "shortDescription": {"text": "Dangling fetch: GET /api/tasks/memo-target (frontend/src/lib/api.ts:359)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:359` calls `GET /api/tasks/memo-target` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/tasks/memo-target`\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-55807aff6fc6667c", "name": "Dangling fetch: POST /api/tasks/generate/memo (frontend/src/lib/api.ts:365)", "shortDescription": {"text": "Dangling fetch: POST /api/tasks/generate/memo (frontend/src/lib/api.ts:365)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:365` calls `POST /api/tasks/generate/memo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/tasks/generate/memo`\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-fe6ac4ab3610e72c", "name": "Dangling fetch: POST /api/tasks/generate/pm-concept (frontend/src/lib/api.ts:369)", "shortDescription": {"text": "Dangling fetch: POST /api/tasks/generate/pm-concept (frontend/src/lib/api.ts:369)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:369` calls `POST /api/tasks/generate/pm-concept` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/tasks/generate/pm-concept`\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-bed7438bb7422bb0", "name": "Dangling fetch: POST /api/tasks/generate/article (frontend/src/lib/api.ts:373)", "shortDescription": {"text": "Dangling fetch: POST /api/tasks/generate/article (frontend/src/lib/api.ts:373)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:373` calls `POST /api/tasks/generate/article` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/tasks/generate/article`\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-73d9f4447b971555", "name": "Dangling fetch: GET /api/referrals (frontend/src/lib/api.ts:399)", "shortDescription": {"text": "Dangling fetch: GET /api/referrals (frontend/src/lib/api.ts:399)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:399` calls `GET /api/referrals` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/referrals`\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-fbf946907b2d7739", "name": "Dangling fetch: POST /api/referrals/${contactId}/outreach (frontend/src/lib/api.ts:403)", "shortDescription": {"text": "Dangling fetch: POST /api/referrals/${contactId}/outreach (frontend/src/lib/api.ts:403)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:403` calls `POST /api/referrals/${contactId}/outreach` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/referrals/<p>/outreach`\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-33221846a1564ed8", "name": "Dangling fetch: POST /api/referrals/discover (frontend/src/lib/api.ts:409)", "shortDescription": {"text": "Dangling fetch: POST /api/referrals/discover (frontend/src/lib/api.ts:409)"}, "fullDescription": {"text": "`frontend/src/lib/api.ts:409` calls `POST /api/referrals/discover` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/referrals/discover`\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}}]}}, "automationDetails": {"id": "repobility/24576"}, "properties": {"repository": "Bhagyashree-Vaidya/Intelligence-layer", "repoUrl": "https://github.com/Bhagyashree-Vaidya/Intelligence-layer", "branch": "main"}, "results": [{"ruleId": "scanner-b117f5c06d083150", "level": "note", "message": {"text": "Possibly dead Python function: run_scrape_all"}, "properties": {"repobilityId": "bd1a0edc8b6c5ac5", "scanner": "scanner-primary", "fingerprint": "b117f5c06d083150", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/workers/__init__.py:75"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f64e390711752405", "level": "note", "message": {"text": "Possibly dead Python function: run_health_check"}, "properties": {"repobilityId": "57fd30b68722f507", "scanner": "scanner-primary", "fingerprint": "f64e390711752405", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/workers/__init__.py:455"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4b88cc4f074ecd86", "level": "note", "message": {"text": "Possibly dead Python function: shutdown"}, "properties": {"repobilityId": "c1b7442732df40cc", "scanner": "scanner-primary", "fingerprint": "4b88cc4f074ecd86", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/workers/__init__.py:466"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-22789007e8d438a6", "level": "note", "message": {"text": "Possibly dead Python function: matches_role"}, "properties": {"repobilityId": "40f0f9d48bc83f6f", "scanner": "scanner-primary", "fingerprint": "22789007e8d438a6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/bigtech_scrapers.py:125"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2e340034c9ece874", "level": "note", "message": {"text": "Possibly dead Python function: scrape_amazon"}, "properties": {"repobilityId": "4952b5ab8e0df1f0", "scanner": "scanner-primary", "fingerprint": "2e340034c9ece874", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/bigtech_scrapers.py:179"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7ac12e5d10a6d05e", "level": "note", "message": {"text": "Possibly dead Python function: scrape_apple"}, "properties": {"repobilityId": "53461a089bf79ef9", "scanner": "scanner-primary", "fingerprint": "7ac12e5d10a6d05e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/bigtech_scrapers.py:257"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-38b00b6367590363", "level": "note", "message": {"text": "Possibly dead Python function: scrape_google"}, "properties": {"repobilityId": "5c6316c5e0eb76bb", "scanner": "scanner-primary", "fingerprint": "38b00b6367590363", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/bigtech_scrapers.py:346"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0f14e917ae7959c4", "level": "note", "message": {"text": "Possibly dead Python function: scrape_meta"}, "properties": {"repobilityId": "1f56d148db3df493", "scanner": "scanner-primary", "fingerprint": "0f14e917ae7959c4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/bigtech_scrapers.py:463"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c27edf6640a01a9f", "level": "note", "message": {"text": "Possibly dead Python function: scrape_microsoft"}, "properties": {"repobilityId": "71d57f4a116b1e59", "scanner": "scanner-primary", "fingerprint": "c27edf6640a01a9f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/bigtech_scrapers.py:580"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9cbc02ffee94e1d8", "level": "note", "message": {"text": "Possibly dead Python function: scrape_netflix"}, "properties": {"repobilityId": "8d4abd9552eba40d", "scanner": "scanner-primary", "fingerprint": "9cbc02ffee94e1d8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/bigtech_scrapers.py:671"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0df7aedbf28b642f", "level": "note", "message": {"text": "Possibly dead Python function: enqueue_enrich"}, "properties": {"repobilityId": "c857cada5de9ab8e", "scanner": "scanner-primary", "fingerprint": "0df7aedbf28b642f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/queue.py:35"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-eebfbbe78aed446f", "level": "note", "message": {"text": "Possibly dead Python function: enqueue_scoring"}, "properties": {"repobilityId": "6b5db9ed41846b2c", "scanner": "scanner-primary", "fingerprint": "eebfbbe78aed446f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/queue.py:47"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-efdcc761b4144541", "level": "note", "message": {"text": "Possibly dead Python function: score_jobs_batch"}, "properties": {"repobilityId": "3db1a6602bde0074", "scanner": "scanner-primary", "fingerprint": "efdcc761b4144541", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/relevancy_engine.py:241"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fd5fe0369eb531d3", "level": "note", "message": {"text": "Possibly dead Python function: classify_roles_multi"}, "properties": {"repobilityId": "978cfa8446be5d56", "scanner": "scanner-primary", "fingerprint": "fd5fe0369eb531d3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/role_classifier.py:216"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bdd1282d897cafca", "level": "note", "message": {"text": "Possibly dead Python function: is_role_match"}, "properties": {"repobilityId": "aba3c227fffd1ec2", "scanner": "scanner-primary", "fingerprint": "bdd1282d897cafca", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/role_classifier.py:236"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-08232b0c672044d8", "level": "note", "message": {"text": "Possibly dead Python function: analyze_outcome"}, "properties": {"repobilityId": "1edb78cec9efe743", "scanner": "scanner-primary", "fingerprint": "08232b0c672044d8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/ai/orchestrator.py:143"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9e3399f14d787180", "level": "note", "message": {"text": "Possibly dead Python function: embed_text"}, "properties": {"repobilityId": "8714c9976061df0a", "scanner": "scanner-primary", "fingerprint": "9e3399f14d787180", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/ai/orchestrator.py:151"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e26cb3094af1dd7a", "level": "note", "message": {"text": "Possibly dead Python function: embed_batch"}, "properties": {"repobilityId": "c3157845307f18ee", "scanner": "scanner-primary", "fingerprint": "e26cb3094af1dd7a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/ai/orchestrator.py:156"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dcac5f2f4ccb89fb", "level": "note", "message": {"text": "Possibly dead Python function: matches_role"}, "properties": {"repobilityId": "40f0f9d48bc83f6f", "scanner": "scanner-primary", "fingerprint": "dcac5f2f4ccb89fb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/bigtech_scrapers.py:125"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-45c1852432786818", "level": "note", "message": {"text": "Possibly dead Python function: scrape_amazon"}, "properties": {"repobilityId": "4952b5ab8e0df1f0", "scanner": "scanner-primary", "fingerprint": "45c1852432786818", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/bigtech_scrapers.py:174"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7900fdc35947a032", "level": "note", "message": {"text": "Possibly dead Python function: scrape_apple"}, "properties": {"repobilityId": "53461a089bf79ef9", "scanner": "scanner-primary", "fingerprint": "7900fdc35947a032", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/bigtech_scrapers.py:252"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c7adb6ec3b862e9a", "level": "note", "message": {"text": "Possibly dead Python function: scrape_google"}, "properties": {"repobilityId": "5c6316c5e0eb76bb", "scanner": "scanner-primary", "fingerprint": "c7adb6ec3b862e9a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/bigtech_scrapers.py:341"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f61e0af0e63aec60", "level": "note", "message": {"text": "Possibly dead Python function: scrape_meta"}, "properties": {"repobilityId": "1f56d148db3df493", "scanner": "scanner-primary", "fingerprint": "f61e0af0e63aec60", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/bigtech_scrapers.py:420"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d81d43570be2bc14", "level": "note", "message": {"text": "Possibly dead Python function: scrape_microsoft"}, "properties": {"repobilityId": "71d57f4a116b1e59", "scanner": "scanner-primary", "fingerprint": "d81d43570be2bc14", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/bigtech_scrapers.py:523"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-111e93c61ad99243", "level": "note", "message": {"text": "Possibly dead Python function: scrape_netflix"}, "properties": {"repobilityId": "8d4abd9552eba40d", "scanner": "scanner-primary", "fingerprint": "111e93c61ad99243", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/bigtech_scrapers.py:598"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8d60e9ab0500fd62", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/extension/content.js:694"}, "properties": {"repobilityId": "5adaa83dbbbefd7c", "scanner": "scanner-primary", "fingerprint": "8d60e9ab0500fd62", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5a69706082309b7d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 job_app/extension/content.js:694"}, "properties": {"repobilityId": "c169f25a27335f42", "scanner": "scanner-primary", "fingerprint": "5a69706082309b7d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1f66ad88286ca30a", "level": "warning", "message": {"text": "Dockerfile runs as root: backend/Dockerfile"}, "properties": {"repobilityId": "7afd2b0e8a8c9eeb", "scanner": "scanner-primary", "fingerprint": "1f66ad88286ca30a", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-0cf17c5709fbc3c3", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.13-slim"}, "properties": {"repobilityId": "5230b2603545503e", "scanner": "scanner-primary", "fingerprint": "0cf17c5709fbc3c3", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1f34c5a1ef0e3b9a", "level": "note", "message": {"text": "Insecure pattern 'document_write' in frontend/src/app/page.tsx:258"}, "properties": {"repobilityId": "3f567512bbea1c56", "scanner": "scanner-primary", "fingerprint": "1f34c5a1ef0e3b9a", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/page.tsx"}, "region": {"startLine": 258}}}]}, {"ruleId": "scanner-a28c792e92cc4e2c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/extension/content.js:871"}, "properties": {"repobilityId": "286e9dd7b1880d1b", "scanner": "scanner-primary", "fingerprint": "a28c792e92cc4e2c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/extension/content.js"}, "region": {"startLine": 871}}}]}, {"ruleId": "scanner-ba04bcc455c69473", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/extension/popup.js:16"}, "properties": {"repobilityId": "798e99206ca62bf6", "scanner": "scanner-primary", "fingerprint": "ba04bcc455c69473", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/extension/popup.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-bda9023f18f6270f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in job_app/extension/content.js:871"}, "properties": {"repobilityId": "90a50775b88cc669", "scanner": "scanner-primary", "fingerprint": "bda9023f18f6270f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/extension/content.js"}, "region": {"startLine": 871}}}]}, {"ruleId": "scanner-e081df3935c979e8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in job_app/extension/popup.js:16"}, "properties": {"repobilityId": "4d0badd4bb4f1bee", "scanner": "scanner-primary", "fingerprint": "e081df3935c979e8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/extension/popup.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "da78e5d04b525897", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "2295a33134c7ee97", "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": "c783f70aa0f45197", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "578e1662b09cee49", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "92440468a27c9fc4", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-8e6a3ad5eb425c1f", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/app/workers/__init__.py:495"}, "properties": {"repobilityId": "b74ee1468176445a", "scanner": "scanner-primary", "fingerprint": "8e6a3ad5eb425c1f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f1b89cf9c403631", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/app/services/scraper_service.py:30"}, "properties": {"repobilityId": "ffcd8fce33434cfb", "scanner": "scanner-primary", "fingerprint": "5f1b89cf9c403631", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-40ecbf06a90fc31c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/signals/page.tsx:128"}, "properties": {"repobilityId": "5bba9318e21eee8f", "scanner": "scanner-primary", "fingerprint": "40ecbf06a90fc31c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3d88221559ba5d56", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/api.ts:107"}, "properties": {"repobilityId": "aebedb3322063b69", "scanner": "scanner-primary", "fingerprint": "3d88221559ba5d56", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-697555cb3d10ff46", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/extension/background.js:138"}, "properties": {"repobilityId": "b5a508f5aa4705ed", "scanner": "scanner-primary", "fingerprint": "697555cb3d10ff46", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-959c9e5822635418", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/extension/content.js:818"}, "properties": {"repobilityId": "813ff7d40611941b", "scanner": "scanner-primary", "fingerprint": "959c9e5822635418", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5fc02e4d1e30ccd1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 job_app/extension/background.js:138"}, "properties": {"repobilityId": "d356f24d4dcccb5e", "scanner": "scanner-primary", "fingerprint": "5fc02e4d1e30ccd1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6b4b97f91708443f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 job_app/extension/content.js:818"}, "properties": {"repobilityId": "41cd3aa6f4b64b14", "scanner": "scanner-primary", "fingerprint": "6b4b97f91708443f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "52addc5165624404", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "3c508f5fa895f5ce", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "821fc8a1c06fbbce", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "b23cf19c476c885a", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "e997a247b5b86e2a", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "b408cf519b9600b7", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "d414c0b84627e46d", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "04b4d6a96f5c99a5", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "0f323cb4e5114cfa", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "951d4ab3464f1b4d", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "ddd38263092d1cf3", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "758e7dfcb1a2fe92", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "c0206d1565075b2e", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "4459809ffcfd658b", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "1c07635e228fc71a", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "f8f1665e45085183", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "fb0ec64719092111", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "46c4b29fbf8c99a7", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-9dad557909b86499", "level": "note", "message": {"text": "Near-duplicate function bodies in 10 places"}, "properties": {"repobilityId": "bbf6fd50cf3e18b2", "scanner": "scanner-primary", "fingerprint": "9dad557909b86499", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "91c613aeee025a50", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-b2fa8e3858f2a09d", "level": "error", "message": {"text": "FastAPI POST `tick` without auth dependency \u2014 backend/app/routes/tasks.py:86"}, "properties": {"repobilityId": "2fc845a9fcdb6970", "scanner": "scanner-primary", "fingerprint": "b2fa8e3858f2a09d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/tasks.py"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-b7650dd613f0156b", "level": "error", "message": {"text": "FastAPI POST `generate_memo` without auth dependency \u2014 backend/app/routes/tasks.py:119"}, "properties": {"repobilityId": "ae3951da19d6cccd", "scanner": "scanner-primary", "fingerprint": "b7650dd613f0156b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/tasks.py"}, "region": {"startLine": 119}}}]}, {"ruleId": "scanner-64da3bf8f3f0964c", "level": "error", "message": {"text": "FastAPI POST `generate_pm_concept` without auth dependency \u2014 backend/app/routes/tasks.py:138"}, "properties": {"repobilityId": "fa43829d4425df4c", "scanner": "scanner-primary", "fingerprint": "64da3bf8f3f0964c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/tasks.py"}, "region": {"startLine": 138}}}]}, {"ruleId": "scanner-bd0dd2d908735a03", "level": "error", "message": {"text": "FastAPI POST `generate_article` without auth dependency \u2014 backend/app/routes/tasks.py:146"}, "properties": {"repobilityId": "d6d89872b83f139e", "scanner": "scanner-primary", "fingerprint": "bd0dd2d908735a03", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/tasks.py"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-6ed475f5544ba53e", "level": "error", "message": {"text": "FastAPI POST `generate_answers` without auth dependency \u2014 backend/app/routes/answers.py:14"}, "properties": {"repobilityId": "084f271e4fa64918", "scanner": "scanner-primary", "fingerprint": "6ed475f5544ba53e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/answers.py"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-8e7642dd7220168b", "level": "error", "message": {"text": "FastAPI POST `lookup_answer` without auth dependency \u2014 backend/app/routes/answers.py:78"}, "properties": {"repobilityId": "a066b0a85f6208b6", "scanner": "scanner-primary", "fingerprint": "8e7642dd7220168b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/answers.py"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-5d40940238e4575b", "level": "error", "message": {"text": "FastAPI POST `trigger_daily_health_email` without auth dependency \u2014 backend/app/routes/health.py:16"}, "properties": {"repobilityId": "572efc39dc7e2ca8", "scanner": "scanner-primary", "fingerprint": "5d40940238e4575b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/health.py"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-52769449fc9a2e3a", "level": "error", "message": {"text": "FastAPI POST `trigger_scan` without auth dependency \u2014 backend/app/routes/signals.py:56"}, "properties": {"repobilityId": "e5fbe65404641355", "scanner": "scanner-primary", "fingerprint": "52769449fc9a2e3a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/signals.py"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-af886d5ef5aaa41c", "level": "error", "message": {"text": "FastAPI POST `generate_outreach` without auth dependency \u2014 backend/app/routes/signals.py:120"}, "properties": {"repobilityId": "1d5a9c52f9cf6244", "scanner": "scanner-primary", "fingerprint": "af886d5ef5aaa41c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/signals.py"}, "region": {"startLine": 120}}}]}, {"ruleId": "scanner-9b15481479a31dbd", "level": "error", "message": {"text": "FastAPI POST `batch_outreach` without auth dependency \u2014 backend/app/routes/signals.py:152"}, "properties": {"repobilityId": "b93d3a1a0e99c019", "scanner": "scanner-primary", "fingerprint": "9b15481479a31dbd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/signals.py"}, "region": {"startLine": 152}}}]}, {"ruleId": "scanner-f6fb2ba9d1a48a82", "level": "error", "message": {"text": "FastAPI POST `discover_people` without auth dependency \u2014 backend/app/routes/referrals.py:76"}, "properties": {"repobilityId": "b42e9a6a4fb40060", "scanner": "scanner-primary", "fingerprint": "f6fb2ba9d1a48a82", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/referrals.py"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-465deb75348e24fa", "level": "error", "message": {"text": "FastAPI POST `referral_outreach` without auth dependency \u2014 backend/app/routes/referrals.py:92"}, "properties": {"repobilityId": "e2342fc320b8a4fa", "scanner": "scanner-primary", "fingerprint": "465deb75348e24fa", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/referrals.py"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-96c8af1a03786e43", "level": "error", "message": {"text": "FastAPI POST `track_application` without auth dependency \u2014 backend/app/routes/applications.py:27"}, "properties": {"repobilityId": "89c9164e62b1ac13", "scanner": "scanner-primary", "fingerprint": "96c8af1a03786e43", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/applications.py"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-5132d7fd139833c8", "level": "error", "message": {"text": "FastAPI PATCH `update_status` without auth dependency \u2014 backend/app/routes/applications.py:51"}, "properties": {"repobilityId": "b1da3f7b407f78ce", "scanner": "scanner-primary", "fingerprint": "5132d7fd139833c8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/applications.py"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-cd84cb12f4cba481", "level": "error", "message": {"text": "FastAPI POST `rescore_all` without auth dependency \u2014 backend/app/routes/jobs.py:66"}, "properties": {"repobilityId": "63ea48fe730dafbe", "scanner": "scanner-primary", "fingerprint": "cd84cb12f4cba481", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/jobs.py"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-2a115c84bc72a56f", "level": "error", "message": {"text": "FastAPI POST `generate_message` without auth dependency \u2014 backend/app/routes/jobs.py:90"}, "properties": {"repobilityId": "3ee969497f35a5c8", "scanner": "scanner-primary", "fingerprint": "2a115c84bc72a56f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/jobs.py"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-e88e7dad94a899de", "level": "error", "message": {"text": "FastAPI POST `generate_cover_letter` without auth dependency \u2014 backend/app/routes/jobs.py:105"}, "properties": {"repobilityId": "4422557698de13e2", "scanner": "scanner-primary", "fingerprint": "e88e7dad94a899de", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/jobs.py"}, "region": {"startLine": 105}}}]}, {"ruleId": "scanner-9c502d348042ca7b", "level": "error", "message": {"text": "FastAPI POST `fix_dates` without auth dependency \u2014 backend/app/routes/jobs.py:146"}, "properties": {"repobilityId": "8102916da2d8f1fa", "scanner": "scanner-primary", "fingerprint": "9c502d348042ca7b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/jobs.py"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-7624b0e5b156854d", "level": "error", "message": {"text": "FastAPI PUT `update_profile` without auth dependency \u2014 backend/app/routes/profile.py:32"}, "properties": {"repobilityId": "b27c36557bab9e9c", "scanner": "scanner-primary", "fingerprint": "7624b0e5b156854d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/profile.py"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-cc05237c5efef212", "level": "error", "message": {"text": "FastAPI POST `upload_resume` without auth dependency \u2014 backend/app/routes/profile.py:41"}, "properties": {"repobilityId": "c36bb70e281400b2", "scanner": "scanner-primary", "fingerprint": "cc05237c5efef212", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/profile.py"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-549cd67ecde3fe0e", "level": "error", "message": {"text": "FastAPI DELETE `delete_resume` without auth dependency \u2014 backend/app/routes/profile.py:122"}, "properties": {"repobilityId": "038a6c8c55abaa0b", "scanner": "scanner-primary", "fingerprint": "549cd67ecde3fe0e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/profile.py"}, "region": {"startLine": 122}}}]}, {"ruleId": "scanner-faa80df83d7d3a8a", "level": "error", "message": {"text": "FastAPI POST `start_ats_scrape` without auth dependency \u2014 backend/app/routes/scraper.py:55"}, "properties": {"repobilityId": "93ed800844ff3372", "scanner": "scanner-primary", "fingerprint": "faa80df83d7d3a8a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/scraper.py"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-a7f8cf34e62b11e0", "level": "error", "message": {"text": "FastAPI POST `start_bigtech_scrape` without auth dependency \u2014 backend/app/routes/scraper.py:89"}, "properties": {"repobilityId": "a3340b93a28b72f8", "scanner": "scanner-primary", "fingerprint": "a7f8cf34e62b11e0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/scraper.py"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-03ff285dadfa4d11", "level": "error", "message": {"text": "FastAPI POST `start_apify_scrape` without auth dependency \u2014 backend/app/routes/scraper.py:124"}, "properties": {"repobilityId": "9a9da6d0d92e2136", "scanner": "scanner-primary", "fingerprint": "03ff285dadfa4d11", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/scraper.py"}, "region": {"startLine": 124}}}]}, {"ruleId": "scanner-b2718a3d5d9de884", "level": "error", "message": {"text": "FastAPI POST `start_full_scrape` without auth dependency \u2014 backend/app/routes/scraper.py:168"}, "properties": {"repobilityId": "142a05a9468e50ff", "scanner": "scanner-primary", "fingerprint": "b2718a3d5d9de884", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/scraper.py"}, "region": {"startLine": 168}}}]}, {"ruleId": "scanner-64b95d67c2fb0f25", "level": "error", "message": {"text": "FastAPI PUT `update_settings` without auth dependency \u2014 backend/app/routes/auto_apply.py:20"}, "properties": {"repobilityId": "ef1092f3d60c535a", "scanner": "scanner-primary", "fingerprint": "64b95d67c2fb0f25", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/auto_apply.py"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-86cc824fde37d38a", "level": "error", "message": {"text": "FastAPI POST `trigger_run` without auth dependency \u2014 backend/app/routes/auto_apply.py:64"}, "properties": {"repobilityId": "ee1a6c387acae653", "scanner": "scanner-primary", "fingerprint": "86cc824fde37d38a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/auto_apply.py"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-012f9eaa1c32048b", "level": "error", "message": {"text": "FastAPI POST `dry_run` without auth dependency \u2014 backend/app/routes/auto_apply.py:92"}, "properties": {"repobilityId": "6393aec4f682738a", "scanner": "scanner-primary", "fingerprint": "012f9eaa1c32048b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/auto_apply.py"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-3655ac78396df57b", "level": "error", "message": {"text": "FastAPI PUT `update_settings` without auth dependency \u2014 backend/app/routes/night_shift.py:33"}, "properties": {"repobilityId": "70e3507d686ffba1", "scanner": "scanner-primary", "fingerprint": "3655ac78396df57b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/night_shift.py"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-e18e16a67db3094f", "level": "error", "message": {"text": "FastAPI POST `select` without auth dependency \u2014 backend/app/routes/night_shift.py:49"}, "properties": {"repobilityId": "7059f8d0f5ba845c", "scanner": "scanner-primary", "fingerprint": "e18e16a67db3094f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/night_shift.py"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-5a530f56c612b017", "level": "error", "message": {"text": "FastAPI POST `update_queue_item` without auth dependency \u2014 backend/app/routes/night_shift.py:69"}, "properties": {"repobilityId": "77eebe2a022c4f77", "scanner": "scanner-primary", "fingerprint": "5a530f56c612b017", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routes/night_shift.py"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-65902e472c0848ca", "level": "error", "message": {"text": "FastAPI POST `save_profile` without auth dependency \u2014 job_app/app.py:152"}, "properties": {"repobilityId": "b3a9140ff516f00b", "scanner": "scanner-primary", "fingerprint": "65902e472c0848ca", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/app.py"}, "region": {"startLine": 152}}}]}, {"ruleId": "scanner-b5aa121c60663d49", "level": "error", "message": {"text": "FastAPI POST `upload_resume` without auth dependency \u2014 job_app/app.py:163"}, "properties": {"repobilityId": "9086ea6c4e9a148b", "scanner": "scanner-primary", "fingerprint": "b5aa121c60663d49", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/app.py"}, "region": {"startLine": 163}}}]}, {"ruleId": "scanner-b00f952835d8faad", "level": "error", "message": {"text": "FastAPI POST `delete_resume` without auth dependency \u2014 job_app/app.py:178"}, "properties": {"repobilityId": "c56080d56ed3fbd0", "scanner": "scanner-primary", "fingerprint": "b00f952835d8faad", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/app.py"}, "region": {"startLine": 178}}}]}, {"ruleId": "scanner-e8a15140f53f53ba", "level": "error", "message": {"text": "FastAPI POST `start_scrape` without auth dependency \u2014 job_app/app.py:192"}, "properties": {"repobilityId": "741b97f32b37ade6", "scanner": "scanner-primary", "fingerprint": "e8a15140f53f53ba", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/app.py"}, "region": {"startLine": 192}}}]}, {"ruleId": "scanner-a79bc16634b7f971", "level": "error", "message": {"text": "FastAPI POST `track_application` without auth dependency \u2014 job_app/app.py:232"}, "properties": {"repobilityId": "d9b80a43df9e9a47", "scanner": "scanner-primary", "fingerprint": "a79bc16634b7f971", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/app.py"}, "region": {"startLine": 232}}}]}, {"ruleId": "scanner-088abe02e80e4581", "level": "error", "message": {"text": "FastAPI POST `update_status` without auth dependency \u2014 job_app/app.py:239"}, "properties": {"repobilityId": "13b77462d6e28c00", "scanner": "scanner-primary", "fingerprint": "088abe02e80e4581", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/app.py"}, "region": {"startLine": 239}}}]}, {"ruleId": "scanner-de546160c43374c9", "level": "error", "message": {"text": "FastAPI POST `generate_answers` without auth dependency \u2014 job_app/app.py:249"}, "properties": {"repobilityId": "e85c499c80f1951d", "scanner": "scanner-primary", "fingerprint": "de546160c43374c9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/app.py"}, "region": {"startLine": 249}}}]}, {"ruleId": "scanner-7d0947054dd359d9", "level": "error", "message": {"text": "FastAPI POST `start_bigtech_scrape` without auth dependency \u2014 job_app/app.py:272"}, "properties": {"repobilityId": "ea3a6cf6ddd4ab62", "scanner": "scanner-primary", "fingerprint": "7d0947054dd359d9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/app.py"}, "region": {"startLine": 272}}}]}, {"ruleId": "scanner-b3dc7d6df0cb2345", "level": "error", "message": {"text": "FastAPI POST `start_apify_scrape` without auth dependency \u2014 job_app/app.py:312"}, "properties": {"repobilityId": "7d72431c0c8c8102", "scanner": "scanner-primary", "fingerprint": "b3dc7d6df0cb2345", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/app.py"}, "region": {"startLine": 312}}}]}, {"ruleId": "scanner-172bedfd5ee2aba7", "level": "error", "message": {"text": "FastAPI POST `rescore_all` without auth dependency \u2014 job_app/app.py:363"}, "properties": {"repobilityId": "d8e33e689d17a828", "scanner": "scanner-primary", "fingerprint": "172bedfd5ee2aba7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/app.py"}, "region": {"startLine": 363}}}]}, {"ruleId": "scanner-3b9d181581218efa", "level": "error", "message": {"text": "FastAPI POST `generate_message` without auth dependency \u2014 job_app/app.py:383"}, "properties": {"repobilityId": "3dba86f469d5bbee", "scanner": "scanner-primary", "fingerprint": "3b9d181581218efa", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/app.py"}, "region": {"startLine": 383}}}]}, {"ruleId": "scanner-2781617c8ecc6dc3", "level": "error", "message": {"text": "FastAPI POST `start_full_scrape` without auth dependency \u2014 job_app/app.py:410"}, "properties": {"repobilityId": "e1823515d44acce3", "scanner": "scanner-primary", "fingerprint": "2781617c8ecc6dc3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "job_app/app.py"}, "region": {"startLine": 410}}}]}, {"ruleId": "scanner-06de952ade3543cb", "level": "error", "message": {"text": "Dangling fetch: GET /api/applications${qs} (frontend/src/lib/api.ts:117)"}, "properties": {"repobilityId": "052f9b69b12467e6", "scanner": "scanner-primary", "fingerprint": "06de952ade3543cb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b98ec8f9cf12dafc", "level": "error", "message": {"text": "Dangling fetch: GET /api/signals/stats (frontend/src/lib/api.ts:208)"}, "properties": {"repobilityId": "60667d36351624bf", "scanner": "scanner-primary", "fingerprint": "b98ec8f9cf12dafc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6da107c3c4e4a987", "level": "error", "message": {"text": "Dangling fetch: POST /api/signals/scan (frontend/src/lib/api.ts:212)"}, "properties": {"repobilityId": "161350c1282a60d4", "scanner": "scanner-primary", "fingerprint": "6da107c3c4e4a987", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7a5e59f8a8a16a51", "level": "error", "message": {"text": "Dangling fetch: POST /api/signals/outreach (frontend/src/lib/api.ts:226)"}, "properties": {"repobilityId": "7d604150bdb7f0fc", "scanner": "scanner-primary", "fingerprint": "7a5e59f8a8a16a51", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7615a14e8e7e1579", "level": "error", "message": {"text": "Dangling fetch: GET /api/night-shift/settings (frontend/src/lib/api.ts:283)"}, "properties": {"repobilityId": "67d21a41bea57516", "scanner": "scanner-primary", "fingerprint": "7615a14e8e7e1579", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8fa5297c8889f63d", "level": "error", "message": {"text": "Dangling fetch: PUT /api/night-shift/settings (frontend/src/lib/api.ts:289)"}, "properties": {"repobilityId": "99adbc618b1c64ad", "scanner": "scanner-primary", "fingerprint": "8fa5297c8889f63d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ae4c03f77b1a10f2", "level": "error", "message": {"text": "Dangling fetch: POST /api/night-shift/select?dry_run=${dryRun} (frontend/src/lib/api.ts:296)"}, "properties": {"repobilityId": "ea27b5b1c3add0d6", "scanner": "scanner-primary", "fingerprint": "ae4c03f77b1a10f2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-58f87dabd74b82ba", "level": "error", "message": {"text": "Dangling fetch: GET /api/night-shift/queue${qs} (frontend/src/lib/api.ts:304)"}, "properties": {"repobilityId": "fd6f81222ab9514f", "scanner": "scanner-primary", "fingerprint": "58f87dabd74b82ba", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c5981b0a9cd70b46", "level": "error", "message": {"text": "Dangling fetch: POST /api/night-shift/queue/${id} (frontend/src/lib/api.ts:308)"}, "properties": {"repobilityId": "d8ac941b3b8c5ab3", "scanner": "scanner-primary", "fingerprint": "c5981b0a9cd70b46", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-90ee3ddd94498e7c", "level": "error", "message": {"text": "Dangling fetch: GET /api/night-shift/tiers (frontend/src/lib/api.ts:320)"}, "properties": {"repobilityId": "2832850b15602815", "scanner": "scanner-primary", "fingerprint": "90ee3ddd94498e7c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d68b79448c27286a", "level": "error", "message": {"text": "Dangling fetch: GET /api/tasks/today (frontend/src/lib/api.ts:344)"}, "properties": {"repobilityId": "9786029aab619e42", "scanner": "scanner-primary", "fingerprint": "d68b79448c27286a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-def8c420c748e02e", "level": "error", "message": {"text": "Dangling fetch: GET /api/tasks/week (frontend/src/lib/api.ts:348)"}, "properties": {"repobilityId": "faed2a11b7523941", "scanner": "scanner-primary", "fingerprint": "def8c420c748e02e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-431c1c6c8754eb3b", "level": "error", "message": {"text": "Dangling fetch: POST /api/tasks/tick (frontend/src/lib/api.ts:352)"}, "properties": {"repobilityId": "d1429d5845828471", "scanner": "scanner-primary", "fingerprint": "431c1c6c8754eb3b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-029e9d9efbe7d6ff", "level": "error", "message": {"text": "Dangling fetch: GET /api/tasks/memo-target (frontend/src/lib/api.ts:359)"}, "properties": {"repobilityId": "b65d3191a500fcac", "scanner": "scanner-primary", "fingerprint": "029e9d9efbe7d6ff", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-55807aff6fc6667c", "level": "error", "message": {"text": "Dangling fetch: POST /api/tasks/generate/memo (frontend/src/lib/api.ts:365)"}, "properties": {"repobilityId": "455db78c00429497", "scanner": "scanner-primary", "fingerprint": "55807aff6fc6667c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fe6ac4ab3610e72c", "level": "error", "message": {"text": "Dangling fetch: POST /api/tasks/generate/pm-concept (frontend/src/lib/api.ts:369)"}, "properties": {"repobilityId": "858adf3e7e446620", "scanner": "scanner-primary", "fingerprint": "fe6ac4ab3610e72c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bed7438bb7422bb0", "level": "error", "message": {"text": "Dangling fetch: POST /api/tasks/generate/article (frontend/src/lib/api.ts:373)"}, "properties": {"repobilityId": "fe0e9b8a412bd4f6", "scanner": "scanner-primary", "fingerprint": "bed7438bb7422bb0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-73d9f4447b971555", "level": "error", "message": {"text": "Dangling fetch: GET /api/referrals (frontend/src/lib/api.ts:399)"}, "properties": {"repobilityId": "7551a194a63c2593", "scanner": "scanner-primary", "fingerprint": "73d9f4447b971555", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fbf946907b2d7739", "level": "error", "message": {"text": "Dangling fetch: POST /api/referrals/${contactId}/outreach (frontend/src/lib/api.ts:403)"}, "properties": {"repobilityId": "38a2d4082c243678", "scanner": "scanner-primary", "fingerprint": "fbf946907b2d7739", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-33221846a1564ed8", "level": "error", "message": {"text": "Dangling fetch: POST /api/referrals/discover (frontend/src/lib/api.ts:409)"}, "properties": {"repobilityId": "db86e61b4d89b988", "scanner": "scanner-primary", "fingerprint": "33221846a1564ed8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}]}]}