{"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-fbb03e4a5397dcff", "name": "Possibly dead Python function: split_into_claims", "shortDescription": {"text": "Possibly dead Python function: split_into_claims"}, "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-2b1c1407ee8f0555", "name": "Possibly dead Python function: run_post_approval_rescan", "shortDescription": {"text": "Possibly dead Python function: run_post_approval_rescan"}, "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-e7f606ba4f531095", "name": "Possibly dead Python function: create_asset_review", "shortDescription": {"text": "Possibly dead Python function: create_asset_review"}, "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-714194fca2ece650", "name": "Possibly dead Python function: require_actor", "shortDescription": {"text": "Possibly dead Python function: require_actor"}, "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-d69762011b394b20", "name": "Possibly dead Python function: guard", "shortDescription": {"text": "Possibly dead Python function: guard"}, "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-353e5b3eec8d0b6b", "name": "Possibly dead Python function: run_ingestion_job", "shortDescription": {"text": "Possibly dead Python function: run_ingestion_job"}, "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-126df3cb4d934481", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/page.tsx:1871", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/page.tsx:1871"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bed35e0be488ceda", "name": "Insecure pattern 'direct_innerhtml_assignment' in app.js:41", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app.js:41"}, "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-f9e16cb220b2efa8", "name": "Insecure pattern 'local_storage_auth_token' in frontend/src/store/index.ts:846", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/store/index.ts:846"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b4d88ae42e3fd9b3", "name": "Very large file: frontend/src/app/page.tsx (5477 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/page.tsx (5477 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c40c6edb7dab75f", "name": "Very large file: frontend/src/store/index.ts (1705 lines)", "shortDescription": {"text": "Very large file: frontend/src/store/index.ts (1705 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-11b6fd2728c3cd21", "name": "Very large file: backend/app/main.py (1380 lines)", "shortDescription": {"text": "Very large file: backend/app/main.py (1380 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 46 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 37 placeholder/mock markers across 9 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-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c5f98b152cddb6d", "name": "Agent authority lacks a verifier contract: .claude/launch.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2577e302a670019e", "name": "Legacy-named symbol `Monitoring_Plan_v2` in app.js:7", "shortDescription": {"text": "Legacy-named symbol `Monitoring_Plan_v2` in app.js:7"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0fa413424993097b", "name": "Commented-code block (5 lines) in frontend/src/store/index.ts:1568", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/store/index.ts:1568"}, "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-ade407e6a84a223d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/store/index.ts:801", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/store/index.ts:801"}, "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-b5e3e19f71c655fc", "name": "Commented-code block (7 lines) in backend/test_consumption_inbox.py:29", "shortDescription": {"text": "Commented-code block (7 lines) in backend/test_consumption_inbox.py:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3c325af6203296e4", "name": "Commented-code block (9 lines) in backend/test_binding_lineage.py:29", "shortDescription": {"text": "Commented-code block (9 lines) in backend/test_binding_lineage.py:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ed04fb5d3472e7bc", "name": "Commented-code block (6 lines) in backend/test_package_selection.py:28", "shortDescription": {"text": "Commented-code block (6 lines) in backend/test_package_selection.py:28"}, "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-eef215e3c55db69c", "name": "Commented-code block (7 lines) in backend/test_identity_boundary.py:18", "shortDescription": {"text": "Commented-code block (7 lines) in backend/test_identity_boundary.py:18"}, "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-bff264f309133793", "name": "Legacy-named symbol `A_Safety_copy` in backend/test_local_connector.py:33", "shortDescription": {"text": "Legacy-named symbol `A_Safety_copy` in backend/test_local_connector.py:33"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-130527881bed24a8", "name": "Commented-code block (8 lines) in backend/test_workbench_projection.py:17", "shortDescription": {"text": "Commented-code block (8 lines) in backend/test_workbench_projection.py:17"}, "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-f4b0c613fe28214f", "name": "Commented-code block (6 lines) in backend/test_migration.py:11", "shortDescription": {"text": "Commented-code block (6 lines) in backend/test_migration.py:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-db1c6b74ca422470", "name": "Commented-code block (5 lines) in backend/test_authorization.py:11", "shortDescription": {"text": "Commented-code block (5 lines) in backend/test_authorization.py:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fee4b0cdbb68c060", "name": "Commented-code block (5 lines) in backend/test_package_evaluation.py:28", "shortDescription": {"text": "Commented-code block (5 lines) in backend/test_package_evaluation.py:28"}, "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-bd59e11acece206d", "name": "Legacy-named symbol `doc_v1` in backend/test_conflict_engine.py:56", "shortDescription": {"text": "Legacy-named symbol `doc_v1` in backend/test_conflict_engine.py:56"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb62047e7a850d95", "name": "Commented-code block (5 lines) in backend/test_connector_seam.py:23", "shortDescription": {"text": "Commented-code block (5 lines) in backend/test_connector_seam.py:23"}, "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-7b58b64c7e8fd672", "name": "Commented-code block (5 lines) in backend/test_package_consumer.py:33", "shortDescription": {"text": "Commented-code block (5 lines) in backend/test_package_consumer.py:33"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-78fc3b75ad040131", "name": "Commented-code block (7 lines) in backend/app/consumption_inbox.py:30", "shortDescription": {"text": "Commented-code block (7 lines) in backend/app/consumption_inbox.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-33e0161143f68a91", "name": "Commented-code block (9 lines) in backend/app/identity.py:81", "shortDescription": {"text": "Commented-code block (9 lines) in backend/app/identity.py:81"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0d317978f953f2c8", "name": "Commented-code block (6 lines) in backend/app/database.py:489", "shortDescription": {"text": "Commented-code block (6 lines) in backend/app/database.py:489"}, "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-60cb38ed8ad8fedb", "name": "Commented-code block (5 lines) in backend/app/schemas.py:331", "shortDescription": {"text": "Commented-code block (5 lines) in backend/app/schemas.py:331"}, "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-85bbd2fa004bf1ef", "name": "Commented-code block (6 lines) in backend/app/binding_lineage.py:24", "shortDescription": {"text": "Commented-code block (6 lines) in backend/app/binding_lineage.py:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a8117be0b021256c", "name": "Commented-code block (7 lines) in backend/app/trust.py:14", "shortDescription": {"text": "Commented-code block (7 lines) in backend/app/trust.py:14"}, "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-7e98a79ed1b08998", "name": "Commented-code block (6 lines) in backend/app/revisions.py:160", "shortDescription": {"text": "Commented-code block (6 lines) in backend/app/revisions.py:160"}, "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-68363d457669ec76", "name": "Commented-code block (5 lines) in backend/app/package_consumer.py:10", "shortDescription": {"text": "Commented-code block (5 lines) in backend/app/package_consumer.py:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-74405d851313abe0", "name": "Commented-code block (8 lines) in backend/app/llm.py:17", "shortDescription": {"text": "Commented-code block (8 lines) in backend/app/llm.py:17"}, "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-1c63c841283573bf", "name": "Commented-code block (5 lines) in backend/app/crud.py:548", "shortDescription": {"text": "Commented-code block (5 lines) in backend/app/crud.py:548"}, "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-2842a6248e8a0b6f", "name": "Commented-code block (5 lines) in backend/app/package_builder.py:17", "shortDescription": {"text": "Commented-code block (5 lines) in backend/app/package_builder.py:17"}, "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-64349f9f8d956385", "name": "Commented-code block (14 lines) in backend/app/policy.py:17", "shortDescription": {"text": "Commented-code block (14 lines) in backend/app/policy.py:17"}, "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-540e6ec46c4ff331", "name": "Commented-code block (6 lines) in backend/app/conflict_engine.py:13", "shortDescription": {"text": "Commented-code block (6 lines) in backend/app/conflict_engine.py:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1ecdff918ff21db5", "name": "Commented-code block (5 lines) in backend/app/governance_inbox.py:26", "shortDescription": {"text": "Commented-code block (5 lines) in backend/app/governance_inbox.py:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-984dee3060556134", "name": "Commented-code block (5 lines) in backend/app/claims.py:5", "shortDescription": {"text": "Commented-code block (5 lines) in backend/app/claims.py:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d2d693acd6a66209", "name": "Commented-code block (7 lines) in backend/app/evaluation.py:14", "shortDescription": {"text": "Commented-code block (7 lines) in backend/app/evaluation.py:14"}, "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-42983a4b91ae38c3", "name": "Commented-code block (8 lines) in backend/app/mcp_gateway.py:20", "shortDescription": {"text": "Commented-code block (8 lines) in backend/app/mcp_gateway.py:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cf2f8ede61645d36", "name": "Commented-code block (5 lines) in backend/app/main.py:58", "shortDescription": {"text": "Commented-code block (5 lines) in backend/app/main.py:58"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-60caba10efb6a4da", "name": "Commented-code block (5 lines) in backend/app/connectors/__init__.py:1", "shortDescription": {"text": "Commented-code block (5 lines) in backend/app/connectors/__init__.py:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9b0639a2edd3e3cb", "name": "Commented-code block (5 lines) in backend/app/connectors/framework.py:20", "shortDescription": {"text": "Commented-code block (5 lines) in backend/app/connectors/framework.py:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-01e5ee5958483fac", "name": "Commented-code block (5 lines) in backend/app/connectors/providers/local_folder.py:16", "shortDescription": {"text": "Commented-code block (5 lines) in backend/app/connectors/providers/local_folder.py:16"}, "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-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/database.py:verifier, backend/app/database.py:verifier\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-4756b4c4da7d2088", "name": "Unused endpoint: GET /api/health", "shortDescription": {"text": "Unused endpoint: GET /api/health"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/health` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd55aa0818a7c897", "name": "Unused endpoint: POST /api/auth/login", "shortDescription": {"text": "Unused endpoint: POST /api/auth/login"}, "fullDescription": {"text": "`backend/app/main.py` declares `POST /api/auth/login` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee4aa5ddab88c9dc", "name": "Unused endpoint: GET /api/auth/me", "shortDescription": {"text": "Unused endpoint: GET /api/auth/me"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/auth/me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d5a39262ac205120", "name": "Unused endpoint: POST /api/auth/logout", "shortDescription": {"text": "Unused endpoint: POST /api/auth/logout"}, "fullDescription": {"text": "`backend/app/main.py` declares `POST /api/auth/logout` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-866cfadefccd0b5c", "name": "Unused endpoint: POST /api/auth/change-password", "shortDescription": {"text": "Unused endpoint: POST /api/auth/change-password"}, "fullDescription": {"text": "`backend/app/main.py` declares `POST /api/auth/change-password` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1135ccc53202196b", "name": "Unused endpoint: GET /api/identity/principals", "shortDescription": {"text": "Unused endpoint: GET /api/identity/principals"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/identity/principals` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-284409fc60d2b67e", "name": "Unused endpoint: POST /api/identity/principals", "shortDescription": {"text": "Unused endpoint: POST /api/identity/principals"}, "fullDescription": {"text": "`backend/app/main.py` declares `POST /api/identity/principals` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dc33dc56a2fb1897", "name": "Unused endpoint: PATCH /api/identity/principals/{name}", "shortDescription": {"text": "Unused endpoint: PATCH /api/identity/principals/{name}"}, "fullDescription": {"text": "`backend/app/main.py` declares `PATCH /api/identity/principals/{name}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ce6c07389efaea37", "name": "Unused endpoint: POST /api/identity/principals/{name}/reset-password", "shortDescription": {"text": "Unused endpoint: POST /api/identity/principals/{name}/reset-password"}, "fullDescription": {"text": "`backend/app/main.py` declares `POST /api/identity/principals/{name}/reset-password` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bf7e9f81a479fcdf", "name": "Unused endpoint: POST /api/identity/tokens", "shortDescription": {"text": "Unused endpoint: POST /api/identity/tokens"}, "fullDescription": {"text": "`backend/app/main.py` declares `POST /api/identity/tokens` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-63309513b7579719", "name": "Unused endpoint: GET /api/identity/tokens", "shortDescription": {"text": "Unused endpoint: GET /api/identity/tokens"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/identity/tokens` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-360ba8f96888dba2", "name": "Unused endpoint: POST /api/identity/tokens/{fingerprint}/revoke", "shortDescription": {"text": "Unused endpoint: POST /api/identity/tokens/{fingerprint}/revoke"}, "fullDescription": {"text": "`backend/app/main.py` declares `POST /api/identity/tokens/{fingerprint}/revoke` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3b94923f366fed0e", "name": "Unused endpoint: GET /api/projects", "shortDescription": {"text": "Unused endpoint: GET /api/projects"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/projects` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-16a480533217943d", "name": "Unused endpoint: POST /api/projects", "shortDescription": {"text": "Unused endpoint: POST /api/projects"}, "fullDescription": {"text": "`backend/app/main.py` declares `POST /api/projects` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-563a6833df7b496b", "name": "Unused endpoint: GET /api/projects/{project_id}/documents", "shortDescription": {"text": "Unused endpoint: GET /api/projects/{project_id}/documents"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/projects/{project_id}/documents` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-47a70cfa646624ec", "name": "Unused endpoint: POST /api/projects/{project_id}/documents", "shortDescription": {"text": "Unused endpoint: POST /api/projects/{project_id}/documents"}, "fullDescription": {"text": "`backend/app/main.py` declares `POST /api/projects/{project_id}/documents` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a17c0f6e63f1d99", "name": "Unused endpoint: POST /api/projects/{project_id}/documents/batch-demo", "shortDescription": {"text": "Unused endpoint: POST /api/projects/{project_id}/documents/batch-demo"}, "fullDescription": {"text": "`backend/app/main.py` declares `POST /api/projects/{project_id}/documents/batch-demo` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a471ff1e64602b27", "name": "Unused endpoint: POST /api/projects/{project_id}/connectors", "shortDescription": {"text": "Unused endpoint: POST /api/projects/{project_id}/connectors"}, "fullDescription": {"text": "`backend/app/main.py` declares `POST /api/projects/{project_id}/connectors` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-75ab26c580028136", "name": "Unused endpoint: GET /api/projects/{project_id}/connectors", "shortDescription": {"text": "Unused endpoint: GET /api/projects/{project_id}/connectors"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/projects/{project_id}/connectors` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-00ec15ed9e2c6a2c", "name": "Unused endpoint: POST /api/connectors/{connector_id}/scan", "shortDescription": {"text": "Unused endpoint: POST /api/connectors/{connector_id}/scan"}, "fullDescription": {"text": "`backend/app/main.py` declares `POST /api/connectors/{connector_id}/scan` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-af1b2f7e6bf47734", "name": "Unused endpoint: GET /api/projects/{project_id}/ingestion-jobs", "shortDescription": {"text": "Unused endpoint: GET /api/projects/{project_id}/ingestion-jobs"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/projects/{project_id}/ingestion-jobs` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c4108ebe868fc963", "name": "Unused endpoint: GET /api/ingestion-jobs/{job_id}", "shortDescription": {"text": "Unused endpoint: GET /api/ingestion-jobs/{job_id}"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/ingestion-jobs/{job_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2a862b5dd3a0b783", "name": "Unused endpoint: GET /api/ingestion-jobs/{job_id}/files", "shortDescription": {"text": "Unused endpoint: GET /api/ingestion-jobs/{job_id}/files"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/ingestion-jobs/{job_id}/files` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d5d7e303d1c8ffb8", "name": "Unused endpoint: POST /api/projects/{project_id}/approval-policies", "shortDescription": {"text": "Unused endpoint: POST /api/projects/{project_id}/approval-policies"}, "fullDescription": {"text": "`backend/app/main.py` declares `POST /api/projects/{project_id}/approval-policies` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6ad0c0b9bf83c685", "name": "Unused endpoint: GET /api/projects/{project_id}/approval-policies", "shortDescription": {"text": "Unused endpoint: GET /api/projects/{project_id}/approval-policies"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/projects/{project_id}/approval-policies` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c36515cfd563052", "name": "Unused endpoint: PATCH /api/approval-policies/{policy_id}", "shortDescription": {"text": "Unused endpoint: PATCH /api/approval-policies/{policy_id}"}, "fullDescription": {"text": "`backend/app/main.py` declares `PATCH /api/approval-policies/{policy_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b4c22d75221299f2", "name": "Unused endpoint: GET /api/settings/llm", "shortDescription": {"text": "Unused endpoint: GET /api/settings/llm"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/settings/llm` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f16ec901faca45fe", "name": "Unused endpoint: PUT /api/settings/llm/{function}", "shortDescription": {"text": "Unused endpoint: PUT /api/settings/llm/{function}"}, "fullDescription": {"text": "`backend/app/main.py` declares `PUT /api/settings/llm/{function}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-32ba190a6d8ad847", "name": "Unused endpoint: GET /api/projects/{project_id}/assets", "shortDescription": {"text": "Unused endpoint: GET /api/projects/{project_id}/assets"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/projects/{project_id}/assets` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9cee372cf239d59f", "name": "Unused endpoint: POST /api/projects/{project_id}/extract", "shortDescription": {"text": "Unused endpoint: POST /api/projects/{project_id}/extract"}, "fullDescription": {"text": "`backend/app/main.py` declares `POST /api/projects/{project_id}/extract` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e653b91a01f40eee", "name": "Unused endpoint: PATCH /api/assets/bulk", "shortDescription": {"text": "Unused endpoint: PATCH /api/assets/bulk"}, "fullDescription": {"text": "`backend/app/main.py` declares `PATCH /api/assets/bulk` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-26a871c0de7e58f2", "name": "Unused endpoint: PATCH /api/assets/{asset_id}", "shortDescription": {"text": "Unused endpoint: PATCH /api/assets/{asset_id}"}, "fullDescription": {"text": "`backend/app/main.py` declares `PATCH /api/assets/{asset_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-00c25afe9f83f70a", "name": "Unused endpoint: GET /api/projects/{project_id}/experts", "shortDescription": {"text": "Unused endpoint: GET /api/projects/{project_id}/experts"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/projects/{project_id}/experts` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6adfb46ef04e7043", "name": "Unused endpoint: POST /api/projects/{project_id}/experts", "shortDescription": {"text": "Unused endpoint: POST /api/projects/{project_id}/experts"}, "fullDescription": {"text": "`backend/app/main.py` declares `POST /api/projects/{project_id}/experts` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-53a3f2b6fe87c8b7", "name": "Unused endpoint: POST /api/projects/{project_id}/query", "shortDescription": {"text": "Unused endpoint: POST /api/projects/{project_id}/query"}, "fullDescription": {"text": "`backend/app/main.py` declares `POST /api/projects/{project_id}/query` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b90274650dd1ad98", "name": "Unused endpoint: GET /api/projects/{project_id}/packages", "shortDescription": {"text": "Unused endpoint: GET /api/projects/{project_id}/packages"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/projects/{project_id}/packages` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d70475f138194837", "name": "Unused endpoint: POST /api/projects/{project_id}/packages", "shortDescription": {"text": "Unused endpoint: POST /api/projects/{project_id}/packages"}, "fullDescription": {"text": "`backend/app/main.py` declares `POST /api/projects/{project_id}/packages` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f2073a96041975b4", "name": "Unused endpoint: GET /api/packages/{package_id}/download", "shortDescription": {"text": "Unused endpoint: GET /api/packages/{package_id}/download"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/packages/{package_id}/download` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cdf44c204a794665", "name": "Unused endpoint: GET /api/experts/{expert_model_id}/compile-gate", "shortDescription": {"text": "Unused endpoint: GET /api/experts/{expert_model_id}/compile-gate"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/experts/{expert_model_id}/compile-gate` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a92fd762b214119", "name": "Unused endpoint: GET /api/agents/activity", "shortDescription": {"text": "Unused endpoint: GET /api/agents/activity"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/agents/activity` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-47ccee89ee9e3ee4", "name": "Unused endpoint: GET /api/audit", "shortDescription": {"text": "Unused endpoint: GET /api/audit"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/audit` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-80e1d6442d4a9657", "name": "Unused endpoint: GET /api/dashboard/{project_id}", "shortDescription": {"text": "Unused endpoint: GET /api/dashboard/{project_id}"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/dashboard/{project_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d43a1b28c3d113de", "name": "Unused endpoint: GET /api/projects/{project_id}/benchmarks", "shortDescription": {"text": "Unused endpoint: GET /api/projects/{project_id}/benchmarks"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/projects/{project_id}/benchmarks` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be4646a3acd81cc1", "name": "Unused endpoint: POST /api/projects/{project_id}/benchmarks", "shortDescription": {"text": "Unused endpoint: POST /api/projects/{project_id}/benchmarks"}, "fullDescription": {"text": "`backend/app/main.py` declares `POST /api/projects/{project_id}/benchmarks` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-10d3452578e0aee2", "name": "Unused endpoint: PUT /api/projects/{project_id}/benchmarks/{benchmark_id}", "shortDescription": {"text": "Unused endpoint: PUT /api/projects/{project_id}/benchmarks/{benchmark_id}"}, "fullDescription": {"text": "`backend/app/main.py` declares `PUT /api/projects/{project_id}/benchmarks/{benchmark_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1e8da06747a5f306", "name": "Unused endpoint: DELETE /api/projects/{project_id}/benchmarks/{benchmark_id}", "shortDescription": {"text": "Unused endpoint: DELETE /api/projects/{project_id}/benchmarks/{benchmark_id}"}, "fullDescription": {"text": "`backend/app/main.py` declares `DELETE /api/projects/{project_id}/benchmarks/{benchmark_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d42e33ec59a2b304", "name": "Unused endpoint: POST /api/projects/{project_id}/evaluations", "shortDescription": {"text": "Unused endpoint: POST /api/projects/{project_id}/evaluations"}, "fullDescription": {"text": "`backend/app/main.py` declares `POST /api/projects/{project_id}/evaluations` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90cf0a4961623941", "name": "Unused endpoint: GET /api/projects/{project_id}/evaluations", "shortDescription": {"text": "Unused endpoint: GET /api/projects/{project_id}/evaluations"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/projects/{project_id}/evaluations` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e03522489dd7ab4", "name": "Unused endpoint: GET /api/projects/{project_id}/evaluations/{run_id}", "shortDescription": {"text": "Unused endpoint: GET /api/projects/{project_id}/evaluations/{run_id}"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/projects/{project_id}/evaluations/{run_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-79b88dcfb2aca6df", "name": "Unused endpoint: GET /api/packages/{package_id}/model-comparison", "shortDescription": {"text": "Unused endpoint: GET /api/packages/{package_id}/model-comparison"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/packages/{package_id}/model-comparison` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/18415"}, "properties": {"repository": "rokorobot/ExpertMachina", "repoUrl": "https://github.com/rokorobot/ExpertMachina", "branch": "main"}, "results": [{"ruleId": "scanner-fbb03e4a5397dcff", "level": "note", "message": {"text": "Possibly dead Python function: split_into_claims"}, "properties": {"repobilityId": "9e733c5f958abe28", "scanner": "scanner-primary", "fingerprint": "fbb03e4a5397dcff", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/query_engine.py:100"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2b1c1407ee8f0555", "level": "note", "message": {"text": "Possibly dead Python function: run_post_approval_rescan"}, "properties": {"repobilityId": "12c9c06312c136e7", "scanner": "scanner-primary", "fingerprint": "2b1c1407ee8f0555", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/revisions.py:204"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e7f606ba4f531095", "level": "note", "message": {"text": "Possibly dead Python function: create_asset_review"}, "properties": {"repobilityId": "8b9e554b55c2915a", "scanner": "scanner-primary", "fingerprint": "e7f606ba4f531095", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/crud.py:239"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-714194fca2ece650", "level": "note", "message": {"text": "Possibly dead Python function: require_actor"}, "properties": {"repobilityId": "7814653943386b00", "scanner": "scanner-primary", "fingerprint": "714194fca2ece650", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/main.py:63"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d69762011b394b20", "level": "note", "message": {"text": "Possibly dead Python function: guard"}, "properties": {"repobilityId": "ae1bab2c927b10c8", "scanner": "scanner-primary", "fingerprint": "d69762011b394b20", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/main.py:93"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-353e5b3eec8d0b6b", "level": "note", "message": {"text": "Possibly dead Python function: run_ingestion_job"}, "properties": {"repobilityId": "ed1f655864cb250b", "scanner": "scanner-primary", "fingerprint": "353e5b3eec8d0b6b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/connectors/framework.py:54"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-126df3cb4d934481", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/page.tsx:1871"}, "properties": {"repobilityId": "646669d428c89604", "scanner": "scanner-primary", "fingerprint": "126df3cb4d934481", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bed35e0be488ceda", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app.js:41"}, "properties": {"repobilityId": "b6b0c8b85ab66ded", "scanner": "scanner-primary", "fingerprint": "bed35e0be488ceda", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app.js"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-f9e16cb220b2efa8", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/store/index.ts:846"}, "properties": {"repobilityId": "e135217104abb2eb", "scanner": "scanner-primary", "fingerprint": "f9e16cb220b2efa8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/store/index.ts"}, "region": {"startLine": 846}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-b4d88ae42e3fd9b3", "level": "note", "message": {"text": "Very large file: frontend/src/app/page.tsx (5477 lines)"}, "properties": {"repobilityId": "9a4a972451c48ae9", "scanner": "scanner-primary", "fingerprint": "b4d88ae42e3fd9b3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3c40c6edb7dab75f", "level": "note", "message": {"text": "Very large file: frontend/src/store/index.ts (1705 lines)"}, "properties": {"repobilityId": "374f8ed8fca1c0e9", "scanner": "scanner-primary", "fingerprint": "3c40c6edb7dab75f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-11b6fd2728c3cd21", "level": "note", "message": {"text": "Very large file: backend/app/main.py (1380 lines)"}, "properties": {"repobilityId": "68cc3598b79bbf15", "scanner": "scanner-primary", "fingerprint": "11b6fd2728c3cd21", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "eaed26c425804e12", "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": "de3db3fd5d06a9e6", "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": "a7477256f19b9676", "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": "2fdd8a306104cf0a", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "a4b84393ba63b68b", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "55986320459aac2b", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "da0573551ae693af", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-2c5f98b152cddb6d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "properties": {"repobilityId": "0de48c0f4ab303d8", "scanner": "scanner-primary", "fingerprint": "2c5f98b152cddb6d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/launch.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2577e302a670019e", "level": "note", "message": {"text": "Legacy-named symbol `Monitoring_Plan_v2` in app.js:7"}, "properties": {"repobilityId": "c140c8b38b801008", "scanner": "scanner-primary", "fingerprint": "2577e302a670019e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0fa413424993097b", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/store/index.ts:1568"}, "properties": {"repobilityId": "924f36a015640d90", "scanner": "scanner-primary", "fingerprint": "0fa413424993097b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ade407e6a84a223d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/store/index.ts:801"}, "properties": {"repobilityId": "e0e1cfde86d0dcf1", "scanner": "scanner-primary", "fingerprint": "ade407e6a84a223d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b5e3e19f71c655fc", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/test_consumption_inbox.py:29"}, "properties": {"repobilityId": "b2090ed5662e69e2", "scanner": "scanner-primary", "fingerprint": "b5e3e19f71c655fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3c325af6203296e4", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/test_binding_lineage.py:29"}, "properties": {"repobilityId": "017611f3f379a59f", "scanner": "scanner-primary", "fingerprint": "3c325af6203296e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed04fb5d3472e7bc", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/test_package_selection.py:28"}, "properties": {"repobilityId": "b50950591527a6ce", "scanner": "scanner-primary", "fingerprint": "ed04fb5d3472e7bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eef215e3c55db69c", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/test_identity_boundary.py:18"}, "properties": {"repobilityId": "87b771c4b40ce6e5", "scanner": "scanner-primary", "fingerprint": "eef215e3c55db69c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bff264f309133793", "level": "note", "message": {"text": "Legacy-named symbol `A_Safety_copy` in backend/test_local_connector.py:33"}, "properties": {"repobilityId": "4610d157cbc55e43", "scanner": "scanner-primary", "fingerprint": "bff264f309133793", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-130527881bed24a8", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/test_workbench_projection.py:17"}, "properties": {"repobilityId": "9ef7008636428257", "scanner": "scanner-primary", "fingerprint": "130527881bed24a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4b0c613fe28214f", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/test_migration.py:11"}, "properties": {"repobilityId": "1004cfa13881cde7", "scanner": "scanner-primary", "fingerprint": "f4b0c613fe28214f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db1c6b74ca422470", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/test_authorization.py:11"}, "properties": {"repobilityId": "5c163084d29557ce", "scanner": "scanner-primary", "fingerprint": "db1c6b74ca422470", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fee4b0cdbb68c060", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/test_package_evaluation.py:28"}, "properties": {"repobilityId": "5427b25316ea540d", "scanner": "scanner-primary", "fingerprint": "fee4b0cdbb68c060", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd59e11acece206d", "level": "note", "message": {"text": "Legacy-named symbol `doc_v1` in backend/test_conflict_engine.py:56"}, "properties": {"repobilityId": "4dfe0ecdfd4e019c", "scanner": "scanner-primary", "fingerprint": "bd59e11acece206d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cb62047e7a850d95", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/test_connector_seam.py:23"}, "properties": {"repobilityId": "8b53acfb98625ed5", "scanner": "scanner-primary", "fingerprint": "cb62047e7a850d95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b58b64c7e8fd672", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/test_package_consumer.py:33"}, "properties": {"repobilityId": "7d8a58a50a6ba83e", "scanner": "scanner-primary", "fingerprint": "7b58b64c7e8fd672", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-78fc3b75ad040131", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/app/consumption_inbox.py:30"}, "properties": {"repobilityId": "0f9152b1d98b4030", "scanner": "scanner-primary", "fingerprint": "78fc3b75ad040131", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-33e0161143f68a91", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/app/identity.py:81"}, "properties": {"repobilityId": "b9a2a873ccf34b3c", "scanner": "scanner-primary", "fingerprint": "33e0161143f68a91", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d317978f953f2c8", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/app/database.py:489"}, "properties": {"repobilityId": "af2b8eee7d9fa885", "scanner": "scanner-primary", "fingerprint": "0d317978f953f2c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-60cb38ed8ad8fedb", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/app/schemas.py:331"}, "properties": {"repobilityId": "1c4ef7080ff9a2aa", "scanner": "scanner-primary", "fingerprint": "60cb38ed8ad8fedb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85bbd2fa004bf1ef", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/app/binding_lineage.py:24"}, "properties": {"repobilityId": "dc68aef075cd343b", "scanner": "scanner-primary", "fingerprint": "85bbd2fa004bf1ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a8117be0b021256c", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/app/trust.py:14"}, "properties": {"repobilityId": "84650cb7e278ff41", "scanner": "scanner-primary", "fingerprint": "a8117be0b021256c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e98a79ed1b08998", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/app/revisions.py:160"}, "properties": {"repobilityId": "5fdcb55ace3e8cc1", "scanner": "scanner-primary", "fingerprint": "7e98a79ed1b08998", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-68363d457669ec76", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/app/package_consumer.py:10"}, "properties": {"repobilityId": "63be27f3118dfd8c", "scanner": "scanner-primary", "fingerprint": "68363d457669ec76", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74405d851313abe0", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/app/llm.py:17"}, "properties": {"repobilityId": "2f98f6520c98a56d", "scanner": "scanner-primary", "fingerprint": "74405d851313abe0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c63c841283573bf", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/app/crud.py:548"}, "properties": {"repobilityId": "4f7efefba8063813", "scanner": "scanner-primary", "fingerprint": "1c63c841283573bf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2842a6248e8a0b6f", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/app/package_builder.py:17"}, "properties": {"repobilityId": "db27592949f96ee9", "scanner": "scanner-primary", "fingerprint": "2842a6248e8a0b6f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64349f9f8d956385", "level": "none", "message": {"text": "Commented-code block (14 lines) in backend/app/policy.py:17"}, "properties": {"repobilityId": "2f114f35aad76703", "scanner": "scanner-primary", "fingerprint": "64349f9f8d956385", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-540e6ec46c4ff331", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/app/conflict_engine.py:13"}, "properties": {"repobilityId": "d859e6325dcde147", "scanner": "scanner-primary", "fingerprint": "540e6ec46c4ff331", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ecdff918ff21db5", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/app/governance_inbox.py:26"}, "properties": {"repobilityId": "8271dac3a0842c73", "scanner": "scanner-primary", "fingerprint": "1ecdff918ff21db5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-984dee3060556134", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/app/claims.py:5"}, "properties": {"repobilityId": "37358c293f44fc5b", "scanner": "scanner-primary", "fingerprint": "984dee3060556134", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d2d693acd6a66209", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/app/evaluation.py:14"}, "properties": {"repobilityId": "bf1b5a17bb96b112", "scanner": "scanner-primary", "fingerprint": "d2d693acd6a66209", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42983a4b91ae38c3", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/app/mcp_gateway.py:20"}, "properties": {"repobilityId": "9cd7cb9ea11f376f", "scanner": "scanner-primary", "fingerprint": "42983a4b91ae38c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf2f8ede61645d36", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/app/main.py:58"}, "properties": {"repobilityId": "2e85c0766894e1f5", "scanner": "scanner-primary", "fingerprint": "cf2f8ede61645d36", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-60caba10efb6a4da", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/app/connectors/__init__.py:1"}, "properties": {"repobilityId": "f30d345bf3b0a3c3", "scanner": "scanner-primary", "fingerprint": "60caba10efb6a4da", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9b0639a2edd3e3cb", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/app/connectors/framework.py:20"}, "properties": {"repobilityId": "692e965b2f844bee", "scanner": "scanner-primary", "fingerprint": "9b0639a2edd3e3cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-01e5ee5958483fac", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/app/connectors/providers/local_folder.py:16"}, "properties": {"repobilityId": "3f37ef82d0e11a5c", "scanner": "scanner-primary", "fingerprint": "01e5ee5958483fac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "5fda3242ca510970", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-4756b4c4da7d2088", "level": "note", "message": {"text": "Unused endpoint: GET /api/health"}, "properties": {"repobilityId": "414de3a0f9ad89dd", "scanner": "scanner-primary", "fingerprint": "4756b4c4da7d2088", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fd55aa0818a7c897", "level": "note", "message": {"text": "Unused endpoint: POST /api/auth/login"}, "properties": {"repobilityId": "13df2ef6b582534d", "scanner": "scanner-primary", "fingerprint": "fd55aa0818a7c897", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ee4aa5ddab88c9dc", "level": "note", "message": {"text": "Unused endpoint: GET /api/auth/me"}, "properties": {"repobilityId": "c92d9d17fc6c099a", "scanner": "scanner-primary", "fingerprint": "ee4aa5ddab88c9dc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d5a39262ac205120", "level": "note", "message": {"text": "Unused endpoint: POST /api/auth/logout"}, "properties": {"repobilityId": "c932a59f27d45b81", "scanner": "scanner-primary", "fingerprint": "d5a39262ac205120", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-866cfadefccd0b5c", "level": "note", "message": {"text": "Unused endpoint: POST /api/auth/change-password"}, "properties": {"repobilityId": "00fb80dd37fd8ac0", "scanner": "scanner-primary", "fingerprint": "866cfadefccd0b5c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1135ccc53202196b", "level": "note", "message": {"text": "Unused endpoint: GET /api/identity/principals"}, "properties": {"repobilityId": "82beda395a84272c", "scanner": "scanner-primary", "fingerprint": "1135ccc53202196b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-284409fc60d2b67e", "level": "note", "message": {"text": "Unused endpoint: POST /api/identity/principals"}, "properties": {"repobilityId": "c3ef70d92c7e6d41", "scanner": "scanner-primary", "fingerprint": "284409fc60d2b67e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dc33dc56a2fb1897", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/identity/principals/{name}"}, "properties": {"repobilityId": "9305b7d6b3bab232", "scanner": "scanner-primary", "fingerprint": "dc33dc56a2fb1897", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ce6c07389efaea37", "level": "note", "message": {"text": "Unused endpoint: POST /api/identity/principals/{name}/reset-password"}, "properties": {"repobilityId": "a291957d63cf261b", "scanner": "scanner-primary", "fingerprint": "ce6c07389efaea37", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bf7e9f81a479fcdf", "level": "note", "message": {"text": "Unused endpoint: POST /api/identity/tokens"}, "properties": {"repobilityId": "2621c052e45fcc3f", "scanner": "scanner-primary", "fingerprint": "bf7e9f81a479fcdf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-63309513b7579719", "level": "note", "message": {"text": "Unused endpoint: GET /api/identity/tokens"}, "properties": {"repobilityId": "376ec6dacd04080e", "scanner": "scanner-primary", "fingerprint": "63309513b7579719", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-360ba8f96888dba2", "level": "note", "message": {"text": "Unused endpoint: POST /api/identity/tokens/{fingerprint}/revoke"}, "properties": {"repobilityId": "e1c9a63df03bacda", "scanner": "scanner-primary", "fingerprint": "360ba8f96888dba2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3b94923f366fed0e", "level": "note", "message": {"text": "Unused endpoint: GET /api/projects"}, "properties": {"repobilityId": "15497a14d8d1edb8", "scanner": "scanner-primary", "fingerprint": "3b94923f366fed0e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-16a480533217943d", "level": "note", "message": {"text": "Unused endpoint: POST /api/projects"}, "properties": {"repobilityId": "a57204f817472f94", "scanner": "scanner-primary", "fingerprint": "16a480533217943d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-563a6833df7b496b", "level": "note", "message": {"text": "Unused endpoint: GET /api/projects/{project_id}/documents"}, "properties": {"repobilityId": "c72127c259164e5f", "scanner": "scanner-primary", "fingerprint": "563a6833df7b496b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-47a70cfa646624ec", "level": "note", "message": {"text": "Unused endpoint: POST /api/projects/{project_id}/documents"}, "properties": {"repobilityId": "fc58cf28944808bb", "scanner": "scanner-primary", "fingerprint": "47a70cfa646624ec", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a17c0f6e63f1d99", "level": "note", "message": {"text": "Unused endpoint: POST /api/projects/{project_id}/documents/batch-demo"}, "properties": {"repobilityId": "6f82b48c5d266fff", "scanner": "scanner-primary", "fingerprint": "7a17c0f6e63f1d99", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a471ff1e64602b27", "level": "note", "message": {"text": "Unused endpoint: POST /api/projects/{project_id}/connectors"}, "properties": {"repobilityId": "988960c4b43a314f", "scanner": "scanner-primary", "fingerprint": "a471ff1e64602b27", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-75ab26c580028136", "level": "note", "message": {"text": "Unused endpoint: GET /api/projects/{project_id}/connectors"}, "properties": {"repobilityId": "5777f411773446ac", "scanner": "scanner-primary", "fingerprint": "75ab26c580028136", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-00ec15ed9e2c6a2c", "level": "note", "message": {"text": "Unused endpoint: POST /api/connectors/{connector_id}/scan"}, "properties": {"repobilityId": "4bfe7e5ffdb331a2", "scanner": "scanner-primary", "fingerprint": "00ec15ed9e2c6a2c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-af1b2f7e6bf47734", "level": "note", "message": {"text": "Unused endpoint: GET /api/projects/{project_id}/ingestion-jobs"}, "properties": {"repobilityId": "03eeae972797a2eb", "scanner": "scanner-primary", "fingerprint": "af1b2f7e6bf47734", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c4108ebe868fc963", "level": "note", "message": {"text": "Unused endpoint: GET /api/ingestion-jobs/{job_id}"}, "properties": {"repobilityId": "482be8f7cb787f76", "scanner": "scanner-primary", "fingerprint": "c4108ebe868fc963", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2a862b5dd3a0b783", "level": "note", "message": {"text": "Unused endpoint: GET /api/ingestion-jobs/{job_id}/files"}, "properties": {"repobilityId": "ba863e4b2ea9cd37", "scanner": "scanner-primary", "fingerprint": "2a862b5dd3a0b783", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d5d7e303d1c8ffb8", "level": "note", "message": {"text": "Unused endpoint: POST /api/projects/{project_id}/approval-policies"}, "properties": {"repobilityId": "975baa9c8f886c15", "scanner": "scanner-primary", "fingerprint": "d5d7e303d1c8ffb8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6ad0c0b9bf83c685", "level": "note", "message": {"text": "Unused endpoint: GET /api/projects/{project_id}/approval-policies"}, "properties": {"repobilityId": "385794c1bcbdb9c2", "scanner": "scanner-primary", "fingerprint": "6ad0c0b9bf83c685", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5c36515cfd563052", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/approval-policies/{policy_id}"}, "properties": {"repobilityId": "e147d77e18f349b8", "scanner": "scanner-primary", "fingerprint": "5c36515cfd563052", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b4c22d75221299f2", "level": "note", "message": {"text": "Unused endpoint: GET /api/settings/llm"}, "properties": {"repobilityId": "97422813192dde6e", "scanner": "scanner-primary", "fingerprint": "b4c22d75221299f2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f16ec901faca45fe", "level": "note", "message": {"text": "Unused endpoint: PUT /api/settings/llm/{function}"}, "properties": {"repobilityId": "a170477710f72494", "scanner": "scanner-primary", "fingerprint": "f16ec901faca45fe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-32ba190a6d8ad847", "level": "note", "message": {"text": "Unused endpoint: GET /api/projects/{project_id}/assets"}, "properties": {"repobilityId": "d8079b965e30ab3b", "scanner": "scanner-primary", "fingerprint": "32ba190a6d8ad847", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9cee372cf239d59f", "level": "note", "message": {"text": "Unused endpoint: POST /api/projects/{project_id}/extract"}, "properties": {"repobilityId": "67244c17f80fce9e", "scanner": "scanner-primary", "fingerprint": "9cee372cf239d59f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e653b91a01f40eee", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/assets/bulk"}, "properties": {"repobilityId": "d58a1e10dcda28e8", "scanner": "scanner-primary", "fingerprint": "e653b91a01f40eee", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-26a871c0de7e58f2", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/assets/{asset_id}"}, "properties": {"repobilityId": "9860cef56fcda3ba", "scanner": "scanner-primary", "fingerprint": "26a871c0de7e58f2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-00c25afe9f83f70a", "level": "note", "message": {"text": "Unused endpoint: GET /api/projects/{project_id}/experts"}, "properties": {"repobilityId": "19c237cafb8b230a", "scanner": "scanner-primary", "fingerprint": "00c25afe9f83f70a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6adfb46ef04e7043", "level": "note", "message": {"text": "Unused endpoint: POST /api/projects/{project_id}/experts"}, "properties": {"repobilityId": "d89ed91c8280a5e7", "scanner": "scanner-primary", "fingerprint": "6adfb46ef04e7043", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-53a3f2b6fe87c8b7", "level": "note", "message": {"text": "Unused endpoint: POST /api/projects/{project_id}/query"}, "properties": {"repobilityId": "47f052ba59adeb2a", "scanner": "scanner-primary", "fingerprint": "53a3f2b6fe87c8b7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b90274650dd1ad98", "level": "note", "message": {"text": "Unused endpoint: GET /api/projects/{project_id}/packages"}, "properties": {"repobilityId": "8bc6c354e6389da9", "scanner": "scanner-primary", "fingerprint": "b90274650dd1ad98", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d70475f138194837", "level": "note", "message": {"text": "Unused endpoint: POST /api/projects/{project_id}/packages"}, "properties": {"repobilityId": "7d3c37b5583c04c4", "scanner": "scanner-primary", "fingerprint": "d70475f138194837", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f2073a96041975b4", "level": "note", "message": {"text": "Unused endpoint: GET /api/packages/{package_id}/download"}, "properties": {"repobilityId": "da1277c33ea99cc5", "scanner": "scanner-primary", "fingerprint": "f2073a96041975b4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cdf44c204a794665", "level": "note", "message": {"text": "Unused endpoint: GET /api/experts/{expert_model_id}/compile-gate"}, "properties": {"repobilityId": "c1a3619598ae19ec", "scanner": "scanner-primary", "fingerprint": "cdf44c204a794665", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a92fd762b214119", "level": "note", "message": {"text": "Unused endpoint: GET /api/agents/activity"}, "properties": {"repobilityId": "8f5012b3b5ed4d86", "scanner": "scanner-primary", "fingerprint": "7a92fd762b214119", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-47ccee89ee9e3ee4", "level": "note", "message": {"text": "Unused endpoint: GET /api/audit"}, "properties": {"repobilityId": "ee061804135e9ab2", "scanner": "scanner-primary", "fingerprint": "47ccee89ee9e3ee4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-80e1d6442d4a9657", "level": "note", "message": {"text": "Unused endpoint: GET /api/dashboard/{project_id}"}, "properties": {"repobilityId": "af6671cdd3b557c2", "scanner": "scanner-primary", "fingerprint": "80e1d6442d4a9657", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d43a1b28c3d113de", "level": "note", "message": {"text": "Unused endpoint: GET /api/projects/{project_id}/benchmarks"}, "properties": {"repobilityId": "806413bf3883490d", "scanner": "scanner-primary", "fingerprint": "d43a1b28c3d113de", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-be4646a3acd81cc1", "level": "note", "message": {"text": "Unused endpoint: POST /api/projects/{project_id}/benchmarks"}, "properties": {"repobilityId": "ecdb4bb873d6c13a", "scanner": "scanner-primary", "fingerprint": "be4646a3acd81cc1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-10d3452578e0aee2", "level": "note", "message": {"text": "Unused endpoint: PUT /api/projects/{project_id}/benchmarks/{benchmark_id}"}, "properties": {"repobilityId": "397ec872afd1bbc4", "scanner": "scanner-primary", "fingerprint": "10d3452578e0aee2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1e8da06747a5f306", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/projects/{project_id}/benchmarks/{benchmark_id}"}, "properties": {"repobilityId": "687529a35d8e8834", "scanner": "scanner-primary", "fingerprint": "1e8da06747a5f306", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d42e33ec59a2b304", "level": "note", "message": {"text": "Unused endpoint: POST /api/projects/{project_id}/evaluations"}, "properties": {"repobilityId": "403392a0074ee253", "scanner": "scanner-primary", "fingerprint": "d42e33ec59a2b304", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-90cf0a4961623941", "level": "note", "message": {"text": "Unused endpoint: GET /api/projects/{project_id}/evaluations"}, "properties": {"repobilityId": "31ea1ca7bb121264", "scanner": "scanner-primary", "fingerprint": "90cf0a4961623941", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0e03522489dd7ab4", "level": "note", "message": {"text": "Unused endpoint: GET /api/projects/{project_id}/evaluations/{run_id}"}, "properties": {"repobilityId": "6dc4ab87c8ad889e", "scanner": "scanner-primary", "fingerprint": "0e03522489dd7ab4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-79b88dcfb2aca6df", "level": "note", "message": {"text": "Unused endpoint: GET /api/packages/{package_id}/model-comparison"}, "properties": {"repobilityId": "80b73679cb8f182a", "scanner": "scanner-primary", "fingerprint": "79b88dcfb2aca6df", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}