{"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-2a0d29201e164520", "name": "Possibly dead Python function: check_postgresql", "shortDescription": {"text": "Possibly dead Python function: check_postgresql"}, "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-4419c0fb7a619bf0", "name": "Possibly dead Python function: create_database", "shortDescription": {"text": "Possibly dead Python function: create_database"}, "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-f888468b99fd9705", "name": "Possibly dead Python function: setup_alembic", "shortDescription": {"text": "Possibly dead Python function: setup_alembic"}, "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-1d6833b3a15d38e4", "name": "Possibly dead Python function: create_env_file", "shortDescription": {"text": "Possibly dead Python function: create_env_file"}, "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-2ffcccb84fd88c31", "name": "Possibly dead Python function: verify_dashboards", "shortDescription": {"text": "Possibly dead Python function: verify_dashboards"}, "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-92a885cd8d1e45aa", "name": "Possibly dead Python function: verify_canaries", "shortDescription": {"text": "Possibly dead Python function: verify_canaries"}, "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-49a5c0ea556cc79a", "name": "Possibly dead Python function: verify_chaos_engineering", "shortDescription": {"text": "Possibly dead Python function: verify_chaos_engineering"}, "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-f31b561651b69c5e", "name": "Possibly dead Python function: verify_slo_reporting", "shortDescription": {"text": "Possibly dead Python function: verify_slo_reporting"}, "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-5a12a053849c758a", "name": "Possibly dead Python function: verify_security_monitoring", "shortDescription": {"text": "Possibly dead Python function: verify_security_monitoring"}, "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-76c9d169d75fd0fa", "name": "Possibly dead Python function: verify_log_insights", "shortDescription": {"text": "Possibly dead Python function: verify_log_insights"}, "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-bdb16927181af6f6", "name": "Possibly dead Python function: demo_audit_models", "shortDescription": {"text": "Possibly dead Python function: demo_audit_models"}, "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-7512834b75a5e5d1", "name": "Possibly dead Python function: demo_audit_service", "shortDescription": {"text": "Possibly dead Python function: demo_audit_service"}, "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-9a6b1e0eeb0e4d0a", "name": "Possibly dead Python function: demo_audit_schemas", "shortDescription": {"text": "Possibly dead Python function: demo_audit_schemas"}, "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-3ed8942a27f92d38", "name": "Possibly dead Python function: demo_audit_middleware", "shortDescription": {"text": "Possibly dead Python function: demo_audit_middleware"}, "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-72104854f78bcf1b", "name": "Possibly dead Python function: demo_audit_api_structure", "shortDescription": {"text": "Possibly dead Python function: demo_audit_api_structure"}, "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-ef9cbe0a778ca831", "name": "Possibly dead Python function: demo_migration_structure", "shortDescription": {"text": "Possibly dead Python function: demo_migration_structure"}, "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-fe1678b91cb601ef", "name": "Possibly dead Python function: demo_integration_scenarios", "shortDescription": {"text": "Possibly dead Python function: demo_integration_scenarios"}, "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-77f6ee005223de01", "name": "Possibly dead Python function: demo_compliance_features", "shortDescription": {"text": "Possibly dead Python function: demo_compliance_features"}, "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-d0fe019d5ecb291f", "name": "Possibly dead Python function: performance_context", "shortDescription": {"text": "Possibly dead Python function: performance_context"}, "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-82850482a376ad95", "name": "Possibly dead Python function: export_analytics_data", "shortDescription": {"text": "Possibly dead Python function: export_analytics_data"}, "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-a2c2d7a3588658a5", "name": "Possibly dead Python function: setup_analytics_hooks", "shortDescription": {"text": "Possibly dead Python function: setup_analytics_hooks"}, "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-593e9e44e5a7a84b", "name": "Possibly dead Python function: create_cloudfront_distribution", "shortDescription": {"text": "Possibly dead Python function: create_cloudfront_distribution"}, "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-ca95e2c18ead5b55", "name": "Possibly dead Python function: rollback_to_version", "shortDescription": {"text": "Possibly dead Python function: rollback_to_version"}, "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-47dfa8e792a9f491", "name": "Stray `console.log` in TS/JS \u2014 apps/web/tests/global-teardown.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/tests/global-teardown.ts:5"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-73adc172aa346c92", "name": "Stray `console.log` in TS/JS \u2014 apps/web/tests/global-setup.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/tests/global-setup.ts:6"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4592b9f1513b35e2", "name": "Stray `console.log` in TS/JS \u2014 apps/web/tests/utils/auth-service.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/tests/utils/auth-service.ts:66"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f69acccd4ce07581", "name": "Stray `console.log` in TS/JS \u2014 apps/web/tests/utils/test-data-service.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/tests/utils/test-data-service.ts:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b06c3a45370d8923", "name": "Stray `console.log` in TS/JS \u2014 apps/web/tests/e2e/setup.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/tests/e2e/setup.ts:20"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f64dd7434f1aa2ac", "name": "Stray `console.log` in TS/JS \u2014 apps/web/tests/e2e/lcopilot/exporter-validation.spec.ts:176", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/tests/e2e/lcopilot/exporter-validation.spec.ts:176"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2b39abc907d2c863", "name": "Stray `console.log` in TS/JS \u2014 apps/web/src/__tests__/onboarding-scenario-matrix.test.ts:233", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/__tests__/onboarding-scenario-matrix.test.ts:233"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ceda3dad00acf6b1", "name": "Stray `console.log` in TS/JS \u2014 apps/web/src/api/billing.ts:374", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/api/billing.ts:374"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a5698774a671a368", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/lcopilot/DocumentDetailsDrawer.tsx:1129", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/lcopilot/DocumentDetailsDrawer.tsx:1129"}, "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-b3fd7e615993c3bd", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/lcopilot/LcIntakeCard.tsx:163", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/lcopilot/LcIntakeCard.tsx:163"}, "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-206ffa970ec47180", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/lcopilot/results/tabs/VerdictTab.tsx:329", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/lcopilot/results/tabs/VerdictTab.tsx:329"}, "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-e46faee2304e9f64", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/importer/ImporterSidebar.tsx:158", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/importer/ImporterSidebar.tsx:158"}, "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-8b93fbea11b9a364", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/enterprise/EnterpriseSidebar.tsx:210", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/enterprise/EnterpriseSidebar.tsx:210"}, "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-819c3edb4b638d6f", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/entitlements/QuotaStrip.tsx:142", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/entitlements/QuotaStrip.tsx:142"}, "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-6fb64a69ce1170cb", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/shared/LanguageSwitcher.tsx:43", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/shared/LanguageSwitcher.tsx:43"}, "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-dbea6e1e515dbebc", "name": "TODO/FIXME marker in shipping code \u2014 apps/web/src/components/shared/SavedViewsManager.tsx:87", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/components/shared/SavedViewsManager.tsx:87"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ef935d20c0c90c38", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/web/src/components/ui/chart.tsx:96", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/web/src/components/ui/chart.tsx:96"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dd2c4d809726d5b5", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/search/GlobalSearchBar.tsx:175", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/search/GlobalSearchBar.tsx:175"}, "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-5a9facca4853e00b", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/billing/UsageTable.tsx:584", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/billing/UsageTable.tsx:584"}, "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-a8d46173493cd37a", "name": "TODO/FIXME marker in shipping code \u2014 apps/web/src/components/billing/governance/GovernancePanel.tsx:66", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/components/billing/governance/GovernancePanel.tsx:66"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8cd2e07dc306a26f", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/billing/notifications/NotificationsPanel.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/billing/notifications/NotificationsPanel.tsx:513"}, "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-f9712fe3aa3f7711", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/admin/AdminHeader.tsx:172", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/admin/AdminHeader.tsx:172"}, "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-0c0dd4d15b2ead9c", "name": "TODO/FIXME marker in shipping code \u2014 apps/web/src/components/admin/AdminHeader.tsx:58", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/components/admin/AdminHeader.tsx:58"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d3c00fa2932d57d1", "name": "Stray `console.log` in TS/JS \u2014 apps/web/src/components/admin/AdminHeader.tsx:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/components/admin/AdminHeader.tsx:59"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9e891aa9b8b6bfad", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/exporter/ExporterSidebar.tsx:137", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/exporter/ExporterSidebar.tsx:137"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ab3000f80b8354df", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/validation/IssueCard.tsx:169", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/validation/IssueCard.tsx:169"}, "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-a0fce517c37350c6", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/agency/BulkInbox.tsx:179", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/agency/BulkInbox.tsx:179"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-170ecfed10636f0a", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/tools/PriceVerifySidebar.tsx:267", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/tools/PriceVerifySidebar.tsx:267"}, "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-558df46c40bebd72", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/tools/SanctionsSidebar.tsx:253", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/tools/SanctionsSidebar.tsx:253"}, "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-c54453fb84f6f69d", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/tools/DocGeneratorSidebar.tsx:252", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/tools/DocGeneratorSidebar.tsx:252"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-46d140f62c33f958", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/tools/TrackingSidebar.tsx:293", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/tools/TrackingSidebar.tsx:293"}, "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-45e0f2b9b0c36b33", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/tools/HSCodeSidebar.tsx:390", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/tools/HSCodeSidebar.tsx:390"}, "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-5ed3486dcac27bc6", "name": "TODO/FIXME marker in shipping code \u2014 apps/web/src/components/bank/AIAssistance.tsx:324", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/components/bank/AIAssistance.tsx:324"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb5d5ed9ea179518", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/bank/BankSidebar.tsx:327", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/bank/BankSidebar.tsx:327"}, "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-c8d79c140fc11bc1", "name": "TODO/FIXME marker in shipping code \u2014 apps/web/src/components/bank/BankQuickStats.tsx:78", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/components/bank/BankQuickStats.tsx:78"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eeb75246da4691de", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/bank/BulkLCUpload.tsx:1042", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/bank/BulkLCUpload.tsx:1042"}, "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-33ac2899f226666f", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/bank/OrgSwitcher.tsx:66", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/bank/OrgSwitcher.tsx:66"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9168a11589466351", "name": "Stray `console.log` in TS/JS \u2014 apps/web/src/lib/logger.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/lib/logger.ts:51"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1525dc4dce20dcce", "name": "TODO/FIXME marker in shipping code \u2014 apps/web/src/lib/billing/providers/stripeProvider.ts:21", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/lib/billing/providers/stripeProvider.ts:21"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-28470af2d25f2639", "name": "TODO/FIXME marker in shipping code \u2014 apps/web/src/lib/billing/providers/sslcommerzProvider.ts:19", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/lib/billing/providers/sslcommerzProvider.ts:19"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9d0878fb09c22418", "name": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/BillingUsagePage.tsx:294", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/BillingUsagePage.tsx:294"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5aef0c89bdf8bd14", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/UploadLC.tsx:310", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/UploadLC.tsx:310"}, "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-9308c17729a2138c", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/ExportLCUpload.tsx:1820", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/ExportLCUpload.tsx:1820"}, "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-dd0b2787716be5de", "name": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/ExportLCUpload.tsx:1321", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/ExportLCUpload.tsx:1321"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c8c2d10625883ae1", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/CheckPage.tsx:352", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/CheckPage.tsx:352"}, "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-09949b55045ce42c", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/ImportLCUpload.tsx:625", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/ImportLCUpload.tsx:625"}, "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-660e79c41d2214f6", "name": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/ImportLCUpload.tsx:489", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/ImportLCUpload.tsx:489"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-24d791993057a1d3", "name": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/Results.tsx:243", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/Results.tsx:243"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7e71d91bbc73c56f", "name": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/ContactPage.tsx:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/ContactPage.tsx:21"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0d2a0c346cae5bca", "name": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/Register.tsx:227", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/Register.tsx:227"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dc79e79a3d20e78a", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/importer/ImporterValidationPage.tsx:190", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/importer/ImporterValidationPage.tsx:190"}, "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-277f7497673dad0c", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/admin/sections/audit/Logs.tsx:289", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/admin/sections/audit/Logs.tsx:289"}, "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-befb0d5284d51c63", "name": "TODO/FIXME marker in shipping code \u2014 apps/web/src/pages/admin/sections/billing/InvoicesPayments.tsx:235", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/pages/admin/sections/billing/InvoicesPayments.tsx:235"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ccb09eec971bc0e3", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/PriceVerify.tsx:939", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/PriceVerify.tsx:939"}, "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-637582cac5898b63", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/tracking/ContainerTrackPage.tsx:484", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/tracking/ContainerTrackPage.tsx:484"}, "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-26211a99284c8fca", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/hs-code/HSCodeAlerts.tsx:516", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/hs-code/HSCodeAlerts.tsx:516"}, "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-007e98cf3d89355f", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/hs-code/HSCodeQuotas.tsx:291", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/hs-code/HSCodeQuotas.tsx:291"}, "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-e796cfa4137f6144", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/hs-code/HSCodeOverview.tsx:245", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/hs-code/HSCodeOverview.tsx:245"}, "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-63a080f822489a38", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/hs-code/HSCodeHistory.tsx:137", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/hs-code/HSCodeHistory.tsx:137"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d31ae988de053ec0", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/hs-code/HSCodeDashboard.tsx:660", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/hs-code/HSCodeDashboard.tsx:660"}, "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-af7fa19a9fc50e8c", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/price-verify/VerifyPage.tsx:666", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/price-verify/VerifyPage.tsx:666"}, "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-753bcaa7032c1588", "name": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/tools/price-verify/DashboardOverview.tsx:99", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/tools/price-verify/DashboardOverview.tsx:99"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b11ed59cac113c16", "name": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/tools/price-verify/MarketPricesPage.tsx:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/tools/price-verify/MarketPricesPage.tsx:97"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b8eb54aa9a6fb244", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/lc-builder/LCBuilderLayout.tsx:298", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/lc-builder/LCBuilderLayout.tsx:298"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5c3d419508362941", "name": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/bank/BankLogin.tsx:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/bank/BankLogin.tsx:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-24f6cf314fb7f3b8", "name": "Stray `console.log` in TS/JS \u2014 apps/web/src/hooks/use-drafts.ts:497", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/hooks/use-drafts.ts:497"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4d76f8aae0538698", "name": "Stray `console.log` in TS/JS \u2014 apps/web/src/hooks/use-combined.ts:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/hooks/use-combined.ts:90"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-527e9c41a546f6fa", "name": "Stray `console.log` in TS/JS \u2014 apps/web/src/hooks/use-lcopilot.ts:324", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/hooks/use-lcopilot.ts:324"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ab28c5da2006832c", "name": "TODO/FIXME marker in shipping code \u2014 apps/web/src/backup-original/api/auth.ts:92", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/backup-original/api/auth.ts:92"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2d9be37833ba778e", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b95bc1d71c50fe16", "name": "Insecure pattern 'subprocess_shell_true' in setup_db.py:15", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in setup_db.py:15"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-01d5811ba81263e4", "name": "Insecure pattern 'debug_true' in apps/api/trust_platform/compliance/rule_review_dashboard/app.py:476", "shortDescription": {"text": "Insecure pattern 'debug_true' in apps/api/trust_platform/compliance/rule_review_dashboard/app.py:476"}, "fullDescription": {"text": "Found a known-risky pattern (debug_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a022bd4225cd12ec", "name": "Possible secret in apps/api/scripts/fix_exporter_password.py", "shortDescription": {"text": "Possible secret in apps/api/scripts/fix_exporter_password.py"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-300cfb84cb2f75cb", "name": "Possible secret in apps/api/scripts/generate_hash_standalone.py", "shortDescription": {"text": "Possible secret in apps/api/scripts/generate_hash_standalone.py"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-8d78c87d1d7a3490", "name": "Possible secret in apps/api/scripts/generate_hash.py", "shortDescription": {"text": "Possible secret in apps/api/scripts/generate_hash.py"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-5499c32bce2e9543", "name": "Insecure pattern 'cors_wildcard' in apps/web/api/geo.ts:17", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in apps/web/api/geo.ts:17"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bce2f2e59df80656", "name": "Insecure pattern 'local_storage_auth_token' in apps/web/src/__tests__/useAuthBootstrap.test.tsx:144", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in apps/web/src/__tests__/useAuthBootstrap.test.tsx:144"}, "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-a1cb0ec4a3397780", "name": "Insecure pattern 'local_storage_auth_token' in apps/web/src/__tests__/apiClientAuth.test.ts:28", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in apps/web/src/__tests__/apiClientAuth.test.ts:28"}, "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-69b7996ff5548303", "name": "Insecure pattern 'local_storage_auth_token' in apps/web/src/__tests__/csrf.test.ts:11", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in apps/web/src/__tests__/csrf.test.ts:11"}, "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-bc0a75ff5787ecfb", "name": "Insecure pattern 'document_write' in apps/web/src/components/lcopilot/PreparationGuide.tsx:261", "shortDescription": {"text": "Insecure pattern 'document_write' in apps/web/src/components/lcopilot/PreparationGuide.tsx:261"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-30e8891877b78483", "name": "Insecure pattern 'dangerous_innerhtml' in apps/web/src/components/ui/chart.tsx:96", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/web/src/components/ui/chart.tsx:96"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0202fea99def1ccd", "name": "Insecure pattern 'local_storage_auth_token' in apps/web/src/lib/admin/auth.tsx:146", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in apps/web/src/lib/admin/auth.tsx:146"}, "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-dab8c84750632455", "name": "Possible secret in apps/web/src/lib/bank/auth.tsx", "shortDescription": {"text": "Possible secret in apps/web/src/lib/bank/auth.tsx"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-c59d1b39691ffa28", "name": "Insecure pattern 'local_storage_auth_token' in apps/web/src/lib/bank/auth.tsx:315", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in apps/web/src/lib/bank/auth.tsx:315"}, "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-d10e72d98e1e9952", "name": "Possible secret in apps/web/src/pages/importer/ImporterLogin.tsx", "shortDescription": {"text": "Possible secret in apps/web/src/pages/importer/ImporterLogin.tsx"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-cf177b28a41c10e1", "name": "Insecure pattern 'local_storage_auth_token' in apps/web/src/pages/auth/Callback.tsx:60", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in apps/web/src/pages/auth/Callback.tsx:60"}, "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-10be1d38baf8f8e0", "name": "Possible secret in apps/web/src/pages/exporter/ExporterLogin.tsx", "shortDescription": {"text": "Possible secret in apps/web/src/pages/exporter/ExporterLogin.tsx"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-b43b6bc50d0e27cc", "name": "Possible secret in apps/web/src/pages/bank/BankLogin.tsx", "shortDescription": {"text": "Possible secret in apps/web/src/pages/bank/BankLogin.tsx"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-bda0acbe2b0ae19b", "name": "Insecure pattern 'local_storage_auth_token' in apps/web/src/hooks/use-drafts.ts:70", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in apps/web/src/hooks/use-drafts.ts:70"}, "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-623efcde5dddc3a9", "name": "Possible secret in apps/web/src/backup-original/api/auth.ts", "shortDescription": {"text": "Possible secret in apps/web/src/backup-original/api/auth.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-15c3ea62069e8071", "name": "Insecure pattern 'local_storage_auth_token' in apps/web/src/backup-original/api/auth.ts:82", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in apps/web/src/backup-original/api/auth.ts:82"}, "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-8b8b828c744fd4f5", "name": "Possible secret in .github/workflows/performance-monitoring.yml", "shortDescription": {"text": "Possible secret in .github/workflows/performance-monitoring.yml"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-a9080ee701875b98", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-07f138e79f7cfca1", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a04d9e23215ac02", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-python@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be7a37a76b6e9fa9", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "aquasecurity/trivy-action@master can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f7a3649fd19fdad0", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b19299f70378cd38", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "bridgecrewio/checkov-action@master can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e0662b204e97cff6", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e96c206413ab67cd", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "aquasecurity/trivy-action@master can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "high", "confidence": 1.0}}, {"id": "scanner-10ac55d66f176df4", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-50938428d65d50d7", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-python@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-54855621cc8769d3", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "aquasecurity/trivy-action@master can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5faa667db6951d56", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-532e87ed52c7ee8a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7f1e4527e6fecffa", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "aquasecurity/trivy-action@master can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "high", "confidence": 1.0}}, {"id": "scanner-64192a3c67110d01", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e6670f32b5bd9075", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a359886445c3fc98", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "aquasecurity/trivy-action@master can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1d7e834080dbebed", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-python@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-46c644c6227e4d4a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e2dd8b4c4ff10305", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "aquasecurity/trivy-action@master can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1838a141491ce38c", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4fbab4651f688e58", "name": "Very large file: apps/api/tests/gold_corpus/generate_synthetic.py (2501 lines)", "shortDescription": {"text": "Very large file: apps/api/tests/gold_corpus/generate_synthetic.py (2501 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-601818da19d7a016", "name": "Very large file: apps/api/trust_platform/compliance/compliance_engine.py (1150 lines)", "shortDescription": {"text": "Very large file: apps/api/trust_platform/compliance/compliance_engine.py (1150 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-fcac2504c2e78121", "name": "Very large file: apps/api/app/rules/extractors.py (1804 lines)", "shortDescription": {"text": "Very large file: apps/api/app/rules/extractors.py (1804 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-12d2caf92afd3403", "name": "Very large file: apps/api/app/services/lc_clause_library.py (3915 lines)", "shortDescription": {"text": "Very large file: apps/api/app/services/lc_clause_library.py (3915 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-895389ef981c1804", "name": "Very large file: apps/api/app/services/validator.py (2425 lines)", "shortDescription": {"text": "Very large file: apps/api/app/services/validator.py (2425 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-bc2e70a5c2d5f5d2", "name": "Very large file: apps/api/app/services/document_generator.py (1910 lines)", "shortDescription": {"text": "Very large file: apps/api/app/services/document_generator.py (1910 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-9265667dfd757eaf", "name": "Very large file: apps/api/app/services/price_verification.py (3246 lines)", "shortDescription": {"text": "Very large file: apps/api/app/services/price_verification.py (3246 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-a87988773c1e9712", "name": "Very large file: apps/api/app/services/extraction_core/review_metadata.py (1973 lines)", "shortDescription": {"text": "Very large file: apps/api/app/services/extraction_core/review_metadata.py (1973 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-a00288fef926f5dd", "name": "Very large file: apps/api/app/services/validation/crossdoc_validator.py (3151 lines)", "shortDescription": {"text": "Very large file: apps/api/app/services/validation/crossdoc_validator.py (3151 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-a1ec0bf8837ee980", "name": "Very large file: apps/api/app/services/validation/doc_matcher.py (1467 lines)", "shortDescription": {"text": "Very large file: apps/api/app/services/validation/doc_matcher.py (1467 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-76f8c383f3343891", "name": "Very large file: apps/api/app/services/validation/ai_validator.py (1637 lines)", "shortDescription": {"text": "Very large file: apps/api/app/services/validation/ai_validator.py (1637 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-247c07fb9eebd350", "name": "Very large file: apps/api/app/services/extraction/launch_pipeline.py (3998 lines)", "shortDescription": {"text": "Very large file: apps/api/app/services/extraction/launch_pipeline.py (3998 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-775f671a2b9c0988", "name": "Very large file: apps/api/app/services/extraction/ai_first_extractor.py (2553 lines)", "shortDescription": {"text": "Very large file: apps/api/app/services/extraction/ai_first_extractor.py (2553 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-df247815beed773f", "name": "Very large file: apps/api/app/services/extraction/lc_document.py (1192 lines)", "shortDescription": {"text": "Very large file: apps/api/app/services/extraction/lc_document.py (1192 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-c4763ebbdb193fff", "name": "Very large file: apps/api/app/routers/validate.py (3691 lines)", "shortDescription": {"text": "Very large file: apps/api/app/routers/validate.py (3691 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-95eb1a5d488889d5", "name": "Very large file: apps/api/app/routers/rules_admin.py (1403 lines)", "shortDescription": {"text": "Very large file: apps/api/app/routers/rules_admin.py (1403 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-e00e9eb8cc21345a", "name": "Very large file: apps/api/app/routers/price_verify.py (2155 lines)", "shortDescription": {"text": "Very large file: apps/api/app/routers/price_verify.py (2155 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-ae737f2712a89034", "name": "Very large file: apps/api/app/routers/hs_code.py (3489 lines)", "shortDescription": {"text": "Very large file: apps/api/app/routers/hs_code.py (3489 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-f2efa39d474aaf93", "name": "Very large file: apps/api/app/routers/lc_builder.py (4166 lines)", "shortDescription": {"text": "Very large file: apps/api/app/routers/lc_builder.py (4166 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-07c0decfd7fda54e", "name": "Very large file: apps/api/app/routers/bank.py (2742 lines)", "shortDescription": {"text": "Very large file: apps/api/app/routers/bank.py (2742 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-5e599a12170b1679", "name": "Very large file: apps/api/app/routers/validate_v1_backup.py (2458 lines)", "shortDescription": {"text": "Very large file: apps/api/app/routers/validate_v1_backup.py (2458 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-7cd9aaf011fcd4c6", "name": "Very large file: apps/api/app/routers/tracking.py (1836 lines)", "shortDescription": {"text": "Very large file: apps/api/app/routers/tracking.py (1836 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-395661024532aab3", "name": "Very large file: apps/api/app/routers/validation/result_finalization.py (1422 lines)", "shortDescription": {"text": "Very large file: apps/api/app/routers/validation/result_finalization.py (1422 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-ebf293e8cabb3a36", "name": "Very large file: apps/api/app/routers/validation/ocr_runtime.py (2452 lines)", "shortDescription": {"text": "Very large file: apps/api/app/routers/validation/ocr_runtime.py (2452 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-edd7fa29920ba1cb", "name": "Very large file: apps/api/app/routers/validation/response_shaping.py (1297 lines)", "shortDescription": {"text": "Very large file: apps/api/app/routers/validation/response_shaping.py (1297 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-374709469a495350", "name": "Very large file: apps/api/app/routers/validation/validation_execution.py (3499 lines)", "shortDescription": {"text": "Very large file: apps/api/app/routers/validation/validation_execution.py (3499 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-d42c4d773116bffc", "name": "Very large file: apps/web/src/__tests__/resultsMapper.test.ts (1380 lines)", "shortDescription": {"text": "Very large file: apps/web/src/__tests__/resultsMapper.test.ts (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-53c7dc8d3e0799ca", "name": "Very large file: apps/web/src/__tests__/ExporterResults.test.tsx (2650 lines)", "shortDescription": {"text": "Very large file: apps/web/src/__tests__/ExporterResults.test.tsx (2650 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-91735958c8359c80", "name": "Very large file: apps/web/src/components/lcopilot/DocumentDetailsDrawer.tsx (1474 lines)", "shortDescription": {"text": "Very large file: apps/web/src/components/lcopilot/DocumentDetailsDrawer.tsx (1474 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-bfea9ccf55846829", "name": "Very large file: apps/web/src/lib/lcopilot/resultsMapper.ts (1455 lines)", "shortDescription": {"text": "Very large file: apps/web/src/lib/lcopilot/resultsMapper.ts (1455 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-e1e10b77d316c57d", "name": "Very large file: apps/web/src/lib/admin/services/mock/mockAdminService.ts (1805 lines)", "shortDescription": {"text": "Very large file: apps/web/src/lib/admin/services/mock/mockAdminService.ts (1805 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-72e2eb28aebda031", "name": "Very large file: apps/web/src/pages/ExportLCUpload.tsx (2088 lines)", "shortDescription": {"text": "Very large file: apps/web/src/pages/ExportLCUpload.tsx (2088 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-167266b66f67c046", "name": "Very large file: apps/web/src/pages/ExporterResults.tsx (4223 lines)", "shortDescription": {"text": "Very large file: apps/web/src/pages/ExporterResults.tsx (4223 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-64ec100efdbfabf1", "name": "Very large file: apps/web/src/pages/settings/CompanyProfile.tsx (1442 lines)", "shortDescription": {"text": "Very large file: apps/web/src/pages/settings/CompanyProfile.tsx (1442 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-f1f431514432fe6f", "name": "Very large file: apps/web/src/pages/tools/price-verify/VerifyPage.tsx (1587 lines)", "shortDescription": {"text": "Very large file: apps/web/src/pages/tools/price-verify/VerifyPage.tsx (1587 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-c5019338dbe620a6", "name": "Very large file: apps/web/src/pages/tools/lc-builder/LCBuilderWizard.tsx (1632 lines)", "shortDescription": {"text": "Very large file: apps/web/src/pages/tools/lc-builder/LCBuilderWizard.tsx (1632 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-7f46447fd72884c9", "name": "Very large file: packages/shared-types/src/api.ts (1380 lines)", "shortDescription": {"text": "Very large file: packages/shared-types/src/api.ts (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-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "246 tests / 1262 src (ratio 0.19)."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6eb8163aaeeccc49", "name": "88 TODO/FIXME markers", "shortDescription": {"text": "88 TODO/FIXME markers"}, "fullDescription": {"text": "High count of TODO/FIXME/HACK markers \u2014 track them as issues so they're not forgotten."}, "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-4a9eb7dc7c6e3880", "name": "Node manifest has dependencies but no lockfile: apps/web/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/web/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-526a53ac2db6e202", "name": "Node manifest has dependencies but no lockfile: packages/shared-types/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/shared-types/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "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 2240 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 896 placeholder/mock markers across 267 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, lockfile. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, lockfile. 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-529b51dd3d9ed92a", "name": "Agent authority lacks a verifier contract: .claude/commands/BMad/tasks/kb-mode-interaction.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/tasks/kb-mode-interaction.md"}, "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-125be172533a9c51", "name": "Agent authority lacks a verifier contract: .claude/commands/BMad/tasks/create-doc.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/tasks/create-doc.md"}, "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-d50fd0e99ee6f966", "name": "Agent authority lacks a verifier contract: .claude/commands/BMad/tasks/advanced-elicitation.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/tasks/advanced-elicitation.md"}, "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-09c65730023ff856", "name": "Agent authority lacks a verifier contract: .claude/commands/BMad/tasks/index-docs.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/tasks/index-docs.md"}, "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-f7d3c552c76940a3", "name": "Agent instruction contains unpinned remote install: .claude/commands/BMad/tasks/shard-doc.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: .claude/commands/BMad/tasks/shard-doc.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-55efdc3901b85578", "name": "Agent instruction/config may expose a secret: .claude/commands/BMad/tasks/nfr-assess.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/commands/BMad/tasks/nfr-assess.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e75ec045a2ca95cc", "name": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/architect.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/architect.md"}, "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-708cf4111e7d6d87", "name": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/bmad-orchestrator.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/bmad-orchestrator.md"}, "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-4541869135c7cf34", "name": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/pm.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/pm.md"}, "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-2b6c64f278e6e028", "name": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/dev.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/dev.md"}, "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-e735bef5d966cf8e", "name": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/sm.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/sm.md"}, "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-705e9a52867dde09", "name": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/analyst.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/analyst.md"}, "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-3d6da25db32a8930", "name": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/po.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/po.md"}, "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-0c3a398b0a675905", "name": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/bmad-master.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/bmad-master.md"}, "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-ce4ea94434ac2217", "name": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/ux-expert.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/ux-expert.md"}, "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-27a3e3a84c358c84", "name": "Agent authority lacks a verifier contract: .cursor/rules/bmad/dev.mdc", "shortDescription": {"text": "Agent authority lacks a verifier contract: .cursor/rules/bmad/dev.mdc"}, "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-6d469db0d749a71f", "name": "Agent authority lacks a verifier contract: .cursor/rules/bmad/analyst.mdc", "shortDescription": {"text": "Agent authority lacks a verifier contract: .cursor/rules/bmad/analyst.mdc"}, "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-1ab170be75fca3b1", "name": "Agent authority lacks a verifier contract: .cursor/rules/bmad/pm.mdc", "shortDescription": {"text": "Agent authority lacks a verifier contract: .cursor/rules/bmad/pm.mdc"}, "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-f6d045d69c8f95d8", "name": "Agent authority lacks a verifier contract: .cursor/rules/bmad/sm.mdc", "shortDescription": {"text": "Agent authority lacks a verifier contract: .cursor/rules/bmad/sm.mdc"}, "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-46fc6a0b332de265", "name": "Agent authority lacks a verifier contract: .cursor/rules/bmad/ux-expert.mdc", "shortDescription": {"text": "Agent authority lacks a verifier contract: .cursor/rules/bmad/ux-expert.mdc"}, "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-b36d09fc07d49092", "name": "Agent authority lacks a verifier contract: .cursor/rules/bmad/po.mdc", "shortDescription": {"text": "Agent authority lacks a verifier contract: .cursor/rules/bmad/po.mdc"}, "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-27dda224638db817", "name": "Agent authority lacks a verifier contract: .cursor/rules/bmad/architect.mdc", "shortDescription": {"text": "Agent authority lacks a verifier contract: .cursor/rules/bmad/architect.mdc"}, "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-1abb42f8d08fdf55", "name": "Agent authority lacks a verifier contract: .cursor/rules/bmad/bmad-master.mdc", "shortDescription": {"text": "Agent authority lacks a verifier contract: .cursor/rules/bmad/bmad-master.mdc"}, "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-bb7e988116959a2a", "name": "Agent authority lacks a verifier contract: .cursor/rules/bmad/bmad-orchestrator.mdc", "shortDescription": {"text": "Agent authority lacks a verifier contract: .cursor/rules/bmad/bmad-orchestrator.mdc"}, "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-3f78c655f6a3fe92", "name": "Network/subprocess call without timeout or try/except \u2014 setup_db.py:60", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 setup_db.py:60"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c45cd509eb136f50", "name": "Legacy-named symbol `build_document_extraction_v1` in tests/extraction_observability_exposure_test.py:26", "shortDescription": {"text": "Legacy-named symbol `build_document_extraction_v1` in tests/extraction_observability_exposure_test.py:26"}, "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-d1835b9be37db7a7", "name": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/lcopilot_patchset_d_test.py:50", "shortDescription": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/lcopilot_patchset_d_test.py:50"}, "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-75cc14abedbb6ffb", "name": "Legacy-named symbol `build_document_extraction_v1` in tests/lcopilot_patchset_c_test.py:35", "shortDescription": {"text": "Legacy-named symbol `build_document_extraction_v1` in tests/lcopilot_patchset_c_test.py:35"}, "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-28870bbe885c6b97", "name": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/patch_j_ocr_adapter_runtime_payload_fix_test.py:58", "shortDescription": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/patch_j_ocr_adapter_runtime_payload_fix_test.py:58"}, "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-a81a98b25ba37fda", "name": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/patch_m_ocr_health_diagnostics_test.py:72", "shortDescription": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/patch_m_ocr_health_diagnostics_test.py:72"}, "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-ff20e6e696fffbd9", "name": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/patch_i_top3_field_lift_stage_tuning_test.py:46", "shortDescription": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/patch_i_top3_field_lift_stage_tuning_test.py:46"}, "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-4df4d60bbdf52c1c", "name": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/ocr_runtime_audit_patch_test.py:46", "shortDescription": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/ocr_runtime_audit_patch_test.py:46"}, "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-3964a9f8e07d13a4", "name": "Legacy-named symbol `extraction_artifacts_v1` in tests/patch_k_plaintext_parser_lift_confidence_test.py:33", "shortDescription": {"text": "Legacy-named symbol `extraction_artifacts_v1` in tests/patch_k_plaintext_parser_lift_confidence_test.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-bd79d71cce9253c5", "name": "Legacy-named symbol `extraction_artifacts_v1` in tests/extraction_stabilization_cycle2_test.py:53", "shortDescription": {"text": "Legacy-named symbol `extraction_artifacts_v1` in tests/extraction_stabilization_cycle2_test.py:53"}, "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-42b90b3255c951d1", "name": "Legacy-named symbol `build_issue_provenance_v1` in tests/phase_c3_reason_surface_spec.py:56", "shortDescription": {"text": "Legacy-named symbol `build_issue_provenance_v1` in tests/phase_c3_reason_surface_spec.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-17c7a2f4e55b9cb6", "name": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/lcopilot_patchset_e_test.py:38", "shortDescription": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/lcopilot_patchset_e_test.py:38"}, "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-bffd7dc79d408d41", "name": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/patch_h_ocr_compatibility_stage_promotion_test.py:49", "shortDescription": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/patch_h_ocr_compatibility_stage_promotion_test.py:49"}, "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-5de04dd29db89bb7", "name": "Legacy-named symbol `build_issue_provenance_v1` in tests/test_sprint_t1_2_p1_regression_harness.py:16", "shortDescription": {"text": "Legacy-named symbol `build_issue_provenance_v1` in tests/test_sprint_t1_2_p1_regression_harness.py:16"}, "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-a74307d85b6240ae", "name": "Legacy-named symbol `extraction_artifacts_v1` in tests/patch_l_evidence_binding_date_issuer_test.py:85", "shortDescription": {"text": "Legacy-named symbol `extraction_artifacts_v1` in tests/patch_l_evidence_binding_date_issuer_test.py:85"}, "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-35671e5b6357bbfd", "name": "Stub function `optimize_lambda_init` (body is just `pass`/`return`) \u2014 apps/api/main.py:52", "shortDescription": {"text": "Stub function `optimize_lambda_init` (body is just `pass`/`return`) \u2014 apps/api/main.py:52"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-91213fb7d945b1b3", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/validator_lc_ops_runtime_compatibility_test.py:121", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/validator_lc_ops_runtime_compatibility_test.py:121"}, "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-2ab13399e1023589", "name": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/lc_facts_test.py:140", "shortDescription": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/lc_facts_test.py:140"}, "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-0c60b6ab966f7446", "name": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/insurance_facts_test.py:124", "shortDescription": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/insurance_facts_test.py:124"}, "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-9a3c752f468a6c75", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_47a_requirements_graph_continuity_test.py:11", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_47a_requirements_graph_continuity_test.py:11"}, "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-c6db9850d420ba50", "name": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/issues_pipeline_ai_provisional_test.py:55", "shortDescription": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/issues_pipeline_ai_provisional_test.py:55"}, "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-52b8ae8604359094", "name": "Legacy-named symbol `sanitize_public_document_contract_v1` in apps/api/tests/document_builder_review_signal_test.py:33", "shortDescription": {"text": "Legacy-named symbol `sanitize_public_document_contract_v1` in apps/api/tests/document_builder_review_signal_test.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-67b7b3c6c022b652", "name": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/insurance_validation_context_test.py:27", "shortDescription": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/insurance_validation_context_test.py:27"}, "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-3a9969d0140e3ca8", "name": "Legacy-named symbol `build_requirements_graph_v1` in apps/api/tests/validation_execution_lc_facts_continuity_test.py:17", "shortDescription": {"text": "Legacy-named symbol `build_requirements_graph_v1` in apps/api/tests/validation_execution_lc_facts_continuity_test.py:17"}, "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-9b444520ec272550", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/lc_validation_context_test.py:40", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/lc_validation_context_test.py:40"}, "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-546d8d3f9952ae5c", "name": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_inspection_continuity_test.py:21", "shortDescription": {"text": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_inspection_continuity_test.py:21"}, "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-a671655f7fea7e8a", "name": "Legacy-named symbol `structured_result_v1` in apps/api/tests/test_jobs_public_results_payload_shape.py:51", "shortDescription": {"text": "Legacy-named symbol `structured_result_v1` in apps/api/tests/test_jobs_public_results_payload_shape.py:51"}, "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-647b66a474719b34", "name": "Legacy-named symbol `sanitize_public_document_contract_v1` in apps/api/tests/response_shaping_review_signal_test.py:24", "shortDescription": {"text": "Legacy-named symbol `sanitize_public_document_contract_v1` in apps/api/tests/response_shaping_review_signal_test.py:24"}, "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-c9a68f522fdd739f", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/presentation_contract_continuity_test.py:223", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/presentation_contract_continuity_test.py:223"}, "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-f47c5ef80c41580d", "name": "Legacy-named symbol `processing_summary_v2` in apps/api/tests/test_day1_contract.py:6", "shortDescription": {"text": "Legacy-named symbol `processing_summary_v2` in apps/api/tests/test_day1_contract.py:6"}, "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-e23b47131c93ae29", "name": "Legacy-named symbol `mt700_v1` in apps/api/tests/mt700_timeline_continuity_test.py:259", "shortDescription": {"text": "Legacy-named symbol `mt700_v1` in apps/api/tests/mt700_timeline_continuity_test.py:259"}, "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-aab9b99e7aa1b3fe", "name": "Legacy-named symbol `build_lc_requirements_graph_v1` in apps/api/tests/lc_workflow_live_route_test.py:266", "shortDescription": {"text": "Legacy-named symbol `build_lc_requirements_graph_v1` in apps/api/tests/lc_workflow_live_route_test.py:266"}, "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-fa4ce3197ed0356d", "name": "Legacy-named symbol `doc_legacy` in apps/api/tests/lc_document_test.py:748", "shortDescription": {"text": "Legacy-named symbol `doc_legacy` in apps/api/tests/lc_document_test.py:748"}, "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-8a10647cc6e077af", "name": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_invoice_continuity_test.py:33", "shortDescription": {"text": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_invoice_continuity_test.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-59e792b3d6437ff7", "name": "Legacy-named symbol `requirements_structured_v1` in apps/api/tests/rule_evaluator_applies_if_runtime_test.py:26", "shortDescription": {"text": "Legacy-named symbol `requirements_structured_v1` in apps/api/tests/rule_evaluator_applies_if_runtime_test.py:26"}, "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-f0887d2070ee374b", "name": "Legacy-named symbol `_empty_extraction_artifacts_v1` in apps/api/tests/ocr_runtime_continuity_test.py:84", "shortDescription": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in apps/api/tests/ocr_runtime_continuity_test.py:84"}, "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-97a8755d81e88430", "name": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/inspection_validation_context_test.py:27", "shortDescription": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/inspection_validation_context_test.py:27"}, "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-7f5ddae0b7c04a26", "name": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_coo_continuity_test.py:21", "shortDescription": {"text": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_coo_continuity_test.py:21"}, "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-b707d1078112f624", "name": "Legacy-named symbol `structured_result_v1` in apps/api/tests/public_validation_envelope_test.py:35", "shortDescription": {"text": "Legacy-named symbol `structured_result_v1` in apps/api/tests/public_validation_envelope_test.py:35"}, "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-a3c1735b61624525", "name": "Legacy-named symbol `materialize_document_fact_graph_v1` in apps/api/tests/validation_execution_insurance_rule_context_t", "shortDescription": {"text": "Legacy-named symbol `materialize_document_fact_graph_v1` in apps/api/tests/validation_execution_insurance_rule_context_test.py:43"}, "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-df87540067561cde", "name": "Legacy-named symbol `test_infer_document_requirements_prefers_requirements_graph_v1` in apps/api/tests/validator_require", "shortDescription": {"text": "Legacy-named symbol `test_infer_document_requirements_prefers_requirements_graph_v1` in apps/api/tests/validator_requirements_graph_test.py:87"}, "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-2e010be95cf4fe29", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_amount_tolerance_test.py:87", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_amount_tolerance_test.py:87"}, "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-a333fa3b470b08c6", "name": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/packing_list_validation_context_test.py:27", "shortDescription": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/packing_list_validation_context_test.py:27"}, "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-2092c9cd055d5645", "name": "Legacy-named symbol `anchor_dictionary_v1` in apps/api/tests/test_day1_configs.py:16", "shortDescription": {"text": "Legacy-named symbol `anchor_dictionary_v1` in apps/api/tests/test_day1_configs.py:16"}, "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-5e59600aac649ad4", "name": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_packing_list_continuity_test.py:20", "shortDescription": {"text": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_packing_list_continuity_test.py:20"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0802ad6b5d90e244", "name": "Legacy-named symbol `_build_document_extraction_v1` in apps/api/tests/session_setup_job_persistence_test.py:124", "shortDescription": {"text": "Legacy-named symbol `_build_document_extraction_v1` in apps/api/tests/session_setup_job_persistence_test.py:124"}, "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-1bc86cf347544a16", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/mt700_required_docs_continuity_test.py:122", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/mt700_required_docs_continuity_test.py:122"}, "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-0a88f886d5c9f06e", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/validation_execution_icc_precedence_test.py:364", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/validation_execution_icc_precedence_test.py:364"}, "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-0c7b62fc94d15c1c", "name": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/field_override_continuity_test.py:77", "shortDescription": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/field_override_continuity_test.py:77"}, "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-ee23cb896a8a1f1a", "name": "Legacy-named symbol `_fake_build_processing_summary_v2` in apps/api/tests/session_refresh_continuity_test.py:116", "shortDescription": {"text": "Legacy-named symbol `_fake_build_processing_summary_v2` in apps/api/tests/session_refresh_continuity_test.py:116"}, "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-95285aa5e4ba394c", "name": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/bl_facts_test.py:142", "shortDescription": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/bl_facts_test.py:142"}, "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-9f5dc9872c92ac40", "name": "Legacy-named symbol `test_session_without_supplier_is_legacy` in apps/api/tests/test_agency.py:166", "shortDescription": {"text": "Legacy-named symbol `test_session_without_supplier_is_legacy` in apps/api/tests/test_agency.py:166"}, "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-d2f1fb602d7538b5", "name": "Legacy-named symbol `validate_doc_v2` in apps/api/tests/validate_router_split_continuity_test.py:24", "shortDescription": {"text": "Legacy-named symbol `validate_doc_v2` in apps/api/tests/validate_router_split_continuity_test.py:24"}, "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-e7b4410623b74082", "name": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/ai_validation_l3_anomaly_review_test.py:169", "shortDescription": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/ai_validation_l3_anomaly_review_test.py:169"}, "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-23bee6d1b23966d4", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_47a_requirements_graph_test.py:106", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_47a_requirements_graph_test.py:106"}, "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-1b666167b3640d3c", "name": "Legacy-named symbol `materialize_document_fact_graphs_v1` in apps/api/tests/extraction_resolution_continuity_test.py:94", "shortDescription": {"text": "Legacy-named symbol `materialize_document_fact_graphs_v1` in apps/api/tests/extraction_resolution_continuity_test.py:94"}, "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-6f013e580328ff3a", "name": "Legacy-named symbol `test_classify_semantic_is_other_in_v1` in apps/api/tests/authority_matrix_reconcile_test.py:65", "shortDescription": {"text": "Legacy-named symbol `test_classify_semantic_is_other_in_v1` in apps/api/tests/authority_matrix_reconcile_test.py:65"}, "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-590a1e268ddea04d", "name": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_insurance_continuity_test.py:21", "shortDescription": {"text": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_insurance_continuity_test.py:21"}, "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-0851e82b4f342aa7", "name": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/bl_validation_context_test.py:26", "shortDescription": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/bl_validation_context_test.py:26"}, "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-914d3dd1bba6c659", "name": "Legacy-named symbol `materialize_document_fact_graph_v1` in apps/api/tests/fact_graph_lc_continuity_test.py:14", "shortDescription": {"text": "Legacy-named symbol `materialize_document_fact_graph_v1` in apps/api/tests/fact_graph_lc_continuity_test.py:14"}, "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-4f16db03d282f252", "name": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/ai_first_structured_contract_test.py:107", "shortDescription": {"text": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/ai_first_structured_contract_test.py:107"}, "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-0ea8b0160006de91", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_insurance_coverage_test.py:77", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_insurance_coverage_test.py:77"}, "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-bac3681ee8ef1dba", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_validator_runtime_compatibility_test.py:106", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_validator_runtime_compatibility_test.py:106"}, "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-2abb2aebd4f34821", "name": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/test_iso_runtime_shape.py:220", "shortDescription": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/test_iso_runtime_shape.py:220"}, "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-8683c9bcaf361f8e", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/document_set_requirements_graph_test.py:36", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/document_set_requirements_graph_test.py:36"}, "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-d8067e070f91819b", "name": "Legacy-named symbol `materialize_document_fact_graphs_v1` in apps/api/tests/lc_fact_gate_continuity_test.py:9", "shortDescription": {"text": "Legacy-named symbol `materialize_document_fact_graphs_v1` in apps/api/tests/lc_fact_gate_continuity_test.py:9"}, "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-c0af118bd502380a", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/validator_ruleset_query_scope_test.py:135", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/validator_ruleset_query_scope_test.py:135"}, "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-54d36797ce836484", "name": "Legacy-named symbol `ai_layers_v1` in apps/api/tests/ai_validation_layer_projection_test.py:168", "shortDescription": {"text": "Legacy-named symbol `ai_layers_v1` in apps/api/tests/ai_validation_layer_projection_test.py:168"}, "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-c8555e31315fd4c5", "name": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/invoice_validation_context_test.py:27", "shortDescription": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/invoice_validation_context_test.py:27"}, "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-d3de01441499792f", "name": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_supporting_document_continuity_test.py:2", "shortDescription": {"text": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_supporting_document_continuity_test.py:22"}, "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-f1abd01d1fa0e5a2", "name": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/field_details_contract_continuity_test.py:32", "shortDescription": {"text": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/field_details_contract_continuity_test.py:32"}, "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-21d608518c2860d8", "name": "Legacy-named symbol `build_lc_requirements_graph_v1` in apps/api/tests/lc_requirements_graph_test.py:12", "shortDescription": {"text": "Legacy-named symbol `build_lc_requirements_graph_v1` in apps/api/tests/lc_requirements_graph_test.py:12"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0c2882b590044644", "name": "Legacy-named symbol `materialize_document_fact_graph_v1` in apps/api/tests/validation_execution_insurance_facts_continui", "shortDescription": {"text": "Legacy-named symbol `materialize_document_fact_graph_v1` in apps/api/tests/validation_execution_insurance_facts_continuity_test.py:13"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b0090ec14778c916", "name": "Legacy-named symbol `validation_contract_v1` in apps/api/tests/pipeline_runner_failure_breadcrumbs_test.py:140", "shortDescription": {"text": "Legacy-named symbol `validation_contract_v1` in apps/api/tests/pipeline_runner_failure_breadcrumbs_test.py:140"}, "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-85c4cd6a91bb292a", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/ai_validation_requirements_graph_continuity_test.py:9", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/ai_validation_requirements_graph_continuity_test.py:9"}, "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-8fae50cd8b632df9", "name": "Legacy-named symbol `requirements_structured_v1` in apps/api/tests/ucp600_ruleset_requirements_graph_paths_test.py:22", "shortDescription": {"text": "Legacy-named symbol `requirements_structured_v1` in apps/api/tests/ucp600_ruleset_requirements_graph_paths_test.py:22"}, "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-e862e34b16e655e5", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_exact_wording_requirements_graph_test.py:162", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_exact_wording_requirements_graph_test.py:162"}, "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-66733497d62f9a1a", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_requirements_graph_test.py:19", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_requirements_graph_test.py:19"}, "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-b9e702faa33cbf30", "name": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_bl_continuity_test.py:22", "shortDescription": {"text": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_bl_continuity_test.py:22"}, "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-6bd0fa89a3e85848", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/invoice_amount_bounds_test.py:64", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/invoice_amount_bounds_test.py:64"}, "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-5efa0deae116eb31", "name": "Legacy-named symbol `materialize_document_fact_graphs_v1` in apps/api/tests/resolution_queue_invoice_continuity_test.py:", "shortDescription": {"text": "Legacy-named symbol `materialize_document_fact_graphs_v1` in apps/api/tests/resolution_queue_invoice_continuity_test.py:12"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a38043a690cb0ba", "name": "Legacy-named symbol `_empty_resolution_queue_v1` in apps/api/tests/fact_resolution_contract_continuity_test.py:16", "shortDescription": {"text": "Legacy-named symbol `_empty_resolution_queue_v1` in apps/api/tests/fact_resolution_contract_continuity_test.py:16"}, "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-b600ae5245f13171", "name": "Legacy-named symbol `parse_lc_requirements_sync_v2` in apps/api/tests/test_validate_regression.py:211", "shortDescription": {"text": "Legacy-named symbol `parse_lc_requirements_sync_v2` in apps/api/tests/test_validate_regression.py:211"}, "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-4ba9ba1f1a6821b3", "name": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/coo_validation_context_test.py:27", "shortDescription": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/coo_validation_context_test.py:27"}, "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-34ca4016976039f9", "name": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/test_build_document_context_boundary.py:120", "shortDescription": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/test_build_document_context_boundary.py:120"}, "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-a82d7ba60c927374", "name": "Legacy-named symbol `baseline_v1` in apps/api/tests/gold_corpus/run_corpus.py:11", "shortDescription": {"text": "Legacy-named symbol `baseline_v1` in apps/api/tests/gold_corpus/run_corpus.py:11"}, "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-57a653441b77939c", "name": "Network/subprocess call without timeout or try/except \u2014 apps/api/trust_platform/compliance/rule_sync_service.py:533", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/api/trust_platform/compliance/rule_sync_service.py:533"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-22eb1b8078b90c2d", "name": "Commented-code block (9 lines) in apps/api/trust_platform/compliance/ai_rule_suggester.py:513", "shortDescription": {"text": "Commented-code block (9 lines) in apps/api/trust_platform/compliance/ai_rule_suggester.py:513"}, "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-40b81480663678bd", "name": "Network/subprocess call without timeout or try/except \u2014 apps/api/scripts/verify_org_isolation.py:29", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/api/scripts/verify_org_isolation.py:29"}, "fullDescription": {"text": "`requests.get(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6407585f0950ae28", "name": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/scripts/day1_smoke_gate.py:157", "shortDescription": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/scripts/day1_smoke_gate.py:157"}, "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-91704aa15e2d55e0", "name": "Commented-code block (8 lines) in apps/api/app/config.py:170", "shortDescription": {"text": "Commented-code block (8 lines) in apps/api/app/config.py:170"}, "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-42f3fda91bf420ff", "name": "Legacy-named symbol `structured_result_v1` in apps/api/app/services.py:380", "shortDescription": {"text": "Legacy-named symbol `structured_result_v1` in apps/api/app/services.py:380"}, "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-a15b3dd52e4158ff", "name": "Commented-code block (5 lines) in apps/api/app/models.py:286", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/models.py:286"}, "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-466033680e1cdbfb", "name": "Commented-code block (5 lines) in apps/api/app/models/invoice.py:38", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/models/invoice.py:38"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c8239784ce2888b1", "name": "Commented-code block (9 lines) in apps/api/app/models/bank_policy.py:29", "shortDescription": {"text": "Commented-code block (9 lines) in apps/api/app/models/bank_policy.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-dfbba86894549ba0", "name": "Commented-code block (5 lines) in apps/api/app/models/company.py:133", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/models/company.py:133"}, "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-18d0bd9726dd1e39", "name": "Legacy-named symbol `copies_copy` in apps/api/app/models/lc_builder.py:184", "shortDescription": {"text": "Legacy-named symbol `copies_copy` in apps/api/app/models/lc_builder.py:184"}, "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-327362913b655a83", "name": "Commented-code block (5 lines) in apps/api/app/rules/extractors.py:19", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/rules/extractors.py:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-afa9a03a227c59bb", "name": "Commented-code block (5 lines) in apps/api/app/rules/external/rule_loader.py:32", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/rules/external/rule_loader.py:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6518c157fbe254f1", "name": "Commented-code block (6 lines) in apps/api/app/tasks/audit_monitoring_task.py:181", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/app/tasks/audit_monitoring_task.py:181"}, "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-3122e0f3bdc23fd5", "name": "Commented-code block (5 lines) in apps/api/app/services/finding_persistence.py:185", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/services/finding_persistence.py:185"}, "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-4e3500f1f6ed3297", "name": "Commented-code block (6 lines) in apps/api/app/services/lc_clause_library.py:3781", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/app/services/lc_clause_library.py:3781"}, "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-6669e74ea1e7b60b", "name": "Commented-code block (5 lines) in apps/api/app/services/onboarding_service.py:79", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/services/onboarding_service.py:79"}, "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-4907dd7d63ee7973", "name": "Legacy-named symbol `_load_legacy` in apps/api/app/services/__init__.py:34", "shortDescription": {"text": "Legacy-named symbol `_load_legacy` in apps/api/app/services/__init__.py:34"}, "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-db296f44bc95bf17", "name": "Commented-code block (5 lines) in apps/api/app/services/billing_service.py:744", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/services/billing_service.py:744"}, "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-072a5b6302a9a05b", "name": "Commented-code block (9 lines) in apps/api/app/services/bulk_validate_processor.py:80", "shortDescription": {"text": "Commented-code block (9 lines) in apps/api/app/services/bulk_validate_processor.py:80"}, "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-d43fe48fc531f3ca", "name": "Commented-code block (5 lines) in apps/api/app/services/entitlements.py:50", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/services/entitlements.py:50"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9bfa533522b239c3", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/services/validator.py:795", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/services/validator.py:795"}, "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-52a1ce3d7762e46f", "name": "Commented-code block (7 lines) in apps/api/app/services/audit_monitoring.py:460", "shortDescription": {"text": "Commented-code block (7 lines) in apps/api/app/services/audit_monitoring.py:460"}, "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-81fcac60d21d4415", "name": "Legacy-named symbol `validate_v1` in apps/api/app/services/rulhub_client.py:330", "shortDescription": {"text": "Legacy-named symbol `validate_v1` in apps/api/app/services/rulhub_client.py:330"}, "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-7e0ef2bef9f0e458", "name": "Commented-code block (7 lines) in apps/api/app/services/rulhub_client.py:114", "shortDescription": {"text": "Commented-code block (7 lines) in apps/api/app/services/rulhub_client.py:114"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1746ba04f55bdcf9", "name": "Stub function `_checkpoint` (body is just `pass`/`return`) \u2014 apps/api/app/services/repaper_revalidate.py:97", "shortDescription": {"text": "Stub function `_checkpoint` (body is just `pass`/`return`) \u2014 apps/api/app/services/repaper_revalidate.py:97"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-94ee57f4dc2be830", "name": "Legacy-named symbol `list_objects_v2` in apps/api/app/services/document_storage.py:226", "shortDescription": {"text": "Legacy-named symbol `list_objects_v2` in apps/api/app/services/document_storage.py:226"}, "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-6077a7efafa98a56", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/services/crossdoc.py:218", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/services/crossdoc.py:218"}, "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-29652b9b7364a373", "name": "Commented-code block (5 lines) in apps/api/app/services/crossdoc.py:365", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/services/crossdoc.py:365"}, "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-c03252fa06b4cf28", "name": "Commented-code block (5 lines) in apps/api/app/services/lc_classifier.py:556", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/services/lc_classifier.py:556"}, "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-b600a65a7c81da25", "name": "Legacy-named symbol `copies_copy` in apps/api/app/services/mt700_generator.py:309", "shortDescription": {"text": "Legacy-named symbol `copies_copy` in apps/api/app/services/mt700_generator.py:309"}, "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-c9ed4b4288bebd1b", "name": "Legacy-named symbol `structured_result_v1` in apps/api/app/services/customs/customs_pack_full.py:222", "shortDescription": {"text": "Legacy-named symbol `structured_result_v1` in apps/api/app/services/customs/customs_pack_full.py:222"}, "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-c655ae22b263b6d8", "name": "Legacy-named symbol `structured_result_v1` in apps/api/app/services/risk/customs_risk.py:8", "shortDescription": {"text": "Legacy-named symbol `structured_result_v1` in apps/api/app/services/risk/customs_risk.py:8"}, "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-9cab9e9700d717f6", "name": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/extraction_core/review_metadata.py:1727", "shortDescription": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/extraction_core/review_metadata.py:1727"}, "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-0f458954a3675e50", "name": "Commented-code block (5 lines) in apps/api/app/services/extraction_core/review_metadata.py:493", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/services/extraction_core/review_metadata.py:493"}, "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-320bf40ec7f1f511", "name": "Legacy-named symbol `fact_graph_v1` in apps/api/app/services/facts/invoice_facts.py:209", "shortDescription": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/app/services/facts/invoice_facts.py:209"}, "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-0e69a49a3eed77a3", "name": "Legacy-named symbol `materialize_document_fact_graph_v1` in apps/api/app/services/facts/__init__.py:9", "shortDescription": {"text": "Legacy-named symbol `materialize_document_fact_graph_v1` in apps/api/app/services/facts/__init__.py:9"}, "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-5c00cad9e49740e0", "name": "Legacy-named symbol `fact_graph_v1` in apps/api/app/services/facts/coo_facts.py:199", "shortDescription": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/app/services/facts/coo_facts.py:199"}, "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-481a0e57d6670bd6", "name": "Legacy-named symbol `fact_graph_v1` in apps/api/app/services/facts/supporting_facts.py:219", "shortDescription": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/app/services/facts/supporting_facts.py:219"}, "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-15a67fd04f7a84be", "name": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/facts/insurance_facts.py:69", "shortDescription": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/facts/insurance_facts.py:69"}, "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-e34e910c5024458b", "name": "Legacy-named symbol `fact_graph_v1` in apps/api/app/services/facts/inspection_facts.py:201", "shortDescription": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/app/services/facts/inspection_facts.py:201"}, "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-021c2285690ee11d", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/services/facts/document_facts.py:227", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/services/facts/document_facts.py:227"}, "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-038be6000fa89a2a", "name": "Legacy-named symbol `fact_graph_v1` in apps/api/app/services/facts/packing_list_facts.py:197", "shortDescription": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/app/services/facts/packing_list_facts.py:197"}, "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-ba6d5c198ea9cf91", "name": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/facts/lc_facts.py:91", "shortDescription": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/facts/lc_facts.py:91"}, "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-ab6616cb601c0a6f", "name": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/facts/bl_facts.py:88", "shortDescription": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/facts/bl_facts.py:88"}, "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-cbdf898b4fc73f7a", "name": "Legacy-named symbol `issue_copy` in apps/api/app/services/validation/confidence_weighting.py:210", "shortDescription": {"text": "Legacy-named symbol `issue_copy` in apps/api/app/services/validation/confidence_weighting.py:210"}, "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-a97ee7e0b10a924e", "name": "Legacy-named symbol `lc_extractor_v2` in apps/api/app/services/validation/validation_gate.py:32", "shortDescription": {"text": "Legacy-named symbol `lc_extractor_v2` in apps/api/app/services/validation/validation_gate.py:32"}, "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-03972d214a8cc7cb", "name": "Legacy-named symbol `parse_lc_requirements_sync_v2` in apps/api/app/services/validation/llm_requirement_parser.py:668", "shortDescription": {"text": "Legacy-named symbol `parse_lc_requirements_sync_v2` in apps/api/app/services/validation/llm_requirement_parser.py:668"}, "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-ffe637afadbeb0a9", "name": "Legacy-named symbol `parse_lc_requirements_sync_v2` in apps/api/app/services/validation/__init__.py:101", "shortDescription": {"text": "Legacy-named symbol `parse_lc_requirements_sync_v2` in apps/api/app/services/validation/__init__.py:101"}, "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-45da6e05309134b9", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/services/validation/crossdoc_validator.py:397", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/services/validation/crossdoc_validator.py:397"}, "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-46ba45f28a87f771", "name": "Commented-code block (5 lines) in apps/api/app/services/validation/crossdoc_validator.py:1903", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/services/validation/crossdoc_validator.py:1903"}, "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-64d916d67a2febba", "name": "Legacy-named symbol `processing_summary_v2` in apps/api/app/services/validation/day1_telemetry.py:9", "shortDescription": {"text": "Legacy-named symbol `processing_summary_v2` in apps/api/app/services/validation/day1_telemetry.py:9"}, "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-906a350a9c70584f", "name": "Legacy-named symbol `processing_summary_v2` in apps/api/app/services/validation/day1_contract.py:11", "shortDescription": {"text": "Legacy-named symbol `processing_summary_v2` in apps/api/app/services/validation/day1_contract.py:11"}, "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-d4ce736381339e3b", "name": "Legacy-named symbol `anchor_dictionary_v1` in apps/api/app/services/validation/day1_retrieval_guard.py:31", "shortDescription": {"text": "Legacy-named symbol `anchor_dictionary_v1` in apps/api/app/services/validation/day1_retrieval_guard.py:31"}, "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-bdab9421b7eca6e3", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/services/validation/doc_matcher.py:895", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/services/validation/doc_matcher.py:895"}, "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-340a4192be43c509", "name": "Commented-code block (6 lines) in apps/api/app/services/validation/doc_matcher.py:98", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/app/services/validation/doc_matcher.py:98"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2369dc6d13b5296e", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/services/validation/tiered_validation.py:226", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/services/validation/tiered_validation.py:226"}, "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-e6025732f8106af1", "name": "Commented-code block (5 lines) in apps/api/app/services/validation/tiered_validation.py:223", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/services/validation/tiered_validation.py:223"}, "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-3f5fca36301f2889", "name": "Legacy-named symbol `document_extraction_v1` in apps/api/app/services/validation/response_schema.py:252", "shortDescription": {"text": "Legacy-named symbol `document_extraction_v1` in apps/api/app/services/validation/response_schema.py:252"}, "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-a2c1fcdbaf1f41ea", "name": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/validation/ai_validator.py:272", "shortDescription": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/validation/ai_validator.py:272"}, "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-9e05b2480ba21c23", "name": "Commented-code block (6 lines) in apps/api/app/services/validation/ai_validator.py:1471", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/app/services/validation/ai_validator.py:1471"}, "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-f1256b00f6b557f0", "name": "Commented-code block (7 lines) in apps/api/app/services/validation/authority_matrix.py:170", "shortDescription": {"text": "Commented-code block (7 lines) in apps/api/app/services/validation/authority_matrix.py:170"}, "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-00ba1f0b13c7dc4b", "name": "Legacy-named symbol `lc_extractor_v2` in apps/api/app/services/validation/pipeline.py:26", "shortDescription": {"text": "Legacy-named symbol `lc_extractor_v2` in apps/api/app/services/validation/pipeline.py:26"}, "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-aaafa3ace0b2244e", "name": "Legacy-named symbol `build_lc_requirements_graph_v1` in apps/api/app/services/requirements/__init__.py:2", "shortDescription": {"text": "Legacy-named symbol `build_lc_requirements_graph_v1` in apps/api/app/services/requirements/__init__.py:2"}, "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-31107aa6aaca3df9", "name": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/requirements/lc_requirements.py:344", "shortDescription": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/requirements/lc_requirements.py:344"}, "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-bbb5d173c7196ab8", "name": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/extraction/launch_pipeline.py:252", "shortDescription": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/extraction/launch_pipeline.py:252"}, "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-8edf29c4746a0cac", "name": "Commented-code block (6 lines) in apps/api/app/services/extraction/launch_pipeline.py:449", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/app/services/extraction/launch_pipeline.py:449"}, "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-87731677d226abf5", "name": "Legacy-named symbol `lc_extractor_v2` in apps/api/app/services/extraction/__init__.py:15", "shortDescription": {"text": "Legacy-named symbol `lc_extractor_v2` in apps/api/app/services/extraction/__init__.py:15"}, "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-5799b2fa362c7f48", "name": "Commented-code block (7 lines) in apps/api/app/services/extraction/multimodal_document_extractor.py:190", "shortDescription": {"text": "Commented-code block (7 lines) in apps/api/app/services/extraction/multimodal_document_extractor.py:190"}, "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-f5a93a20f0f9df88", "name": "Legacy-named symbol `lc_extractor_v2` in apps/api/app/services/extraction/lc_extractor_v2.py:11", "shortDescription": {"text": "Legacy-named symbol `lc_extractor_v2` in apps/api/app/services/extraction/lc_extractor_v2.py:11"}, "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-fe8fc5e799635c69", "name": "Legacy-named symbol `structured_result_v1` in apps/api/app/services/extraction/structured_lc_builder.py:23", "shortDescription": {"text": "Legacy-named symbol `structured_result_v1` in apps/api/app/services/extraction/structured_lc_builder.py:23"}, "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-8455d7246d95d3c4", "name": "Legacy-named symbol `ai_lc_extractor_v2` in apps/api/app/services/extraction/ai_lc_extractor.py:360", "shortDescription": {"text": "Legacy-named symbol `ai_lc_extractor_v2` in apps/api/app/services/extraction/ai_lc_extractor.py:360"}, "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-e38f497c6136fbd6", "name": "Legacy-named symbol `lc_extractor_v1` in apps/api/app/services/extraction/lc_extractor.py:714", "shortDescription": {"text": "Legacy-named symbol `lc_extractor_v1` in apps/api/app/services/extraction/lc_extractor.py:714"}, "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-4f7e1bda600fc84b", "name": "Commented-code block (5 lines) in apps/api/app/services/extraction/lc_extractor.py:212", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/services/extraction/lc_extractor.py:212"}, "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-6a8fb43df8a38c0c", "name": "Commented-code block (5 lines) in apps/api/app/services/extraction/ai_first_extractor.py:2157", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/services/extraction/ai_first_extractor.py:2157"}, "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-b684cb69d2910f99", "name": "Legacy-named symbol `resolve_case_requirements_graph_v1` in apps/api/app/services/resolution/queue_builder.py:8", "shortDescription": {"text": "Legacy-named symbol `resolve_case_requirements_graph_v1` in apps/api/app/services/resolution/queue_builder.py:8"}, "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-a76605f38e248d12", "name": "Legacy-named symbol `build_resolution_queue_v1` in apps/api/app/services/resolution/__init__.py:2", "shortDescription": {"text": "Legacy-named symbol `build_resolution_queue_v1` in apps/api/app/services/resolution/__init__.py:2"}, "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-b3ad9468d1cccae5", "name": "Commented-code block (6 lines) in apps/api/app/core/residency/policies.py:70", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/app/core/residency/policies.py:70"}, "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-ff2f657848cc337e", "name": "Legacy-named symbol `list_objects_v2` in apps/api/app/core/residency/storage_backends.py:354", "shortDescription": {"text": "Legacy-named symbol `list_objects_v2` in apps/api/app/core/residency/storage_backends.py:354"}, "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-910c5ffee46bc417", "name": "Stub function `inc` (body is just `pass`/`return`) \u2014 apps/api/app/metrics/rules_metrics.py:14", "shortDescription": {"text": "Stub function `inc` (body is just `pass`/`return`) \u2014 apps/api/app/metrics/rules_metrics.py:14"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-63da4ce568020642", "name": "Stub function `inc` (body is just `pass`/`return`) \u2014 apps/api/app/metrics/workflow_metrics.py:14", "shortDescription": {"text": "Stub function `inc` (body is just `pass`/`return`) \u2014 apps/api/app/metrics/workflow_metrics.py:14"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-607906da04028be9", "name": "Commented-code block (7 lines) in apps/api/app/schemas/billing.py:33", "shortDescription": {"text": "Commented-code block (7 lines) in apps/api/app/schemas/billing.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-1f4fa6ef9274e882", "name": "Legacy-named symbol `_empty_extraction_artifacts_v1` in apps/api/app/routers/validate.py:116", "shortDescription": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in apps/api/app/routers/validate.py:116"}, "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-e8cf42ba62b1001e", "name": "Commented-code block (9 lines) in apps/api/app/routers/validate.py:1955", "shortDescription": {"text": "Commented-code block (9 lines) in apps/api/app/routers/validate.py:1955"}, "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-7c7ea10115411d0f", "name": "Commented-code block (5 lines) in apps/api/app/routers/bank_duplicates.py:225", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/routers/bank_duplicates.py:225"}, "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-3f81b7f0275bbb87", "name": "Legacy-named symbol `validate_doc_v2` in apps/api/app/routers/validate_run.py:266", "shortDescription": {"text": "Legacy-named symbol `validate_doc_v2` in apps/api/app/routers/validate_run.py:266"}, "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-aa61d7d49dcbc80b", "name": "Commented-code block (5 lines) in apps/api/app/routers/discrepancy_workflow.py:633", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/routers/discrepancy_workflow.py:633"}, "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-859b65103e249a6a", "name": "Commented-code block (8 lines) in apps/api/app/routers/bank_evidence.py:220", "shortDescription": {"text": "Commented-code block (8 lines) in apps/api/app/routers/bank_evidence.py:220"}, "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-ae0e0cf415a768ff", "name": "Stub function `_checkpoint` (body is just `pass`/`return`) \u2014 apps/api/app/routers/handhold.py:113", "shortDescription": {"text": "Stub function `_checkpoint` (body is just `pass`/`return`) \u2014 apps/api/app/routers/handhold.py:113"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1b7ea96cf03aaad7", "name": "Legacy-named symbol `copies_copy` in apps/api/app/routers/lc_builder.py:52", "shortDescription": {"text": "Legacy-named symbol `copies_copy` in apps/api/app/routers/lc_builder.py:52"}, "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-b5273e09c56f1c4a", "name": "Legacy-named symbol `get_validation_result_v2` in apps/api/app/routers/validate_results.py:40", "shortDescription": {"text": "Legacy-named symbol `get_validation_result_v2` in apps/api/app/routers/validate_results.py:40"}, "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-37e899756e1d9beb", "name": "Commented-code block (6 lines) in apps/api/app/routers/validate_results.py:62", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/app/routers/validate_results.py:62"}, "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-a684202c9d65800a", "name": "Commented-code block (7 lines) in apps/api/app/routers/onboarding.py:200", "shortDescription": {"text": "Commented-code block (7 lines) in apps/api/app/routers/onboarding.py:200"}, "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-2fa8c146cfd3e80f", "name": "Legacy-named symbol `structured_result_v1` in apps/api/app/routers/jobs_public.py:140", "shortDescription": {"text": "Legacy-named symbol `structured_result_v1` in apps/api/app/routers/jobs_public.py:140"}, "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-69ec107668b3ab34", "name": "Legacy-named symbol `mt700_v1` in apps/api/app/routers/validate_v1_backup.py:546", "shortDescription": {"text": "Legacy-named symbol `mt700_v1` in apps/api/app/routers/validate_v1_backup.py:546"}, "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-4fb5d3b58690bf19", "name": "Network/subprocess call without timeout or try/except \u2014 apps/api/app/routers/admin/vault.py:84", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/api/app/routers/admin/vault.py:84"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6ce34524e582279d", "name": "Legacy-named symbol `use_existing_backup` in apps/api/app/routers/admin/dr.py:49", "shortDescription": {"text": "Legacy-named symbol `use_existing_backup` in apps/api/app/routers/admin/dr.py:49"}, "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-1e1dd355e19644f7", "name": "Network/subprocess call without timeout or try/except \u2014 apps/api/app/routers/admin/dr.py:78", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/api/app/routers/admin/dr.py:78"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2829845b5c0cadba", "name": "Legacy-named symbol `_empty_extraction_artifacts_v1` in apps/api/app/routers/validation/__init__.py:122", "shortDescription": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in apps/api/app/routers/validation/__init__.py:122"}, "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-46bfff43fd7c2b05", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/routers/validation/lc_intake.py:93", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/routers/validation/lc_intake.py:93"}, "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-d088369df6f3eaff", "name": "Commented-code block (10 lines) in apps/api/app/routers/validation/pipeline_runner.py:185", "shortDescription": {"text": "Commented-code block (10 lines) in apps/api/app/routers/validation/pipeline_runner.py:185"}, "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-135b710dc76fa475", "name": "Legacy-named symbol `materialize_document_fact_graphs_v1` in apps/api/app/routers/validation/session_setup.py:10", "shortDescription": {"text": "Legacy-named symbol `materialize_document_fact_graphs_v1` in apps/api/app/routers/validation/session_setup.py:10"}, "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-7f4a0b977629988c", "name": "Commented-code block (5 lines) in apps/api/app/routers/validation/session_setup.py:113", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/routers/validation/session_setup.py:113"}, "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-4a9cf9ca65323966", "name": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/routers/validation/presentation_contract.py:64", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/routers/validation/presentation_contract.py:64"}, "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-ace86168a700f4cd", "name": "Commented-code block (7 lines) in apps/api/app/routers/validation/presentation_contract.py:918", "shortDescription": {"text": "Commented-code block (7 lines) in apps/api/app/routers/validation/presentation_contract.py:918"}, "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-a53138c980635326", "name": "Commented-code block (6 lines) in apps/api/app/routers/validation/doc_types.py:307", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/app/routers/validation/doc_types.py:307"}, "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-23414e83ff54ceef", "name": "Legacy-named symbol `mt700_v1` in apps/api/app/routers/validation/lc_dates.py:127", "shortDescription": {"text": "Legacy-named symbol `mt700_v1` in apps/api/app/routers/validation/lc_dates.py:127"}, "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-4d975dcb669425f0", "name": "Legacy-named symbol `_build_document_extraction_v1` in apps/api/app/routers/validation/result_finalization.py:30", "shortDescription": {"text": "Legacy-named symbol `_build_document_extraction_v1` in apps/api/app/routers/validation/result_finalization.py:30"}, "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-9f89fc2a8bfb6264", "name": "Commented-code block (5 lines) in apps/api/app/routers/validation/result_finalization.py:1368", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/routers/validation/result_finalization.py:1368"}, "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-b56dd1038b29f6c5", "name": "Legacy-named symbol `_empty_extraction_artifacts_v1` in apps/api/app/routers/validation/ocr_runtime.py:19", "shortDescription": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in apps/api/app/routers/validation/ocr_runtime.py:19"}, "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-ef9577b46f8c95cf", "name": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/routers/validation/issues_pipeline.py:234", "shortDescription": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/routers/validation/issues_pipeline.py:234"}, "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-eab0d179365c478a", "name": "Legacy-named symbol `materialize_document_fact_graphs_v1` in apps/api/app/routers/validation/response_shaping.py:13", "shortDescription": {"text": "Legacy-named symbol `materialize_document_fact_graphs_v1` in apps/api/app/routers/validation/response_shaping.py:13"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df0bb9fc83b65b83", "name": "Legacy-named symbol `materialize_document_fact_graph_v1` in apps/api/app/routers/validation/validation_execution.py:19", "shortDescription": {"text": "Legacy-named symbol `materialize_document_fact_graph_v1` in apps/api/app/routers/validation/validation_execution.py:19"}, "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-8ee05299ae053d04", "name": "Commented-code block (5 lines) in apps/api/app/routers/validation/validation_execution.py:63", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/app/routers/validation/validation_execution.py:63"}, "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-1c7d30a6c5caf445", "name": "Legacy-named symbol `_empty_extraction_artifacts_v1` in apps/api/app/routers/validation/document_builder.py:11", "shortDescription": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in apps/api/app/routers/validation/document_builder.py:11"}, "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-921afca40fec876d", "name": "Legacy-named symbol `build_fact_resolution_v1` in apps/api/app/routers/validation/session_refresh.py:31", "shortDescription": {"text": "Legacy-named symbol `build_fact_resolution_v1` in apps/api/app/routers/validation/session_refresh.py:31"}, "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-f8484aaa1b704108", "name": "Commented-code block (6 lines) in apps/api/sme_portal/tests/regression/conftest.py:475", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/sme_portal/tests/regression/conftest.py:475"}, "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-3afbecfe8332221d", "name": "Legacy-named symbol `days_old` in apps/api/async_tasks/job_status.py:366", "shortDescription": {"text": "Legacy-named symbol `days_old` in apps/api/async_tasks/job_status.py:366"}, "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-cd8151abfc784e72", "name": "Legacy-named symbol `copies_copy` in apps/api/alembic/versions/20251205_add_lc_builder.py:168", "shortDescription": {"text": "Legacy-named symbol `copies_copy` in apps/api/alembic/versions/20251205_add_lc_builder.py:168"}, "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-e60e8bc0cbeb0101", "name": "Stub function `upgrade` (body is just `pass`/`return`) \u2014 apps/api/migrations/versions/20251119_merge_phase7_heads.py:18", "shortDescription": {"text": "Stub function `upgrade` (body is just `pass`/`return`) \u2014 apps/api/migrations/versions/20251119_merge_phase7_heads.py:18"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-afec5158d8f4aa78", "name": "Legacy-named symbol `processing_summary_v2` in apps/web/src/__tests__/resultsMapper.test.ts:15", "shortDescription": {"text": "Legacy-named symbol `processing_summary_v2` in apps/web/src/__tests__/resultsMapper.test.ts:15"}, "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-55e159c73045a692", "name": "Legacy-named symbol `validation_contract_v1` in apps/web/src/__tests__/resultTruth.test.ts:11", "shortDescription": {"text": "Legacy-named symbol `validation_contract_v1` in apps/web/src/__tests__/resultTruth.test.ts:11"}, "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-f1564c7cf7b77b51", "name": "Legacy-named symbol `structured_result_v1` in apps/web/src/__tests__/dashboardTruth.test.ts:26", "shortDescription": {"text": "Legacy-named symbol `structured_result_v1` in apps/web/src/__tests__/dashboardTruth.test.ts:26"}, "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-76cda7408fabade4", "name": "Legacy-named symbol `extraction_artifacts_v1` in apps/web/src/__tests__/ExporterResults.test.tsx:441", "shortDescription": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/web/src/__tests__/ExporterResults.test.tsx:441"}, "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-06387ce106bd793a", "name": "Legacy-named symbol `structured_result_v1` in apps/web/src/__tests__/useCanonicalJobResult.test.tsx:78", "shortDescription": {"text": "Legacy-named symbol `structured_result_v1` in apps/web/src/__tests__/useCanonicalJobResult.test.tsx:78"}, "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-019f22230ff2cbf5", "name": "Legacy-named symbol `beneficiary_statement_v2` in apps/web/src/__tests__/ExportLCUploadTyping.test.tsx:102", "shortDescription": {"text": "Legacy-named symbol `beneficiary_statement_v2` in apps/web/src/__tests__/ExportLCUploadTyping.test.tsx:102"}, "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-02985f095339dcab", "name": "Legacy-named symbol `structured_result_v1` in apps/web/src/__tests__/fixtures/lcopilot.ts:176", "shortDescription": {"text": "Legacy-named symbol `structured_result_v1` in apps/web/src/__tests__/fixtures/lcopilot.ts:176"}, "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-635473cd95ae9e71", "name": "Commented-code block (5 lines) in apps/web/src/types/billing.ts:41", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/types/billing.ts:41"}, "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-2d20215e945894c0", "name": "Legacy-named symbol `structured_result_v1` in apps/web/src/types/lcopilot.ts:172", "shortDescription": {"text": "Legacy-named symbol `structured_result_v1` in apps/web/src/types/lcopilot.ts:172"}, "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-f8b9884784f9a252", "name": "Commented-code block (5 lines) in apps/web/src/api/onboarding.ts:56", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/api/onboarding.ts:56"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d7ecde0946ccd6a0", "name": "Legacy-named symbol `structured_result_v1` in apps/web/src/api/sessions.ts:114", "shortDescription": {"text": "Legacy-named symbol `structured_result_v1` in apps/web/src/api/sessions.ts:114"}, "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-62209b745b4ad388", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/components/ReportDownloadDialog.tsx:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/components/ReportDownloadDialog.tsx:67"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0f6f7b4ba9cda81c", "name": "Commented-code block (6 lines) in apps/web/src/components/lcopilot/ExtractionReview.tsx:121", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/components/lcopilot/ExtractionReview.tsx:121"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b49d1079d133c27d", "name": "Legacy-named symbol `processing_summary_v2` in apps/web/src/components/lcopilot/SummaryStrip.tsx:34", "shortDescription": {"text": "Legacy-named symbol `processing_summary_v2` in apps/web/src/components/lcopilot/SummaryStrip.tsx:34"}, "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-4ddbe0a21cd8a1c8", "name": "Commented-code block (7 lines) in apps/web/src/components/importer/ImporterSidebar.tsx:7", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/src/components/importer/ImporterSidebar.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b22d33598c8845ce", "name": "Commented-code block (12 lines) in apps/web/src/components/billing/governance/GovernancePanel.tsx:65", "shortDescription": {"text": "Commented-code block (12 lines) in apps/web/src/components/billing/governance/GovernancePanel.tsx:65"}, "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-106f5b713c3bef59", "name": "Legacy-named symbol `requirements_graph_v1` in apps/web/src/components/exporter/HowToFixSection.tsx:95", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/web/src/components/exporter/HowToFixSection.tsx:95"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-847cfb1c272987a8", "name": "Commented-code block (5 lines) in apps/web/src/components/onboarding/OnboardingWizard.tsx:46", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/components/onboarding/OnboardingWizard.tsx:46"}, "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-c229247fbf133c86", "name": "Commented-code block (5 lines) in apps/web/src/components/onboarding/OnboardingProvider.tsx:153", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/components/onboarding/OnboardingProvider.tsx:153"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b34bdf3899602c47", "name": "Legacy-named symbol `validation_contract_v1` in apps/web/src/lib/lcopilot/resultTruth.ts:177", "shortDescription": {"text": "Legacy-named symbol `validation_contract_v1` in apps/web/src/lib/lcopilot/resultTruth.ts:177"}, "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-c2478c543cb50f90", "name": "Commented-code block (7 lines) in apps/web/src/lib/lcopilot/routing.ts:116", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/src/lib/lcopilot/routing.ts:116"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-db2b422fca376c79", "name": "Legacy-named symbol `requirements_graph_v1` in apps/web/src/lib/lcopilot/resultsMapper.ts:650", "shortDescription": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/web/src/lib/lcopilot/resultsMapper.ts:650"}, "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-8866435517af4a3e", "name": "Legacy-named symbol `fromLegacy` in apps/web/src/lib/lcopilot/tier.ts:47", "shortDescription": {"text": "Legacy-named symbol `fromLegacy` in apps/web/src/lib/lcopilot/tier.ts:47"}, "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-8fd63abe7ca1522c", "name": "Legacy-named symbol `structured_result_v1` in apps/web/src/lib/exporter/dashboardTruth.ts:52", "shortDescription": {"text": "Legacy-named symbol `structured_result_v1` in apps/web/src/lib/exporter/dashboardTruth.ts:52"}, "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-034f1ee336d5c562", "name": "Legacy-named symbol `processing_summary_v2` in apps/web/src/lib/validation/validationState.ts:87", "shortDescription": {"text": "Legacy-named symbol `processing_summary_v2` in apps/web/src/lib/validation/validationState.ts:87"}, "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-2cfdd5f80efd9fe5", "name": "Commented-code block (8 lines) in apps/web/src/pages/ImporterDashboardV2.tsx:52", "shortDescription": {"text": "Commented-code block (8 lines) in apps/web/src/pages/ImporterDashboardV2.tsx:52"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-828b532ad7a23225", "name": "Commented-code block (5 lines) in apps/web/src/pages/BillingOverviewPage.tsx:144", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/pages/BillingOverviewPage.tsx:144"}, "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-36e9650d92433336", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/ExporterResultsV2.tsx:132", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/ExporterResultsV2.tsx:132"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-56faccac9cb62e27", "name": "Commented-code block (5 lines) in apps/web/src/pages/Index.tsx:93", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/pages/Index.tsx:93"}, "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-c8d91ffc812ef308", "name": "Commented-code block (5 lines) in apps/web/src/pages/ExportLCUpload.tsx:1308", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/pages/ExportLCUpload.tsx:1308"}, "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-9ed8865b98cebe8d", "name": "Commented-code block (5 lines) in apps/web/src/pages/ExporterDashboard.tsx:284", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/pages/ExporterDashboard.tsx:284"}, "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-feb103a8fd7fe3f0", "name": "Commented-code block (6 lines) in apps/web/src/pages/Register.tsx:45", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/pages/Register.tsx:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9884db85c39b2836", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/Register.tsx:219", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/Register.tsx:219"}, "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-b10fd8aae8c36804", "name": "Legacy-named symbol `processing_summary_v2` in apps/web/src/pages/ExporterResults.tsx:1401", "shortDescription": {"text": "Legacy-named symbol `processing_summary_v2` in apps/web/src/pages/ExporterResults.tsx:1401"}, "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-6b22669491b486f5", "name": "Commented-code block (7 lines) in apps/web/src/pages/ExporterResults.tsx:1578", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/src/pages/ExporterResults.tsx:1578"}, "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-7193986ef9c0a40e", "name": "Commented-code block (6 lines) in apps/web/src/pages/admin/sections/rules/Upload.tsx:135", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/pages/admin/sections/rules/Upload.tsx:135"}, "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-95c562ec9862c1c4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/tracking/TrackingOverview.tsx:286", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/tracking/TrackingOverview.tsx:286"}, "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-40de471db82eb304", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/tracking/ActiveShipmentsPage.tsx:202", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/tracking/ActiveShipmentsPage.tsx:202"}, "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-d2fb87eb4a15e3df", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/tracking/TrackingDashboard.tsx:272", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/tracking/TrackingDashboard.tsx:272"}, "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-c1f72aa00dc512e6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/doc-generator/CreateDocumentWizard.tsx:275", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/doc-generator/CreateDocumentWizard.tsx:275"}, "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-773e2d7fdedb0934", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/doc-generator/PDFPreview.tsx:92", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/doc-generator/PDFPreview.tsx:92"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-02b8d141d42cba1f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/doc-generator/BuyerDirectoryPage.tsx:165", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/doc-generator/BuyerDirectoryPage.tsx:165"}, "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-588c6194fa3d424e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/doc-generator/ProductCatalogPage.tsx:164", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/doc-generator/ProductCatalogPage.tsx:164"}, "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-5877487fb978a433", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/doc-generator/TemplatesPage.tsx:139", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/doc-generator/TemplatesPage.tsx:139"}, "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-b1f9fddae4af91a8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/doc-generator/DocGeneratorDashboard.tsx:116", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/doc-generator/DocGeneratorDashboard.tsx:116"}, "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-87434c4a790864f3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/hs-code/HSCodeRulings.tsx:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/hs-code/HSCodeRulings.tsx:71"}, "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-1fe3eccc21c1d297", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/hs-code/HSCodeBulk.tsx:143", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/hs-code/HSCodeBulk.tsx:143"}, "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-45a6d80cf38dd734", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/hs-code/HSCodeQuotas.tsx:95", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/hs-code/HSCodeQuotas.tsx:95"}, "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-bdb70e5d2ebb37ae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/hs-code/HSCodeSection301.tsx:108", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/hs-code/HSCodeSection301.tsx:108"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c44f26e4b0fa3ce0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/hs-code/HSCodeADCVD.tsx:139", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/hs-code/HSCodeADCVD.tsx:139"}, "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-e91df32899b84aec", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/hs-code/HSCodeDashboard.tsx:196", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/hs-code/HSCodeDashboard.tsx:196"}, "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-2b1c56b29e1f95b6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/price-verify/VerifyPage.tsx:1110", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/price-verify/VerifyPage.tsx:1110"}, "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-a78216d9e2d1b40e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/price-verify/AdminPage.tsx:165", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/price-verify/AdminPage.tsx:165"}, "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-619f15ec6960d69b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/price-verify/HistoryPage.tsx:199", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/price-verify/HistoryPage.tsx:199"}, "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-03295bfa572e0ff5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/price-verify/AnalyticsPage.tsx:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/price-verify/AnalyticsPage.tsx:91"}, "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-cdf71ecc2eb1ccb9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/lc-builder/LCTemplatesPage.tsx:184", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/lc-builder/LCTemplatesPage.tsx:184"}, "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-04e4aacf21c1bcaf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/lc-builder/BeneficiaryDirectoryPage.tsx:283", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/lc-builder/BeneficiaryDirectoryPage.tsx:283"}, "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-bc3875cb4578b2d2", "name": "Legacy-named symbol `copies_copy` in apps/web/src/pages/tools/lc-builder/LCBuilderWizard.tsx:153", "shortDescription": {"text": "Legacy-named symbol `copies_copy` in apps/web/src/pages/tools/lc-builder/LCBuilderWizard.tsx:153"}, "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-546b422b26dc6ddf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/lc-builder/LCBuilderWizard.tsx:609", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/lc-builder/LCBuilderWizard.tsx:609"}, "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-bf16eb962c503238", "name": "Legacy-named symbol `handleSaveOld` in apps/web/src/pages/tools/lc-builder/ApplicantProfilesPage.tsx:281", "shortDescription": {"text": "Legacy-named symbol `handleSaveOld` in apps/web/src/pages/tools/lc-builder/ApplicantProfilesPage.tsx:281"}, "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-7155c6f232b9baea", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/lc-builder/ApplicantProfilesPage.tsx:253", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/lc-builder/ApplicantProfilesPage.tsx:253"}, "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-6712c591f0a984d7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/lc-builder/ClauseLibraryPage.tsx:145", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/lc-builder/ClauseLibraryPage.tsx:145"}, "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-87ad04d45e313484", "name": "Commented-code block (5 lines) in apps/web/src/hooks/use-auth.tsx:629", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/hooks/use-auth.tsx:629"}, "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-b7b92f0b8d89a7f5", "name": "Legacy-named symbol `structured_result_v1` in apps/web/src/hooks/use-lcopilot.ts:204", "shortDescription": {"text": "Legacy-named symbol `structured_result_v1` in apps/web/src/hooks/use-lcopilot.ts:204"}, "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-742f462f69b370e2", "name": "Commented-code block (5 lines) in apps/web/src/hooks/use-lcopilot.ts:574", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/hooks/use-lcopilot.ts:574"}, "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-1ef211a530cb1846", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/examiner_prototype.py:47", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/examiner_prototype.py:47"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ffcf105ec0c0d56b", "name": "Commented-code block (5 lines) in scripts/rulhub_probe.py:165", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/rulhub_probe.py:165"}, "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-809ca083258883bf", "name": "Commented-code block (5 lines) in scripts/smoke_matrix.py:93", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/smoke_matrix.py:93"}, "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-ea53401413369f3e", "name": "Legacy-named symbol `structured_result_v1` in scripts/replay_job.py:67", "shortDescription": {"text": "Legacy-named symbol `structured_result_v1` in scripts/replay_job.py:67"}, "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-96c81cb8f6106112", "name": "Legacy-named symbol `create_backup` in scripts/dr/backup_db.py:40", "shortDescription": {"text": "Legacy-named symbol `create_backup` in scripts/dr/backup_db.py:40"}, "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-f36e64e690647615", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/dr/backup_db.py:79", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/dr/backup_db.py:79"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1c8c95b5200f87ca", "name": "Legacy-named symbol `restore_backup` in scripts/dr/restore_db.py:39", "shortDescription": {"text": "Legacy-named symbol `restore_backup` in scripts/dr/restore_db.py:39"}, "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-a526decc73e814fb", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/dr/restore_db.py:157", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/dr/restore_db.py:157"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-70e5a7d5dfb4efd3", "name": "Legacy-named symbol `use_existing_backup` in scripts/dr/dr_drill.py:43", "shortDescription": {"text": "Legacy-named symbol `use_existing_backup` in scripts/dr/dr_drill.py:43"}, "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-6ef40b38451d36c1", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/dr/dr_drill.py:146", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/dr/dr_drill.py:146"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1e04088c4eccfd9d", "name": "Legacy-named symbol `compliance_policy_2024_v1` in scripts/demo/seed_demo_data.py:552", "shortDescription": {"text": "Legacy-named symbol `compliance_policy_2024_v1` in scripts/demo/seed_demo_data.py:552"}, "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-5f19d3e6892196af", "name": "Commented-code block (5 lines) in scripts/importer_corpus/render.py:419", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/importer_corpus/render.py:419"}, "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-24cf37b903468b51", "name": "Commented-code block (6 lines) in scripts/importer_corpus/corridors.py:454", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/importer_corpus/corridors.py:454"}, "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-30c2fb06bc4dac03", "name": "Legacy-named symbol `processing_summary_v2` in packages/shared-types/python/schemas.py:243", "shortDescription": {"text": "Legacy-named symbol `processing_summary_v2` in packages/shared-types/python/schemas.py:243"}, "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-ced7dab3f750334a", "name": "Legacy-named symbol `processing_summary_v2` in packages/shared-types/src/api.ts:219", "shortDescription": {"text": "Legacy-named symbol `processing_summary_v2` in packages/shared-types/src/api.ts:219"}, "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-a9735e6a5954ec32", "name": "Commented-code block (7 lines) in packages/shared-types/src/api.ts:1237", "shortDescription": {"text": "Commented-code block (7 lines) in packages/shared-types/src/api.ts:1237"}, "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-76445b0f1319f674", "name": "Legacy-named symbol `eurc_v1` in Data/organize_rules.py:14", "shortDescription": {"text": "Legacy-named symbol `eurc_v1` in Data/organize_rules.py:14"}, "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-9395af3ef1a1758e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/notifications/SettingsPage.tsx:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/notifications/SettingsPage.tsx:68"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3f6cc24a07dbf8ce", "name": "144 env vars used in code but missing from .env.example", "shortDescription": {"text": "144 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ADMIN_EMAIL`, `ADMIN_PASSWORD`, `ADMIN_SEED_SECRET`, `ADOBE_SIGN_BASE_URL`, `ADOBE_SIGN_CLIENT_ID`, `ADOBE_SIGN_CLIENT_SECRET`, `AI_ENRICHMENT`, `AI_EXAMINER_MODEL` + 136 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-76a2f6818267a9a8", "name": "Near-duplicate function bodies in 8 places", "shortDescription": {"text": "Near-duplicate function bodies in 8 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\napps/api/verify_observability_stack.py:initialize_aws_clients, apps/api/security/security_monitor.py:initialize_aws_clients, apps/api/reliability/trust_portal/trust_portal_manager.py:initialize_aws_clients, apps/api/reliability/status_page/status_page_generator.py:initialize_aws_clients\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\napps/api/check_all_imports.py:find_router_files, apps/api/check_missing_imports.py:find_router_files\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\napps/api/trust_platform/compliance/rule_sync_service.py:on_modified, apps/api/trust_platform/compliance/rule_sync_service.py:on_created, apps/api/trust_platform/compliance/rule_sync_service.py:on_deleted\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-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\napps/api/app/rules/external/rule_schema.py:to_dict, apps/api/app/rules/external/rule_schema.py:to_dict, apps/api/app/rules/external/rule_schema.py:to_dict, apps/api/app/rules/external/rule_schema.py:to_dict\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-b3d0e983c66308db", "name": "Frontend route `/status` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/status` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ac5f34e85aa295bd", "name": "Frontend route `/debug` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/debug` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bfd93019afd65e19", "name": "Frontend route `/lc-demo` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lc-demo` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dcfd09e6e9a0dc69", "name": "Frontend route `/trdr` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/trdr` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d555388d2958c243", "name": "Frontend route `screen/party` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `screen/party` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a08e86a377dd9bf0", "name": "Frontend route `screen/vessel` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `screen/vessel` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8a305a52ab9a8905", "name": "Frontend route `screen/goods` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `screen/goods` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9193b03c7be0e4e2", "name": "Frontend route `batch` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `batch` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-310500230cd25e1e", "name": "Frontend route `history` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `history` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7a05d7c6864837f9", "name": "Frontend route `certificates` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `certificates` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-04b81d0a8bee54e7", "name": "Frontend route `watchlist` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `watchlist` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a5db5aeae75b8874", "name": "Frontend route `api` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `api` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-42bfc76f6bb25e2f", "name": "Frontend route `settings` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `settings` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-10de07968e5f658d", "name": "Frontend route `help` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `help` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-67259b97a7c123de", "name": "Frontend route `classify` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `classify` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-549b77cb6cc17ac8", "name": "Frontend route `search` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `search` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-14c0737e35655b50", "name": "Frontend route `duty` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `duty` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d733702d282880d2", "name": "Frontend route `fta` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `fta` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-880809418930ac1f", "name": "Frontend route `roo` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `roo` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-acf9cced0b3cf380", "name": "Frontend route `compliance` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `compliance` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5a1507cbcf779987", "name": "Frontend route `favorites` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `favorites` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fde1dea39df17620", "name": "Frontend route `bulk` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `bulk` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-806120181019ef0f", "name": "Frontend route `compare` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `compare` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dd1069f4244d82fa", "name": "Frontend route `rulings` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `rulings` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bce198504f193d80", "name": "Frontend route `alerts` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `alerts` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c693d8fca6f12de2", "name": "Frontend route `usmca` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `usmca` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-79f4ea2509ec29ee", "name": "Frontend route `teams` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `teams` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0e413fca86d7817b", "name": "Frontend route `compliance-suite` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `compliance-suite` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9292e48fd1576587", "name": "Frontend route `export-controls` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `export-controls` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2ffaf43fd4ab8bf2", "name": "Frontend route `section-301` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `section-301` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-676fae4e7ff37dc2", "name": "Frontend route `ad-cvd` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `ad-cvd` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bb08d54207ebe621", "name": "Frontend route `quotas` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `quotas` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9fbaf0cb5ced77e4", "name": "Frontend route `new` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `new` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-827cfc37a1a4b61c", "name": "Frontend route `edit/:id` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `edit/:id` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7c792a46863b8b0f", "name": "Frontend route `templates` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `templates` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2437e7cb7f903bf5", "name": "Frontend route `products` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `products` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b19eb9829c96dd44", "name": "Frontend route `buyers` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `buyers` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9b4d81e17eb02b4a", "name": "Frontend route `signatures` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `signatures` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0ab9d85c354b001c", "name": "Frontend route `bank-formats` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `bank-formats` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ee5657acd27811eb", "name": "Frontend route `clauses` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `clauses` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dc5b06e27b8e3233", "name": "Frontend route `applicants` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `applicants` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cd43f01e739cb65f", "name": "Frontend route `beneficiaries` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `beneficiaries` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7c8924e40cedd45f", "name": "Frontend route `mt700-reference` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `mt700-reference` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7282fed50bb12257", "name": "Frontend route `risk` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `risk` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e707518ec4f3266c", "name": "Frontend route `history/:applicationId` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `history/:applicationId` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9c21359046c237c1", "name": "Frontend route `workflow/:id` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `workflow/:id` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b46af12dc7c5e9f4", "name": "Frontend route `approvals` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `approvals` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5de4d0fe91a05db7", "name": "Frontend route `shared` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `shared` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a46e23ba9dcddbaa", "name": "Frontend route `/lc-builder/wizard/:id` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lc-builder/wizard/:id` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bdbc2333e871637a", "name": "Frontend route `vessel-search` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `vessel-search` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6e5d177a1226a09a", "name": "Frontend route `container/:containerId` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `container/:containerId` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cd8c8df36a630414", "name": "Frontend route `vessel/:vesselId` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `vessel/:vesselId` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b1b2744d8dc233ab", "name": "Frontend route `active` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `active` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-699a7ad7e4e8f7c9", "name": "Frontend route `map` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `map` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-03986f5bdf05bc17", "name": "Frontend route `ports` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `ports` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1099f02078016f6c", "name": "Frontend route `exceptions` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `exceptions` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-59986ca8054ae55a", "name": "Frontend route `analytics` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `analytics` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-240d67a31e33eb1f", "name": "Frontend route `performance` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `performance` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e0a28d7f5e8f03bf", "name": "Frontend route `verify` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `verify` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f0eb4cdda9e80ca8", "name": "Frontend route `commodities` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `commodities` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5f2883189411b402", "name": "Frontend route `prices` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `prices` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-382eb101f07c1da5", "name": "Frontend route `reports` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `reports` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-53851507d7a1f0e8", "name": "Frontend route `admin` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `admin` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-12e5f988a01e0408", "name": "Frontend route `/hub/*` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/hub/*` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8072d8a96fc800a9", "name": "Frontend route `/lcopilot/review/:sessionId` has no Link/navigate to it \u2014 apps/web/src/backup-original/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/review/:sessionId` has no Link/navigate to it \u2014 apps/web/src/backup-original/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-96a40861bf9ac914", "name": "Frontend route `/lcopilot/report/:sessionId` has no Link/navigate to it \u2014 apps/web/src/backup-original/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/report/:sessionId` has no Link/navigate to it \u2014 apps/web/src/backup-original/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2259f956fa043e1d", "name": "Frontend route `/lcopilot/demo` has no Link/navigate to it \u2014 apps/web/src/backup-original/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/demo` has no Link/navigate to it \u2014 apps/web/src/backup-original/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-689974ca064c73e6", "name": "Frontend route `/lcopilot/results` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/results` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9df692f31ad74b36", "name": "Frontend route `/lcopilot/results/:jobId` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/results/:jobId` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-51c7c36a54d618b7", "name": "Frontend route `/lcopilot/results-v2/:sessionId` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/results-v2/:sessionId` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5b9b9a96995baf37", "name": "Frontend route `/lcopilot/draft-corrections` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/draft-corrections` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d7b0fc5ba6748d3a", "name": "Frontend route `/lcopilot/draft-risk-results` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/draft-risk-results` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-90ce79d8b2431b95", "name": "Frontend route `/lcopilot/import-upload` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/import-upload` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7bcfcc152bf41e1b", "name": "Frontend route `/import/results/:jobId` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/import/results/:jobId` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4fbe26c343521a12", "name": "Frontend route `/lcopilot/import-results/:jobId` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/import-results/:jobId` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f631ab5491e797fe", "name": "Frontend route `/lcopilot/exporter-dashboard/login` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/exporter-dashboard/login` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-548868107c65028f", "name": "Frontend route `/lcopilot/combined-dashboard` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/combined-dashboard` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-64a5f0d2fb16d0ae", "name": "Frontend route `/lcopilot/exporter-dashboard/legacy` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/exporter-dashboard/legacy` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e5b082efa0b5e620", "name": "Frontend route `/lcopilot/exporter-dashboard/v2` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/exporter-dashboard/v2` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-808fa14a793fb50e", "name": "Frontend route `/lcopilot/importer-dashboard/login` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/importer-dashboard/login` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-38ae0711d78c1e6b", "name": "Frontend route `/lcopilot/_bulk-test` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/_bulk-test` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ebc53823e90fd8c0", "name": "Frontend route `/repaper/:token` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/repaper/:token` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3a85b1d663896b22", "name": "Frontend route `/lcopilot/enterprise-dashboard` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/enterprise-dashboard` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-17be27661ae13cbe", "name": "Frontend route `/lcopilot/exporter-results` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/exporter-results` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e096f6425a4fcfaf", "name": "Frontend route `/lcopilot/exporter-analytics` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/exporter-analytics` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-db4e1c5b12417749", "name": "Frontend route `/lcopilot/importer-analytics` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/importer-analytics` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f6f7de7bb2777dae", "name": "Frontend route `/lcopilot/bank-dashboard/legacy` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/bank-dashboard/legacy` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-84e4123e197169fe", "name": "Frontend route `/lcopilot/bank-dashboard/client/:clientName` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/bank-dashboard/client/:clientName` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0fb6281be1c76b1b", "name": "Frontend route `/lcopilot/component-gallery` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/component-gallery` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d28acb40f8dfccf1", "name": "Frontend route `/lcopilot/exporter-corrections` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/exporter-corrections` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-db76b499bb683e08", "name": "Frontend route `/lcopilot/supplier-corrections` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/supplier-corrections` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-53ddc482dbfecde1", "name": "Frontend route `/lcopilot/supplier-results` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/supplier-results` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-49201cba5ac1fff3", "name": "Frontend route `/test-import` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/test-import` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-71063a867d727f62", "name": "Frontend route `/auth/callback` has no Link/navigate to it \u2014 apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/auth/callback` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8f23b3d4d5a325bc", "name": "Frontend route `/lcopilot/login` has no Link/navigate to it \u2014 apps/web/src/backup-original/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/login` has no Link/navigate to it \u2014 apps/web/src/backup-original/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-61ad8ce2d6b07a83", "name": "Frontend route `/lcopilot/register` has no Link/navigate to it \u2014 apps/web/src/backup-original/App.tsx", "shortDescription": {"text": "Frontend route `/lcopilot/register` has no Link/navigate to it \u2014 apps/web/src/backup-original/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9dcdcd6c91ddaa62", "name": "FastAPI POST `warm_endpoint` without auth dependency \u2014 apps/api/main.py:552", "shortDescription": {"text": "FastAPI POST `warm_endpoint` without auth dependency \u2014 apps/api/main.py:552"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cd84815a4fa158e8", "name": "Flask mutation route `upload_document` without `@login_required` \u2014 apps/api/trust_platform/compliance/rule_review_dashbo", "shortDescription": {"text": "Flask mutation route `upload_document` without `@login_required` \u2014 apps/api/trust_platform/compliance/rule_review_dashboard/app.py:136"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-97803a036a115aa0", "name": "Flask mutation route `handle_suggestion` without `@login_required` \u2014 apps/api/trust_platform/compliance/rule_review_dash", "shortDescription": {"text": "Flask mutation route `handle_suggestion` without `@login_required` \u2014 apps/api/trust_platform/compliance/rule_review_dashboard/app.py:248"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dc388ecc87896374", "name": "Flask mutation route `lint_check` without `@login_required` \u2014 apps/api/trust_platform/compliance/rule_review_dashboard/a", "shortDescription": {"text": "Flask mutation route `lint_check` without `@login_required` \u2014 apps/api/trust_platform/compliance/rule_review_dashboard/app.py:389"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-16fd9fa5095960c5", "name": "FastAPI POST `search_commodities` without auth dependency \u2014 apps/api/app/routers/price_verify.py:205", "shortDescription": {"text": "FastAPI POST `search_commodities` without auth dependency \u2014 apps/api/app/routers/price_verify.py:205"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-784e01714d8dba88", "name": "FastAPI POST `verify_single_price` without auth dependency \u2014 apps/api/app/routers/price_verify.py:383", "shortDescription": {"text": "FastAPI POST `verify_single_price` without auth dependency \u2014 apps/api/app/routers/price_verify.py:383"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f3c80036a04a526a", "name": "FastAPI POST `verify_batch_prices` without auth dependency \u2014 apps/api/app/routers/price_verify.py:549", "shortDescription": {"text": "FastAPI POST `verify_batch_prices` without auth dependency \u2014 apps/api/app/routers/price_verify.py:549"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9d893c7678e41278", "name": "FastAPI POST `verify_and_export_pdf` without auth dependency \u2014 apps/api/app/routers/price_verify.py:624", "shortDescription": {"text": "FastAPI POST `verify_and_export_pdf` without auth dependency \u2014 apps/api/app/routers/price_verify.py:624"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c80b9d6710b9c559", "name": "FastAPI POST `verify_batch_and_export_pdf` without auth dependency \u2014 apps/api/app/routers/price_verify.py:696", "shortDescription": {"text": "FastAPI POST `verify_batch_and_export_pdf` without auth dependency \u2014 apps/api/app/routers/price_verify.py:696"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-87bdf7baa5811ef7", "name": "FastAPI POST `explain_variance_with_ai` without auth dependency \u2014 apps/api/app/routers/price_verify.py:752", "shortDescription": {"text": "FastAPI POST `explain_variance_with_ai` without auth dependency \u2014 apps/api/app/routers/price_verify.py:752"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-59e72f8ec582b281", "name": "FastAPI POST `get_tbml_assessment` without auth dependency \u2014 apps/api/app/routers/price_verify.py:814", "shortDescription": {"text": "FastAPI POST `get_tbml_assessment` without auth dependency \u2014 apps/api/app/routers/price_verify.py:814"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9386a3100f57c4b0", "name": "FastAPI POST `extract_prices_from_document` without auth dependency \u2014 apps/api/app/routers/price_verify.py:1040", "shortDescription": {"text": "FastAPI POST `extract_prices_from_document` without auth dependency \u2014 apps/api/app/routers/price_verify.py:1040"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3676ede3d07cde5a", "name": "FastAPI POST `extract_batch_documents` without auth dependency \u2014 apps/api/app/routers/price_verify.py:1186", "shortDescription": {"text": "FastAPI POST `extract_batch_documents` without auth dependency \u2014 apps/api/app/routers/price_verify.py:1186"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a789ddd49b2d7883", "name": "FastAPI POST `generate_sar_report` without auth dependency \u2014 apps/api/app/routers/price_verify.py:1522", "shortDescription": {"text": "FastAPI POST `generate_sar_report` without auth dependency \u2014 apps/api/app/routers/price_verify.py:1522"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ea241b5bdd548bde", "name": "FastAPI POST `generate_compliance_report` without auth dependency \u2014 apps/api/app/routers/price_verify.py:1701", "shortDescription": {"text": "FastAPI POST `generate_compliance_report` without auth dependency \u2014 apps/api/app/routers/price_verify.py:1701"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f124ed80375c60db", "name": "FastAPI POST `configure_alerts` without auth dependency \u2014 apps/api/app/routers/price_verify.py:2028", "shortDescription": {"text": "FastAPI POST `configure_alerts` without auth dependency \u2014 apps/api/app/routers/price_verify.py:2028"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-35e7c27b126e4ae5", "name": "FastAPI POST `send_test_alert` without auth dependency \u2014 apps/api/app/routers/price_verify.py:2059", "shortDescription": {"text": "FastAPI POST `send_test_alert` without auth dependency \u2014 apps/api/app/routers/price_verify.py:2059"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1dd49e0904aefb3a", "name": "FastAPI POST `upload_bulk_item` without auth dependency \u2014 apps/api/app/routers/bulk_validate.py:241", "shortDescription": {"text": "FastAPI POST `upload_bulk_item` without auth dependency \u2014 apps/api/app/routers/bulk_validate.py:241"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0f49e991f81d5bf4", "name": "FastAPI PUT `fake_s3_upload` without auth dependency \u2014 apps/api/app/routers/fake_s3.py:28", "shortDescription": {"text": "FastAPI PUT `fake_s3_upload` without auth dependency \u2014 apps/api/app/routers/fake_s3.py:28"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-51617905a1026d04", "name": "FastAPI POST `fix_password_endpoint` without auth dependency \u2014 apps/api/app/routers/auth.py:230", "shortDescription": {"text": "FastAPI POST `fix_password_endpoint` without auth dependency \u2014 apps/api/app/routers/auth.py:230"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9b83171dc0f53f18", "name": "FastAPI POST `translate_keys` without auth dependency \u2014 apps/api/app/routers/doc_generator_advanced.py:228", "shortDescription": {"text": "FastAPI POST `translate_keys` without auth dependency \u2014 apps/api/app/routers/doc_generator_advanced.py:228"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-24244e1a95e52fb5", "name": "FastAPI POST `calculate_duty` without auth dependency \u2014 apps/api/app/routers/hs_code.py:518", "shortDescription": {"text": "FastAPI POST `calculate_duty` without auth dependency \u2014 apps/api/app/routers/hs_code.py:518"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ab33af3c91f77dd7", "name": "FastAPI POST `compare_classifications` without auth dependency \u2014 apps/api/app/routers/hs_code.py:1435", "shortDescription": {"text": "FastAPI POST `compare_classifications` without auth dependency \u2014 apps/api/app/routers/hs_code.py:1435"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aabfdb183492eead", "name": "FastAPI POST `quick_screen` without auth dependency \u2014 apps/api/app/routers/sanctions.py:380", "shortDescription": {"text": "FastAPI POST `quick_screen` without auth dependency \u2014 apps/api/app/routers/sanctions.py:380"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e931ecd3f6bc7a39", "name": "FastAPI POST `create_commodity` without auth dependency \u2014 apps/api/app/routers/price_verify_admin.py:110", "shortDescription": {"text": "FastAPI POST `create_commodity` without auth dependency \u2014 apps/api/app/routers/price_verify_admin.py:110"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a3ae86e17e02d975", "name": "FastAPI PUT `update_commodity` without auth dependency \u2014 apps/api/app/routers/price_verify_admin.py:159", "shortDescription": {"text": "FastAPI PUT `update_commodity` without auth dependency \u2014 apps/api/app/routers/price_verify_admin.py:159"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a1e3c4bfe407c89f", "name": "FastAPI DELETE `delete_commodity` without auth dependency \u2014 apps/api/app/routers/price_verify_admin.py:215", "shortDescription": {"text": "FastAPI DELETE `delete_commodity` without auth dependency \u2014 apps/api/app/routers/price_verify_admin.py:215"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3f4495e9c225d768", "name": "FastAPI POST `review_commodity_request` without auth dependency \u2014 apps/api/app/routers/price_verify_admin.py:301", "shortDescription": {"text": "FastAPI POST `review_commodity_request` without auth dependency \u2014 apps/api/app/routers/price_verify_admin.py:301"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-de9bd857050d433a", "name": "FastAPI POST `export_results_pdf` without auth dependency \u2014 apps/api/app/routers/bank.py:1002", "shortDescription": {"text": "FastAPI POST `export_results_pdf` without auth dependency \u2014 apps/api/app/routers/bank.py:1002"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1747cec1a420d6a6", "name": "FastAPI POST `export_results_csv` without auth dependency \u2014 apps/api/app/routers/bank.py:1449", "shortDescription": {"text": "FastAPI POST `export_results_csv` without auth dependency \u2014 apps/api/app/routers/bank.py:1449"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-55ffbc1d00cd3815", "name": "FastAPI POST `stripe_webhook` without auth dependency \u2014 apps/api/app/routers/billing.py:513", "shortDescription": {"text": "FastAPI POST `stripe_webhook` without auth dependency \u2014 apps/api/app/routers/billing.py:513"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-31946018fc789f7d", "name": "FastAPI POST `sslcommerz_webhook` without auth dependency \u2014 apps/api/app/routers/billing.py:560", "shortDescription": {"text": "FastAPI POST `sslcommerz_webhook` without auth dependency \u2014 apps/api/app/routers/billing.py:560"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1ba848412bcf298c", "name": "FastAPI POST `seed_existing_users` without auth dependency \u2014 apps/api/app/routers/members.py:600", "shortDescription": {"text": "FastAPI POST `seed_existing_users` without auth dependency \u2014 apps/api/app/routers/members.py:600"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-62b290b7b0df7468", "name": "FastAPI POST `rotate_secrets` without auth dependency \u2014 apps/api/app/routers/admin/vault.py:59", "shortDescription": {"text": "FastAPI POST `rotate_secrets` without auth dependency \u2014 apps/api/app/routers/admin/vault.py:59"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-709c2806d0e615d6", "name": "FastAPI POST `provide_approval_decision` without auth dependency \u2014 apps/api/app/routers/admin/governance.py:86", "shortDescription": {"text": "FastAPI POST `provide_approval_decision` without auth dependency \u2014 apps/api/app/routers/admin/governance.py:86"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-656fdb73749434e2", "name": "FastAPI POST `cleanup_expired_approvals` without auth dependency \u2014 apps/api/app/routers/admin/governance.py:208", "shortDescription": {"text": "FastAPI POST `cleanup_expired_approvals` without auth dependency \u2014 apps/api/app/routers/admin/governance.py:208"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dc5a4a4bb099e210", "name": "FastAPI POST `create_database_backup` without auth dependency \u2014 apps/api/app/routers/admin/dr.py:54", "shortDescription": {"text": "FastAPI POST `create_database_backup` without auth dependency \u2014 apps/api/app/routers/admin/dr.py:54"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6db99257971bc533", "name": "FastAPI POST `create_object_backup` without auth dependency \u2014 apps/api/app/routers/admin/dr.py:101", "shortDescription": {"text": "FastAPI POST `create_object_backup` without auth dependency \u2014 apps/api/app/routers/admin/dr.py:101"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3eb09c0f4b7c8167", "name": "FastAPI POST `run_dr_drill` without auth dependency \u2014 apps/api/app/routers/admin/dr.py:217", "shortDescription": {"text": "FastAPI POST `run_dr_drill` without auth dependency \u2014 apps/api/app/routers/admin/dr.py:217"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4be489d7682eef47", "name": "FastAPI POST `verify_audit_chain` without auth dependency \u2014 apps/api/app/routers/admin/audit.py:181", "shortDescription": {"text": "FastAPI POST `verify_audit_chain` without auth dependency \u2014 apps/api/app/routers/admin/audit.py:181"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c9c0348b8572c6d5", "name": "Flask mutation route `validate_lc` without `@login_required` \u2014 apps/api/sme_portal/resilient_app.py:220", "shortDescription": {"text": "Flask mutation route `validate_lc` without `@login_required` \u2014 apps/api/sme_portal/resilient_app.py:220"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9c04e9d11927ca70", "name": "Flask mutation route `validate_lc` without `@login_required` \u2014 apps/api/sme_portal/app.py:210", "shortDescription": {"text": "Flask mutation route `validate_lc` without `@login_required` \u2014 apps/api/sme_portal/app.py:210"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d0a317cf95c56b5c", "name": "Flask mutation route `api_validate` without `@login_required` \u2014 apps/api/sme_portal/app.py:397", "shortDescription": {"text": "Flask mutation route `api_validate` without `@login_required` \u2014 apps/api/sme_portal/app.py:397"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-67bf3a7303ca2759", "name": "Flask mutation route `api_evidence_pack` without `@login_required` \u2014 apps/api/sme_portal/app.py:471", "shortDescription": {"text": "Flask mutation route `api_evidence_pack` without `@login_required` \u2014 apps/api/sme_portal/app.py:471"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-afe981ffd5b225a7", "name": "Dangling fetch: GET /api/translations/status (apps/web/src/components/admin/TranslationManager.tsx:50)", "shortDescription": {"text": "Dangling fetch: GET /api/translations/status (apps/web/src/components/admin/TranslationManager.tsx:50)"}, "fullDescription": {"text": "`apps/web/src/components/admin/TranslationManager.tsx:50` calls `GET /api/translations/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/translations/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6c28597dd594e684", "name": "Dangling fetch: GET /api/translations/pending?language=${language} (apps/web/src/components/admin/TranslationManager.tsx", "shortDescription": {"text": "Dangling fetch: GET /api/translations/pending?language=${language} (apps/web/src/components/admin/TranslationManager.tsx:67)"}, "fullDescription": {"text": "`apps/web/src/components/admin/TranslationManager.tsx:67` calls `GET /api/translations/pending?language=${language}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/translations/pending`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-780f8ace2ca4bc1a", "name": "Dangling fetch: POST /api/translations/generate (apps/web/src/components/admin/TranslationManager.tsx:99)", "shortDescription": {"text": "Dangling fetch: POST /api/translations/generate (apps/web/src/components/admin/TranslationManager.tsx:99)"}, "fullDescription": {"text": "`apps/web/src/components/admin/TranslationManager.tsx:99` calls `POST /api/translations/generate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/translations/generate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-26fffa8ab42f09af", "name": "Dangling fetch: POST /api/translations/verify (apps/web/src/components/admin/TranslationManager.tsx:134)", "shortDescription": {"text": "Dangling fetch: POST /api/translations/verify (apps/web/src/components/admin/TranslationManager.tsx:134)"}, "fullDescription": {"text": "`apps/web/src/components/admin/TranslationManager.tsx:134` calls `POST /api/translations/verify` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/translations/verify`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-feec850af7d38c50", "name": "Dangling fetch: POST /api/translations/cache/clear (apps/web/src/components/admin/TranslationManager.tsx:168)", "shortDescription": {"text": "Dangling fetch: POST /api/translations/cache/clear (apps/web/src/components/admin/TranslationManager.tsx:168)"}, "fullDescription": {"text": "`apps/web/src/components/admin/TranslationManager.tsx:168` calls `POST /api/translations/cache/clear` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/translations/cache/clear`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bddfcaff9c4b1965", "name": "Dangling fetch: GET /api/geo (apps/web/src/pages/Register.tsx:219)", "shortDescription": {"text": "Dangling fetch: GET /api/geo (apps/web/src/pages/Register.tsx:219)"}, "fullDescription": {"text": "`apps/web/src/pages/Register.tsx:219` calls `GET /api/geo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/geo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d04245d66a430e1b", "name": "Dangling fetch: POST /api/sanctions/screen/vessel (apps/web/src/pages/tools/sanctions/SanctionsScreenVessel.tsx:82)", "shortDescription": {"text": "Dangling fetch: POST /api/sanctions/screen/vessel (apps/web/src/pages/tools/sanctions/SanctionsScreenVessel.tsx:82)"}, "fullDescription": {"text": "`apps/web/src/pages/tools/sanctions/SanctionsScreenVessel.tsx:82` calls `POST /api/sanctions/screen/vessel` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sanctions/screen/vessel`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-108bc45b52347139", "name": "Dangling fetch: POST /api/sanctions/screen/goods (apps/web/src/pages/tools/sanctions/SanctionsScreenGoods.tsx:79)", "shortDescription": {"text": "Dangling fetch: POST /api/sanctions/screen/goods (apps/web/src/pages/tools/sanctions/SanctionsScreenGoods.tsx:79)"}, "fullDescription": {"text": "`apps/web/src/pages/tools/sanctions/SanctionsScreenGoods.tsx:79` calls `POST /api/sanctions/screen/goods` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sanctions/screen/goods`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-38d9f3e9d6f95a2b", "name": "Dangling fetch: POST /api/sanctions/screen/party (apps/web/src/pages/tools/sanctions/SanctionsScreenParty.tsx:107)", "shortDescription": {"text": "Dangling fetch: POST /api/sanctions/screen/party (apps/web/src/pages/tools/sanctions/SanctionsScreenParty.tsx:107)"}, "fullDescription": {"text": "`apps/web/src/pages/tools/sanctions/SanctionsScreenParty.tsx:107` calls `POST /api/sanctions/screen/party` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sanctions/screen/party`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-52fdc156d7141e6a", "name": "Dangling fetch: POST /api/notifications/templates/${formData.template_key}/render (src/components/notify/TemplateEditor.", "shortDescription": {"text": "Dangling fetch: POST /api/notifications/templates/${formData.template_key}/render (src/components/notify/TemplateEditor.tsx:82)"}, "fullDescription": {"text": "`src/components/notify/TemplateEditor.tsx:82` calls `POST /api/notifications/templates/${formData.template_key}/render` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/notifications/templates/<p>/render`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b360bcb0f4c113b5", "name": "Dangling fetch: GET /api/notifications/subscriptions (src/pages/notifications/SettingsPage.tsx:73)", "shortDescription": {"text": "Dangling fetch: GET /api/notifications/subscriptions (src/pages/notifications/SettingsPage.tsx:73)"}, "fullDescription": {"text": "`src/pages/notifications/SettingsPage.tsx:73` calls `GET /api/notifications/subscriptions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/notifications/subscriptions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-692236b6bbf8dc73", "name": "Dangling fetch: POST /api/notifications/channels/${channelId}/test (src/pages/notifications/SettingsPage.tsx:154)", "shortDescription": {"text": "Dangling fetch: POST /api/notifications/channels/${channelId}/test (src/pages/notifications/SettingsPage.tsx:154)"}, "fullDescription": {"text": "`src/pages/notifications/SettingsPage.tsx:154` calls `POST /api/notifications/channels/${channelId}/test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/notifications/channels/<p>/test`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c5f4af7a0dcf4d59", "name": "Unused endpoint: POST /warm", "shortDescription": {"text": "Unused endpoint: POST /warm"}, "fullDescription": {"text": "`apps/api/main.py` declares `POST /warm` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`apps/api/main.py` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1a6d91f2236825bf", "name": "Unused endpoint: ANY /", "shortDescription": {"text": "Unused endpoint: ANY /"}, "fullDescription": {"text": "`apps/api/trust_platform/compliance/rule_review_dashboard/app.py` declares `ANY /` 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-29747d0de7e51904", "name": "Unused endpoint: ANY /upload", "shortDescription": {"text": "Unused endpoint: ANY /upload"}, "fullDescription": {"text": "`apps/api/trust_platform/compliance/rule_review_dashboard/app.py` declares `ANY /upload` 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-10be72019bda2088", "name": "Unused endpoint: ANY /documents", "shortDescription": {"text": "Unused endpoint: ANY /documents"}, "fullDescription": {"text": "`apps/api/trust_platform/compliance/rule_review_dashboard/app.py` declares `ANY /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-084c1013db151437", "name": "Unused endpoint: ANY /review/<int:doc_id>", "shortDescription": {"text": "Unused endpoint: ANY /review/<int:doc_id>"}, "fullDescription": {"text": "`apps/api/trust_platform/compliance/rule_review_dashboard/app.py` declares `ANY /review/<int:doc_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-05af03e8a09097f2", "name": "Unused endpoint: ANY /api/suggestion/<int:suggestion_id>", "shortDescription": {"text": "Unused endpoint: ANY /api/suggestion/<int:suggestion_id>"}, "fullDescription": {"text": "`apps/api/trust_platform/compliance/rule_review_dashboard/app.py` declares `ANY /api/suggestion/<int:suggestion_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-15b1f91d96508cdc", "name": "Unused endpoint: ANY /export/<int:doc_id>", "shortDescription": {"text": "Unused endpoint: ANY /export/<int:doc_id>"}, "fullDescription": {"text": "`apps/api/trust_platform/compliance/rule_review_dashboard/app.py` declares `ANY /export/<int:doc_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-199a69b9d8f98995", "name": "Unused endpoint: ANY /lint-check", "shortDescription": {"text": "Unused endpoint: ANY /lint-check"}, "fullDescription": {"text": "`apps/api/trust_platform/compliance/rule_review_dashboard/app.py` declares `ANY /lint-check` 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-48424c2c01868a26", "name": "Unused endpoint: GET /api/auth/csrf-token", "shortDescription": {"text": "Unused endpoint: GET /api/auth/csrf-token"}, "fullDescription": {"text": "`apps/api/scripts/run_validate_only_app.py` declares `GET /api/auth/csrf-token` 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-f736ec52087cdb66", "name": "Unused endpoint: GET /auth/csrf-token", "shortDescription": {"text": "Unused endpoint: GET /auth/csrf-token"}, "fullDescription": {"text": "`apps/api/scripts/run_validate_only_app.py` declares `GET /auth/csrf-token` 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-d6d412ba6647f6cc", "name": "Unused endpoint: GET /live", "shortDescription": {"text": "Unused endpoint: GET /live"}, "fullDescription": {"text": "`apps/api/app/routes/health.py` declares `GET /live` 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-8c236625afb6a8cb", "name": "Unused endpoint: GET /ready", "shortDescription": {"text": "Unused endpoint: GET /ready"}, "fullDescription": {"text": "`apps/api/app/routes/health.py` declares `GET /ready` 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-ba6a8393a8df4ffe", "name": "Unused endpoint: GET /db-schema", "shortDescription": {"text": "Unused endpoint: GET /db-schema"}, "fullDescription": {"text": "`apps/api/app/routes/health.py` declares `GET /db-schema` 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-2fe67deec6f78374", "name": "Unused endpoint: GET /error", "shortDescription": {"text": "Unused endpoint: GET /error"}, "fullDescription": {"text": "`apps/api/app/routes/debug.py` declares `GET /error` 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-afb19e7fdd56ad1a", "name": "Unused endpoint: GET /spam-errors", "shortDescription": {"text": "Unused endpoint: GET /spam-errors"}, "fullDescription": {"text": "`apps/api/app/routes/debug.py` declares `GET /spam-errors` 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-68764950e8e19135", "name": "Unused endpoint: GET /warning", "shortDescription": {"text": "Unused endpoint: GET /warning"}, "fullDescription": {"text": "`apps/api/app/routes/debug.py` declares `GET /warning` 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-aa1dbd1c28e7f4d9", "name": "Unused endpoint: GET /critical", "shortDescription": {"text": "Unused endpoint: GET /critical"}, "fullDescription": {"text": "`apps/api/app/routes/debug.py` declares `GET /critical` 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-7b69740a550d88e4", "name": "Unused endpoint: GET /slow", "shortDescription": {"text": "Unused endpoint: GET /slow"}, "fullDescription": {"text": "`apps/api/app/routes/debug.py` declares `GET /slow` 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-25d5ee3cd0647143", "name": "Unused endpoint: GET /5xx-series", "shortDescription": {"text": "Unused endpoint: GET /5xx-series"}, "fullDescription": {"text": "`apps/api/app/routes/debug.py` declares `GET /5xx-series` 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-e6ff8f2167a49b9c", "name": "Unused endpoint: GET /test-metrics", "shortDescription": {"text": "Unused endpoint: GET /test-metrics"}, "fullDescription": {"text": "`apps/api/app/routes/debug.py` declares `GET /test-metrics` 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-64fdb2e4695228cf", "name": "Unused endpoint: POST /discrepancies", "shortDescription": {"text": "Unused endpoint: POST /discrepancies"}, "fullDescription": {"text": "`apps/api/app/routes/ai.py` declares `POST /discrepancies` 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-5ea3f34a4eaf66ba", "name": "Unused endpoint: POST /bank-draft", "shortDescription": {"text": "Unused endpoint: POST /bank-draft"}, "fullDescription": {"text": "`apps/api/app/routes/ai.py` declares `POST /bank-draft` 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-4921fbfdae55fef9", "name": "Unused endpoint: POST /amendment-draft", "shortDescription": {"text": "Unused endpoint: POST /amendment-draft"}, "fullDescription": {"text": "`apps/api/app/routes/ai.py` declares `POST /amendment-draft` 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-cff8da5fbc19c76d", "name": "Unused endpoint: POST /chat", "shortDescription": {"text": "Unused endpoint: POST /chat"}, "fullDescription": {"text": "`apps/api/app/routes/ai.py` declares `POST /chat` 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-fdf5c247113c99c5", "name": "Unused endpoint: GET /audit/{event_id}", "shortDescription": {"text": "Unused endpoint: GET /audit/{event_id}"}, "fullDescription": {"text": "`apps/api/app/routes/ai.py` declares `GET /audit/{event_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d467299d5c174fc0", "name": "Unused endpoint: GET /usage", "shortDescription": {"text": "Unused endpoint: GET /usage"}, "fullDescription": {"text": "`apps/api/app/routes/ai.py` declares `GET /usage` 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-62c85412bbbdb876", "name": "Unused endpoint: GET /limits", "shortDescription": {"text": "Unused endpoint: GET /limits"}, "fullDescription": {"text": "`apps/api/app/routes/ai.py` declares `GET /limits` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a009b1a56794f45", "name": "Unused endpoint: POST /", "shortDescription": {"text": "Unused endpoint: POST /"}, "fullDescription": {"text": "`apps/api/app/routers/admin_banks.py` declares `POST /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6f793bb9bb9a96b7", "name": "Unused endpoint: GET /{bank_id}", "shortDescription": {"text": "Unused endpoint: GET /{bank_id}"}, "fullDescription": {"text": "`apps/api/app/routers/admin_banks.py` declares `GET /{bank_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-3aa8667db285436c", "name": "Unused endpoint: PUT /{bank_id}", "shortDescription": {"text": "Unused endpoint: PUT /{bank_id}"}, "fullDescription": {"text": "`apps/api/app/routers/admin_banks.py` declares `PUT /{bank_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-cc73478d316db849", "name": "Unused endpoint: POST /{bank_id}/invite", "shortDescription": {"text": "Unused endpoint: POST /{bank_id}/invite"}, "fullDescription": {"text": "`apps/api/app/routers/admin_banks.py` declares `POST /{bank_id}/invite` 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-c73b252b22e7609a", "name": "Unused endpoint: DELETE /{bank_id}", "shortDescription": {"text": "Unused endpoint: DELETE /{bank_id}"}, "fullDescription": {"text": "`apps/api/app/routers/admin_banks.py` declares `DELETE /{bank_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-8dbcee1fc1f6cc94", "name": "Unused endpoint: GET /{workspace_id}/members", "shortDescription": {"text": "Unused endpoint: GET /{workspace_id}/members"}, "fullDescription": {"text": "`apps/api/app/routers/workspace_sharing.py` declares `GET /{workspace_id}/members` 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-cbf796952ff45dfd", "name": "Unused endpoint: POST /{workspace_id}/members", "shortDescription": {"text": "Unused endpoint: POST /{workspace_id}/members"}, "fullDescription": {"text": "`apps/api/app/routers/workspace_sharing.py` declares `POST /{workspace_id}/members` 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-5fa3af0791d4dc04", "name": "Unused endpoint: PUT /{workspace_id}/members/{member_id}", "shortDescription": {"text": "Unused endpoint: PUT /{workspace_id}/members/{member_id}"}, "fullDescription": {"text": "`apps/api/app/routers/workspace_sharing.py` declares `PUT /{workspace_id}/members/{member_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-9f9c3f5b4c72fe49", "name": "Unused endpoint: DELETE /{workspace_id}/members/{member_id}", "shortDescription": {"text": "Unused endpoint: DELETE /{workspace_id}/members/{member_id}"}, "fullDescription": {"text": "`apps/api/app/routers/workspace_sharing.py` declares `DELETE /{workspace_id}/members/{member_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-c5d46939a725130e", "name": "Unused endpoint: POST /{workspace_id}/invite", "shortDescription": {"text": "Unused endpoint: POST /{workspace_id}/invite"}, "fullDescription": {"text": "`apps/api/app/routers/workspace_sharing.py` declares `POST /{workspace_id}/invite` 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-5ac6a8b041502791", "name": "Unused endpoint: GET /{workspace_id}/invitations", "shortDescription": {"text": "Unused endpoint: GET /{workspace_id}/invitations"}, "fullDescription": {"text": "`apps/api/app/routers/workspace_sharing.py` declares `GET /{workspace_id}/invitations` 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-cb4b40748d66b885", "name": "Unused endpoint: POST /invitations/{invitation_id}/accept", "shortDescription": {"text": "Unused endpoint: POST /invitations/{invitation_id}/accept"}, "fullDescription": {"text": "`apps/api/app/routers/workspace_sharing.py` declares `POST /invitations/{invitation_id}/accept` 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-a4f2ffb0912c68e3", "name": "Unused endpoint: DELETE /invitations/{invitation_id}", "shortDescription": {"text": "Unused endpoint: DELETE /invitations/{invitation_id}"}, "fullDescription": {"text": "`apps/api/app/routers/workspace_sharing.py` declares `DELETE /invitations/{invitation_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-a1296b240f3a0f35", "name": "Unused endpoint: GET /documents/{document_id}/preview", "shortDescription": {"text": "Unused endpoint: GET /documents/{document_id}/preview"}, "fullDescription": {"text": "`apps/api/app/routers/validate.py` declares `GET /documents/{document_id}/preview` 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-6236b283b79811b8", "name": "Unused endpoint: POST /upload", "shortDescription": {"text": "Unused endpoint: POST /upload"}, "fullDescription": {"text": "`apps/api/app/routers/rules_admin.py` declares `POST /upload` 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-e199d98177176edf", "name": "Unused endpoint: POST /{ruleset_id}/publish", "shortDescription": {"text": "Unused endpoint: POST /{ruleset_id}/publish"}, "fullDescription": {"text": "`apps/api/app/routers/rules_admin.py` declares `POST /{ruleset_id}/publish` 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-df78bf8e0c51c358", "name": "Unused endpoint: POST /{ruleset_id}/rollback", "shortDescription": {"text": "Unused endpoint: POST /{ruleset_id}/rollback"}, "fullDescription": {"text": "`apps/api/app/routers/rules_admin.py` declares `POST /{ruleset_id}/rollback` 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-0e1bcfcf736f3153", "name": "Unused endpoint: POST /{ruleset_id}/archive", "shortDescription": {"text": "Unused endpoint: POST /{ruleset_id}/archive"}, "fullDescription": {"text": "`apps/api/app/routers/rules_admin.py` declares `POST /{ruleset_id}/archive` 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-b9b18c59b1c1e9ab", "name": "Unused endpoint: DELETE /{ruleset_id}", "shortDescription": {"text": "Unused endpoint: DELETE /{ruleset_id}"}, "fullDescription": {"text": "`apps/api/app/routers/rules_admin.py` declares `DELETE /{ruleset_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-89417aff260d9314", "name": "Unused endpoint: GET /active/all", "shortDescription": {"text": "Unused endpoint: GET /active/all"}, "fullDescription": {"text": "`apps/api/app/routers/rules_admin.py` declares `GET /active/all` 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-72eb8a13269a8eb3", "name": "Unused endpoint: GET /active", "shortDescription": {"text": "Unused endpoint: GET /active"}, "fullDescription": {"text": "`apps/api/app/routers/rules_admin.py` declares `GET /active` 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-905410c8c1020c5c", "name": "Unused endpoint: GET /{ruleset_id}/audit", "shortDescription": {"text": "Unused endpoint: GET /{ruleset_id}/audit"}, "fullDescription": {"text": "`apps/api/app/routers/rules_admin.py` declares `GET /{ruleset_id}/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}}]}}, "automationDetails": {"id": "repobility/18203"}, "properties": {"repository": "ripclass/trdrhub.com", "repoUrl": "https://github.com/ripclass/trdrhub.com", "branch": "main"}, "results": [{"ruleId": "scanner-2a0d29201e164520", "level": "note", "message": {"text": "Possibly dead Python function: check_postgresql"}, "properties": {"repobilityId": "8193917887fd5405", "scanner": "scanner-primary", "fingerprint": "2a0d29201e164520", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup_db.py:29"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4419c0fb7a619bf0", "level": "note", "message": {"text": "Possibly dead Python function: create_database"}, "properties": {"repobilityId": "278bf42c3b5b74a8", "scanner": "scanner-primary", "fingerprint": "4419c0fb7a619bf0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup_db.py:54"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f888468b99fd9705", "level": "note", "message": {"text": "Possibly dead Python function: setup_alembic"}, "properties": {"repobilityId": "cc890e35d67ca628", "scanner": "scanner-primary", "fingerprint": "f888468b99fd9705", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup_db.py:72"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1d6833b3a15d38e4", "level": "note", "message": {"text": "Possibly dead Python function: create_env_file"}, "properties": {"repobilityId": "4cd515292d311841", "scanner": "scanner-primary", "fingerprint": "1d6833b3a15d38e4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup_db.py:91"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2ffcccb84fd88c31", "level": "note", "message": {"text": "Possibly dead Python function: verify_dashboards"}, "properties": {"repobilityId": "d6dbb70488a2ad12", "scanner": "scanner-primary", "fingerprint": "2ffcccb84fd88c31", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/verify_observability_stack.py:147"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-92a885cd8d1e45aa", "level": "note", "message": {"text": "Possibly dead Python function: verify_canaries"}, "properties": {"repobilityId": "ea56fe7d7e766d02", "scanner": "scanner-primary", "fingerprint": "92a885cd8d1e45aa", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/verify_observability_stack.py:238"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-49a5c0ea556cc79a", "level": "note", "message": {"text": "Possibly dead Python function: verify_chaos_engineering"}, "properties": {"repobilityId": "6fd2eb7632166f10", "scanner": "scanner-primary", "fingerprint": "49a5c0ea556cc79a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/verify_observability_stack.py:328"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f31b561651b69c5e", "level": "note", "message": {"text": "Possibly dead Python function: verify_slo_reporting"}, "properties": {"repobilityId": "3053f7ea78822135", "scanner": "scanner-primary", "fingerprint": "f31b561651b69c5e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/verify_observability_stack.py:408"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5a12a053849c758a", "level": "note", "message": {"text": "Possibly dead Python function: verify_security_monitoring"}, "properties": {"repobilityId": "8b5570bc449c7b1d", "scanner": "scanner-primary", "fingerprint": "5a12a053849c758a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/verify_observability_stack.py:502"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-76c9d169d75fd0fa", "level": "note", "message": {"text": "Possibly dead Python function: verify_log_insights"}, "properties": {"repobilityId": "f32492fc98e1f599", "scanner": "scanner-primary", "fingerprint": "76c9d169d75fd0fa", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/verify_observability_stack.py:601"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bdb16927181af6f6", "level": "note", "message": {"text": "Possibly dead Python function: demo_audit_models"}, "properties": {"repobilityId": "61906054e0b5a918", "scanner": "scanner-primary", "fingerprint": "bdb16927181af6f6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/audit_demo.py:20"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7512834b75a5e5d1", "level": "note", "message": {"text": "Possibly dead Python function: demo_audit_service"}, "properties": {"repobilityId": "0554201339b91913", "scanner": "scanner-primary", "fingerprint": "7512834b75a5e5d1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/audit_demo.py:64"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9a6b1e0eeb0e4d0a", "level": "note", "message": {"text": "Possibly dead Python function: demo_audit_schemas"}, "properties": {"repobilityId": "ce7817d3557c17f2", "scanner": "scanner-primary", "fingerprint": "9a6b1e0eeb0e4d0a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/audit_demo.py:109"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ed8942a27f92d38", "level": "note", "message": {"text": "Possibly dead Python function: demo_audit_middleware"}, "properties": {"repobilityId": "566bd4ff89d1b6d7", "scanner": "scanner-primary", "fingerprint": "3ed8942a27f92d38", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/audit_demo.py:158"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-72104854f78bcf1b", "level": "note", "message": {"text": "Possibly dead Python function: demo_audit_api_structure"}, "properties": {"repobilityId": "d2bebba080acae24", "scanner": "scanner-primary", "fingerprint": "72104854f78bcf1b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/audit_demo.py:210"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ef9cbe0a778ca831", "level": "note", "message": {"text": "Possibly dead Python function: demo_migration_structure"}, "properties": {"repobilityId": "16ee17fc18389e97", "scanner": "scanner-primary", "fingerprint": "ef9cbe0a778ca831", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/audit_demo.py:257"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fe1678b91cb601ef", "level": "note", "message": {"text": "Possibly dead Python function: demo_integration_scenarios"}, "properties": {"repobilityId": "f648e6766b13f823", "scanner": "scanner-primary", "fingerprint": "fe1678b91cb601ef", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/audit_demo.py:296"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-77f6ee005223de01", "level": "note", "message": {"text": "Possibly dead Python function: demo_compliance_features"}, "properties": {"repobilityId": "508e208c0c2747b7", "scanner": "scanner-primary", "fingerprint": "77f6ee005223de01", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/audit_demo.py:344"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d0fe019d5ecb291f", "level": "note", "message": {"text": "Possibly dead Python function: performance_context"}, "properties": {"repobilityId": "af8cc75ec391327b", "scanner": "scanner-primary", "fingerprint": "d0fe019d5ecb291f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/main.py:48"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-82850482a376ad95", "level": "note", "message": {"text": "Possibly dead Python function: export_analytics_data"}, "properties": {"repobilityId": "5260279b01d466e0", "scanner": "scanner-primary", "fingerprint": "82850482a376ad95", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/reliability/analytics/analytics_manager.py:555"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a2c2d7a3588658a5", "level": "note", "message": {"text": "Possibly dead Python function: setup_analytics_hooks"}, "properties": {"repobilityId": "e2e858e0177d6672", "scanner": "scanner-primary", "fingerprint": "a2c2d7a3588658a5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/reliability/analytics/analytics_manager.py:609"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-593e9e44e5a7a84b", "level": "note", "message": {"text": "Possibly dead Python function: create_cloudfront_distribution"}, "properties": {"repobilityId": "883b6f0eff78d38d", "scanner": "scanner-primary", "fingerprint": "593e9e44e5a7a84b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/trust_platform/status_pages/trust_status_generator.py:597"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ca95e2c18ead5b55", "level": "note", "message": {"text": "Possibly dead Python function: rollback_to_version"}, "properties": {"repobilityId": "1c2c623a165282cf", "scanner": "scanner-primary", "fingerprint": "ca95e2c18ead5b55", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/trust_platform/compliance/rule_sync_service.py:213"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-47dfa8e792a9f491", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/tests/global-teardown.ts:5"}, "properties": {"repobilityId": "5e32a939700a60d3", "scanner": "scanner-primary", "fingerprint": "47dfa8e792a9f491", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-73adc172aa346c92", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/tests/global-setup.ts:6"}, "properties": {"repobilityId": "ebc86409ebd9edee", "scanner": "scanner-primary", "fingerprint": "73adc172aa346c92", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4592b9f1513b35e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/tests/utils/auth-service.ts:66"}, "properties": {"repobilityId": "8630cf472c855ea4", "scanner": "scanner-primary", "fingerprint": "4592b9f1513b35e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f69acccd4ce07581", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/tests/utils/test-data-service.ts:39"}, "properties": {"repobilityId": "36eb8dfc8b2ea1fc", "scanner": "scanner-primary", "fingerprint": "f69acccd4ce07581", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b06c3a45370d8923", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/tests/e2e/setup.ts:20"}, "properties": {"repobilityId": "d82fe75053abbe79", "scanner": "scanner-primary", "fingerprint": "b06c3a45370d8923", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f64dd7434f1aa2ac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/tests/e2e/lcopilot/exporter-validation.spec.ts:176"}, "properties": {"repobilityId": "3fa64e3c6d3d90f6", "scanner": "scanner-primary", "fingerprint": "f64dd7434f1aa2ac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2b39abc907d2c863", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/__tests__/onboarding-scenario-matrix.test.ts:233"}, "properties": {"repobilityId": "ff6e0ee78bbd4664", "scanner": "scanner-primary", "fingerprint": "2b39abc907d2c863", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ceda3dad00acf6b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/api/billing.ts:374"}, "properties": {"repobilityId": "89b66caf390e62ba", "scanner": "scanner-primary", "fingerprint": "ceda3dad00acf6b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a5698774a671a368", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/lcopilot/DocumentDetailsDrawer.tsx:1129"}, "properties": {"repobilityId": "a389a79df8429087", "scanner": "scanner-primary", "fingerprint": "a5698774a671a368", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b3fd7e615993c3bd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/lcopilot/LcIntakeCard.tsx:163"}, "properties": {"repobilityId": "c2138674c3995d0b", "scanner": "scanner-primary", "fingerprint": "b3fd7e615993c3bd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-206ffa970ec47180", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/lcopilot/results/tabs/VerdictTab.tsx:329"}, "properties": {"repobilityId": "8e4f22a234865f24", "scanner": "scanner-primary", "fingerprint": "206ffa970ec47180", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e46faee2304e9f64", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/importer/ImporterSidebar.tsx:158"}, "properties": {"repobilityId": "c46d491dca8a2517", "scanner": "scanner-primary", "fingerprint": "e46faee2304e9f64", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8b93fbea11b9a364", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/enterprise/EnterpriseSidebar.tsx:210"}, "properties": {"repobilityId": "e6936c0b91dfd9b0", "scanner": "scanner-primary", "fingerprint": "8b93fbea11b9a364", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-819c3edb4b638d6f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/entitlements/QuotaStrip.tsx:142"}, "properties": {"repobilityId": "cf8a44d30714ce92", "scanner": "scanner-primary", "fingerprint": "819c3edb4b638d6f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6fb64a69ce1170cb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/shared/LanguageSwitcher.tsx:43"}, "properties": {"repobilityId": "366a1c8ca15336b4", "scanner": "scanner-primary", "fingerprint": "6fb64a69ce1170cb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dbea6e1e515dbebc", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/components/shared/SavedViewsManager.tsx:87"}, "properties": {"repobilityId": "a06816791e348d86", "scanner": "scanner-primary", "fingerprint": "dbea6e1e515dbebc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ef935d20c0c90c38", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/web/src/components/ui/chart.tsx:96"}, "properties": {"repobilityId": "a3f6aa8e227cbb83", "scanner": "scanner-primary", "fingerprint": "ef935d20c0c90c38", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-dd2c4d809726d5b5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/search/GlobalSearchBar.tsx:175"}, "properties": {"repobilityId": "058316431f620e1e", "scanner": "scanner-primary", "fingerprint": "dd2c4d809726d5b5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5a9facca4853e00b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/billing/UsageTable.tsx:584"}, "properties": {"repobilityId": "3a346282c4d7a5d3", "scanner": "scanner-primary", "fingerprint": "5a9facca4853e00b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a8d46173493cd37a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/components/billing/governance/GovernancePanel.tsx:66"}, "properties": {"repobilityId": "a211678f2ed5dc1e", "scanner": "scanner-primary", "fingerprint": "a8d46173493cd37a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-8cd2e07dc306a26f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/billing/notifications/NotificationsPanel.tsx:513"}, "properties": {"repobilityId": "778c81edfdd4caba", "scanner": "scanner-primary", "fingerprint": "8cd2e07dc306a26f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f9712fe3aa3f7711", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/admin/AdminHeader.tsx:172"}, "properties": {"repobilityId": "e41661a507f090de", "scanner": "scanner-primary", "fingerprint": "f9712fe3aa3f7711", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0c0dd4d15b2ead9c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/components/admin/AdminHeader.tsx:58"}, "properties": {"repobilityId": "164a5ac634d40a27", "scanner": "scanner-primary", "fingerprint": "0c0dd4d15b2ead9c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-d3c00fa2932d57d1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/components/admin/AdminHeader.tsx:59"}, "properties": {"repobilityId": "00855015b2050253", "scanner": "scanner-primary", "fingerprint": "d3c00fa2932d57d1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9e891aa9b8b6bfad", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/exporter/ExporterSidebar.tsx:137"}, "properties": {"repobilityId": "fb232ee0a80edd29", "scanner": "scanner-primary", "fingerprint": "9e891aa9b8b6bfad", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ab3000f80b8354df", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/validation/IssueCard.tsx:169"}, "properties": {"repobilityId": "cc491a13ad868463", "scanner": "scanner-primary", "fingerprint": "ab3000f80b8354df", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a0fce517c37350c6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/agency/BulkInbox.tsx:179"}, "properties": {"repobilityId": "fe60199d3d4097c9", "scanner": "scanner-primary", "fingerprint": "a0fce517c37350c6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-170ecfed10636f0a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/tools/PriceVerifySidebar.tsx:267"}, "properties": {"repobilityId": "b67ad48ec0b70429", "scanner": "scanner-primary", "fingerprint": "170ecfed10636f0a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-558df46c40bebd72", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/tools/SanctionsSidebar.tsx:253"}, "properties": {"repobilityId": "196f9c54557e3960", "scanner": "scanner-primary", "fingerprint": "558df46c40bebd72", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c54453fb84f6f69d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/tools/DocGeneratorSidebar.tsx:252"}, "properties": {"repobilityId": "1e41b622bec02c29", "scanner": "scanner-primary", "fingerprint": "c54453fb84f6f69d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-46d140f62c33f958", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/tools/TrackingSidebar.tsx:293"}, "properties": {"repobilityId": "522e8912b5efa07b", "scanner": "scanner-primary", "fingerprint": "46d140f62c33f958", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-45e0f2b9b0c36b33", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/tools/HSCodeSidebar.tsx:390"}, "properties": {"repobilityId": "440d5371f0c3a2d5", "scanner": "scanner-primary", "fingerprint": "45e0f2b9b0c36b33", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5ed3486dcac27bc6", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/components/bank/AIAssistance.tsx:324"}, "properties": {"repobilityId": "1d84cf8782c9b35b", "scanner": "scanner-primary", "fingerprint": "5ed3486dcac27bc6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-cb5d5ed9ea179518", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/bank/BankSidebar.tsx:327"}, "properties": {"repobilityId": "a6f1d5dc5b2acf48", "scanner": "scanner-primary", "fingerprint": "cb5d5ed9ea179518", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c8d79c140fc11bc1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/components/bank/BankQuickStats.tsx:78"}, "properties": {"repobilityId": "31bdd7502e8be20b", "scanner": "scanner-primary", "fingerprint": "c8d79c140fc11bc1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-eeb75246da4691de", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/bank/BulkLCUpload.tsx:1042"}, "properties": {"repobilityId": "e52439db23c56a95", "scanner": "scanner-primary", "fingerprint": "eeb75246da4691de", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-33ac2899f226666f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/components/bank/OrgSwitcher.tsx:66"}, "properties": {"repobilityId": "0f0a8c75e16f5300", "scanner": "scanner-primary", "fingerprint": "33ac2899f226666f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9168a11589466351", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/lib/logger.ts:51"}, "properties": {"repobilityId": "a834728d72c07a8c", "scanner": "scanner-primary", "fingerprint": "9168a11589466351", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1525dc4dce20dcce", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/lib/billing/providers/stripeProvider.ts:21"}, "properties": {"repobilityId": "da2dc9358f729f1a", "scanner": "scanner-primary", "fingerprint": "1525dc4dce20dcce", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-28470af2d25f2639", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/lib/billing/providers/sslcommerzProvider.ts:19"}, "properties": {"repobilityId": "c811662508b96a32", "scanner": "scanner-primary", "fingerprint": "28470af2d25f2639", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-9d0878fb09c22418", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/BillingUsagePage.tsx:294"}, "properties": {"repobilityId": "e8a36b364d0da0ac", "scanner": "scanner-primary", "fingerprint": "9d0878fb09c22418", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5aef0c89bdf8bd14", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/UploadLC.tsx:310"}, "properties": {"repobilityId": "803c2647ee987334", "scanner": "scanner-primary", "fingerprint": "5aef0c89bdf8bd14", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9308c17729a2138c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/ExportLCUpload.tsx:1820"}, "properties": {"repobilityId": "b12af2a58e611773", "scanner": "scanner-primary", "fingerprint": "9308c17729a2138c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dd0b2787716be5de", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/ExportLCUpload.tsx:1321"}, "properties": {"repobilityId": "4b69a1472bae7860", "scanner": "scanner-primary", "fingerprint": "dd0b2787716be5de", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c8c2d10625883ae1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/CheckPage.tsx:352"}, "properties": {"repobilityId": "110f2b7bc7a00a36", "scanner": "scanner-primary", "fingerprint": "c8c2d10625883ae1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-09949b55045ce42c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/ImportLCUpload.tsx:625"}, "properties": {"repobilityId": "5a02db773d1c04f7", "scanner": "scanner-primary", "fingerprint": "09949b55045ce42c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-660e79c41d2214f6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/ImportLCUpload.tsx:489"}, "properties": {"repobilityId": "794781f01c05ed00", "scanner": "scanner-primary", "fingerprint": "660e79c41d2214f6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-24d791993057a1d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/Results.tsx:243"}, "properties": {"repobilityId": "a6b6cd0d8995c972", "scanner": "scanner-primary", "fingerprint": "24d791993057a1d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7e71d91bbc73c56f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/ContactPage.tsx:21"}, "properties": {"repobilityId": "57fe4fca094f8510", "scanner": "scanner-primary", "fingerprint": "7e71d91bbc73c56f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0d2a0c346cae5bca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/Register.tsx:227"}, "properties": {"repobilityId": "be9455e50f149a1b", "scanner": "scanner-primary", "fingerprint": "0d2a0c346cae5bca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dc79e79a3d20e78a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/importer/ImporterValidationPage.tsx:190"}, "properties": {"repobilityId": "ce00ea5c1e24da36", "scanner": "scanner-primary", "fingerprint": "dc79e79a3d20e78a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-277f7497673dad0c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/admin/sections/audit/Logs.tsx:289"}, "properties": {"repobilityId": "309f51e68d09f4b4", "scanner": "scanner-primary", "fingerprint": "277f7497673dad0c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-befb0d5284d51c63", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/pages/admin/sections/billing/InvoicesPayments.tsx:235"}, "properties": {"repobilityId": "321b9a2ad07b1f7f", "scanner": "scanner-primary", "fingerprint": "befb0d5284d51c63", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ccb09eec971bc0e3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/PriceVerify.tsx:939"}, "properties": {"repobilityId": "d48031601c8af1d1", "scanner": "scanner-primary", "fingerprint": "ccb09eec971bc0e3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-637582cac5898b63", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/tracking/ContainerTrackPage.tsx:484"}, "properties": {"repobilityId": "ca6ae3c464420c9f", "scanner": "scanner-primary", "fingerprint": "637582cac5898b63", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-26211a99284c8fca", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/hs-code/HSCodeAlerts.tsx:516"}, "properties": {"repobilityId": "04bdf9c2b986c5ea", "scanner": "scanner-primary", "fingerprint": "26211a99284c8fca", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-007e98cf3d89355f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/hs-code/HSCodeQuotas.tsx:291"}, "properties": {"repobilityId": "fb738103a99ca0e1", "scanner": "scanner-primary", "fingerprint": "007e98cf3d89355f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e796cfa4137f6144", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/hs-code/HSCodeOverview.tsx:245"}, "properties": {"repobilityId": "4a9f9230a5dda0ae", "scanner": "scanner-primary", "fingerprint": "e796cfa4137f6144", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-63a080f822489a38", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/hs-code/HSCodeHistory.tsx:137"}, "properties": {"repobilityId": "6e92faad291a331d", "scanner": "scanner-primary", "fingerprint": "63a080f822489a38", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d31ae988de053ec0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/hs-code/HSCodeDashboard.tsx:660"}, "properties": {"repobilityId": "e8e3b50982b2e1f8", "scanner": "scanner-primary", "fingerprint": "d31ae988de053ec0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-af7fa19a9fc50e8c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/price-verify/VerifyPage.tsx:666"}, "properties": {"repobilityId": "8709970a66cb13ee", "scanner": "scanner-primary", "fingerprint": "af7fa19a9fc50e8c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-753bcaa7032c1588", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/tools/price-verify/DashboardOverview.tsx:99"}, "properties": {"repobilityId": "649da3bbf9935644", "scanner": "scanner-primary", "fingerprint": "753bcaa7032c1588", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b11ed59cac113c16", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/tools/price-verify/MarketPricesPage.tsx:97"}, "properties": {"repobilityId": "df43152ac512d56a", "scanner": "scanner-primary", "fingerprint": "b11ed59cac113c16", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b8eb54aa9a6fb244", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/pages/tools/lc-builder/LCBuilderLayout.tsx:298"}, "properties": {"repobilityId": "b54a6064435c0451", "scanner": "scanner-primary", "fingerprint": "b8eb54aa9a6fb244", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5c3d419508362941", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/pages/bank/BankLogin.tsx:47"}, "properties": {"repobilityId": "01b5c836695fdf14", "scanner": "scanner-primary", "fingerprint": "5c3d419508362941", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-24f6cf314fb7f3b8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/hooks/use-drafts.ts:497"}, "properties": {"repobilityId": "8f25bae15aac2205", "scanner": "scanner-primary", "fingerprint": "24f6cf314fb7f3b8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4d76f8aae0538698", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/hooks/use-combined.ts:90"}, "properties": {"repobilityId": "e1225b9a9969e693", "scanner": "scanner-primary", "fingerprint": "4d76f8aae0538698", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-527e9c41a546f6fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/hooks/use-lcopilot.ts:324"}, "properties": {"repobilityId": "405b6e9f5c0a850b", "scanner": "scanner-primary", "fingerprint": "527e9c41a546f6fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ab28c5da2006832c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/backup-original/api/auth.ts:92"}, "properties": {"repobilityId": "8172fdadca436f12", "scanner": "scanner-primary", "fingerprint": "ab28c5da2006832c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-2d9be37833ba778e", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "301a9a2aa79842be", "scanner": "scanner-primary", "fingerprint": "2d9be37833ba778e", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-b95bc1d71c50fe16", "level": "warning", "message": {"text": "Insecure pattern 'subprocess_shell_true' in setup_db.py:15"}, "properties": {"repobilityId": "47d35f6774221fd7", "scanner": "scanner-primary", "fingerprint": "b95bc1d71c50fe16", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup_db.py"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-01d5811ba81263e4", "level": "note", "message": {"text": "Insecure pattern 'debug_true' in apps/api/trust_platform/compliance/rule_review_dashboard/app.py:476"}, "properties": {"repobilityId": "fc9f0374420a1b23", "scanner": "scanner-primary", "fingerprint": "01d5811ba81263e4", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "debug_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/trust_platform/compliance/rule_review_dashboard/app.py"}, "region": {"startLine": 476}}}]}, {"ruleId": "scanner-a022bd4225cd12ec", "level": "error", "message": {"text": "Possible secret in apps/api/scripts/fix_exporter_password.py"}, "properties": {"repobilityId": "60c8216ddb00fd31", "scanner": "scanner-primary", "fingerprint": "a022bd4225cd12ec", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/scripts/fix_exporter_password.py"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-300cfb84cb2f75cb", "level": "error", "message": {"text": "Possible secret in apps/api/scripts/generate_hash_standalone.py"}, "properties": {"repobilityId": "71aafe4ca5851152", "scanner": "scanner-primary", "fingerprint": "300cfb84cb2f75cb", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/scripts/generate_hash_standalone.py"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-300cfb84cb2f75cb", "level": "error", "message": {"text": "Possible secret in apps/api/scripts/generate_hash_standalone.py"}, "properties": {"repobilityId": "71aafe4ca5851152", "scanner": "scanner-primary", "fingerprint": "300cfb84cb2f75cb", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/scripts/generate_hash_standalone.py"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-8d78c87d1d7a3490", "level": "error", "message": {"text": "Possible secret in apps/api/scripts/generate_hash.py"}, "properties": {"repobilityId": "07caf5daf337dbf9", "scanner": "scanner-primary", "fingerprint": "8d78c87d1d7a3490", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/scripts/generate_hash.py"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-8d78c87d1d7a3490", "level": "error", "message": {"text": "Possible secret in apps/api/scripts/generate_hash.py"}, "properties": {"repobilityId": "07caf5daf337dbf9", "scanner": "scanner-primary", "fingerprint": "8d78c87d1d7a3490", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/scripts/generate_hash.py"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-5499c32bce2e9543", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in apps/web/api/geo.ts:17"}, "properties": {"repobilityId": "c3d125c7423a8053", "scanner": "scanner-primary", "fingerprint": "5499c32bce2e9543", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/api/geo.ts"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-bce2f2e59df80656", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in apps/web/src/__tests__/useAuthBootstrap.test.tsx:144"}, "properties": {"repobilityId": "4b0df9120ae207ca", "scanner": "scanner-primary", "fingerprint": "bce2f2e59df80656", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/__tests__/useAuthBootstrap.test.tsx"}, "region": {"startLine": 144}}}]}, {"ruleId": "scanner-a1cb0ec4a3397780", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in apps/web/src/__tests__/apiClientAuth.test.ts:28"}, "properties": {"repobilityId": "ac9c16f0a18b657e", "scanner": "scanner-primary", "fingerprint": "a1cb0ec4a3397780", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/__tests__/apiClientAuth.test.ts"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-69b7996ff5548303", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in apps/web/src/__tests__/csrf.test.ts:11"}, "properties": {"repobilityId": "2cb0a6b627cbd354", "scanner": "scanner-primary", "fingerprint": "69b7996ff5548303", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/__tests__/csrf.test.ts"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-bc0a75ff5787ecfb", "level": "note", "message": {"text": "Insecure pattern 'document_write' in apps/web/src/components/lcopilot/PreparationGuide.tsx:261"}, "properties": {"repobilityId": "5d87cd15624f6d97", "scanner": "scanner-primary", "fingerprint": "bc0a75ff5787ecfb", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/components/lcopilot/PreparationGuide.tsx"}, "region": {"startLine": 261}}}]}, {"ruleId": "scanner-30e8891877b78483", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/web/src/components/ui/chart.tsx:96"}, "properties": {"repobilityId": "96fca721b4362b9f", "scanner": "scanner-primary", "fingerprint": "30e8891877b78483", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/components/ui/chart.tsx"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-0202fea99def1ccd", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in apps/web/src/lib/admin/auth.tsx:146"}, "properties": {"repobilityId": "3b4d6d3a761277d2", "scanner": "scanner-primary", "fingerprint": "0202fea99def1ccd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/lib/admin/auth.tsx"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-dab8c84750632455", "level": "error", "message": {"text": "Possible secret in apps/web/src/lib/bank/auth.tsx"}, "properties": {"repobilityId": "32239c377b9d499c", "scanner": "scanner-primary", "fingerprint": "dab8c84750632455", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/lib/bank/auth.tsx"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-dab8c84750632455", "level": "error", "message": {"text": "Possible secret in apps/web/src/lib/bank/auth.tsx"}, "properties": {"repobilityId": "32239c377b9d499c", "scanner": "scanner-primary", "fingerprint": "dab8c84750632455", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/lib/bank/auth.tsx"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-dab8c84750632455", "level": "error", "message": {"text": "Possible secret in apps/web/src/lib/bank/auth.tsx"}, "properties": {"repobilityId": "32239c377b9d499c", "scanner": "scanner-primary", "fingerprint": "dab8c84750632455", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/lib/bank/auth.tsx"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-dab8c84750632455", "level": "error", "message": {"text": "Possible secret in apps/web/src/lib/bank/auth.tsx"}, "properties": {"repobilityId": "32239c377b9d499c", "scanner": "scanner-primary", "fingerprint": "dab8c84750632455", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/lib/bank/auth.tsx"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-dab8c84750632455", "level": "error", "message": {"text": "Possible secret in apps/web/src/lib/bank/auth.tsx"}, "properties": {"repobilityId": "32239c377b9d499c", "scanner": "scanner-primary", "fingerprint": "dab8c84750632455", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/lib/bank/auth.tsx"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-c59d1b39691ffa28", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in apps/web/src/lib/bank/auth.tsx:315"}, "properties": {"repobilityId": "9e087942fa600eac", "scanner": "scanner-primary", "fingerprint": "c59d1b39691ffa28", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/lib/bank/auth.tsx"}, "region": {"startLine": 315}}}]}, {"ruleId": "scanner-d10e72d98e1e9952", "level": "error", "message": {"text": "Possible secret in apps/web/src/pages/importer/ImporterLogin.tsx"}, "properties": {"repobilityId": "126e9644138019aa", "scanner": "scanner-primary", "fingerprint": "d10e72d98e1e9952", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/pages/importer/ImporterLogin.tsx"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-d10e72d98e1e9952", "level": "error", "message": {"text": "Possible secret in apps/web/src/pages/importer/ImporterLogin.tsx"}, "properties": {"repobilityId": "126e9644138019aa", "scanner": "scanner-primary", "fingerprint": "d10e72d98e1e9952", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/pages/importer/ImporterLogin.tsx"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-d10e72d98e1e9952", "level": "error", "message": {"text": "Possible secret in apps/web/src/pages/importer/ImporterLogin.tsx"}, "properties": {"repobilityId": "126e9644138019aa", "scanner": "scanner-primary", "fingerprint": "d10e72d98e1e9952", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/pages/importer/ImporterLogin.tsx"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-d10e72d98e1e9952", "level": "error", "message": {"text": "Possible secret in apps/web/src/pages/importer/ImporterLogin.tsx"}, "properties": {"repobilityId": "126e9644138019aa", "scanner": "scanner-primary", "fingerprint": "d10e72d98e1e9952", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/pages/importer/ImporterLogin.tsx"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-cf177b28a41c10e1", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in apps/web/src/pages/auth/Callback.tsx:60"}, "properties": {"repobilityId": "20682a3cc984dbd5", "scanner": "scanner-primary", "fingerprint": "cf177b28a41c10e1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/pages/auth/Callback.tsx"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-10be1d38baf8f8e0", "level": "error", "message": {"text": "Possible secret in apps/web/src/pages/exporter/ExporterLogin.tsx"}, "properties": {"repobilityId": "948acee498f01105", "scanner": "scanner-primary", "fingerprint": "10be1d38baf8f8e0", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/pages/exporter/ExporterLogin.tsx"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-10be1d38baf8f8e0", "level": "error", "message": {"text": "Possible secret in apps/web/src/pages/exporter/ExporterLogin.tsx"}, "properties": {"repobilityId": "948acee498f01105", "scanner": "scanner-primary", "fingerprint": "10be1d38baf8f8e0", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/pages/exporter/ExporterLogin.tsx"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-10be1d38baf8f8e0", "level": "error", "message": {"text": "Possible secret in apps/web/src/pages/exporter/ExporterLogin.tsx"}, "properties": {"repobilityId": "948acee498f01105", "scanner": "scanner-primary", "fingerprint": "10be1d38baf8f8e0", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/pages/exporter/ExporterLogin.tsx"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-10be1d38baf8f8e0", "level": "error", "message": {"text": "Possible secret in apps/web/src/pages/exporter/ExporterLogin.tsx"}, "properties": {"repobilityId": "948acee498f01105", "scanner": "scanner-primary", "fingerprint": "10be1d38baf8f8e0", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/pages/exporter/ExporterLogin.tsx"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-b43b6bc50d0e27cc", "level": "error", "message": {"text": "Possible secret in apps/web/src/pages/bank/BankLogin.tsx"}, "properties": {"repobilityId": "c833281ec835d0c9", "scanner": "scanner-primary", "fingerprint": "b43b6bc50d0e27cc", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/pages/bank/BankLogin.tsx"}, "region": {"startLine": 102}}}]}, {"ruleId": "scanner-b43b6bc50d0e27cc", "level": "error", "message": {"text": "Possible secret in apps/web/src/pages/bank/BankLogin.tsx"}, "properties": {"repobilityId": "c833281ec835d0c9", "scanner": "scanner-primary", "fingerprint": "b43b6bc50d0e27cc", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/pages/bank/BankLogin.tsx"}, "region": {"startLine": 103}}}]}, {"ruleId": "scanner-b43b6bc50d0e27cc", "level": "error", "message": {"text": "Possible secret in apps/web/src/pages/bank/BankLogin.tsx"}, "properties": {"repobilityId": "c833281ec835d0c9", "scanner": "scanner-primary", "fingerprint": "b43b6bc50d0e27cc", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/pages/bank/BankLogin.tsx"}, "region": {"startLine": 104}}}]}, {"ruleId": "scanner-b43b6bc50d0e27cc", "level": "error", "message": {"text": "Possible secret in apps/web/src/pages/bank/BankLogin.tsx"}, "properties": {"repobilityId": "c833281ec835d0c9", "scanner": "scanner-primary", "fingerprint": "b43b6bc50d0e27cc", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/pages/bank/BankLogin.tsx"}, "region": {"startLine": 105}}}]}, {"ruleId": "scanner-b43b6bc50d0e27cc", "level": "error", "message": {"text": "Possible secret in apps/web/src/pages/bank/BankLogin.tsx"}, "properties": {"repobilityId": "c833281ec835d0c9", "scanner": "scanner-primary", "fingerprint": "b43b6bc50d0e27cc", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/pages/bank/BankLogin.tsx"}, "region": {"startLine": 106}}}]}, {"ruleId": "scanner-bda0acbe2b0ae19b", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in apps/web/src/hooks/use-drafts.ts:70"}, "properties": {"repobilityId": "ddc4023073e55eff", "scanner": "scanner-primary", "fingerprint": "bda0acbe2b0ae19b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/hooks/use-drafts.ts"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-623efcde5dddc3a9", "level": "error", "message": {"text": "Possible secret in apps/web/src/backup-original/api/auth.ts"}, "properties": {"repobilityId": "9ab6c380808ec0dd", "scanner": "scanner-primary", "fingerprint": "623efcde5dddc3a9", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/backup-original/api/auth.ts"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-623efcde5dddc3a9", "level": "error", "message": {"text": "Possible secret in apps/web/src/backup-original/api/auth.ts"}, "properties": {"repobilityId": "9ab6c380808ec0dd", "scanner": "scanner-primary", "fingerprint": "623efcde5dddc3a9", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/backup-original/api/auth.ts"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-623efcde5dddc3a9", "level": "error", "message": {"text": "Possible secret in apps/web/src/backup-original/api/auth.ts"}, "properties": {"repobilityId": "9ab6c380808ec0dd", "scanner": "scanner-primary", "fingerprint": "623efcde5dddc3a9", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/backup-original/api/auth.ts"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-15c3ea62069e8071", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in apps/web/src/backup-original/api/auth.ts:82"}, "properties": {"repobilityId": "ce134fa2141a3e66", "scanner": "scanner-primary", "fingerprint": "15c3ea62069e8071", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/backup-original/api/auth.ts"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-8b8b828c744fd4f5", "level": "error", "message": {"text": "Possible secret in .github/workflows/performance-monitoring.yml"}, "properties": {"repobilityId": "9a5670b0de72f705", "scanner": "scanner-primary", "fingerprint": "8b8b828c744fd4f5", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/performance-monitoring.yml"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-a9080ee701875b98", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4d7c21781cc91eb0", "scanner": "scanner-primary", "fingerprint": "a9080ee701875b98", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/observability-tests.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-a9080ee701875b98", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "06b0876f596b84f4", "scanner": "scanner-primary", "fingerprint": "a9080ee701875b98", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/observability-tests.yml"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-a9080ee701875b98", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4d7c21781cc91eb0", "scanner": "scanner-primary", "fingerprint": "a9080ee701875b98", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/observability-tests.yml"}, "region": {"startLine": 126}}}]}, {"ruleId": "scanner-a9080ee701875b98", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "06b0876f596b84f4", "scanner": "scanner-primary", "fingerprint": "a9080ee701875b98", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/observability-tests.yml"}, "region": {"startLine": 129}}}]}, {"ruleId": "scanner-a9080ee701875b98", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4d7c21781cc91eb0", "scanner": "scanner-primary", "fingerprint": "a9080ee701875b98", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/observability-tests.yml"}, "region": {"startLine": 180}}}]}, {"ruleId": "scanner-a9080ee701875b98", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "06b0876f596b84f4", "scanner": "scanner-primary", "fingerprint": "a9080ee701875b98", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/observability-tests.yml"}, "region": {"startLine": 183}}}]}, {"ruleId": "scanner-a9080ee701875b98", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4d7c21781cc91eb0", "scanner": "scanner-primary", "fingerprint": "a9080ee701875b98", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/observability-tests.yml"}, "region": {"startLine": 248}}}]}, {"ruleId": "scanner-a9080ee701875b98", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "06b0876f596b84f4", "scanner": "scanner-primary", "fingerprint": "a9080ee701875b98", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/observability-tests.yml"}, "region": {"startLine": 251}}}]}, {"ruleId": "scanner-a9080ee701875b98", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4d7c21781cc91eb0", "scanner": "scanner-primary", "fingerprint": "a9080ee701875b98", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/observability-tests.yml"}, "region": {"startLine": 311}}}]}, {"ruleId": "scanner-a9080ee701875b98", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "06b0876f596b84f4", "scanner": "scanner-primary", "fingerprint": "a9080ee701875b98", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/observability-tests.yml"}, "region": {"startLine": 314}}}]}, {"ruleId": "scanner-a9080ee701875b98", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4d7c21781cc91eb0", "scanner": "scanner-primary", "fingerprint": "a9080ee701875b98", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/observability-tests.yml"}, "region": {"startLine": 360}}}]}, {"ruleId": "scanner-a9080ee701875b98", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "06b0876f596b84f4", "scanner": "scanner-primary", "fingerprint": "a9080ee701875b98", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/observability-tests.yml"}, "region": {"startLine": 363}}}]}, {"ruleId": "scanner-a9080ee701875b98", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4d7c21781cc91eb0", "scanner": "scanner-primary", "fingerprint": "a9080ee701875b98", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/observability-tests.yml"}, "region": {"startLine": 435}}}]}, {"ruleId": "scanner-a9080ee701875b98", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "06b0876f596b84f4", "scanner": "scanner-primary", "fingerprint": "a9080ee701875b98", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/observability-tests.yml"}, "region": {"startLine": 438}}}]}, {"ruleId": "scanner-a9080ee701875b98", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4d7c21781cc91eb0", "scanner": "scanner-primary", "fingerprint": "a9080ee701875b98", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/observability-tests.yml"}, "region": {"startLine": 501}}}]}, {"ruleId": "scanner-a9080ee701875b98", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "06b0876f596b84f4", "scanner": "scanner-primary", "fingerprint": "a9080ee701875b98", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/observability-tests.yml"}, "region": {"startLine": 504}}}]}, {"ruleId": "scanner-a9080ee701875b98", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "017aa603331378a5", "scanner": "scanner-primary", "fingerprint": "a9080ee701875b98", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/observability-tests.yml"}, "region": {"startLine": 514}}}]}, {"ruleId": "scanner-a9080ee701875b98", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4d7c21781cc91eb0", "scanner": "scanner-primary", "fingerprint": "a9080ee701875b98", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/observability-tests.yml"}, "region": {"startLine": 565}}}]}, {"ruleId": "scanner-07f138e79f7cfca1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9e540a1c16e582f0", "scanner": "scanner-primary", "fingerprint": "07f138e79f7cfca1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/cdk-deploy.yml"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-07f138e79f7cfca1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "935c844070e57195", "scanner": "scanner-primary", "fingerprint": "07f138e79f7cfca1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/cdk-deploy.yml"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-07f138e79f7cfca1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "32583d1cf9be4312", "scanner": "scanner-primary", "fingerprint": "07f138e79f7cfca1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/cdk-deploy.yml"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-07f138e79f7cfca1", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3e1016f41e235c30", "scanner": "scanner-primary", "fingerprint": "07f138e79f7cfca1", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/cdk-deploy.yml"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-07f138e79f7cfca1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7f02379ff03672fd", "scanner": "scanner-primary", "fingerprint": "07f138e79f7cfca1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/cdk-deploy.yml"}, "region": {"startLine": 122}}}]}, {"ruleId": "scanner-07f138e79f7cfca1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e44961917bb6ccf9", "scanner": "scanner-primary", "fingerprint": "07f138e79f7cfca1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/cdk-deploy.yml"}, "region": {"startLine": 161}}}]}, {"ruleId": "scanner-07f138e79f7cfca1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9e540a1c16e582f0", "scanner": "scanner-primary", "fingerprint": "07f138e79f7cfca1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/cdk-deploy.yml"}, "region": {"startLine": 180}}}]}, {"ruleId": "scanner-07f138e79f7cfca1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "935c844070e57195", "scanner": "scanner-primary", "fingerprint": "07f138e79f7cfca1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/cdk-deploy.yml"}, "region": {"startLine": 183}}}]}, {"ruleId": "scanner-07f138e79f7cfca1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "32583d1cf9be4312", "scanner": "scanner-primary", "fingerprint": "07f138e79f7cfca1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/cdk-deploy.yml"}, "region": {"startLine": 190}}}]}, {"ruleId": "scanner-07f138e79f7cfca1", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3e1016f41e235c30", "scanner": "scanner-primary", "fingerprint": "07f138e79f7cfca1", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/cdk-deploy.yml"}, "region": {"startLine": 196}}}]}, {"ruleId": "scanner-07f138e79f7cfca1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9e540a1c16e582f0", "scanner": "scanner-primary", "fingerprint": "07f138e79f7cfca1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/cdk-deploy.yml"}, "region": {"startLine": 269}}}]}, {"ruleId": "scanner-07f138e79f7cfca1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "935c844070e57195", "scanner": "scanner-primary", "fingerprint": "07f138e79f7cfca1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/cdk-deploy.yml"}, "region": {"startLine": 272}}}]}, {"ruleId": "scanner-07f138e79f7cfca1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "32583d1cf9be4312", "scanner": "scanner-primary", "fingerprint": "07f138e79f7cfca1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/cdk-deploy.yml"}, "region": {"startLine": 279}}}]}, {"ruleId": "scanner-07f138e79f7cfca1", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3e1016f41e235c30", "scanner": "scanner-primary", "fingerprint": "07f138e79f7cfca1", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/cdk-deploy.yml"}, "region": {"startLine": 285}}}]}, {"ruleId": "scanner-4a04d9e23215ac02", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f7949e4bc71f86bf", "scanner": "scanner-primary", "fingerprint": "4a04d9e23215ac02", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/ci.yml"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-4a04d9e23215ac02", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ad314c423437deb4", "scanner": "scanner-primary", "fingerprint": "4a04d9e23215ac02", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/ci.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-4a04d9e23215ac02", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fe8b2934a1cfcada", "scanner": "scanner-primary", "fingerprint": "4a04d9e23215ac02", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/ci.yml"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-4a04d9e23215ac02", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fe8b2934a1cfcada", "scanner": "scanner-primary", "fingerprint": "4a04d9e23215ac02", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/ci.yml"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-4a04d9e23215ac02", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7a4dd2274a1e34d1", "scanner": "scanner-primary", "fingerprint": "4a04d9e23215ac02", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/ci.yml"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-4a04d9e23215ac02", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0bff7c0436be6fc1", "scanner": "scanner-primary", "fingerprint": "4a04d9e23215ac02", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/ci.yml"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-4a04d9e23215ac02", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f7949e4bc71f86bf", "scanner": "scanner-primary", "fingerprint": "4a04d9e23215ac02", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/ci.yml"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-4a04d9e23215ac02", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7a4dd2274a1e34d1", "scanner": "scanner-primary", "fingerprint": "4a04d9e23215ac02", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/ci.yml"}, "region": {"startLine": 138}}}]}, {"ruleId": "scanner-4a04d9e23215ac02", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "26dc474607d9ee76", "scanner": "scanner-primary", "fingerprint": "4a04d9e23215ac02", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/ci.yml"}, "region": {"startLine": 153}}}]}, {"ruleId": "scanner-4a04d9e23215ac02", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f096282bc7488b97", "scanner": "scanner-primary", "fingerprint": "4a04d9e23215ac02", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/ci.yml"}, "region": {"startLine": 172}}}]}, {"ruleId": "scanner-4a04d9e23215ac02", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "26dc474607d9ee76", "scanner": "scanner-primary", "fingerprint": "4a04d9e23215ac02", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/ci.yml"}, "region": {"startLine": 189}}}]}, {"ruleId": "scanner-4a04d9e23215ac02", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e7283454f1d8a737", "scanner": "scanner-primary", "fingerprint": "4a04d9e23215ac02", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/ci.yml"}, "region": {"startLine": 209}}}]}, {"ruleId": "scanner-4a04d9e23215ac02", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f096282bc7488b97", "scanner": "scanner-primary", "fingerprint": "4a04d9e23215ac02", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/ci.yml"}, "region": {"startLine": 224}}}]}, {"ruleId": "scanner-be7a37a76b6e9fa9", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "0f931a7e8301e571", "scanner": "scanner-primary", "fingerprint": "be7a37a76b6e9fa9", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/ci.yml"}, "region": {"startLine": 237}}}]}, {"ruleId": "scanner-4a04d9e23215ac02", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4dd96b61f1e632c9", "scanner": "scanner-primary", "fingerprint": "4a04d9e23215ac02", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/ci.yml"}, "region": {"startLine": 245}}}]}, {"ruleId": "scanner-4a04d9e23215ac02", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f7949e4bc71f86bf", "scanner": "scanner-primary", "fingerprint": "4a04d9e23215ac02", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/ci.yml"}, "region": {"startLine": 257}}}]}, {"ruleId": "scanner-4a04d9e23215ac02", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7a4dd2274a1e34d1", "scanner": "scanner-primary", "fingerprint": "4a04d9e23215ac02", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/ci.yml"}, "region": {"startLine": 271}}}]}, {"ruleId": "scanner-4a04d9e23215ac02", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f7949e4bc71f86bf", "scanner": "scanner-primary", "fingerprint": "4a04d9e23215ac02", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/ci.yml"}, "region": {"startLine": 282}}}]}, {"ruleId": "scanner-4a04d9e23215ac02", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7a4dd2274a1e34d1", "scanner": "scanner-primary", "fingerprint": "4a04d9e23215ac02", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/ci.yml"}, "region": {"startLine": 304}}}]}, {"ruleId": "scanner-4a04d9e23215ac02", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f096282bc7488b97", "scanner": "scanner-primary", "fingerprint": "4a04d9e23215ac02", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/ci.yml"}, "region": {"startLine": 317}}}]}, {"ruleId": "scanner-f7a3649fd19fdad0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ab3eb96b420db532", "scanner": "scanner-primary", "fingerprint": "f7a3649fd19fdad0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/terraform-plan-apply.yml"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-f7a3649fd19fdad0", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3787d192235d53ec", "scanner": "scanner-primary", "fingerprint": "f7a3649fd19fdad0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/terraform-plan-apply.yml"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-f7a3649fd19fdad0", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "76cc894285d5834b", "scanner": "scanner-primary", "fingerprint": "f7a3649fd19fdad0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/terraform-plan-apply.yml"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-f7a3649fd19fdad0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fd4815731e4d248e", "scanner": "scanner-primary", "fingerprint": "f7a3649fd19fdad0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/terraform-plan-apply.yml"}, "region": {"startLine": 106}}}]}, {"ruleId": "scanner-f7a3649fd19fdad0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "71e020cac70b6d74", "scanner": "scanner-primary", "fingerprint": "f7a3649fd19fdad0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/terraform-plan-apply.yml"}, "region": {"startLine": 139}}}]}, {"ruleId": "scanner-f7a3649fd19fdad0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ab3eb96b420db532", "scanner": "scanner-primary", "fingerprint": "f7a3649fd19fdad0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/terraform-plan-apply.yml"}, "region": {"startLine": 158}}}]}, {"ruleId": "scanner-f7a3649fd19fdad0", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3787d192235d53ec", "scanner": "scanner-primary", "fingerprint": "f7a3649fd19fdad0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/terraform-plan-apply.yml"}, "region": {"startLine": 161}}}]}, {"ruleId": "scanner-f7a3649fd19fdad0", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "76cc894285d5834b", "scanner": "scanner-primary", "fingerprint": "f7a3649fd19fdad0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/terraform-plan-apply.yml"}, "region": {"startLine": 166}}}]}, {"ruleId": "scanner-f7a3649fd19fdad0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ab3eb96b420db532", "scanner": "scanner-primary", "fingerprint": "f7a3649fd19fdad0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/terraform-plan-apply.yml"}, "region": {"startLine": 228}}}]}, {"ruleId": "scanner-f7a3649fd19fdad0", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3787d192235d53ec", "scanner": "scanner-primary", "fingerprint": "f7a3649fd19fdad0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/terraform-plan-apply.yml"}, "region": {"startLine": 231}}}]}, {"ruleId": "scanner-f7a3649fd19fdad0", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "76cc894285d5834b", "scanner": "scanner-primary", "fingerprint": "f7a3649fd19fdad0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/terraform-plan-apply.yml"}, "region": {"startLine": 236}}}]}, {"ruleId": "scanner-f7a3649fd19fdad0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "71e020cac70b6d74", "scanner": "scanner-primary", "fingerprint": "f7a3649fd19fdad0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/terraform-plan-apply.yml"}, "region": {"startLine": 258}}}]}, {"ruleId": "scanner-f7a3649fd19fdad0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ab3eb96b420db532", "scanner": "scanner-primary", "fingerprint": "f7a3649fd19fdad0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/terraform-plan-apply.yml"}, "region": {"startLine": 278}}}]}, {"ruleId": "scanner-f7a3649fd19fdad0", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3787d192235d53ec", "scanner": "scanner-primary", "fingerprint": "f7a3649fd19fdad0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/terraform-plan-apply.yml"}, "region": {"startLine": 281}}}]}, {"ruleId": "scanner-f7a3649fd19fdad0", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "76cc894285d5834b", "scanner": "scanner-primary", "fingerprint": "f7a3649fd19fdad0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/terraform-plan-apply.yml"}, "region": {"startLine": 286}}}]}, {"ruleId": "scanner-f7a3649fd19fdad0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "555ff255d1ee3f9b", "scanner": "scanner-primary", "fingerprint": "f7a3649fd19fdad0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/terraform-plan-apply.yml"}, "region": {"startLine": 293}}}]}, {"ruleId": "scanner-f7a3649fd19fdad0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ab3eb96b420db532", "scanner": "scanner-primary", "fingerprint": "f7a3649fd19fdad0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/terraform-plan-apply.yml"}, "region": {"startLine": 343}}}]}, {"ruleId": "scanner-b19299f70378cd38", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "f996a1959699ca2f", "scanner": "scanner-primary", "fingerprint": "b19299f70378cd38", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/terraform-plan-apply.yml"}, "region": {"startLine": 346}}}]}, {"ruleId": "scanner-f7a3649fd19fdad0", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "150f5853489e2097", "scanner": "scanner-primary", "fingerprint": "f7a3649fd19fdad0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/.github/workflows/terraform-plan-apply.yml"}, "region": {"startLine": 355}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cb88b360dab5f9c4", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9f937b09c82df52f", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd992aa9c96def55", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fd237239dc5af866", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 62}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "13c35e6ebdd7ec38", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cb88b360dab5f9c4", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 107}}}]}, {"ruleId": "scanner-e96c206413ab67cd", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "5d5aec07ab56ccb3", "scanner": "scanner-primary", "fingerprint": "e96c206413ab67cd", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 118}}}]}, {"ruleId": "scanner-e96c206413ab67cd", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "5d5aec07ab56ccb3", "scanner": "scanner-primary", "fingerprint": "e96c206413ab67cd", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 125}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7de2efa616fb03cd", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 132}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cb88b360dab5f9c4", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 145}}}]}, {"ruleId": "scanner-e96c206413ab67cd", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "5f861839edb2cc6d", "scanner": "scanner-primary", "fingerprint": "e96c206413ab67cd", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 148}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a3bc2550676d616e", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 156}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cb88b360dab5f9c4", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 166}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9f937b09c82df52f", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 169}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd992aa9c96def55", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 174}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "13c35e6ebdd7ec38", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 227}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cb88b360dab5f9c4", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 242}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fad2dbf779cb4ef6", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 245}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fad2dbf779cb4ef6", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 251}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "13c35e6ebdd7ec38", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 297}}}]}, {"ruleId": "scanner-10ac55d66f176df4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "be67b1cf9dad70fb", "scanner": "scanner-primary", "fingerprint": "10ac55d66f176df4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/performance-monitoring.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-10ac55d66f176df4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6bb184c89961218b", "scanner": "scanner-primary", "fingerprint": "10ac55d66f176df4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/performance-monitoring.yml"}, "region": {"startLine": 208}}}]}, {"ruleId": "scanner-10ac55d66f176df4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "be67b1cf9dad70fb", "scanner": "scanner-primary", "fingerprint": "10ac55d66f176df4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/performance-monitoring.yml"}, "region": {"startLine": 265}}}]}, {"ruleId": "scanner-10ac55d66f176df4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6bb184c89961218b", "scanner": "scanner-primary", "fingerprint": "10ac55d66f176df4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/performance-monitoring.yml"}, "region": {"startLine": 342}}}]}, {"ruleId": "scanner-10ac55d66f176df4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "be67b1cf9dad70fb", "scanner": "scanner-primary", "fingerprint": "10ac55d66f176df4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/performance-monitoring.yml"}, "region": {"startLine": 353}}}]}, {"ruleId": "scanner-10ac55d66f176df4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6e7de1cbd0c697f4", "scanner": "scanner-primary", "fingerprint": "10ac55d66f176df4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/performance-monitoring.yml"}, "region": {"startLine": 356}}}]}, {"ruleId": "scanner-10ac55d66f176df4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6bb184c89961218b", "scanner": "scanner-primary", "fingerprint": "10ac55d66f176df4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/performance-monitoring.yml"}, "region": {"startLine": 407}}}]}, {"ruleId": "scanner-10ac55d66f176df4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "be67b1cf9dad70fb", "scanner": "scanner-primary", "fingerprint": "10ac55d66f176df4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/performance-monitoring.yml"}, "region": {"startLine": 420}}}]}, {"ruleId": "scanner-10ac55d66f176df4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "be67b1cf9dad70fb", "scanner": "scanner-primary", "fingerprint": "10ac55d66f176df4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/performance-monitoring.yml"}, "region": {"startLine": 486}}}]}, {"ruleId": "scanner-10ac55d66f176df4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6bb184c89961218b", "scanner": "scanner-primary", "fingerprint": "10ac55d66f176df4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/performance-monitoring.yml"}, "region": {"startLine": 518}}}]}, {"ruleId": "scanner-10ac55d66f176df4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "432b11b93fccab2d", "scanner": "scanner-primary", "fingerprint": "10ac55d66f176df4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/performance-monitoring.yml"}, "region": {"startLine": 530}}}]}, {"ruleId": "scanner-10ac55d66f176df4", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "07b89fafbd77abd4", "scanner": "scanner-primary", "fingerprint": "10ac55d66f176df4", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/performance-monitoring.yml"}, "region": {"startLine": 536}}}]}, {"ruleId": "scanner-10ac55d66f176df4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "432b11b93fccab2d", "scanner": "scanner-primary", "fingerprint": "10ac55d66f176df4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/performance-monitoring.yml"}, "region": {"startLine": 600}}}]}, {"ruleId": "scanner-10ac55d66f176df4", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9dc5c746d3110be3", "scanner": "scanner-primary", "fingerprint": "10ac55d66f176df4", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/performance-monitoring.yml"}, "region": {"startLine": 628}}}]}, {"ruleId": "scanner-50938428d65d50d7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7d8ae0dff2428da5", "scanner": "scanner-primary", "fingerprint": "50938428d65d50d7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/workflow-features.yml"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-50938428d65d50d7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0fb9b09c1273cd28", "scanner": "scanner-primary", "fingerprint": "50938428d65d50d7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/workflow-features.yml"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-50938428d65d50d7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7d8ae0dff2428da5", "scanner": "scanner-primary", "fingerprint": "50938428d65d50d7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/workflow-features.yml"}, "region": {"startLine": 123}}}]}, {"ruleId": "scanner-50938428d65d50d7", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3eafa9f3da53a345", "scanner": "scanner-primary", "fingerprint": "50938428d65d50d7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/workflow-features.yml"}, "region": {"startLine": 150}}}]}, {"ruleId": "scanner-50938428d65d50d7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "373b6c49fa7f66c7", "scanner": "scanner-primary", "fingerprint": "50938428d65d50d7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/workflow-features.yml"}, "region": {"startLine": 164}}}]}, {"ruleId": "scanner-50938428d65d50d7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0fb9b09c1273cd28", "scanner": "scanner-primary", "fingerprint": "50938428d65d50d7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/workflow-features.yml"}, "region": {"startLine": 185}}}]}, {"ruleId": "scanner-50938428d65d50d7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7d8ae0dff2428da5", "scanner": "scanner-primary", "fingerprint": "50938428d65d50d7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/workflow-features.yml"}, "region": {"startLine": 229}}}]}, {"ruleId": "scanner-50938428d65d50d7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "373b6c49fa7f66c7", "scanner": "scanner-primary", "fingerprint": "50938428d65d50d7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/workflow-features.yml"}, "region": {"startLine": 234}}}]}, {"ruleId": "scanner-54855621cc8769d3", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "dfaceeb72e8ba06e", "scanner": "scanner-primary", "fingerprint": "54855621cc8769d3", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/workflow-features.yml"}, "region": {"startLine": 331}}}]}, {"ruleId": "scanner-50938428d65d50d7", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f068ec86362346a8", "scanner": "scanner-primary", "fingerprint": "50938428d65d50d7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/workflow-features.yml"}, "region": {"startLine": 339}}}]}, {"ruleId": "scanner-50938428d65d50d7", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "03ee186da1f002c2", "scanner": "scanner-primary", "fingerprint": "50938428d65d50d7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/workflow-features.yml"}, "region": {"startLine": 345}}}]}, {"ruleId": "scanner-50938428d65d50d7", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "dd071b24dc58f86b", "scanner": "scanner-primary", "fingerprint": "50938428d65d50d7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/workflow-features.yml"}, "region": {"startLine": 350}}}]}, {"ruleId": "scanner-50938428d65d50d7", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "04dbb4cee477949e", "scanner": "scanner-primary", "fingerprint": "50938428d65d50d7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/workflow-features.yml"}, "region": {"startLine": 353}}}]}, {"ruleId": "scanner-50938428d65d50d7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7d8ae0dff2428da5", "scanner": "scanner-primary", "fingerprint": "50938428d65d50d7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/workflow-features.yml"}, "region": {"startLine": 388}}}]}, {"ruleId": "scanner-50938428d65d50d7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0fb9b09c1273cd28", "scanner": "scanner-primary", "fingerprint": "50938428d65d50d7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/workflow-features.yml"}, "region": {"startLine": 428}}}]}, {"ruleId": "scanner-50938428d65d50d7", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e974efc0f9f4c34c", "scanner": "scanner-primary", "fingerprint": "50938428d65d50d7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/workflow-features.yml"}, "region": {"startLine": 447}}}]}, {"ruleId": "scanner-50938428d65d50d7", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3f260270081f4b02", "scanner": "scanner-primary", "fingerprint": "50938428d65d50d7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/workflow-features.yml"}, "region": {"startLine": 455}}}]}, {"ruleId": "scanner-50938428d65d50d7", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a943f65478b8d376", "scanner": "scanner-primary", "fingerprint": "50938428d65d50d7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/workflow-features.yml"}, "region": {"startLine": 494}}}]}, {"ruleId": "scanner-50938428d65d50d7", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a943f65478b8d376", "scanner": "scanner-primary", "fingerprint": "50938428d65d50d7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/workflow-features.yml"}, "region": {"startLine": 507}}}]}, {"ruleId": "scanner-5faa667db6951d56", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e29cac11facb7df8", "scanner": "scanner-primary", "fingerprint": "5faa667db6951d56", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/database-maintenance.yml"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-5faa667db6951d56", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "56903fb6c8f92909", "scanner": "scanner-primary", "fingerprint": "5faa667db6951d56", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/database-maintenance.yml"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-5faa667db6951d56", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e29cac11facb7df8", "scanner": "scanner-primary", "fingerprint": "5faa667db6951d56", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/database-maintenance.yml"}, "region": {"startLine": 141}}}]}, {"ruleId": "scanner-5faa667db6951d56", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "56903fb6c8f92909", "scanner": "scanner-primary", "fingerprint": "5faa667db6951d56", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/database-maintenance.yml"}, "region": {"startLine": 168}}}]}, {"ruleId": "scanner-5faa667db6951d56", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e29cac11facb7df8", "scanner": "scanner-primary", "fingerprint": "5faa667db6951d56", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/database-maintenance.yml"}, "region": {"startLine": 211}}}]}, {"ruleId": "scanner-5faa667db6951d56", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e29cac11facb7df8", "scanner": "scanner-primary", "fingerprint": "5faa667db6951d56", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/database-maintenance.yml"}, "region": {"startLine": 274}}}]}, {"ruleId": "scanner-5faa667db6951d56", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "56903fb6c8f92909", "scanner": "scanner-primary", "fingerprint": "5faa667db6951d56", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/database-maintenance.yml"}, "region": {"startLine": 317}}}]}, {"ruleId": "scanner-5faa667db6951d56", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e29cac11facb7df8", "scanner": "scanner-primary", "fingerprint": "5faa667db6951d56", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/database-maintenance.yml"}, "region": {"startLine": 384}}}]}, {"ruleId": "scanner-5faa667db6951d56", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8c4c83acec776230", "scanner": "scanner-primary", "fingerprint": "5faa667db6951d56", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/database-maintenance.yml"}, "region": {"startLine": 511}}}]}, {"ruleId": "scanner-5faa667db6951d56", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "84f16ffe7fc51e97", "scanner": "scanner-primary", "fingerprint": "5faa667db6951d56", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/database-maintenance.yml"}, "region": {"startLine": 517}}}]}, {"ruleId": "scanner-532e87ed52c7ee8a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2e01d0a558fd8144", "scanner": "scanner-primary", "fingerprint": "532e87ed52c7ee8a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docs-qa.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-532e87ed52c7ee8a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f80854bbba4c2062", "scanner": "scanner-primary", "fingerprint": "532e87ed52c7ee8a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docs-qa.yml"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-532e87ed52c7ee8a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "19bd949ae72a6f65", "scanner": "scanner-primary", "fingerprint": "532e87ed52c7ee8a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docs-qa.yml"}, "region": {"startLine": 188}}}]}, {"ruleId": "scanner-532e87ed52c7ee8a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6f28a0cdb6172e15", "scanner": "scanner-primary", "fingerprint": "532e87ed52c7ee8a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docs-qa.yml"}, "region": {"startLine": 197}}}]}, {"ruleId": "scanner-532e87ed52c7ee8a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "00db3b9b5f4ae362", "scanner": "scanner-primary", "fingerprint": "532e87ed52c7ee8a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docs-qa.yml"}, "region": {"startLine": 236}}}]}, {"ruleId": "scanner-532e87ed52c7ee8a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6f28a0cdb6172e15", "scanner": "scanner-primary", "fingerprint": "532e87ed52c7ee8a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docs-qa.yml"}, "region": {"startLine": 243}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c21050f25dc92953", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0f6f2de4561c226b", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 130}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 143}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0f6f2de4561c226b", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 171}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 209}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 212}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c21050f25dc92953", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 219}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7d172dc6ca6c1740", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 285}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7d172dc6ca6c1740", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 293}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 307}}}]}, {"ruleId": "scanner-7f1e4527e6fecffa", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "e790d4d334398ef3", "scanner": "scanner-primary", "fingerprint": "7f1e4527e6fecffa", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 310}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "98ccee374d81e8ac", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 318}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "411f18519c38620b", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 324}}}]}, {"ruleId": "scanner-7f1e4527e6fecffa", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "79f530504d33d638", "scanner": "scanner-primary", "fingerprint": "7f1e4527e6fecffa", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 333}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 352}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d1b973fc5722bf04", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 355}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c3fda9e893c533ec", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 358}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c4b845a5807c42de", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 366}}}]}, {"ruleId": "scanner-64192a3c67110d01", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "87338a8bfcb6f435", "scanner": "scanner-primary", "fingerprint": "64192a3c67110d01", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e6670f32b5bd9075", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1f37420fcbc4160e", "scanner": "scanner-primary", "fingerprint": "e6670f32b5bd9075", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-cd.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-a359886445c3fc98", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "e7f64112d3efab92", "scanner": "scanner-primary", "fingerprint": "a359886445c3fc98", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-cd.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-e6670f32b5bd9075", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cb2b3c6b59c776d6", "scanner": "scanner-primary", "fingerprint": "e6670f32b5bd9075", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-cd.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-a359886445c3fc98", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "647490fea0f6bfe2", "scanner": "scanner-primary", "fingerprint": "a359886445c3fc98", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-cd.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-e6670f32b5bd9075", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5f8c5eb33aa37b6e", "scanner": "scanner-primary", "fingerprint": "e6670f32b5bd9075", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-cd.yml"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-e6670f32b5bd9075", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1f37420fcbc4160e", "scanner": "scanner-primary", "fingerprint": "e6670f32b5bd9075", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-cd.yml"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-e6670f32b5bd9075", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2da2b5dc0d69cebc", "scanner": "scanner-primary", "fingerprint": "e6670f32b5bd9075", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-cd.yml"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-e6670f32b5bd9075", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "169f0c27158aeeb7", "scanner": "scanner-primary", "fingerprint": "e6670f32b5bd9075", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-cd.yml"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-e6670f32b5bd9075", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1f37420fcbc4160e", "scanner": "scanner-primary", "fingerprint": "e6670f32b5bd9075", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-cd.yml"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-e6670f32b5bd9075", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "617ef63169385ff1", "scanner": "scanner-primary", "fingerprint": "e6670f32b5bd9075", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-cd.yml"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-e6670f32b5bd9075", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "169f0c27158aeeb7", "scanner": "scanner-primary", "fingerprint": "e6670f32b5bd9075", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-cd.yml"}, "region": {"startLine": 121}}}]}, {"ruleId": "scanner-e6670f32b5bd9075", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c412dcef98f85b1f", "scanner": "scanner-primary", "fingerprint": "e6670f32b5bd9075", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-cd.yml"}, "region": {"startLine": 130}}}]}, {"ruleId": "scanner-e6670f32b5bd9075", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1f37420fcbc4160e", "scanner": "scanner-primary", "fingerprint": "e6670f32b5bd9075", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-cd.yml"}, "region": {"startLine": 155}}}]}, {"ruleId": "scanner-e6670f32b5bd9075", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2da2b5dc0d69cebc", "scanner": "scanner-primary", "fingerprint": "e6670f32b5bd9075", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-cd.yml"}, "region": {"startLine": 158}}}]}, {"ruleId": "scanner-e6670f32b5bd9075", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "617ef63169385ff1", "scanner": "scanner-primary", "fingerprint": "e6670f32b5bd9075", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-cd.yml"}, "region": {"startLine": 164}}}]}, {"ruleId": "scanner-e6670f32b5bd9075", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1f37420fcbc4160e", "scanner": "scanner-primary", "fingerprint": "e6670f32b5bd9075", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-cd.yml"}, "region": {"startLine": 185}}}]}, {"ruleId": "scanner-e6670f32b5bd9075", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2da2b5dc0d69cebc", "scanner": "scanner-primary", "fingerprint": "e6670f32b5bd9075", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-cd.yml"}, "region": {"startLine": 188}}}]}, {"ruleId": "scanner-e6670f32b5bd9075", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c412dcef98f85b1f", "scanner": "scanner-primary", "fingerprint": "e6670f32b5bd9075", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-cd.yml"}, "region": {"startLine": 203}}}]}, {"ruleId": "scanner-e6670f32b5bd9075", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1f37420fcbc4160e", "scanner": "scanner-primary", "fingerprint": "e6670f32b5bd9075", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-cd.yml"}, "region": {"startLine": 217}}}]}, {"ruleId": "scanner-e6670f32b5bd9075", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4b7693bdd75e9bb6", "scanner": "scanner-primary", "fingerprint": "e6670f32b5bd9075", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-cd.yml"}, "region": {"startLine": 226}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "536862eb9e14dd5c", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "536862eb9e14dd5c", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "929bffda342e03e6", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 79}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "27c34398c2f542ba", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "929bffda342e03e6", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 130}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a7d5d218a0c2486d", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 142}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a7d5d218a0c2486d", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 153}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9039ad645c7aff14", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 173}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9039ad645c7aff14", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 202}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2644034c718fb80d", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2644034c718fb80d", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 126}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "07ecbb0be1c496f4", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 129}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "eeb76410cc935c30", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 135}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2644034c718fb80d", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 188}}}]}, {"ruleId": "scanner-e2dd8b4c4ff10305", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "d5667bbdbabd86aa", "scanner": "scanner-primary", "fingerprint": "e2dd8b4c4ff10305", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 191}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2644034c718fb80d", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 226}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "15b01c1e36e9f12b", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 229}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c71c4053464cd39c", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 232}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "632563f5562f1eb0", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 240}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ded411e384bd630b", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 249}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "632563f5562f1eb0", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 261}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ded411e384bd630b", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 270}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2644034c718fb80d", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 292}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f60d9951f1477eef", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 347}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2644034c718fb80d", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 365}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d69511d3224f2fba", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 368}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5c391bbb93e037c1", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 371}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2644034c718fb80d", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 430}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d69511d3224f2fba", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 433}}}]}, {"ruleId": "scanner-1838a141491ce38c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b8fd4f5048f96576", "scanner": "scanner-primary", "fingerprint": "1838a141491ce38c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4fbab4651f688e58", "level": "note", "message": {"text": "Very large file: apps/api/tests/gold_corpus/generate_synthetic.py (2501 lines)"}, "properties": {"repobilityId": "02f9584c3c3c629e", "scanner": "scanner-primary", "fingerprint": "4fbab4651f688e58", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-601818da19d7a016", "level": "note", "message": {"text": "Very large file: apps/api/trust_platform/compliance/compliance_engine.py (1150 lines)"}, "properties": {"repobilityId": "4f9e824a32d89f1f", "scanner": "scanner-primary", "fingerprint": "601818da19d7a016", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fcac2504c2e78121", "level": "note", "message": {"text": "Very large file: apps/api/app/rules/extractors.py (1804 lines)"}, "properties": {"repobilityId": "3874b988aec6f438", "scanner": "scanner-primary", "fingerprint": "fcac2504c2e78121", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-12d2caf92afd3403", "level": "note", "message": {"text": "Very large file: apps/api/app/services/lc_clause_library.py (3915 lines)"}, "properties": {"repobilityId": "0ca0703fd14133c9", "scanner": "scanner-primary", "fingerprint": "12d2caf92afd3403", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-895389ef981c1804", "level": "note", "message": {"text": "Very large file: apps/api/app/services/validator.py (2425 lines)"}, "properties": {"repobilityId": "4750c7a985568e34", "scanner": "scanner-primary", "fingerprint": "895389ef981c1804", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bc2e70a5c2d5f5d2", "level": "note", "message": {"text": "Very large file: apps/api/app/services/document_generator.py (1910 lines)"}, "properties": {"repobilityId": "9113f3b29b8000ab", "scanner": "scanner-primary", "fingerprint": "bc2e70a5c2d5f5d2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9265667dfd757eaf", "level": "note", "message": {"text": "Very large file: apps/api/app/services/price_verification.py (3246 lines)"}, "properties": {"repobilityId": "16655b4f5f3ff4aa", "scanner": "scanner-primary", "fingerprint": "9265667dfd757eaf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a87988773c1e9712", "level": "note", "message": {"text": "Very large file: apps/api/app/services/extraction_core/review_metadata.py (1973 lines)"}, "properties": {"repobilityId": "ef5c7c090a776897", "scanner": "scanner-primary", "fingerprint": "a87988773c1e9712", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a00288fef926f5dd", "level": "note", "message": {"text": "Very large file: apps/api/app/services/validation/crossdoc_validator.py (3151 lines)"}, "properties": {"repobilityId": "b41f39c3e999177a", "scanner": "scanner-primary", "fingerprint": "a00288fef926f5dd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a1ec0bf8837ee980", "level": "note", "message": {"text": "Very large file: apps/api/app/services/validation/doc_matcher.py (1467 lines)"}, "properties": {"repobilityId": "0c08f92c58231b20", "scanner": "scanner-primary", "fingerprint": "a1ec0bf8837ee980", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-76f8c383f3343891", "level": "note", "message": {"text": "Very large file: apps/api/app/services/validation/ai_validator.py (1637 lines)"}, "properties": {"repobilityId": "b26c00cb422ac61c", "scanner": "scanner-primary", "fingerprint": "76f8c383f3343891", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-247c07fb9eebd350", "level": "note", "message": {"text": "Very large file: apps/api/app/services/extraction/launch_pipeline.py (3998 lines)"}, "properties": {"repobilityId": "36285e14ac88604b", "scanner": "scanner-primary", "fingerprint": "247c07fb9eebd350", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-775f671a2b9c0988", "level": "note", "message": {"text": "Very large file: apps/api/app/services/extraction/ai_first_extractor.py (2553 lines)"}, "properties": {"repobilityId": "180c9de0fe3782d1", "scanner": "scanner-primary", "fingerprint": "775f671a2b9c0988", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-df247815beed773f", "level": "note", "message": {"text": "Very large file: apps/api/app/services/extraction/lc_document.py (1192 lines)"}, "properties": {"repobilityId": "9d2582d5dd729d62", "scanner": "scanner-primary", "fingerprint": "df247815beed773f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c4763ebbdb193fff", "level": "note", "message": {"text": "Very large file: apps/api/app/routers/validate.py (3691 lines)"}, "properties": {"repobilityId": "542e203a74790198", "scanner": "scanner-primary", "fingerprint": "c4763ebbdb193fff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-95eb1a5d488889d5", "level": "note", "message": {"text": "Very large file: apps/api/app/routers/rules_admin.py (1403 lines)"}, "properties": {"repobilityId": "369e8d454b112226", "scanner": "scanner-primary", "fingerprint": "95eb1a5d488889d5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e00e9eb8cc21345a", "level": "note", "message": {"text": "Very large file: apps/api/app/routers/price_verify.py (2155 lines)"}, "properties": {"repobilityId": "5bfb39bd8d4d2f4c", "scanner": "scanner-primary", "fingerprint": "e00e9eb8cc21345a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ae737f2712a89034", "level": "note", "message": {"text": "Very large file: apps/api/app/routers/hs_code.py (3489 lines)"}, "properties": {"repobilityId": "40e71ca9278e17d9", "scanner": "scanner-primary", "fingerprint": "ae737f2712a89034", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f2efa39d474aaf93", "level": "note", "message": {"text": "Very large file: apps/api/app/routers/lc_builder.py (4166 lines)"}, "properties": {"repobilityId": "b20497d8f81a8728", "scanner": "scanner-primary", "fingerprint": "f2efa39d474aaf93", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-07c0decfd7fda54e", "level": "note", "message": {"text": "Very large file: apps/api/app/routers/bank.py (2742 lines)"}, "properties": {"repobilityId": "9c7e9f5835fe9aaf", "scanner": "scanner-primary", "fingerprint": "07c0decfd7fda54e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5e599a12170b1679", "level": "note", "message": {"text": "Very large file: apps/api/app/routers/validate_v1_backup.py (2458 lines)"}, "properties": {"repobilityId": "b36b2c9bbb03ced4", "scanner": "scanner-primary", "fingerprint": "5e599a12170b1679", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7cd9aaf011fcd4c6", "level": "note", "message": {"text": "Very large file: apps/api/app/routers/tracking.py (1836 lines)"}, "properties": {"repobilityId": "d843837edddeda36", "scanner": "scanner-primary", "fingerprint": "7cd9aaf011fcd4c6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-395661024532aab3", "level": "note", "message": {"text": "Very large file: apps/api/app/routers/validation/result_finalization.py (1422 lines)"}, "properties": {"repobilityId": "0a966d50dac034ff", "scanner": "scanner-primary", "fingerprint": "395661024532aab3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ebf293e8cabb3a36", "level": "note", "message": {"text": "Very large file: apps/api/app/routers/validation/ocr_runtime.py (2452 lines)"}, "properties": {"repobilityId": "e6d0d4dde6be491c", "scanner": "scanner-primary", "fingerprint": "ebf293e8cabb3a36", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-edd7fa29920ba1cb", "level": "note", "message": {"text": "Very large file: apps/api/app/routers/validation/response_shaping.py (1297 lines)"}, "properties": {"repobilityId": "baac58ba95ad35b2", "scanner": "scanner-primary", "fingerprint": "edd7fa29920ba1cb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-374709469a495350", "level": "note", "message": {"text": "Very large file: apps/api/app/routers/validation/validation_execution.py (3499 lines)"}, "properties": {"repobilityId": "f00563b9fa664a0a", "scanner": "scanner-primary", "fingerprint": "374709469a495350", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d42c4d773116bffc", "level": "note", "message": {"text": "Very large file: apps/web/src/__tests__/resultsMapper.test.ts (1380 lines)"}, "properties": {"repobilityId": "de368df37822c7f9", "scanner": "scanner-primary", "fingerprint": "d42c4d773116bffc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-53c7dc8d3e0799ca", "level": "note", "message": {"text": "Very large file: apps/web/src/__tests__/ExporterResults.test.tsx (2650 lines)"}, "properties": {"repobilityId": "7069b7c4a497be5d", "scanner": "scanner-primary", "fingerprint": "53c7dc8d3e0799ca", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-91735958c8359c80", "level": "note", "message": {"text": "Very large file: apps/web/src/components/lcopilot/DocumentDetailsDrawer.tsx (1474 lines)"}, "properties": {"repobilityId": "1e509db82ad2867a", "scanner": "scanner-primary", "fingerprint": "91735958c8359c80", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bfea9ccf55846829", "level": "note", "message": {"text": "Very large file: apps/web/src/lib/lcopilot/resultsMapper.ts (1455 lines)"}, "properties": {"repobilityId": "bae2b3604f00a33f", "scanner": "scanner-primary", "fingerprint": "bfea9ccf55846829", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e1e10b77d316c57d", "level": "note", "message": {"text": "Very large file: apps/web/src/lib/admin/services/mock/mockAdminService.ts (1805 lines)"}, "properties": {"repobilityId": "9b833770c8f58641", "scanner": "scanner-primary", "fingerprint": "e1e10b77d316c57d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-72e2eb28aebda031", "level": "note", "message": {"text": "Very large file: apps/web/src/pages/ExportLCUpload.tsx (2088 lines)"}, "properties": {"repobilityId": "331d163c9707d0fe", "scanner": "scanner-primary", "fingerprint": "72e2eb28aebda031", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-167266b66f67c046", "level": "note", "message": {"text": "Very large file: apps/web/src/pages/ExporterResults.tsx (4223 lines)"}, "properties": {"repobilityId": "611d888d190dce5c", "scanner": "scanner-primary", "fingerprint": "167266b66f67c046", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-64ec100efdbfabf1", "level": "note", "message": {"text": "Very large file: apps/web/src/pages/settings/CompanyProfile.tsx (1442 lines)"}, "properties": {"repobilityId": "d32d3843bb896400", "scanner": "scanner-primary", "fingerprint": "64ec100efdbfabf1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f1f431514432fe6f", "level": "note", "message": {"text": "Very large file: apps/web/src/pages/tools/price-verify/VerifyPage.tsx (1587 lines)"}, "properties": {"repobilityId": "8fd0c18872abd075", "scanner": "scanner-primary", "fingerprint": "f1f431514432fe6f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c5019338dbe620a6", "level": "note", "message": {"text": "Very large file: apps/web/src/pages/tools/lc-builder/LCBuilderWizard.tsx (1632 lines)"}, "properties": {"repobilityId": "14baef0248d03a15", "scanner": "scanner-primary", "fingerprint": "c5019338dbe620a6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7f46447fd72884c9", "level": "note", "message": {"text": "Very large file: packages/shared-types/src/api.ts (1380 lines)"}, "properties": {"repobilityId": "bf579225a58fa4f7", "scanner": "scanner-primary", "fingerprint": "7f46447fd72884c9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea3b5e389d8c9c0f", "level": "note", "message": {"text": "Low test-to-source ratio"}, "properties": {"repobilityId": "ef7b2552cc00a375", "scanner": "scanner-primary", "fingerprint": "ea3b5e389d8c9c0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["tests"]}}, {"ruleId": "scanner-6eb8163aaeeccc49", "level": "note", "message": {"text": "88 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "6eb8163aaeeccc49", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "f0b07c788117fc94", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-4a9eb7dc7c6e3880", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/web/package.json"}, "properties": {"repobilityId": "6c1704bf24cf19ac", "scanner": "scanner-primary", "fingerprint": "4a9eb7dc7c6e3880", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-526a53ac2db6e202", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/shared-types/package.json"}, "properties": {"repobilityId": "72479dbac9b1ad66", "scanner": "scanner-primary", "fingerprint": "526a53ac2db6e202", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/shared-types/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "95c772ed558564b0", "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": "8eda12c97e37aba6", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "5c57f7c3d02886f7", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "4d0607591e5bd2aa", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "e77af39f95c90e3a", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "fbdb8411da62db4d", "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": "70dc5558b5ea774b", "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": "016913e40d51729c", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-529b51dd3d9ed92a", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/tasks/kb-mode-interaction.md"}, "properties": {"repobilityId": "7a9a3579529583dc", "scanner": "scanner-primary", "fingerprint": "529b51dd3d9ed92a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/BMad/tasks/kb-mode-interaction.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-125be172533a9c51", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/tasks/create-doc.md"}, "properties": {"repobilityId": "e79a2dff5e493f52", "scanner": "scanner-primary", "fingerprint": "125be172533a9c51", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/BMad/tasks/create-doc.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d50fd0e99ee6f966", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/tasks/advanced-elicitation.md"}, "properties": {"repobilityId": "214857a3078da3e9", "scanner": "scanner-primary", "fingerprint": "d50fd0e99ee6f966", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/BMad/tasks/advanced-elicitation.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-09c65730023ff856", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/tasks/index-docs.md"}, "properties": {"repobilityId": "35002803d19eb494", "scanner": "scanner-primary", "fingerprint": "09c65730023ff856", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/BMad/tasks/index-docs.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f7d3c552c76940a3", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: .claude/commands/BMad/tasks/shard-doc.md"}, "properties": {"repobilityId": "8b4535495e8d04aa", "scanner": "scanner-primary", "fingerprint": "f7d3c552c76940a3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/BMad/tasks/shard-doc.md"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-55efdc3901b85578", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/commands/BMad/tasks/nfr-assess.md"}, "properties": {"repobilityId": "08c44d612bb1f176", "scanner": "scanner-primary", "fingerprint": "55efdc3901b85578", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/BMad/tasks/nfr-assess.md"}, "region": {"startLine": 338}}}]}, {"ruleId": "scanner-e75ec045a2ca95cc", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/architect.md"}, "properties": {"repobilityId": "e27a6a4a03e23c43", "scanner": "scanner-primary", "fingerprint": "e75ec045a2ca95cc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/BMad/agents/architect.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-708cf4111e7d6d87", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/bmad-orchestrator.md"}, "properties": {"repobilityId": "db8c0c19cd7c79e6", "scanner": "scanner-primary", "fingerprint": "708cf4111e7d6d87", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/BMad/agents/bmad-orchestrator.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4541869135c7cf34", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/pm.md"}, "properties": {"repobilityId": "a38f2dd85dc670d2", "scanner": "scanner-primary", "fingerprint": "4541869135c7cf34", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/BMad/agents/pm.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2b6c64f278e6e028", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/dev.md"}, "properties": {"repobilityId": "77b9167fbc2f4ad5", "scanner": "scanner-primary", "fingerprint": "2b6c64f278e6e028", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/BMad/agents/dev.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e735bef5d966cf8e", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/sm.md"}, "properties": {"repobilityId": "b3547cecc041e4bb", "scanner": "scanner-primary", "fingerprint": "e735bef5d966cf8e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/BMad/agents/sm.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-705e9a52867dde09", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/analyst.md"}, "properties": {"repobilityId": "479b48a149915768", "scanner": "scanner-primary", "fingerprint": "705e9a52867dde09", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/BMad/agents/analyst.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3d6da25db32a8930", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/po.md"}, "properties": {"repobilityId": "f88f7f77693759b7", "scanner": "scanner-primary", "fingerprint": "3d6da25db32a8930", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/BMad/agents/po.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0c3a398b0a675905", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/bmad-master.md"}, "properties": {"repobilityId": "3b38ee7acedc849d", "scanner": "scanner-primary", "fingerprint": "0c3a398b0a675905", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/BMad/agents/bmad-master.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ce4ea94434ac2217", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/BMad/agents/ux-expert.md"}, "properties": {"repobilityId": "42ec645262c03982", "scanner": "scanner-primary", "fingerprint": "ce4ea94434ac2217", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/BMad/agents/ux-expert.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-27a3e3a84c358c84", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .cursor/rules/bmad/dev.mdc"}, "properties": {"repobilityId": "0ac52ba44923b6da", "scanner": "scanner-primary", "fingerprint": "27a3e3a84c358c84", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "cursor_rule"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".cursor/rules/bmad/dev.mdc"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6d469db0d749a71f", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .cursor/rules/bmad/analyst.mdc"}, "properties": {"repobilityId": "c0a3bed918823ea6", "scanner": "scanner-primary", "fingerprint": "6d469db0d749a71f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "cursor_rule"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".cursor/rules/bmad/analyst.mdc"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1ab170be75fca3b1", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .cursor/rules/bmad/pm.mdc"}, "properties": {"repobilityId": "5c3938c904daea95", "scanner": "scanner-primary", "fingerprint": "1ab170be75fca3b1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "cursor_rule"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".cursor/rules/bmad/pm.mdc"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f6d045d69c8f95d8", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .cursor/rules/bmad/sm.mdc"}, "properties": {"repobilityId": "b26a6d1673c90437", "scanner": "scanner-primary", "fingerprint": "f6d045d69c8f95d8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "cursor_rule"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".cursor/rules/bmad/sm.mdc"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-46fc6a0b332de265", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .cursor/rules/bmad/ux-expert.mdc"}, "properties": {"repobilityId": "56d17e6aae8e02ff", "scanner": "scanner-primary", "fingerprint": "46fc6a0b332de265", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "cursor_rule"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".cursor/rules/bmad/ux-expert.mdc"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b36d09fc07d49092", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .cursor/rules/bmad/po.mdc"}, "properties": {"repobilityId": "dd38b00a5c173832", "scanner": "scanner-primary", "fingerprint": "b36d09fc07d49092", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "cursor_rule"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".cursor/rules/bmad/po.mdc"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-27dda224638db817", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .cursor/rules/bmad/architect.mdc"}, "properties": {"repobilityId": "4eafd01bdef51e5a", "scanner": "scanner-primary", "fingerprint": "27dda224638db817", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "cursor_rule"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".cursor/rules/bmad/architect.mdc"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1abb42f8d08fdf55", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .cursor/rules/bmad/bmad-master.mdc"}, "properties": {"repobilityId": "f5e7174130e189df", "scanner": "scanner-primary", "fingerprint": "1abb42f8d08fdf55", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "cursor_rule"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".cursor/rules/bmad/bmad-master.mdc"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bb7e988116959a2a", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .cursor/rules/bmad/bmad-orchestrator.mdc"}, "properties": {"repobilityId": "7b2ea92fe5fcf4e8", "scanner": "scanner-primary", "fingerprint": "bb7e988116959a2a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "cursor_rule"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".cursor/rules/bmad/bmad-orchestrator.mdc"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3f78c655f6a3fe92", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 setup_db.py:60"}, "properties": {"repobilityId": "bd6c448e544992d5", "scanner": "scanner-primary", "fingerprint": "3f78c655f6a3fe92", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c45cd509eb136f50", "level": "note", "message": {"text": "Legacy-named symbol `build_document_extraction_v1` in tests/extraction_observability_exposure_test.py:26"}, "properties": {"repobilityId": "571cadf283d2aa54", "scanner": "scanner-primary", "fingerprint": "c45cd509eb136f50", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d1835b9be37db7a7", "level": "note", "message": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/lcopilot_patchset_d_test.py:50"}, "properties": {"repobilityId": "ee47e54dacefd420", "scanner": "scanner-primary", "fingerprint": "d1835b9be37db7a7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-75cc14abedbb6ffb", "level": "note", "message": {"text": "Legacy-named symbol `build_document_extraction_v1` in tests/lcopilot_patchset_c_test.py:35"}, "properties": {"repobilityId": "8f7c538f37dae880", "scanner": "scanner-primary", "fingerprint": "75cc14abedbb6ffb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-28870bbe885c6b97", "level": "note", "message": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/patch_j_ocr_adapter_runtime_payload_fix_test.py:58"}, "properties": {"repobilityId": "291eb8b2af3a6094", "scanner": "scanner-primary", "fingerprint": "28870bbe885c6b97", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a81a98b25ba37fda", "level": "note", "message": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/patch_m_ocr_health_diagnostics_test.py:72"}, "properties": {"repobilityId": "0a24dcbce3008051", "scanner": "scanner-primary", "fingerprint": "a81a98b25ba37fda", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ff20e6e696fffbd9", "level": "note", "message": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/patch_i_top3_field_lift_stage_tuning_test.py:46"}, "properties": {"repobilityId": "18b547bba075ff46", "scanner": "scanner-primary", "fingerprint": "ff20e6e696fffbd9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4df4d60bbdf52c1c", "level": "note", "message": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/ocr_runtime_audit_patch_test.py:46"}, "properties": {"repobilityId": "a0e20c9af8b2771c", "scanner": "scanner-primary", "fingerprint": "4df4d60bbdf52c1c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3964a9f8e07d13a4", "level": "note", "message": {"text": "Legacy-named symbol `extraction_artifacts_v1` in tests/patch_k_plaintext_parser_lift_confidence_test.py:33"}, "properties": {"repobilityId": "586ec3ee1e5c2684", "scanner": "scanner-primary", "fingerprint": "3964a9f8e07d13a4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bd79d71cce9253c5", "level": "note", "message": {"text": "Legacy-named symbol `extraction_artifacts_v1` in tests/extraction_stabilization_cycle2_test.py:53"}, "properties": {"repobilityId": "d9965a69bcffff5a", "scanner": "scanner-primary", "fingerprint": "bd79d71cce9253c5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-42b90b3255c951d1", "level": "note", "message": {"text": "Legacy-named symbol `build_issue_provenance_v1` in tests/phase_c3_reason_surface_spec.py:56"}, "properties": {"repobilityId": "5939f90ca118002a", "scanner": "scanner-primary", "fingerprint": "42b90b3255c951d1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-17c7a2f4e55b9cb6", "level": "note", "message": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/lcopilot_patchset_e_test.py:38"}, "properties": {"repobilityId": "27952d9d5842a884", "scanner": "scanner-primary", "fingerprint": "17c7a2f4e55b9cb6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bffd7dc79d408d41", "level": "note", "message": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in tests/patch_h_ocr_compatibility_stage_promotion_test.py:49"}, "properties": {"repobilityId": "0d9cc181c96b6ac9", "scanner": "scanner-primary", "fingerprint": "bffd7dc79d408d41", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5de04dd29db89bb7", "level": "note", "message": {"text": "Legacy-named symbol `build_issue_provenance_v1` in tests/test_sprint_t1_2_p1_regression_harness.py:16"}, "properties": {"repobilityId": "b4180834ac5e02fa", "scanner": "scanner-primary", "fingerprint": "5de04dd29db89bb7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a74307d85b6240ae", "level": "note", "message": {"text": "Legacy-named symbol `extraction_artifacts_v1` in tests/patch_l_evidence_binding_date_issuer_test.py:85"}, "properties": {"repobilityId": "912d6b62ffb18948", "scanner": "scanner-primary", "fingerprint": "a74307d85b6240ae", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-35671e5b6357bbfd", "level": "note", "message": {"text": "Stub function `optimize_lambda_init` (body is just `pass`/`return`) \u2014 apps/api/main.py:52"}, "properties": {"repobilityId": "4b832715ce515c29", "scanner": "scanner-primary", "fingerprint": "35671e5b6357bbfd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-91213fb7d945b1b3", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/validator_lc_ops_runtime_compatibility_test.py:121"}, "properties": {"repobilityId": "d7f4a4341ae1ba87", "scanner": "scanner-primary", "fingerprint": "91213fb7d945b1b3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2ab13399e1023589", "level": "note", "message": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/lc_facts_test.py:140"}, "properties": {"repobilityId": "741684536507a2ee", "scanner": "scanner-primary", "fingerprint": "2ab13399e1023589", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0c60b6ab966f7446", "level": "note", "message": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/insurance_facts_test.py:124"}, "properties": {"repobilityId": "e855a7b8e9144e5b", "scanner": "scanner-primary", "fingerprint": "0c60b6ab966f7446", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9a3c752f468a6c75", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_47a_requirements_graph_continuity_test.py:11"}, "properties": {"repobilityId": "754d2b1ecd479232", "scanner": "scanner-primary", "fingerprint": "9a3c752f468a6c75", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c6db9850d420ba50", "level": "note", "message": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/issues_pipeline_ai_provisional_test.py:55"}, "properties": {"repobilityId": "8c920022b55c3f52", "scanner": "scanner-primary", "fingerprint": "c6db9850d420ba50", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-52b8ae8604359094", "level": "note", "message": {"text": "Legacy-named symbol `sanitize_public_document_contract_v1` in apps/api/tests/document_builder_review_signal_test.py:33"}, "properties": {"repobilityId": "4ec4eee20e4dc988", "scanner": "scanner-primary", "fingerprint": "52b8ae8604359094", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-67b7b3c6c022b652", "level": "note", "message": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/insurance_validation_context_test.py:27"}, "properties": {"repobilityId": "c613c3e424aafff4", "scanner": "scanner-primary", "fingerprint": "67b7b3c6c022b652", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3a9969d0140e3ca8", "level": "note", "message": {"text": "Legacy-named symbol `build_requirements_graph_v1` in apps/api/tests/validation_execution_lc_facts_continuity_test.py:17"}, "properties": {"repobilityId": "436dea0ff86f5a54", "scanner": "scanner-primary", "fingerprint": "3a9969d0140e3ca8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9b444520ec272550", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/lc_validation_context_test.py:40"}, "properties": {"repobilityId": "357dfb0c08dde2c5", "scanner": "scanner-primary", "fingerprint": "9b444520ec272550", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-546d8d3f9952ae5c", "level": "note", "message": {"text": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_inspection_continuity_test.py:21"}, "properties": {"repobilityId": "f178e545413dc1e0", "scanner": "scanner-primary", "fingerprint": "546d8d3f9952ae5c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a671655f7fea7e8a", "level": "note", "message": {"text": "Legacy-named symbol `structured_result_v1` in apps/api/tests/test_jobs_public_results_payload_shape.py:51"}, "properties": {"repobilityId": "3fbd73dab5cee308", "scanner": "scanner-primary", "fingerprint": "a671655f7fea7e8a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-647b66a474719b34", "level": "note", "message": {"text": "Legacy-named symbol `sanitize_public_document_contract_v1` in apps/api/tests/response_shaping_review_signal_test.py:24"}, "properties": {"repobilityId": "1ae2475ac4db9f0f", "scanner": "scanner-primary", "fingerprint": "647b66a474719b34", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c9a68f522fdd739f", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/presentation_contract_continuity_test.py:223"}, "properties": {"repobilityId": "d021c5ee468beb75", "scanner": "scanner-primary", "fingerprint": "c9a68f522fdd739f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f47c5ef80c41580d", "level": "note", "message": {"text": "Legacy-named symbol `processing_summary_v2` in apps/api/tests/test_day1_contract.py:6"}, "properties": {"repobilityId": "f5a6ab3c40c35f5b", "scanner": "scanner-primary", "fingerprint": "f47c5ef80c41580d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e23b47131c93ae29", "level": "note", "message": {"text": "Legacy-named symbol `mt700_v1` in apps/api/tests/mt700_timeline_continuity_test.py:259"}, "properties": {"repobilityId": "2f277e2b55afad31", "scanner": "scanner-primary", "fingerprint": "e23b47131c93ae29", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-aab9b99e7aa1b3fe", "level": "note", "message": {"text": "Legacy-named symbol `build_lc_requirements_graph_v1` in apps/api/tests/lc_workflow_live_route_test.py:266"}, "properties": {"repobilityId": "202b720fbd83ccea", "scanner": "scanner-primary", "fingerprint": "aab9b99e7aa1b3fe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fa4ce3197ed0356d", "level": "note", "message": {"text": "Legacy-named symbol `doc_legacy` in apps/api/tests/lc_document_test.py:748"}, "properties": {"repobilityId": "577a84db081d6814", "scanner": "scanner-primary", "fingerprint": "fa4ce3197ed0356d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8a10647cc6e077af", "level": "note", "message": {"text": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_invoice_continuity_test.py:33"}, "properties": {"repobilityId": "091143260b252458", "scanner": "scanner-primary", "fingerprint": "8a10647cc6e077af", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-59e792b3d6437ff7", "level": "note", "message": {"text": "Legacy-named symbol `requirements_structured_v1` in apps/api/tests/rule_evaluator_applies_if_runtime_test.py:26"}, "properties": {"repobilityId": "d6e24265c100b93f", "scanner": "scanner-primary", "fingerprint": "59e792b3d6437ff7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f0887d2070ee374b", "level": "note", "message": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in apps/api/tests/ocr_runtime_continuity_test.py:84"}, "properties": {"repobilityId": "3baf9968d30e9cef", "scanner": "scanner-primary", "fingerprint": "f0887d2070ee374b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-97a8755d81e88430", "level": "note", "message": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/inspection_validation_context_test.py:27"}, "properties": {"repobilityId": "aeb4e803d84c958f", "scanner": "scanner-primary", "fingerprint": "97a8755d81e88430", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7f5ddae0b7c04a26", "level": "note", "message": {"text": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_coo_continuity_test.py:21"}, "properties": {"repobilityId": "bff00372a4ca0518", "scanner": "scanner-primary", "fingerprint": "7f5ddae0b7c04a26", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b707d1078112f624", "level": "note", "message": {"text": "Legacy-named symbol `structured_result_v1` in apps/api/tests/public_validation_envelope_test.py:35"}, "properties": {"repobilityId": "0d16a64ab0490fa1", "scanner": "scanner-primary", "fingerprint": "b707d1078112f624", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a3c1735b61624525", "level": "note", "message": {"text": "Legacy-named symbol `materialize_document_fact_graph_v1` in apps/api/tests/validation_execution_insurance_rule_context_test.py:43"}, "properties": {"repobilityId": "30327903cbbaae89", "scanner": "scanner-primary", "fingerprint": "a3c1735b61624525", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-df87540067561cde", "level": "note", "message": {"text": "Legacy-named symbol `test_infer_document_requirements_prefers_requirements_graph_v1` in apps/api/tests/validator_requirements_graph_test.py:87"}, "properties": {"repobilityId": "5971361d1f756560", "scanner": "scanner-primary", "fingerprint": "df87540067561cde", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2e010be95cf4fe29", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_amount_tolerance_test.py:87"}, "properties": {"repobilityId": "2f87cd6f9d5a6d61", "scanner": "scanner-primary", "fingerprint": "2e010be95cf4fe29", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a333fa3b470b08c6", "level": "note", "message": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/packing_list_validation_context_test.py:27"}, "properties": {"repobilityId": "e8243856a91e276c", "scanner": "scanner-primary", "fingerprint": "a333fa3b470b08c6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2092c9cd055d5645", "level": "note", "message": {"text": "Legacy-named symbol `anchor_dictionary_v1` in apps/api/tests/test_day1_configs.py:16"}, "properties": {"repobilityId": "77e9b2dc84bb15c3", "scanner": "scanner-primary", "fingerprint": "2092c9cd055d5645", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5e59600aac649ad4", "level": "note", "message": {"text": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_packing_list_continuity_test.py:20"}, "properties": {"repobilityId": "ed5f1c0c1b5242a4", "scanner": "scanner-primary", "fingerprint": "5e59600aac649ad4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0802ad6b5d90e244", "level": "note", "message": {"text": "Legacy-named symbol `_build_document_extraction_v1` in apps/api/tests/session_setup_job_persistence_test.py:124"}, "properties": {"repobilityId": "87b56b04588d6bec", "scanner": "scanner-primary", "fingerprint": "0802ad6b5d90e244", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1bc86cf347544a16", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/mt700_required_docs_continuity_test.py:122"}, "properties": {"repobilityId": "67d048bac7f8ae6b", "scanner": "scanner-primary", "fingerprint": "1bc86cf347544a16", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0a88f886d5c9f06e", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/validation_execution_icc_precedence_test.py:364"}, "properties": {"repobilityId": "11d8170e62396e58", "scanner": "scanner-primary", "fingerprint": "0a88f886d5c9f06e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0c7b62fc94d15c1c", "level": "note", "message": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/field_override_continuity_test.py:77"}, "properties": {"repobilityId": "4bf28ca92caf5fc8", "scanner": "scanner-primary", "fingerprint": "0c7b62fc94d15c1c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ee23cb896a8a1f1a", "level": "note", "message": {"text": "Legacy-named symbol `_fake_build_processing_summary_v2` in apps/api/tests/session_refresh_continuity_test.py:116"}, "properties": {"repobilityId": "e21a6c4368ba0c21", "scanner": "scanner-primary", "fingerprint": "ee23cb896a8a1f1a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-95285aa5e4ba394c", "level": "note", "message": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/bl_facts_test.py:142"}, "properties": {"repobilityId": "1e2ca2759c521b1e", "scanner": "scanner-primary", "fingerprint": "95285aa5e4ba394c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9f5dc9872c92ac40", "level": "note", "message": {"text": "Legacy-named symbol `test_session_without_supplier_is_legacy` in apps/api/tests/test_agency.py:166"}, "properties": {"repobilityId": "bc7f4539c80b8bb4", "scanner": "scanner-primary", "fingerprint": "9f5dc9872c92ac40", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d2f1fb602d7538b5", "level": "note", "message": {"text": "Legacy-named symbol `validate_doc_v2` in apps/api/tests/validate_router_split_continuity_test.py:24"}, "properties": {"repobilityId": "fd1fef1b86ee54c7", "scanner": "scanner-primary", "fingerprint": "d2f1fb602d7538b5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e7b4410623b74082", "level": "note", "message": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/ai_validation_l3_anomaly_review_test.py:169"}, "properties": {"repobilityId": "d66aadf9073a916b", "scanner": "scanner-primary", "fingerprint": "e7b4410623b74082", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-23bee6d1b23966d4", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_47a_requirements_graph_test.py:106"}, "properties": {"repobilityId": "a5f7e0aec889d6b7", "scanner": "scanner-primary", "fingerprint": "23bee6d1b23966d4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1b666167b3640d3c", "level": "note", "message": {"text": "Legacy-named symbol `materialize_document_fact_graphs_v1` in apps/api/tests/extraction_resolution_continuity_test.py:94"}, "properties": {"repobilityId": "e24eab3e623c800f", "scanner": "scanner-primary", "fingerprint": "1b666167b3640d3c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6f013e580328ff3a", "level": "note", "message": {"text": "Legacy-named symbol `test_classify_semantic_is_other_in_v1` in apps/api/tests/authority_matrix_reconcile_test.py:65"}, "properties": {"repobilityId": "38bc38afcbb3c24a", "scanner": "scanner-primary", "fingerprint": "6f013e580328ff3a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-590a1e268ddea04d", "level": "note", "message": {"text": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_insurance_continuity_test.py:21"}, "properties": {"repobilityId": "6180f2687484c307", "scanner": "scanner-primary", "fingerprint": "590a1e268ddea04d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0851e82b4f342aa7", "level": "note", "message": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/bl_validation_context_test.py:26"}, "properties": {"repobilityId": "5608b63fdda8604d", "scanner": "scanner-primary", "fingerprint": "0851e82b4f342aa7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-914d3dd1bba6c659", "level": "note", "message": {"text": "Legacy-named symbol `materialize_document_fact_graph_v1` in apps/api/tests/fact_graph_lc_continuity_test.py:14"}, "properties": {"repobilityId": "291c2e0a1de9017f", "scanner": "scanner-primary", "fingerprint": "914d3dd1bba6c659", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4f16db03d282f252", "level": "note", "message": {"text": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/ai_first_structured_contract_test.py:107"}, "properties": {"repobilityId": "436650e6a6e12efd", "scanner": "scanner-primary", "fingerprint": "4f16db03d282f252", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0ea8b0160006de91", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_insurance_coverage_test.py:77"}, "properties": {"repobilityId": "6c7d21bebc1eff41", "scanner": "scanner-primary", "fingerprint": "0ea8b0160006de91", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bac3681ee8ef1dba", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_validator_runtime_compatibility_test.py:106"}, "properties": {"repobilityId": "5b94ea76518289a6", "scanner": "scanner-primary", "fingerprint": "bac3681ee8ef1dba", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2abb2aebd4f34821", "level": "note", "message": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/test_iso_runtime_shape.py:220"}, "properties": {"repobilityId": "cc8de032613a83ea", "scanner": "scanner-primary", "fingerprint": "2abb2aebd4f34821", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8683c9bcaf361f8e", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/document_set_requirements_graph_test.py:36"}, "properties": {"repobilityId": "d1906877fd342b62", "scanner": "scanner-primary", "fingerprint": "8683c9bcaf361f8e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d8067e070f91819b", "level": "note", "message": {"text": "Legacy-named symbol `materialize_document_fact_graphs_v1` in apps/api/tests/lc_fact_gate_continuity_test.py:9"}, "properties": {"repobilityId": "edbfef8299c9742d", "scanner": "scanner-primary", "fingerprint": "d8067e070f91819b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c0af118bd502380a", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/validator_ruleset_query_scope_test.py:135"}, "properties": {"repobilityId": "370efdccbae55e3e", "scanner": "scanner-primary", "fingerprint": "c0af118bd502380a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-54d36797ce836484", "level": "note", "message": {"text": "Legacy-named symbol `ai_layers_v1` in apps/api/tests/ai_validation_layer_projection_test.py:168"}, "properties": {"repobilityId": "a922451ceca0416b", "scanner": "scanner-primary", "fingerprint": "54d36797ce836484", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c8555e31315fd4c5", "level": "note", "message": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/invoice_validation_context_test.py:27"}, "properties": {"repobilityId": "4bf35f0085b3992c", "scanner": "scanner-primary", "fingerprint": "c8555e31315fd4c5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d3de01441499792f", "level": "note", "message": {"text": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_supporting_document_continuity_test.py:22"}, "properties": {"repobilityId": "72159343e6b58270", "scanner": "scanner-primary", "fingerprint": "d3de01441499792f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f1abd01d1fa0e5a2", "level": "note", "message": {"text": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/field_details_contract_continuity_test.py:32"}, "properties": {"repobilityId": "ced5f95bc817b72a", "scanner": "scanner-primary", "fingerprint": "f1abd01d1fa0e5a2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-21d608518c2860d8", "level": "note", "message": {"text": "Legacy-named symbol `build_lc_requirements_graph_v1` in apps/api/tests/lc_requirements_graph_test.py:12"}, "properties": {"repobilityId": "e857b8aea7eb541e", "scanner": "scanner-primary", "fingerprint": "21d608518c2860d8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0c2882b590044644", "level": "note", "message": {"text": "Legacy-named symbol `materialize_document_fact_graph_v1` in apps/api/tests/validation_execution_insurance_facts_continuity_test.py:13"}, "properties": {"repobilityId": "6fc1fe2c897fb94c", "scanner": "scanner-primary", "fingerprint": "0c2882b590044644", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b0090ec14778c916", "level": "note", "message": {"text": "Legacy-named symbol `validation_contract_v1` in apps/api/tests/pipeline_runner_failure_breadcrumbs_test.py:140"}, "properties": {"repobilityId": "afa289ff155cac45", "scanner": "scanner-primary", "fingerprint": "b0090ec14778c916", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-85c4cd6a91bb292a", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/ai_validation_requirements_graph_continuity_test.py:9"}, "properties": {"repobilityId": "4cea5781554fc693", "scanner": "scanner-primary", "fingerprint": "85c4cd6a91bb292a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8fae50cd8b632df9", "level": "note", "message": {"text": "Legacy-named symbol `requirements_structured_v1` in apps/api/tests/ucp600_ruleset_requirements_graph_paths_test.py:22"}, "properties": {"repobilityId": "e8978fcfc731d360", "scanner": "scanner-primary", "fingerprint": "8fae50cd8b632df9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e862e34b16e655e5", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_exact_wording_requirements_graph_test.py:162"}, "properties": {"repobilityId": "78a2d03c4dd5cab6", "scanner": "scanner-primary", "fingerprint": "e862e34b16e655e5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-66733497d62f9a1a", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/crossdoc_requirements_graph_test.py:19"}, "properties": {"repobilityId": "7c09c3be4c4c5359", "scanner": "scanner-primary", "fingerprint": "66733497d62f9a1a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b9e702faa33cbf30", "level": "note", "message": {"text": "Legacy-named symbol `build_document_extraction_v1` in apps/api/tests/fact_graph_bl_continuity_test.py:22"}, "properties": {"repobilityId": "2a58eb0cc5b5c58a", "scanner": "scanner-primary", "fingerprint": "b9e702faa33cbf30", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6bd0fa89a3e85848", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/tests/invoice_amount_bounds_test.py:64"}, "properties": {"repobilityId": "8f280fed6484fb1d", "scanner": "scanner-primary", "fingerprint": "6bd0fa89a3e85848", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5efa0deae116eb31", "level": "note", "message": {"text": "Legacy-named symbol `materialize_document_fact_graphs_v1` in apps/api/tests/resolution_queue_invoice_continuity_test.py:12"}, "properties": {"repobilityId": "44834bb1eb6f7a78", "scanner": "scanner-primary", "fingerprint": "5efa0deae116eb31", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7a38043a690cb0ba", "level": "note", "message": {"text": "Legacy-named symbol `_empty_resolution_queue_v1` in apps/api/tests/fact_resolution_contract_continuity_test.py:16"}, "properties": {"repobilityId": "d10cc1701222f54b", "scanner": "scanner-primary", "fingerprint": "7a38043a690cb0ba", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b600ae5245f13171", "level": "note", "message": {"text": "Legacy-named symbol `parse_lc_requirements_sync_v2` in apps/api/tests/test_validate_regression.py:211"}, "properties": {"repobilityId": "35b09d6672a357cd", "scanner": "scanner-primary", "fingerprint": "b600ae5245f13171", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4ba9ba1f1a6821b3", "level": "note", "message": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/tests/coo_validation_context_test.py:27"}, "properties": {"repobilityId": "b08ede907b58283d", "scanner": "scanner-primary", "fingerprint": "4ba9ba1f1a6821b3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-34ca4016976039f9", "level": "note", "message": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/tests/test_build_document_context_boundary.py:120"}, "properties": {"repobilityId": "d0653d59f275d902", "scanner": "scanner-primary", "fingerprint": "34ca4016976039f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a82d7ba60c927374", "level": "note", "message": {"text": "Legacy-named symbol `baseline_v1` in apps/api/tests/gold_corpus/run_corpus.py:11"}, "properties": {"repobilityId": "1d9fdf58d14ad364", "scanner": "scanner-primary", "fingerprint": "a82d7ba60c927374", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-57a653441b77939c", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/api/trust_platform/compliance/rule_sync_service.py:533"}, "properties": {"repobilityId": "dadd599d5fe30f17", "scanner": "scanner-primary", "fingerprint": "57a653441b77939c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-22eb1b8078b90c2d", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/api/trust_platform/compliance/ai_rule_suggester.py:513"}, "properties": {"repobilityId": "3cc2bb2611dca421", "scanner": "scanner-primary", "fingerprint": "22eb1b8078b90c2d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-40b81480663678bd", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/api/scripts/verify_org_isolation.py:29"}, "properties": {"repobilityId": "a91dc8949157bc4b", "scanner": "scanner-primary", "fingerprint": "40b81480663678bd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6407585f0950ae28", "level": "note", "message": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/scripts/day1_smoke_gate.py:157"}, "properties": {"repobilityId": "b1df6a6cc6b6ec60", "scanner": "scanner-primary", "fingerprint": "6407585f0950ae28", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-91704aa15e2d55e0", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/api/app/config.py:170"}, "properties": {"repobilityId": "4f96731e4f0114a7", "scanner": "scanner-primary", "fingerprint": "91704aa15e2d55e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42f3fda91bf420ff", "level": "note", "message": {"text": "Legacy-named symbol `structured_result_v1` in apps/api/app/services.py:380"}, "properties": {"repobilityId": "8e069594f1690cfc", "scanner": "scanner-primary", "fingerprint": "42f3fda91bf420ff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a15b3dd52e4158ff", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/models.py:286"}, "properties": {"repobilityId": "dc8ecd9633c04cda", "scanner": "scanner-primary", "fingerprint": "a15b3dd52e4158ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-466033680e1cdbfb", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/models/invoice.py:38"}, "properties": {"repobilityId": "436600a3882753d6", "scanner": "scanner-primary", "fingerprint": "466033680e1cdbfb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8239784ce2888b1", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/api/app/models/bank_policy.py:29"}, "properties": {"repobilityId": "19240ca37fceaccc", "scanner": "scanner-primary", "fingerprint": "c8239784ce2888b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dfbba86894549ba0", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/models/company.py:133"}, "properties": {"repobilityId": "59a47472c8bc0b9a", "scanner": "scanner-primary", "fingerprint": "dfbba86894549ba0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18d0bd9726dd1e39", "level": "note", "message": {"text": "Legacy-named symbol `copies_copy` in apps/api/app/models/lc_builder.py:184"}, "properties": {"repobilityId": "7768d6d6fa201e9a", "scanner": "scanner-primary", "fingerprint": "18d0bd9726dd1e39", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-327362913b655a83", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/rules/extractors.py:19"}, "properties": {"repobilityId": "07d16fd92fcc543d", "scanner": "scanner-primary", "fingerprint": "327362913b655a83", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-afa9a03a227c59bb", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/rules/external/rule_loader.py:32"}, "properties": {"repobilityId": "01ba63b9cc9b3471", "scanner": "scanner-primary", "fingerprint": "afa9a03a227c59bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6518c157fbe254f1", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/app/tasks/audit_monitoring_task.py:181"}, "properties": {"repobilityId": "1ff4467919138c8b", "scanner": "scanner-primary", "fingerprint": "6518c157fbe254f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3122e0f3bdc23fd5", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/services/finding_persistence.py:185"}, "properties": {"repobilityId": "b1f0fd265d5ecd63", "scanner": "scanner-primary", "fingerprint": "3122e0f3bdc23fd5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e3500f1f6ed3297", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/app/services/lc_clause_library.py:3781"}, "properties": {"repobilityId": "375755f13152f9c1", "scanner": "scanner-primary", "fingerprint": "4e3500f1f6ed3297", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6669e74ea1e7b60b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/services/onboarding_service.py:79"}, "properties": {"repobilityId": "faafee67ff718452", "scanner": "scanner-primary", "fingerprint": "6669e74ea1e7b60b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4907dd7d63ee7973", "level": "note", "message": {"text": "Legacy-named symbol `_load_legacy` in apps/api/app/services/__init__.py:34"}, "properties": {"repobilityId": "fb83156a4bd1bddd", "scanner": "scanner-primary", "fingerprint": "4907dd7d63ee7973", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-db296f44bc95bf17", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/services/billing_service.py:744"}, "properties": {"repobilityId": "8627050979a179ae", "scanner": "scanner-primary", "fingerprint": "db296f44bc95bf17", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-072a5b6302a9a05b", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/api/app/services/bulk_validate_processor.py:80"}, "properties": {"repobilityId": "9fcd6c698f993720", "scanner": "scanner-primary", "fingerprint": "072a5b6302a9a05b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d43fe48fc531f3ca", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/services/entitlements.py:50"}, "properties": {"repobilityId": "e902bb80e5cf3b47", "scanner": "scanner-primary", "fingerprint": "d43fe48fc531f3ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9bfa533522b239c3", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/services/validator.py:795"}, "properties": {"repobilityId": "96991d91aae539d8", "scanner": "scanner-primary", "fingerprint": "9bfa533522b239c3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-52a1ce3d7762e46f", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/api/app/services/audit_monitoring.py:460"}, "properties": {"repobilityId": "7c4435a80d2de98a", "scanner": "scanner-primary", "fingerprint": "52a1ce3d7762e46f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-81fcac60d21d4415", "level": "note", "message": {"text": "Legacy-named symbol `validate_v1` in apps/api/app/services/rulhub_client.py:330"}, "properties": {"repobilityId": "6345c65501f91434", "scanner": "scanner-primary", "fingerprint": "81fcac60d21d4415", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7e0ef2bef9f0e458", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/api/app/services/rulhub_client.py:114"}, "properties": {"repobilityId": "1af9f03a6276097d", "scanner": "scanner-primary", "fingerprint": "7e0ef2bef9f0e458", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1746ba04f55bdcf9", "level": "note", "message": {"text": "Stub function `_checkpoint` (body is just `pass`/`return`) \u2014 apps/api/app/services/repaper_revalidate.py:97"}, "properties": {"repobilityId": "cf0881d9c55997a3", "scanner": "scanner-primary", "fingerprint": "1746ba04f55bdcf9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-94ee57f4dc2be830", "level": "note", "message": {"text": "Legacy-named symbol `list_objects_v2` in apps/api/app/services/document_storage.py:226"}, "properties": {"repobilityId": "0bb60594753c695a", "scanner": "scanner-primary", "fingerprint": "94ee57f4dc2be830", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6077a7efafa98a56", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/services/crossdoc.py:218"}, "properties": {"repobilityId": "1e70456ab0299181", "scanner": "scanner-primary", "fingerprint": "6077a7efafa98a56", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-29652b9b7364a373", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/services/crossdoc.py:365"}, "properties": {"repobilityId": "81b1fe60a83469f8", "scanner": "scanner-primary", "fingerprint": "29652b9b7364a373", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c03252fa06b4cf28", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/services/lc_classifier.py:556"}, "properties": {"repobilityId": "7c8637c24bc195d2", "scanner": "scanner-primary", "fingerprint": "c03252fa06b4cf28", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b600a65a7c81da25", "level": "note", "message": {"text": "Legacy-named symbol `copies_copy` in apps/api/app/services/mt700_generator.py:309"}, "properties": {"repobilityId": "c301e7c46528c727", "scanner": "scanner-primary", "fingerprint": "b600a65a7c81da25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c9ed4b4288bebd1b", "level": "note", "message": {"text": "Legacy-named symbol `structured_result_v1` in apps/api/app/services/customs/customs_pack_full.py:222"}, "properties": {"repobilityId": "cd13b47d784fd3e7", "scanner": "scanner-primary", "fingerprint": "c9ed4b4288bebd1b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c655ae22b263b6d8", "level": "note", "message": {"text": "Legacy-named symbol `structured_result_v1` in apps/api/app/services/risk/customs_risk.py:8"}, "properties": {"repobilityId": "3f45024c17356b9a", "scanner": "scanner-primary", "fingerprint": "c655ae22b263b6d8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9cab9e9700d717f6", "level": "note", "message": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/extraction_core/review_metadata.py:1727"}, "properties": {"repobilityId": "a6e1b93e9a1d9122", "scanner": "scanner-primary", "fingerprint": "9cab9e9700d717f6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0f458954a3675e50", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/services/extraction_core/review_metadata.py:493"}, "properties": {"repobilityId": "822c50f50223b225", "scanner": "scanner-primary", "fingerprint": "0f458954a3675e50", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-320bf40ec7f1f511", "level": "note", "message": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/app/services/facts/invoice_facts.py:209"}, "properties": {"repobilityId": "be8ca3fc10e501ef", "scanner": "scanner-primary", "fingerprint": "320bf40ec7f1f511", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0e69a49a3eed77a3", "level": "note", "message": {"text": "Legacy-named symbol `materialize_document_fact_graph_v1` in apps/api/app/services/facts/__init__.py:9"}, "properties": {"repobilityId": "b14ba7517f80cfbd", "scanner": "scanner-primary", "fingerprint": "0e69a49a3eed77a3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5c00cad9e49740e0", "level": "note", "message": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/app/services/facts/coo_facts.py:199"}, "properties": {"repobilityId": "10739f426b6ad4e8", "scanner": "scanner-primary", "fingerprint": "5c00cad9e49740e0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-481a0e57d6670bd6", "level": "note", "message": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/app/services/facts/supporting_facts.py:219"}, "properties": {"repobilityId": "0815ccb337b725ae", "scanner": "scanner-primary", "fingerprint": "481a0e57d6670bd6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-15a67fd04f7a84be", "level": "note", "message": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/facts/insurance_facts.py:69"}, "properties": {"repobilityId": "e68bc0cfb45fa92d", "scanner": "scanner-primary", "fingerprint": "15a67fd04f7a84be", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e34e910c5024458b", "level": "note", "message": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/app/services/facts/inspection_facts.py:201"}, "properties": {"repobilityId": "66e78f594f7f8521", "scanner": "scanner-primary", "fingerprint": "e34e910c5024458b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-021c2285690ee11d", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/services/facts/document_facts.py:227"}, "properties": {"repobilityId": "83c85dcc5737fd59", "scanner": "scanner-primary", "fingerprint": "021c2285690ee11d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-038be6000fa89a2a", "level": "note", "message": {"text": "Legacy-named symbol `fact_graph_v1` in apps/api/app/services/facts/packing_list_facts.py:197"}, "properties": {"repobilityId": "78ee5ee3ef0fa0c0", "scanner": "scanner-primary", "fingerprint": "038be6000fa89a2a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ba6d5c198ea9cf91", "level": "note", "message": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/facts/lc_facts.py:91"}, "properties": {"repobilityId": "bb74df501226277b", "scanner": "scanner-primary", "fingerprint": "ba6d5c198ea9cf91", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ab6616cb601c0a6f", "level": "note", "message": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/facts/bl_facts.py:88"}, "properties": {"repobilityId": "3058bfa947d6c2cc", "scanner": "scanner-primary", "fingerprint": "ab6616cb601c0a6f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cbdf898b4fc73f7a", "level": "note", "message": {"text": "Legacy-named symbol `issue_copy` in apps/api/app/services/validation/confidence_weighting.py:210"}, "properties": {"repobilityId": "00ab4874f7ad123e", "scanner": "scanner-primary", "fingerprint": "cbdf898b4fc73f7a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a97ee7e0b10a924e", "level": "note", "message": {"text": "Legacy-named symbol `lc_extractor_v2` in apps/api/app/services/validation/validation_gate.py:32"}, "properties": {"repobilityId": "afa0563cb9c0c678", "scanner": "scanner-primary", "fingerprint": "a97ee7e0b10a924e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-03972d214a8cc7cb", "level": "note", "message": {"text": "Legacy-named symbol `parse_lc_requirements_sync_v2` in apps/api/app/services/validation/llm_requirement_parser.py:668"}, "properties": {"repobilityId": "0ad6782dd0120df8", "scanner": "scanner-primary", "fingerprint": "03972d214a8cc7cb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ffe637afadbeb0a9", "level": "note", "message": {"text": "Legacy-named symbol `parse_lc_requirements_sync_v2` in apps/api/app/services/validation/__init__.py:101"}, "properties": {"repobilityId": "a3ecc93585f93823", "scanner": "scanner-primary", "fingerprint": "ffe637afadbeb0a9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-45da6e05309134b9", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/services/validation/crossdoc_validator.py:397"}, "properties": {"repobilityId": "80349d87cdfe9ee7", "scanner": "scanner-primary", "fingerprint": "45da6e05309134b9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-46ba45f28a87f771", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/services/validation/crossdoc_validator.py:1903"}, "properties": {"repobilityId": "d07dd01bedf454da", "scanner": "scanner-primary", "fingerprint": "46ba45f28a87f771", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64d916d67a2febba", "level": "note", "message": {"text": "Legacy-named symbol `processing_summary_v2` in apps/api/app/services/validation/day1_telemetry.py:9"}, "properties": {"repobilityId": "c32e92e95de067c4", "scanner": "scanner-primary", "fingerprint": "64d916d67a2febba", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-906a350a9c70584f", "level": "note", "message": {"text": "Legacy-named symbol `processing_summary_v2` in apps/api/app/services/validation/day1_contract.py:11"}, "properties": {"repobilityId": "e780d9c90be4b18c", "scanner": "scanner-primary", "fingerprint": "906a350a9c70584f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d4ce736381339e3b", "level": "note", "message": {"text": "Legacy-named symbol `anchor_dictionary_v1` in apps/api/app/services/validation/day1_retrieval_guard.py:31"}, "properties": {"repobilityId": "8c3224350de16228", "scanner": "scanner-primary", "fingerprint": "d4ce736381339e3b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bdab9421b7eca6e3", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/services/validation/doc_matcher.py:895"}, "properties": {"repobilityId": "b229b81e91895aed", "scanner": "scanner-primary", "fingerprint": "bdab9421b7eca6e3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-340a4192be43c509", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/app/services/validation/doc_matcher.py:98"}, "properties": {"repobilityId": "eab049ec629346ca", "scanner": "scanner-primary", "fingerprint": "340a4192be43c509", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2369dc6d13b5296e", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/services/validation/tiered_validation.py:226"}, "properties": {"repobilityId": "460098f34efc1d3d", "scanner": "scanner-primary", "fingerprint": "2369dc6d13b5296e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e6025732f8106af1", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/services/validation/tiered_validation.py:223"}, "properties": {"repobilityId": "fd19e296e10e8ef9", "scanner": "scanner-primary", "fingerprint": "e6025732f8106af1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f5fca36301f2889", "level": "note", "message": {"text": "Legacy-named symbol `document_extraction_v1` in apps/api/app/services/validation/response_schema.py:252"}, "properties": {"repobilityId": "bf6096fae8481369", "scanner": "scanner-primary", "fingerprint": "3f5fca36301f2889", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a2c1fcdbaf1f41ea", "level": "note", "message": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/validation/ai_validator.py:272"}, "properties": {"repobilityId": "43553c6ca7f70435", "scanner": "scanner-primary", "fingerprint": "a2c1fcdbaf1f41ea", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9e05b2480ba21c23", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/app/services/validation/ai_validator.py:1471"}, "properties": {"repobilityId": "c43a6dd0bbaec0b2", "scanner": "scanner-primary", "fingerprint": "9e05b2480ba21c23", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1256b00f6b557f0", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/api/app/services/validation/authority_matrix.py:170"}, "properties": {"repobilityId": "3b7bc0193f348cac", "scanner": "scanner-primary", "fingerprint": "f1256b00f6b557f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00ba1f0b13c7dc4b", "level": "note", "message": {"text": "Legacy-named symbol `lc_extractor_v2` in apps/api/app/services/validation/pipeline.py:26"}, "properties": {"repobilityId": "c02b13b623c5ce66", "scanner": "scanner-primary", "fingerprint": "00ba1f0b13c7dc4b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-aaafa3ace0b2244e", "level": "note", "message": {"text": "Legacy-named symbol `build_lc_requirements_graph_v1` in apps/api/app/services/requirements/__init__.py:2"}, "properties": {"repobilityId": "701a990df74ea697", "scanner": "scanner-primary", "fingerprint": "aaafa3ace0b2244e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-31107aa6aaca3df9", "level": "note", "message": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/requirements/lc_requirements.py:344"}, "properties": {"repobilityId": "6f9b827c0aeb6bef", "scanner": "scanner-primary", "fingerprint": "31107aa6aaca3df9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bbb5d173c7196ab8", "level": "note", "message": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/services/extraction/launch_pipeline.py:252"}, "properties": {"repobilityId": "8f2b7ab08737d967", "scanner": "scanner-primary", "fingerprint": "bbb5d173c7196ab8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8edf29c4746a0cac", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/app/services/extraction/launch_pipeline.py:449"}, "properties": {"repobilityId": "b53c088ef1a689bc", "scanner": "scanner-primary", "fingerprint": "8edf29c4746a0cac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-87731677d226abf5", "level": "note", "message": {"text": "Legacy-named symbol `lc_extractor_v2` in apps/api/app/services/extraction/__init__.py:15"}, "properties": {"repobilityId": "cd1505d3ddc7ca92", "scanner": "scanner-primary", "fingerprint": "87731677d226abf5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5799b2fa362c7f48", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/api/app/services/extraction/multimodal_document_extractor.py:190"}, "properties": {"repobilityId": "ec70ec3acd160411", "scanner": "scanner-primary", "fingerprint": "5799b2fa362c7f48", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f5a93a20f0f9df88", "level": "note", "message": {"text": "Legacy-named symbol `lc_extractor_v2` in apps/api/app/services/extraction/lc_extractor_v2.py:11"}, "properties": {"repobilityId": "bcc826f86a9b3d58", "scanner": "scanner-primary", "fingerprint": "f5a93a20f0f9df88", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fe8fc5e799635c69", "level": "note", "message": {"text": "Legacy-named symbol `structured_result_v1` in apps/api/app/services/extraction/structured_lc_builder.py:23"}, "properties": {"repobilityId": "3185f007d3be69f6", "scanner": "scanner-primary", "fingerprint": "fe8fc5e799635c69", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8455d7246d95d3c4", "level": "note", "message": {"text": "Legacy-named symbol `ai_lc_extractor_v2` in apps/api/app/services/extraction/ai_lc_extractor.py:360"}, "properties": {"repobilityId": "9a7190b67d548e82", "scanner": "scanner-primary", "fingerprint": "8455d7246d95d3c4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e38f497c6136fbd6", "level": "note", "message": {"text": "Legacy-named symbol `lc_extractor_v1` in apps/api/app/services/extraction/lc_extractor.py:714"}, "properties": {"repobilityId": "51ff4620b8d3f9d0", "scanner": "scanner-primary", "fingerprint": "e38f497c6136fbd6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4f7e1bda600fc84b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/services/extraction/lc_extractor.py:212"}, "properties": {"repobilityId": "343837151fc58757", "scanner": "scanner-primary", "fingerprint": "4f7e1bda600fc84b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a8fb43df8a38c0c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/services/extraction/ai_first_extractor.py:2157"}, "properties": {"repobilityId": "c58e983f7a5d6e90", "scanner": "scanner-primary", "fingerprint": "6a8fb43df8a38c0c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b684cb69d2910f99", "level": "note", "message": {"text": "Legacy-named symbol `resolve_case_requirements_graph_v1` in apps/api/app/services/resolution/queue_builder.py:8"}, "properties": {"repobilityId": "8be71c188d93b7e4", "scanner": "scanner-primary", "fingerprint": "b684cb69d2910f99", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a76605f38e248d12", "level": "note", "message": {"text": "Legacy-named symbol `build_resolution_queue_v1` in apps/api/app/services/resolution/__init__.py:2"}, "properties": {"repobilityId": "485a3796594abd0c", "scanner": "scanner-primary", "fingerprint": "a76605f38e248d12", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b3ad9468d1cccae5", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/app/core/residency/policies.py:70"}, "properties": {"repobilityId": "07a4fef74caa3f23", "scanner": "scanner-primary", "fingerprint": "b3ad9468d1cccae5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff2f657848cc337e", "level": "note", "message": {"text": "Legacy-named symbol `list_objects_v2` in apps/api/app/core/residency/storage_backends.py:354"}, "properties": {"repobilityId": "a460b0aaa1491090", "scanner": "scanner-primary", "fingerprint": "ff2f657848cc337e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-910c5ffee46bc417", "level": "note", "message": {"text": "Stub function `inc` (body is just `pass`/`return`) \u2014 apps/api/app/metrics/rules_metrics.py:14"}, "properties": {"repobilityId": "c746d1982161f9c0", "scanner": "scanner-primary", "fingerprint": "910c5ffee46bc417", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-63da4ce568020642", "level": "note", "message": {"text": "Stub function `inc` (body is just `pass`/`return`) \u2014 apps/api/app/metrics/workflow_metrics.py:14"}, "properties": {"repobilityId": "f2f057f289e8f44e", "scanner": "scanner-primary", "fingerprint": "63da4ce568020642", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-607906da04028be9", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/api/app/schemas/billing.py:33"}, "properties": {"repobilityId": "eee07fcfdceca7b2", "scanner": "scanner-primary", "fingerprint": "607906da04028be9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f4fa6ef9274e882", "level": "note", "message": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in apps/api/app/routers/validate.py:116"}, "properties": {"repobilityId": "09bca5bea570c48e", "scanner": "scanner-primary", "fingerprint": "1f4fa6ef9274e882", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e8cf42ba62b1001e", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/api/app/routers/validate.py:1955"}, "properties": {"repobilityId": "80ad77a8bb69e419", "scanner": "scanner-primary", "fingerprint": "e8cf42ba62b1001e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c7ea10115411d0f", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/routers/bank_duplicates.py:225"}, "properties": {"repobilityId": "bcc23d01a90b78b4", "scanner": "scanner-primary", "fingerprint": "7c7ea10115411d0f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f81b7f0275bbb87", "level": "note", "message": {"text": "Legacy-named symbol `validate_doc_v2` in apps/api/app/routers/validate_run.py:266"}, "properties": {"repobilityId": "bc2042f1cb5f9a8e", "scanner": "scanner-primary", "fingerprint": "3f81b7f0275bbb87", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-aa61d7d49dcbc80b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/routers/discrepancy_workflow.py:633"}, "properties": {"repobilityId": "226e5cbb72bd0467", "scanner": "scanner-primary", "fingerprint": "aa61d7d49dcbc80b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-859b65103e249a6a", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/api/app/routers/bank_evidence.py:220"}, "properties": {"repobilityId": "9a28fbc8a2da9687", "scanner": "scanner-primary", "fingerprint": "859b65103e249a6a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae0e0cf415a768ff", "level": "note", "message": {"text": "Stub function `_checkpoint` (body is just `pass`/`return`) \u2014 apps/api/app/routers/handhold.py:113"}, "properties": {"repobilityId": "a75eff1b8647b9c9", "scanner": "scanner-primary", "fingerprint": "ae0e0cf415a768ff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-1b7ea96cf03aaad7", "level": "note", "message": {"text": "Legacy-named symbol `copies_copy` in apps/api/app/routers/lc_builder.py:52"}, "properties": {"repobilityId": "91be6b9c7e719018", "scanner": "scanner-primary", "fingerprint": "1b7ea96cf03aaad7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b5273e09c56f1c4a", "level": "note", "message": {"text": "Legacy-named symbol `get_validation_result_v2` in apps/api/app/routers/validate_results.py:40"}, "properties": {"repobilityId": "094877ca357fc87f", "scanner": "scanner-primary", "fingerprint": "b5273e09c56f1c4a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-37e899756e1d9beb", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/app/routers/validate_results.py:62"}, "properties": {"repobilityId": "8b785c70a828aedb", "scanner": "scanner-primary", "fingerprint": "37e899756e1d9beb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a684202c9d65800a", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/api/app/routers/onboarding.py:200"}, "properties": {"repobilityId": "9e305bceba8abaa4", "scanner": "scanner-primary", "fingerprint": "a684202c9d65800a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2fa8c146cfd3e80f", "level": "note", "message": {"text": "Legacy-named symbol `structured_result_v1` in apps/api/app/routers/jobs_public.py:140"}, "properties": {"repobilityId": "024ad1f7d9df9da2", "scanner": "scanner-primary", "fingerprint": "2fa8c146cfd3e80f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-69ec107668b3ab34", "level": "note", "message": {"text": "Legacy-named symbol `mt700_v1` in apps/api/app/routers/validate_v1_backup.py:546"}, "properties": {"repobilityId": "68b4acc54c9c6c38", "scanner": "scanner-primary", "fingerprint": "69ec107668b3ab34", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4fb5d3b58690bf19", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/api/app/routers/admin/vault.py:84"}, "properties": {"repobilityId": "d2ec13e94f9d59fa", "scanner": "scanner-primary", "fingerprint": "4fb5d3b58690bf19", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6ce34524e582279d", "level": "note", "message": {"text": "Legacy-named symbol `use_existing_backup` in apps/api/app/routers/admin/dr.py:49"}, "properties": {"repobilityId": "335694917361fa49", "scanner": "scanner-primary", "fingerprint": "6ce34524e582279d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1e1dd355e19644f7", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 apps/api/app/routers/admin/dr.py:78"}, "properties": {"repobilityId": "e832862c20171514", "scanner": "scanner-primary", "fingerprint": "1e1dd355e19644f7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2829845b5c0cadba", "level": "note", "message": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in apps/api/app/routers/validation/__init__.py:122"}, "properties": {"repobilityId": "33f27b08769a0d24", "scanner": "scanner-primary", "fingerprint": "2829845b5c0cadba", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-46bfff43fd7c2b05", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/routers/validation/lc_intake.py:93"}, "properties": {"repobilityId": "388c56893eced768", "scanner": "scanner-primary", "fingerprint": "46bfff43fd7c2b05", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d088369df6f3eaff", "level": "none", "message": {"text": "Commented-code block (10 lines) in apps/api/app/routers/validation/pipeline_runner.py:185"}, "properties": {"repobilityId": "9167b0e1f4410d56", "scanner": "scanner-primary", "fingerprint": "d088369df6f3eaff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-135b710dc76fa475", "level": "note", "message": {"text": "Legacy-named symbol `materialize_document_fact_graphs_v1` in apps/api/app/routers/validation/session_setup.py:10"}, "properties": {"repobilityId": "221795af08bed86c", "scanner": "scanner-primary", "fingerprint": "135b710dc76fa475", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7f4a0b977629988c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/routers/validation/session_setup.py:113"}, "properties": {"repobilityId": "94d3d74f728dee91", "scanner": "scanner-primary", "fingerprint": "7f4a0b977629988c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4a9cf9ca65323966", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/api/app/routers/validation/presentation_contract.py:64"}, "properties": {"repobilityId": "9fec3d403cbf827e", "scanner": "scanner-primary", "fingerprint": "4a9cf9ca65323966", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ace86168a700f4cd", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/api/app/routers/validation/presentation_contract.py:918"}, "properties": {"repobilityId": "a28f4fe34cd00da0", "scanner": "scanner-primary", "fingerprint": "ace86168a700f4cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a53138c980635326", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/app/routers/validation/doc_types.py:307"}, "properties": {"repobilityId": "bfc6ea691c0f4b72", "scanner": "scanner-primary", "fingerprint": "a53138c980635326", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23414e83ff54ceef", "level": "note", "message": {"text": "Legacy-named symbol `mt700_v1` in apps/api/app/routers/validation/lc_dates.py:127"}, "properties": {"repobilityId": "8ac1ead8ff5c8f46", "scanner": "scanner-primary", "fingerprint": "23414e83ff54ceef", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4d975dcb669425f0", "level": "note", "message": {"text": "Legacy-named symbol `_build_document_extraction_v1` in apps/api/app/routers/validation/result_finalization.py:30"}, "properties": {"repobilityId": "b9115976d40729cb", "scanner": "scanner-primary", "fingerprint": "4d975dcb669425f0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9f89fc2a8bfb6264", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/routers/validation/result_finalization.py:1368"}, "properties": {"repobilityId": "6dfd6f6937d4a54b", "scanner": "scanner-primary", "fingerprint": "9f89fc2a8bfb6264", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b56dd1038b29f6c5", "level": "note", "message": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in apps/api/app/routers/validation/ocr_runtime.py:19"}, "properties": {"repobilityId": "548248a98757b7bb", "scanner": "scanner-primary", "fingerprint": "b56dd1038b29f6c5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ef9577b46f8c95cf", "level": "note", "message": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/api/app/routers/validation/issues_pipeline.py:234"}, "properties": {"repobilityId": "7be58d5951eac45d", "scanner": "scanner-primary", "fingerprint": "ef9577b46f8c95cf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-eab0d179365c478a", "level": "note", "message": {"text": "Legacy-named symbol `materialize_document_fact_graphs_v1` in apps/api/app/routers/validation/response_shaping.py:13"}, "properties": {"repobilityId": "b7c30b7a66de81ca", "scanner": "scanner-primary", "fingerprint": "eab0d179365c478a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-df0bb9fc83b65b83", "level": "note", "message": {"text": "Legacy-named symbol `materialize_document_fact_graph_v1` in apps/api/app/routers/validation/validation_execution.py:19"}, "properties": {"repobilityId": "729d103e5ed43181", "scanner": "scanner-primary", "fingerprint": "df0bb9fc83b65b83", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8ee05299ae053d04", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/app/routers/validation/validation_execution.py:63"}, "properties": {"repobilityId": "9bc21c2f7b3f5af2", "scanner": "scanner-primary", "fingerprint": "8ee05299ae053d04", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c7d30a6c5caf445", "level": "note", "message": {"text": "Legacy-named symbol `_empty_extraction_artifacts_v1` in apps/api/app/routers/validation/document_builder.py:11"}, "properties": {"repobilityId": "d96d225513f6afce", "scanner": "scanner-primary", "fingerprint": "1c7d30a6c5caf445", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-921afca40fec876d", "level": "note", "message": {"text": "Legacy-named symbol `build_fact_resolution_v1` in apps/api/app/routers/validation/session_refresh.py:31"}, "properties": {"repobilityId": "d04bd8e2db0011c3", "scanner": "scanner-primary", "fingerprint": "921afca40fec876d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f8484aaa1b704108", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/sme_portal/tests/regression/conftest.py:475"}, "properties": {"repobilityId": "e079edca917367d2", "scanner": "scanner-primary", "fingerprint": "f8484aaa1b704108", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3afbecfe8332221d", "level": "note", "message": {"text": "Legacy-named symbol `days_old` in apps/api/async_tasks/job_status.py:366"}, "properties": {"repobilityId": "767481a9214b81ca", "scanner": "scanner-primary", "fingerprint": "3afbecfe8332221d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cd8151abfc784e72", "level": "note", "message": {"text": "Legacy-named symbol `copies_copy` in apps/api/alembic/versions/20251205_add_lc_builder.py:168"}, "properties": {"repobilityId": "8517c0bb3978626c", "scanner": "scanner-primary", "fingerprint": "cd8151abfc784e72", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e60e8bc0cbeb0101", "level": "note", "message": {"text": "Stub function `upgrade` (body is just `pass`/`return`) \u2014 apps/api/migrations/versions/20251119_merge_phase7_heads.py:18"}, "properties": {"repobilityId": "9dbe84bdd55ef8db", "scanner": "scanner-primary", "fingerprint": "e60e8bc0cbeb0101", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-afec5158d8f4aa78", "level": "note", "message": {"text": "Legacy-named symbol `processing_summary_v2` in apps/web/src/__tests__/resultsMapper.test.ts:15"}, "properties": {"repobilityId": "95205c1bd8acf1cc", "scanner": "scanner-primary", "fingerprint": "afec5158d8f4aa78", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-55e159c73045a692", "level": "note", "message": {"text": "Legacy-named symbol `validation_contract_v1` in apps/web/src/__tests__/resultTruth.test.ts:11"}, "properties": {"repobilityId": "250ef7558cff208e", "scanner": "scanner-primary", "fingerprint": "55e159c73045a692", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f1564c7cf7b77b51", "level": "note", "message": {"text": "Legacy-named symbol `structured_result_v1` in apps/web/src/__tests__/dashboardTruth.test.ts:26"}, "properties": {"repobilityId": "fdb24e7bcfb854a4", "scanner": "scanner-primary", "fingerprint": "f1564c7cf7b77b51", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-76cda7408fabade4", "level": "note", "message": {"text": "Legacy-named symbol `extraction_artifacts_v1` in apps/web/src/__tests__/ExporterResults.test.tsx:441"}, "properties": {"repobilityId": "300a37c10c03ce6e", "scanner": "scanner-primary", "fingerprint": "76cda7408fabade4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-06387ce106bd793a", "level": "note", "message": {"text": "Legacy-named symbol `structured_result_v1` in apps/web/src/__tests__/useCanonicalJobResult.test.tsx:78"}, "properties": {"repobilityId": "2d6ce1530fee694f", "scanner": "scanner-primary", "fingerprint": "06387ce106bd793a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-019f22230ff2cbf5", "level": "note", "message": {"text": "Legacy-named symbol `beneficiary_statement_v2` in apps/web/src/__tests__/ExportLCUploadTyping.test.tsx:102"}, "properties": {"repobilityId": "e45468bc83294b76", "scanner": "scanner-primary", "fingerprint": "019f22230ff2cbf5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-02985f095339dcab", "level": "note", "message": {"text": "Legacy-named symbol `structured_result_v1` in apps/web/src/__tests__/fixtures/lcopilot.ts:176"}, "properties": {"repobilityId": "e3948713e9d79f57", "scanner": "scanner-primary", "fingerprint": "02985f095339dcab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-635473cd95ae9e71", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/types/billing.ts:41"}, "properties": {"repobilityId": "1b73a421378ad55b", "scanner": "scanner-primary", "fingerprint": "635473cd95ae9e71", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d20215e945894c0", "level": "note", "message": {"text": "Legacy-named symbol `structured_result_v1` in apps/web/src/types/lcopilot.ts:172"}, "properties": {"repobilityId": "9c0c9a94358708b3", "scanner": "scanner-primary", "fingerprint": "2d20215e945894c0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f8b9884784f9a252", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/api/onboarding.ts:56"}, "properties": {"repobilityId": "1066abd19d1a10c1", "scanner": "scanner-primary", "fingerprint": "f8b9884784f9a252", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7ecde0946ccd6a0", "level": "note", "message": {"text": "Legacy-named symbol `structured_result_v1` in apps/web/src/api/sessions.ts:114"}, "properties": {"repobilityId": "f8b35122fcab603f", "scanner": "scanner-primary", "fingerprint": "d7ecde0946ccd6a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-62209b745b4ad388", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/components/ReportDownloadDialog.tsx:67"}, "properties": {"repobilityId": "73f1a52795ac75c0", "scanner": "scanner-primary", "fingerprint": "62209b745b4ad388", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0f6f7b4ba9cda81c", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/components/lcopilot/ExtractionReview.tsx:121"}, "properties": {"repobilityId": "669fdcb6c027b42d", "scanner": "scanner-primary", "fingerprint": "0f6f7b4ba9cda81c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b49d1079d133c27d", "level": "note", "message": {"text": "Legacy-named symbol `processing_summary_v2` in apps/web/src/components/lcopilot/SummaryStrip.tsx:34"}, "properties": {"repobilityId": "92fc72b9e88e4a9b", "scanner": "scanner-primary", "fingerprint": "b49d1079d133c27d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4ddbe0a21cd8a1c8", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/src/components/importer/ImporterSidebar.tsx:7"}, "properties": {"repobilityId": "8fb9a94c7a61d108", "scanner": "scanner-primary", "fingerprint": "4ddbe0a21cd8a1c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b22d33598c8845ce", "level": "none", "message": {"text": "Commented-code block (12 lines) in apps/web/src/components/billing/governance/GovernancePanel.tsx:65"}, "properties": {"repobilityId": "46f91f0128a4b7d9", "scanner": "scanner-primary", "fingerprint": "b22d33598c8845ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-106f5b713c3bef59", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/web/src/components/exporter/HowToFixSection.tsx:95"}, "properties": {"repobilityId": "55d151cd2cfd2c32", "scanner": "scanner-primary", "fingerprint": "106f5b713c3bef59", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-847cfb1c272987a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/components/onboarding/OnboardingWizard.tsx:46"}, "properties": {"repobilityId": "6c7c97a8f7949981", "scanner": "scanner-primary", "fingerprint": "847cfb1c272987a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c229247fbf133c86", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/components/onboarding/OnboardingProvider.tsx:153"}, "properties": {"repobilityId": "fca29880cf6b8d7d", "scanner": "scanner-primary", "fingerprint": "c229247fbf133c86", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b34bdf3899602c47", "level": "note", "message": {"text": "Legacy-named symbol `validation_contract_v1` in apps/web/src/lib/lcopilot/resultTruth.ts:177"}, "properties": {"repobilityId": "2efd8b858b3a651f", "scanner": "scanner-primary", "fingerprint": "b34bdf3899602c47", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c2478c543cb50f90", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/src/lib/lcopilot/routing.ts:116"}, "properties": {"repobilityId": "58503ae9869f18ec", "scanner": "scanner-primary", "fingerprint": "c2478c543cb50f90", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db2b422fca376c79", "level": "note", "message": {"text": "Legacy-named symbol `requirements_graph_v1` in apps/web/src/lib/lcopilot/resultsMapper.ts:650"}, "properties": {"repobilityId": "cb9ef430cc464b26", "scanner": "scanner-primary", "fingerprint": "db2b422fca376c79", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8866435517af4a3e", "level": "note", "message": {"text": "Legacy-named symbol `fromLegacy` in apps/web/src/lib/lcopilot/tier.ts:47"}, "properties": {"repobilityId": "e5a81acccd4faa3b", "scanner": "scanner-primary", "fingerprint": "8866435517af4a3e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8fd63abe7ca1522c", "level": "note", "message": {"text": "Legacy-named symbol `structured_result_v1` in apps/web/src/lib/exporter/dashboardTruth.ts:52"}, "properties": {"repobilityId": "18489d2d26449763", "scanner": "scanner-primary", "fingerprint": "8fd63abe7ca1522c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-034f1ee336d5c562", "level": "note", "message": {"text": "Legacy-named symbol `processing_summary_v2` in apps/web/src/lib/validation/validationState.ts:87"}, "properties": {"repobilityId": "4078cee1e9b29fc5", "scanner": "scanner-primary", "fingerprint": "034f1ee336d5c562", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2cfdd5f80efd9fe5", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/web/src/pages/ImporterDashboardV2.tsx:52"}, "properties": {"repobilityId": "88208145b86c0046", "scanner": "scanner-primary", "fingerprint": "2cfdd5f80efd9fe5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-828b532ad7a23225", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/pages/BillingOverviewPage.tsx:144"}, "properties": {"repobilityId": "bded237f9f71c9e1", "scanner": "scanner-primary", "fingerprint": "828b532ad7a23225", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-36e9650d92433336", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/ExporterResultsV2.tsx:132"}, "properties": {"repobilityId": "5afd109b995203d9", "scanner": "scanner-primary", "fingerprint": "36e9650d92433336", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-56faccac9cb62e27", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/pages/Index.tsx:93"}, "properties": {"repobilityId": "11edb50656d8d2c6", "scanner": "scanner-primary", "fingerprint": "56faccac9cb62e27", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8d91ffc812ef308", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/pages/ExportLCUpload.tsx:1308"}, "properties": {"repobilityId": "6c4cfdddfe36ffbb", "scanner": "scanner-primary", "fingerprint": "c8d91ffc812ef308", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9ed8865b98cebe8d", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/pages/ExporterDashboard.tsx:284"}, "properties": {"repobilityId": "f4e72c4fa828631f", "scanner": "scanner-primary", "fingerprint": "9ed8865b98cebe8d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-feb103a8fd7fe3f0", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/pages/Register.tsx:45"}, "properties": {"repobilityId": "78466aaf47113799", "scanner": "scanner-primary", "fingerprint": "feb103a8fd7fe3f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9884db85c39b2836", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/Register.tsx:219"}, "properties": {"repobilityId": "2612c260e1914fd2", "scanner": "scanner-primary", "fingerprint": "9884db85c39b2836", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b10fd8aae8c36804", "level": "note", "message": {"text": "Legacy-named symbol `processing_summary_v2` in apps/web/src/pages/ExporterResults.tsx:1401"}, "properties": {"repobilityId": "fa829c9861cc64b5", "scanner": "scanner-primary", "fingerprint": "b10fd8aae8c36804", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6b22669491b486f5", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/src/pages/ExporterResults.tsx:1578"}, "properties": {"repobilityId": "01a12667cb81658b", "scanner": "scanner-primary", "fingerprint": "6b22669491b486f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7193986ef9c0a40e", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/pages/admin/sections/rules/Upload.tsx:135"}, "properties": {"repobilityId": "4971bbd980a3f139", "scanner": "scanner-primary", "fingerprint": "7193986ef9c0a40e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95c562ec9862c1c4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/tracking/TrackingOverview.tsx:286"}, "properties": {"repobilityId": "9dc8b83ae903f2d4", "scanner": "scanner-primary", "fingerprint": "95c562ec9862c1c4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-40de471db82eb304", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/tracking/ActiveShipmentsPage.tsx:202"}, "properties": {"repobilityId": "50bb6de204ff235d", "scanner": "scanner-primary", "fingerprint": "40de471db82eb304", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d2fb87eb4a15e3df", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/tracking/TrackingDashboard.tsx:272"}, "properties": {"repobilityId": "9a2907ef64563061", "scanner": "scanner-primary", "fingerprint": "d2fb87eb4a15e3df", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c1f72aa00dc512e6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/doc-generator/CreateDocumentWizard.tsx:275"}, "properties": {"repobilityId": "9b057c7d561f68dd", "scanner": "scanner-primary", "fingerprint": "c1f72aa00dc512e6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-773e2d7fdedb0934", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/doc-generator/PDFPreview.tsx:92"}, "properties": {"repobilityId": "4a047e04ac1605dd", "scanner": "scanner-primary", "fingerprint": "773e2d7fdedb0934", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-02b8d141d42cba1f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/doc-generator/BuyerDirectoryPage.tsx:165"}, "properties": {"repobilityId": "1b764f2ffcfc0c93", "scanner": "scanner-primary", "fingerprint": "02b8d141d42cba1f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-588c6194fa3d424e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/doc-generator/ProductCatalogPage.tsx:164"}, "properties": {"repobilityId": "06b812cced2faf21", "scanner": "scanner-primary", "fingerprint": "588c6194fa3d424e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5877487fb978a433", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/doc-generator/TemplatesPage.tsx:139"}, "properties": {"repobilityId": "967d841732d50666", "scanner": "scanner-primary", "fingerprint": "5877487fb978a433", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b1f9fddae4af91a8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/doc-generator/DocGeneratorDashboard.tsx:116"}, "properties": {"repobilityId": "04393f7552ff0bd0", "scanner": "scanner-primary", "fingerprint": "b1f9fddae4af91a8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-87434c4a790864f3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/hs-code/HSCodeRulings.tsx:71"}, "properties": {"repobilityId": "eae5832091886608", "scanner": "scanner-primary", "fingerprint": "87434c4a790864f3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1fe3eccc21c1d297", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/hs-code/HSCodeBulk.tsx:143"}, "properties": {"repobilityId": "5c975c02b21b979b", "scanner": "scanner-primary", "fingerprint": "1fe3eccc21c1d297", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-45a6d80cf38dd734", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/hs-code/HSCodeQuotas.tsx:95"}, "properties": {"repobilityId": "6a1ef90af91c246b", "scanner": "scanner-primary", "fingerprint": "45a6d80cf38dd734", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bdb70e5d2ebb37ae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/hs-code/HSCodeSection301.tsx:108"}, "properties": {"repobilityId": "82906e6932de9cb1", "scanner": "scanner-primary", "fingerprint": "bdb70e5d2ebb37ae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c44f26e4b0fa3ce0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/hs-code/HSCodeADCVD.tsx:139"}, "properties": {"repobilityId": "26129c990f23f891", "scanner": "scanner-primary", "fingerprint": "c44f26e4b0fa3ce0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e91df32899b84aec", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/hs-code/HSCodeDashboard.tsx:196"}, "properties": {"repobilityId": "33a8f0f6c1ea6113", "scanner": "scanner-primary", "fingerprint": "e91df32899b84aec", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2b1c56b29e1f95b6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/price-verify/VerifyPage.tsx:1110"}, "properties": {"repobilityId": "87f4f143920acb2d", "scanner": "scanner-primary", "fingerprint": "2b1c56b29e1f95b6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a78216d9e2d1b40e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/price-verify/AdminPage.tsx:165"}, "properties": {"repobilityId": "1dee5a55b189fac3", "scanner": "scanner-primary", "fingerprint": "a78216d9e2d1b40e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-619f15ec6960d69b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/price-verify/HistoryPage.tsx:199"}, "properties": {"repobilityId": "f9f9f02b7941ddc0", "scanner": "scanner-primary", "fingerprint": "619f15ec6960d69b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-03295bfa572e0ff5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/price-verify/AnalyticsPage.tsx:91"}, "properties": {"repobilityId": "badafcb6e6aaccdc", "scanner": "scanner-primary", "fingerprint": "03295bfa572e0ff5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cdf71ecc2eb1ccb9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/lc-builder/LCTemplatesPage.tsx:184"}, "properties": {"repobilityId": "ee2219be350fd902", "scanner": "scanner-primary", "fingerprint": "cdf71ecc2eb1ccb9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-04e4aacf21c1bcaf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/lc-builder/BeneficiaryDirectoryPage.tsx:283"}, "properties": {"repobilityId": "c78f91006b8754b5", "scanner": "scanner-primary", "fingerprint": "04e4aacf21c1bcaf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bc3875cb4578b2d2", "level": "note", "message": {"text": "Legacy-named symbol `copies_copy` in apps/web/src/pages/tools/lc-builder/LCBuilderWizard.tsx:153"}, "properties": {"repobilityId": "d0f13b15d9c61238", "scanner": "scanner-primary", "fingerprint": "bc3875cb4578b2d2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-546b422b26dc6ddf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/lc-builder/LCBuilderWizard.tsx:609"}, "properties": {"repobilityId": "5bd990443c3e8f1e", "scanner": "scanner-primary", "fingerprint": "546b422b26dc6ddf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bf16eb962c503238", "level": "note", "message": {"text": "Legacy-named symbol `handleSaveOld` in apps/web/src/pages/tools/lc-builder/ApplicantProfilesPage.tsx:281"}, "properties": {"repobilityId": "0b2c782ce5e36ea0", "scanner": "scanner-primary", "fingerprint": "bf16eb962c503238", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7155c6f232b9baea", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/lc-builder/ApplicantProfilesPage.tsx:253"}, "properties": {"repobilityId": "ce919703ab6543cc", "scanner": "scanner-primary", "fingerprint": "7155c6f232b9baea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6712c591f0a984d7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/pages/tools/lc-builder/ClauseLibraryPage.tsx:145"}, "properties": {"repobilityId": "5f8d2af6229becc1", "scanner": "scanner-primary", "fingerprint": "6712c591f0a984d7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-87ad04d45e313484", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/hooks/use-auth.tsx:629"}, "properties": {"repobilityId": "a4eeb3aeafb7caae", "scanner": "scanner-primary", "fingerprint": "87ad04d45e313484", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7b92f0b8d89a7f5", "level": "note", "message": {"text": "Legacy-named symbol `structured_result_v1` in apps/web/src/hooks/use-lcopilot.ts:204"}, "properties": {"repobilityId": "d4f315c0123b39d9", "scanner": "scanner-primary", "fingerprint": "b7b92f0b8d89a7f5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-742f462f69b370e2", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/hooks/use-lcopilot.ts:574"}, "properties": {"repobilityId": "e3b8715886e59430", "scanner": "scanner-primary", "fingerprint": "742f462f69b370e2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ef211a530cb1846", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/examiner_prototype.py:47"}, "properties": {"repobilityId": "ed4d1229e8fe5c45", "scanner": "scanner-primary", "fingerprint": "1ef211a530cb1846", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ffcf105ec0c0d56b", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/rulhub_probe.py:165"}, "properties": {"repobilityId": "1712df525d826727", "scanner": "scanner-primary", "fingerprint": "ffcf105ec0c0d56b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-809ca083258883bf", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/smoke_matrix.py:93"}, "properties": {"repobilityId": "e67806335d0aa7df", "scanner": "scanner-primary", "fingerprint": "809ca083258883bf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea53401413369f3e", "level": "note", "message": {"text": "Legacy-named symbol `structured_result_v1` in scripts/replay_job.py:67"}, "properties": {"repobilityId": "61e1253ee75e53cc", "scanner": "scanner-primary", "fingerprint": "ea53401413369f3e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-96c81cb8f6106112", "level": "note", "message": {"text": "Legacy-named symbol `create_backup` in scripts/dr/backup_db.py:40"}, "properties": {"repobilityId": "848014bbd4776a72", "scanner": "scanner-primary", "fingerprint": "96c81cb8f6106112", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f36e64e690647615", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/dr/backup_db.py:79"}, "properties": {"repobilityId": "cdd4346dd02f880d", "scanner": "scanner-primary", "fingerprint": "f36e64e690647615", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1c8c95b5200f87ca", "level": "note", "message": {"text": "Legacy-named symbol `restore_backup` in scripts/dr/restore_db.py:39"}, "properties": {"repobilityId": "82511c985ca4a7d8", "scanner": "scanner-primary", "fingerprint": "1c8c95b5200f87ca", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a526decc73e814fb", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/dr/restore_db.py:157"}, "properties": {"repobilityId": "619592e32303ae26", "scanner": "scanner-primary", "fingerprint": "a526decc73e814fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-70e5a7d5dfb4efd3", "level": "note", "message": {"text": "Legacy-named symbol `use_existing_backup` in scripts/dr/dr_drill.py:43"}, "properties": {"repobilityId": "26a4fa8441350318", "scanner": "scanner-primary", "fingerprint": "70e5a7d5dfb4efd3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6ef40b38451d36c1", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/dr/dr_drill.py:146"}, "properties": {"repobilityId": "041b93d5478bc5be", "scanner": "scanner-primary", "fingerprint": "6ef40b38451d36c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1e04088c4eccfd9d", "level": "note", "message": {"text": "Legacy-named symbol `compliance_policy_2024_v1` in scripts/demo/seed_demo_data.py:552"}, "properties": {"repobilityId": "072e379076a71638", "scanner": "scanner-primary", "fingerprint": "1e04088c4eccfd9d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5f19d3e6892196af", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/importer_corpus/render.py:419"}, "properties": {"repobilityId": "bd3f8e10e54b0e77", "scanner": "scanner-primary", "fingerprint": "5f19d3e6892196af", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-24cf37b903468b51", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/importer_corpus/corridors.py:454"}, "properties": {"repobilityId": "4d103dd5b3b90525", "scanner": "scanner-primary", "fingerprint": "24cf37b903468b51", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30c2fb06bc4dac03", "level": "note", "message": {"text": "Legacy-named symbol `processing_summary_v2` in packages/shared-types/python/schemas.py:243"}, "properties": {"repobilityId": "ebb1426ff8532e61", "scanner": "scanner-primary", "fingerprint": "30c2fb06bc4dac03", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ced7dab3f750334a", "level": "note", "message": {"text": "Legacy-named symbol `processing_summary_v2` in packages/shared-types/src/api.ts:219"}, "properties": {"repobilityId": "a078599efbb89a60", "scanner": "scanner-primary", "fingerprint": "ced7dab3f750334a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a9735e6a5954ec32", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/shared-types/src/api.ts:1237"}, "properties": {"repobilityId": "c13eb33e7105a6a9", "scanner": "scanner-primary", "fingerprint": "a9735e6a5954ec32", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76445b0f1319f674", "level": "note", "message": {"text": "Legacy-named symbol `eurc_v1` in Data/organize_rules.py:14"}, "properties": {"repobilityId": "983f84375341afc7", "scanner": "scanner-primary", "fingerprint": "76445b0f1319f674", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9395af3ef1a1758e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/pages/notifications/SettingsPage.tsx:68"}, "properties": {"repobilityId": "6995275fe777abc0", "scanner": "scanner-primary", "fingerprint": "9395af3ef1a1758e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3f6cc24a07dbf8ce", "level": "note", "message": {"text": "144 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "fdeddec293ea0653", "scanner": "scanner-primary", "fingerprint": "3f6cc24a07dbf8ce", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-76a2f6818267a9a8", "level": "note", "message": {"text": "Near-duplicate function bodies in 8 places"}, "properties": {"repobilityId": "0695a1045da5258f", "scanner": "scanner-primary", "fingerprint": "76a2f6818267a9a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "0f556318e5c0575f", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "d9e7440a64422480", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "e8419bc60a5cb6ad", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "465b2ed7320e6354", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "6a54989cc62c35c8", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "8e246657f049a4e3", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "c56dd50b2575076a", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "2934abfa14ae4b42", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "0a4eb1c24cf646ca", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "ef859b5b901add5b", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "a8bdc173672d797f", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "888950627e11b4fb", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "aff2bfc725139969", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "51831590379bc2ff", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "88106a622998bbc4", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "9868809c8519eaf4", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "6bd0e8fd16e0b7a2", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "4ad03cab1042cad9", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "d9260c48c9fdef6c", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-b3d0e983c66308db", "level": "warning", "message": {"text": "Frontend route `/status` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "e9b36499e18a4f9c", "scanner": "scanner-primary", "fingerprint": "b3d0e983c66308db", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ac5f34e85aa295bd", "level": "warning", "message": {"text": "Frontend route `/debug` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "6e844e10d4358934", "scanner": "scanner-primary", "fingerprint": "ac5f34e85aa295bd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-bfd93019afd65e19", "level": "warning", "message": {"text": "Frontend route `/lc-demo` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "e210190542120d5b", "scanner": "scanner-primary", "fingerprint": "bfd93019afd65e19", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-dcfd09e6e9a0dc69", "level": "warning", "message": {"text": "Frontend route `/trdr` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "98e9a827e1da8813", "scanner": "scanner-primary", "fingerprint": "dcfd09e6e9a0dc69", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-d555388d2958c243", "level": "warning", "message": {"text": "Frontend route `screen/party` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "3043d1a1f3c062da", "scanner": "scanner-primary", "fingerprint": "d555388d2958c243", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a08e86a377dd9bf0", "level": "warning", "message": {"text": "Frontend route `screen/vessel` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "7d96603a97a6b6dd", "scanner": "scanner-primary", "fingerprint": "a08e86a377dd9bf0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-8a305a52ab9a8905", "level": "warning", "message": {"text": "Frontend route `screen/goods` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "1ce4e7c8c46b09f2", "scanner": "scanner-primary", "fingerprint": "8a305a52ab9a8905", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9193b03c7be0e4e2", "level": "warning", "message": {"text": "Frontend route `batch` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "e1f06a7bb809173c", "scanner": "scanner-primary", "fingerprint": "9193b03c7be0e4e2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-310500230cd25e1e", "level": "warning", "message": {"text": "Frontend route `history` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "ff3232328b57d030", "scanner": "scanner-primary", "fingerprint": "310500230cd25e1e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7a05d7c6864837f9", "level": "warning", "message": {"text": "Frontend route `certificates` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "1b85bf0295f7ef8f", "scanner": "scanner-primary", "fingerprint": "7a05d7c6864837f9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-04b81d0a8bee54e7", "level": "warning", "message": {"text": "Frontend route `watchlist` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "8f744230a77e7e29", "scanner": "scanner-primary", "fingerprint": "04b81d0a8bee54e7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a5db5aeae75b8874", "level": "warning", "message": {"text": "Frontend route `api` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "d83ccf0448c1f460", "scanner": "scanner-primary", "fingerprint": "a5db5aeae75b8874", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-42bfc76f6bb25e2f", "level": "warning", "message": {"text": "Frontend route `settings` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "e19804a54328eecf", "scanner": "scanner-primary", "fingerprint": "42bfc76f6bb25e2f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-10de07968e5f658d", "level": "warning", "message": {"text": "Frontend route `help` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "e962478731f3df10", "scanner": "scanner-primary", "fingerprint": "10de07968e5f658d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-67259b97a7c123de", "level": "warning", "message": {"text": "Frontend route `classify` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "997a923753c75cd0", "scanner": "scanner-primary", "fingerprint": "67259b97a7c123de", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-549b77cb6cc17ac8", "level": "warning", "message": {"text": "Frontend route `search` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "b5dc4159ac27dc0e", "scanner": "scanner-primary", "fingerprint": "549b77cb6cc17ac8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-14c0737e35655b50", "level": "warning", "message": {"text": "Frontend route `duty` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "58e5f22930932ab0", "scanner": "scanner-primary", "fingerprint": "14c0737e35655b50", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-d733702d282880d2", "level": "warning", "message": {"text": "Frontend route `fta` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "dcd015e3a7730512", "scanner": "scanner-primary", "fingerprint": "d733702d282880d2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-880809418930ac1f", "level": "warning", "message": {"text": "Frontend route `roo` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "d8b9f267580d4217", "scanner": "scanner-primary", "fingerprint": "880809418930ac1f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-acf9cced0b3cf380", "level": "warning", "message": {"text": "Frontend route `compliance` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "9a78263af34b678b", "scanner": "scanner-primary", "fingerprint": "acf9cced0b3cf380", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-5a1507cbcf779987", "level": "warning", "message": {"text": "Frontend route `favorites` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "fca87c002c9c30b3", "scanner": "scanner-primary", "fingerprint": "5a1507cbcf779987", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-fde1dea39df17620", "level": "warning", "message": {"text": "Frontend route `bulk` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "fcba42dd01ffee32", "scanner": "scanner-primary", "fingerprint": "fde1dea39df17620", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-806120181019ef0f", "level": "warning", "message": {"text": "Frontend route `compare` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "ba1b8f9cb22c7aa5", "scanner": "scanner-primary", "fingerprint": "806120181019ef0f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-dd1069f4244d82fa", "level": "warning", "message": {"text": "Frontend route `rulings` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "9a400dbf01322ec7", "scanner": "scanner-primary", "fingerprint": "dd1069f4244d82fa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-bce198504f193d80", "level": "warning", "message": {"text": "Frontend route `alerts` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "7efdd1d26d94cffb", "scanner": "scanner-primary", "fingerprint": "bce198504f193d80", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c693d8fca6f12de2", "level": "warning", "message": {"text": "Frontend route `usmca` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "2a4863091b50069f", "scanner": "scanner-primary", "fingerprint": "c693d8fca6f12de2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-79f4ea2509ec29ee", "level": "warning", "message": {"text": "Frontend route `teams` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "2384d031b007924c", "scanner": "scanner-primary", "fingerprint": "79f4ea2509ec29ee", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0e413fca86d7817b", "level": "warning", "message": {"text": "Frontend route `compliance-suite` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "b2a1e8a097d19c56", "scanner": "scanner-primary", "fingerprint": "0e413fca86d7817b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9292e48fd1576587", "level": "warning", "message": {"text": "Frontend route `export-controls` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "de22d8aba29bf047", "scanner": "scanner-primary", "fingerprint": "9292e48fd1576587", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2ffaf43fd4ab8bf2", "level": "warning", "message": {"text": "Frontend route `section-301` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "543501068f5f6ac6", "scanner": "scanner-primary", "fingerprint": "2ffaf43fd4ab8bf2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-676fae4e7ff37dc2", "level": "warning", "message": {"text": "Frontend route `ad-cvd` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "59cdb623125f2a4b", "scanner": "scanner-primary", "fingerprint": "676fae4e7ff37dc2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-bb08d54207ebe621", "level": "warning", "message": {"text": "Frontend route `quotas` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "8b7c292a03d53fce", "scanner": "scanner-primary", "fingerprint": "bb08d54207ebe621", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9fbaf0cb5ced77e4", "level": "warning", "message": {"text": "Frontend route `new` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "14d7acb1553e008b", "scanner": "scanner-primary", "fingerprint": "9fbaf0cb5ced77e4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-827cfc37a1a4b61c", "level": "warning", "message": {"text": "Frontend route `edit/:id` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "2c3f0f01dc776324", "scanner": "scanner-primary", "fingerprint": "827cfc37a1a4b61c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7c792a46863b8b0f", "level": "warning", "message": {"text": "Frontend route `templates` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "87ece6459828da31", "scanner": "scanner-primary", "fingerprint": "7c792a46863b8b0f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2437e7cb7f903bf5", "level": "warning", "message": {"text": "Frontend route `products` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "2780aa38c74efdaf", "scanner": "scanner-primary", "fingerprint": "2437e7cb7f903bf5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b19eb9829c96dd44", "level": "warning", "message": {"text": "Frontend route `buyers` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "31db107d9f11050c", "scanner": "scanner-primary", "fingerprint": "b19eb9829c96dd44", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9b4d81e17eb02b4a", "level": "warning", "message": {"text": "Frontend route `signatures` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "e454bb0a09160778", "scanner": "scanner-primary", "fingerprint": "9b4d81e17eb02b4a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0ab9d85c354b001c", "level": "warning", "message": {"text": "Frontend route `bank-formats` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "824cce247973f16c", "scanner": "scanner-primary", "fingerprint": "0ab9d85c354b001c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ee5657acd27811eb", "level": "warning", "message": {"text": "Frontend route `clauses` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "485eb40d7ba59ca0", "scanner": "scanner-primary", "fingerprint": "ee5657acd27811eb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-dc5b06e27b8e3233", "level": "warning", "message": {"text": "Frontend route `applicants` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "0713731719b059a4", "scanner": "scanner-primary", "fingerprint": "dc5b06e27b8e3233", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-cd43f01e739cb65f", "level": "warning", "message": {"text": "Frontend route `beneficiaries` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "f742b3ca545f40c0", "scanner": "scanner-primary", "fingerprint": "cd43f01e739cb65f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7c8924e40cedd45f", "level": "warning", "message": {"text": "Frontend route `mt700-reference` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "4e6bfd2d6fa34dd4", "scanner": "scanner-primary", "fingerprint": "7c8924e40cedd45f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7282fed50bb12257", "level": "warning", "message": {"text": "Frontend route `risk` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "058ccd9aac8f28a9", "scanner": "scanner-primary", "fingerprint": "7282fed50bb12257", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e707518ec4f3266c", "level": "warning", "message": {"text": "Frontend route `history/:applicationId` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "4c0ec49316b1d68e", "scanner": "scanner-primary", "fingerprint": "e707518ec4f3266c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9c21359046c237c1", "level": "warning", "message": {"text": "Frontend route `workflow/:id` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "ea766233927d6e2e", "scanner": "scanner-primary", "fingerprint": "9c21359046c237c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b46af12dc7c5e9f4", "level": "warning", "message": {"text": "Frontend route `approvals` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "15ff8b850a296fca", "scanner": "scanner-primary", "fingerprint": "b46af12dc7c5e9f4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-5de4d0fe91a05db7", "level": "warning", "message": {"text": "Frontend route `shared` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "d52d5a216c1aeb2c", "scanner": "scanner-primary", "fingerprint": "5de4d0fe91a05db7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a46e23ba9dcddbaa", "level": "warning", "message": {"text": "Frontend route `/lc-builder/wizard/:id` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "795d5fb58c054c07", "scanner": "scanner-primary", "fingerprint": "a46e23ba9dcddbaa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-bdbc2333e871637a", "level": "warning", "message": {"text": "Frontend route `vessel-search` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "2fa389fe213cba1a", "scanner": "scanner-primary", "fingerprint": "bdbc2333e871637a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6e5d177a1226a09a", "level": "warning", "message": {"text": "Frontend route `container/:containerId` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "b96177f5a36543f7", "scanner": "scanner-primary", "fingerprint": "6e5d177a1226a09a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-cd8c8df36a630414", "level": "warning", "message": {"text": "Frontend route `vessel/:vesselId` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "2f4a7420a485405a", "scanner": "scanner-primary", "fingerprint": "cd8c8df36a630414", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b1b2744d8dc233ab", "level": "warning", "message": {"text": "Frontend route `active` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "50d41d932ee2522b", "scanner": "scanner-primary", "fingerprint": "b1b2744d8dc233ab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-699a7ad7e4e8f7c9", "level": "warning", "message": {"text": "Frontend route `map` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "8d3f7ed1dd2cb4d5", "scanner": "scanner-primary", "fingerprint": "699a7ad7e4e8f7c9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-03986f5bdf05bc17", "level": "warning", "message": {"text": "Frontend route `ports` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "99697ef04937d719", "scanner": "scanner-primary", "fingerprint": "03986f5bdf05bc17", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1099f02078016f6c", "level": "warning", "message": {"text": "Frontend route `exceptions` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "7e34ed24bb0f3480", "scanner": "scanner-primary", "fingerprint": "1099f02078016f6c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-59986ca8054ae55a", "level": "warning", "message": {"text": "Frontend route `analytics` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "9c5078db8a3f0287", "scanner": "scanner-primary", "fingerprint": "59986ca8054ae55a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-240d67a31e33eb1f", "level": "warning", "message": {"text": "Frontend route `performance` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "0a71dfba53179cdf", "scanner": "scanner-primary", "fingerprint": "240d67a31e33eb1f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e0a28d7f5e8f03bf", "level": "warning", "message": {"text": "Frontend route `verify` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "5aef3e26be0be1a0", "scanner": "scanner-primary", "fingerprint": "e0a28d7f5e8f03bf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f0eb4cdda9e80ca8", "level": "warning", "message": {"text": "Frontend route `commodities` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "99ecc8d6f49d1bd4", "scanner": "scanner-primary", "fingerprint": "f0eb4cdda9e80ca8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-5f2883189411b402", "level": "warning", "message": {"text": "Frontend route `prices` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "b7095b19b61a53df", "scanner": "scanner-primary", "fingerprint": "5f2883189411b402", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-382eb101f07c1da5", "level": "warning", "message": {"text": "Frontend route `reports` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "c43476df6a88875d", "scanner": "scanner-primary", "fingerprint": "382eb101f07c1da5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-53851507d7a1f0e8", "level": "warning", "message": {"text": "Frontend route `admin` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "dbe1231f038b38f2", "scanner": "scanner-primary", "fingerprint": "53851507d7a1f0e8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-12e5f988a01e0408", "level": "warning", "message": {"text": "Frontend route `/hub/*` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "9ace50e94d757adc", "scanner": "scanner-primary", "fingerprint": "12e5f988a01e0408", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-8072d8a96fc800a9", "level": "warning", "message": {"text": "Frontend route `/lcopilot/review/:sessionId` has no Link/navigate to it \u2014 apps/web/src/backup-original/App.tsx"}, "properties": {"repobilityId": "ffe122640b0983c5", "scanner": "scanner-primary", "fingerprint": "8072d8a96fc800a9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-96a40861bf9ac914", "level": "warning", "message": {"text": "Frontend route `/lcopilot/report/:sessionId` has no Link/navigate to it \u2014 apps/web/src/backup-original/App.tsx"}, "properties": {"repobilityId": "a42751b661d5643e", "scanner": "scanner-primary", "fingerprint": "96a40861bf9ac914", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2259f956fa043e1d", "level": "warning", "message": {"text": "Frontend route `/lcopilot/demo` has no Link/navigate to it \u2014 apps/web/src/backup-original/App.tsx"}, "properties": {"repobilityId": "189e442a5c2f8ec8", "scanner": "scanner-primary", "fingerprint": "2259f956fa043e1d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-689974ca064c73e6", "level": "warning", "message": {"text": "Frontend route `/lcopilot/results` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "b1c58ad798ebf3a5", "scanner": "scanner-primary", "fingerprint": "689974ca064c73e6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9df692f31ad74b36", "level": "warning", "message": {"text": "Frontend route `/lcopilot/results/:jobId` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "a32ace12e0744c51", "scanner": "scanner-primary", "fingerprint": "9df692f31ad74b36", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-51c7c36a54d618b7", "level": "warning", "message": {"text": "Frontend route `/lcopilot/results-v2/:sessionId` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "31a2859f8d917f14", "scanner": "scanner-primary", "fingerprint": "51c7c36a54d618b7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-5b9b9a96995baf37", "level": "warning", "message": {"text": "Frontend route `/lcopilot/draft-corrections` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "b98ae04aef853ebc", "scanner": "scanner-primary", "fingerprint": "5b9b9a96995baf37", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-d7b0fc5ba6748d3a", "level": "warning", "message": {"text": "Frontend route `/lcopilot/draft-risk-results` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "540e8259e56b5fd8", "scanner": "scanner-primary", "fingerprint": "d7b0fc5ba6748d3a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-90ce79d8b2431b95", "level": "warning", "message": {"text": "Frontend route `/lcopilot/import-upload` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "e83772f87edbcb70", "scanner": "scanner-primary", "fingerprint": "90ce79d8b2431b95", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7bcfcc152bf41e1b", "level": "warning", "message": {"text": "Frontend route `/import/results/:jobId` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "6d49fb3a957812bd", "scanner": "scanner-primary", "fingerprint": "7bcfcc152bf41e1b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-4fbe26c343521a12", "level": "warning", "message": {"text": "Frontend route `/lcopilot/import-results/:jobId` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "d9054622f7cc9b74", "scanner": "scanner-primary", "fingerprint": "4fbe26c343521a12", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f631ab5491e797fe", "level": "warning", "message": {"text": "Frontend route `/lcopilot/exporter-dashboard/login` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "ce98e5f9e6bbd3c3", "scanner": "scanner-primary", "fingerprint": "f631ab5491e797fe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-548868107c65028f", "level": "warning", "message": {"text": "Frontend route `/lcopilot/combined-dashboard` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "44e9f4dc3df2fe01", "scanner": "scanner-primary", "fingerprint": "548868107c65028f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-64a5f0d2fb16d0ae", "level": "warning", "message": {"text": "Frontend route `/lcopilot/exporter-dashboard/legacy` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "6ced84aadb226cc5", "scanner": "scanner-primary", "fingerprint": "64a5f0d2fb16d0ae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e5b082efa0b5e620", "level": "warning", "message": {"text": "Frontend route `/lcopilot/exporter-dashboard/v2` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "28fe0b12a7c11fef", "scanner": "scanner-primary", "fingerprint": "e5b082efa0b5e620", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-808fa14a793fb50e", "level": "warning", "message": {"text": "Frontend route `/lcopilot/importer-dashboard/login` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "23fea70b6394d3fd", "scanner": "scanner-primary", "fingerprint": "808fa14a793fb50e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-38ae0711d78c1e6b", "level": "warning", "message": {"text": "Frontend route `/lcopilot/_bulk-test` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "8f472a68133e27ff", "scanner": "scanner-primary", "fingerprint": "38ae0711d78c1e6b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ebc53823e90fd8c0", "level": "warning", "message": {"text": "Frontend route `/repaper/:token` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "fb63b95fa93b7297", "scanner": "scanner-primary", "fingerprint": "ebc53823e90fd8c0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-3a85b1d663896b22", "level": "warning", "message": {"text": "Frontend route `/lcopilot/enterprise-dashboard` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "9c59f2f6dcb7fd57", "scanner": "scanner-primary", "fingerprint": "3a85b1d663896b22", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-17be27661ae13cbe", "level": "warning", "message": {"text": "Frontend route `/lcopilot/exporter-results` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "f59092ff37d6cd8f", "scanner": "scanner-primary", "fingerprint": "17be27661ae13cbe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e096f6425a4fcfaf", "level": "warning", "message": {"text": "Frontend route `/lcopilot/exporter-analytics` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "36b0bbe1d2e890c1", "scanner": "scanner-primary", "fingerprint": "e096f6425a4fcfaf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-db4e1c5b12417749", "level": "warning", "message": {"text": "Frontend route `/lcopilot/importer-analytics` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "008741f267ef8a91", "scanner": "scanner-primary", "fingerprint": "db4e1c5b12417749", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f6f7de7bb2777dae", "level": "warning", "message": {"text": "Frontend route `/lcopilot/bank-dashboard/legacy` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "a3d80762e714730d", "scanner": "scanner-primary", "fingerprint": "f6f7de7bb2777dae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-84e4123e197169fe", "level": "warning", "message": {"text": "Frontend route `/lcopilot/bank-dashboard/client/:clientName` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "988cf817ca9ca916", "scanner": "scanner-primary", "fingerprint": "84e4123e197169fe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0fb6281be1c76b1b", "level": "warning", "message": {"text": "Frontend route `/lcopilot/component-gallery` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "cc8318f6fcdb0213", "scanner": "scanner-primary", "fingerprint": "0fb6281be1c76b1b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-d28acb40f8dfccf1", "level": "warning", "message": {"text": "Frontend route `/lcopilot/exporter-corrections` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "98515cb14f96a4a1", "scanner": "scanner-primary", "fingerprint": "d28acb40f8dfccf1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-db76b499bb683e08", "level": "warning", "message": {"text": "Frontend route `/lcopilot/supplier-corrections` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "2e19b757f11b01e5", "scanner": "scanner-primary", "fingerprint": "db76b499bb683e08", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-53ddc482dbfecde1", "level": "warning", "message": {"text": "Frontend route `/lcopilot/supplier-results` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "cb89422a37a2ef0a", "scanner": "scanner-primary", "fingerprint": "53ddc482dbfecde1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-49201cba5ac1fff3", "level": "warning", "message": {"text": "Frontend route `/test-import` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "b807b856d34ca527", "scanner": "scanner-primary", "fingerprint": "49201cba5ac1fff3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-71063a867d727f62", "level": "warning", "message": {"text": "Frontend route `/auth/callback` has no Link/navigate to it \u2014 apps/web/src/App.tsx"}, "properties": {"repobilityId": "cb04a27cf406c8f4", "scanner": "scanner-primary", "fingerprint": "71063a867d727f62", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-8f23b3d4d5a325bc", "level": "warning", "message": {"text": "Frontend route `/lcopilot/login` has no Link/navigate to it \u2014 apps/web/src/backup-original/App.tsx"}, "properties": {"repobilityId": "6f7f99c347a97ea8", "scanner": "scanner-primary", "fingerprint": "8f23b3d4d5a325bc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-61ad8ce2d6b07a83", "level": "warning", "message": {"text": "Frontend route `/lcopilot/register` has no Link/navigate to it \u2014 apps/web/src/backup-original/App.tsx"}, "properties": {"repobilityId": "5fcf4a3329e6100c", "scanner": "scanner-primary", "fingerprint": "61ad8ce2d6b07a83", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9dcdcd6c91ddaa62", "level": "error", "message": {"text": "FastAPI POST `warm_endpoint` without auth dependency \u2014 apps/api/main.py:552"}, "properties": {"repobilityId": "4599818ee26f9a5e", "scanner": "scanner-primary", "fingerprint": "9dcdcd6c91ddaa62", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/main.py"}, "region": {"startLine": 552}}}]}, {"ruleId": "scanner-cd84815a4fa158e8", "level": "error", "message": {"text": "Flask mutation route `upload_document` without `@login_required` \u2014 apps/api/trust_platform/compliance/rule_review_dashboard/app.py:136"}, "properties": {"repobilityId": "e0ee6a2f2fe05daa", "scanner": "scanner-primary", "fingerprint": "cd84815a4fa158e8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/trust_platform/compliance/rule_review_dashboard/app.py"}, "region": {"startLine": 136}}}]}, {"ruleId": "scanner-97803a036a115aa0", "level": "error", "message": {"text": "Flask mutation route `handle_suggestion` without `@login_required` \u2014 apps/api/trust_platform/compliance/rule_review_dashboard/app.py:248"}, "properties": {"repobilityId": "aa6c06c612ea1a76", "scanner": "scanner-primary", "fingerprint": "97803a036a115aa0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/trust_platform/compliance/rule_review_dashboard/app.py"}, "region": {"startLine": 248}}}]}, {"ruleId": "scanner-dc388ecc87896374", "level": "error", "message": {"text": "Flask mutation route `lint_check` without `@login_required` \u2014 apps/api/trust_platform/compliance/rule_review_dashboard/app.py:389"}, "properties": {"repobilityId": "8432c3ce184c1dd1", "scanner": "scanner-primary", "fingerprint": "dc388ecc87896374", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/trust_platform/compliance/rule_review_dashboard/app.py"}, "region": {"startLine": 389}}}]}, {"ruleId": "scanner-16fd9fa5095960c5", "level": "error", "message": {"text": "FastAPI POST `search_commodities` without auth dependency \u2014 apps/api/app/routers/price_verify.py:205"}, "properties": {"repobilityId": "befdb36bd2337837", "scanner": "scanner-primary", "fingerprint": "16fd9fa5095960c5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/price_verify.py"}, "region": {"startLine": 205}}}]}, {"ruleId": "scanner-784e01714d8dba88", "level": "error", "message": {"text": "FastAPI POST `verify_single_price` without auth dependency \u2014 apps/api/app/routers/price_verify.py:383"}, "properties": {"repobilityId": "57df6922de69cb35", "scanner": "scanner-primary", "fingerprint": "784e01714d8dba88", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/price_verify.py"}, "region": {"startLine": 383}}}]}, {"ruleId": "scanner-f3c80036a04a526a", "level": "error", "message": {"text": "FastAPI POST `verify_batch_prices` without auth dependency \u2014 apps/api/app/routers/price_verify.py:549"}, "properties": {"repobilityId": "0bb3043a701c355e", "scanner": "scanner-primary", "fingerprint": "f3c80036a04a526a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/price_verify.py"}, "region": {"startLine": 549}}}]}, {"ruleId": "scanner-9d893c7678e41278", "level": "error", "message": {"text": "FastAPI POST `verify_and_export_pdf` without auth dependency \u2014 apps/api/app/routers/price_verify.py:624"}, "properties": {"repobilityId": "989ee17108a2e0b3", "scanner": "scanner-primary", "fingerprint": "9d893c7678e41278", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/price_verify.py"}, "region": {"startLine": 624}}}]}, {"ruleId": "scanner-c80b9d6710b9c559", "level": "error", "message": {"text": "FastAPI POST `verify_batch_and_export_pdf` without auth dependency \u2014 apps/api/app/routers/price_verify.py:696"}, "properties": {"repobilityId": "ad02e770a77374ea", "scanner": "scanner-primary", "fingerprint": "c80b9d6710b9c559", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/price_verify.py"}, "region": {"startLine": 696}}}]}, {"ruleId": "scanner-87bdf7baa5811ef7", "level": "error", "message": {"text": "FastAPI POST `explain_variance_with_ai` without auth dependency \u2014 apps/api/app/routers/price_verify.py:752"}, "properties": {"repobilityId": "dfdbe428a25f4c16", "scanner": "scanner-primary", "fingerprint": "87bdf7baa5811ef7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/price_verify.py"}, "region": {"startLine": 752}}}]}, {"ruleId": "scanner-59e72f8ec582b281", "level": "error", "message": {"text": "FastAPI POST `get_tbml_assessment` without auth dependency \u2014 apps/api/app/routers/price_verify.py:814"}, "properties": {"repobilityId": "de0f0da7fd427e79", "scanner": "scanner-primary", "fingerprint": "59e72f8ec582b281", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/price_verify.py"}, "region": {"startLine": 814}}}]}, {"ruleId": "scanner-9386a3100f57c4b0", "level": "error", "message": {"text": "FastAPI POST `extract_prices_from_document` without auth dependency \u2014 apps/api/app/routers/price_verify.py:1040"}, "properties": {"repobilityId": "31706968334417d3", "scanner": "scanner-primary", "fingerprint": "9386a3100f57c4b0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/price_verify.py"}, "region": {"startLine": 1040}}}]}, {"ruleId": "scanner-3676ede3d07cde5a", "level": "error", "message": {"text": "FastAPI POST `extract_batch_documents` without auth dependency \u2014 apps/api/app/routers/price_verify.py:1186"}, "properties": {"repobilityId": "1a6e7163fa9d99b6", "scanner": "scanner-primary", "fingerprint": "3676ede3d07cde5a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/price_verify.py"}, "region": {"startLine": 1186}}}]}, {"ruleId": "scanner-a789ddd49b2d7883", "level": "error", "message": {"text": "FastAPI POST `generate_sar_report` without auth dependency \u2014 apps/api/app/routers/price_verify.py:1522"}, "properties": {"repobilityId": "0410d9b8d8ed19e6", "scanner": "scanner-primary", "fingerprint": "a789ddd49b2d7883", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/price_verify.py"}, "region": {"startLine": 1522}}}]}, {"ruleId": "scanner-ea241b5bdd548bde", "level": "error", "message": {"text": "FastAPI POST `generate_compliance_report` without auth dependency \u2014 apps/api/app/routers/price_verify.py:1701"}, "properties": {"repobilityId": "1ce9e37cc86a081e", "scanner": "scanner-primary", "fingerprint": "ea241b5bdd548bde", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/price_verify.py"}, "region": {"startLine": 1701}}}]}, {"ruleId": "scanner-f124ed80375c60db", "level": "error", "message": {"text": "FastAPI POST `configure_alerts` without auth dependency \u2014 apps/api/app/routers/price_verify.py:2028"}, "properties": {"repobilityId": "365a48639e58b3e4", "scanner": "scanner-primary", "fingerprint": "f124ed80375c60db", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/price_verify.py"}, "region": {"startLine": 2028}}}]}, {"ruleId": "scanner-35e7c27b126e4ae5", "level": "error", "message": {"text": "FastAPI POST `send_test_alert` without auth dependency \u2014 apps/api/app/routers/price_verify.py:2059"}, "properties": {"repobilityId": "71004566ff771f19", "scanner": "scanner-primary", "fingerprint": "35e7c27b126e4ae5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/price_verify.py"}, "region": {"startLine": 2059}}}]}, {"ruleId": "scanner-1dd49e0904aefb3a", "level": "error", "message": {"text": "FastAPI POST `upload_bulk_item` without auth dependency \u2014 apps/api/app/routers/bulk_validate.py:241"}, "properties": {"repobilityId": "c02aa650df6bc6c1", "scanner": "scanner-primary", "fingerprint": "1dd49e0904aefb3a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/bulk_validate.py"}, "region": {"startLine": 241}}}]}, {"ruleId": "scanner-0f49e991f81d5bf4", "level": "error", "message": {"text": "FastAPI PUT `fake_s3_upload` without auth dependency \u2014 apps/api/app/routers/fake_s3.py:28"}, "properties": {"repobilityId": "bb1f04c236bdaf3e", "scanner": "scanner-primary", "fingerprint": "0f49e991f81d5bf4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/fake_s3.py"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-51617905a1026d04", "level": "error", "message": {"text": "FastAPI POST `fix_password_endpoint` without auth dependency \u2014 apps/api/app/routers/auth.py:230"}, "properties": {"repobilityId": "0b92de7ca50fdf0a", "scanner": "scanner-primary", "fingerprint": "51617905a1026d04", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/auth.py"}, "region": {"startLine": 230}}}]}, {"ruleId": "scanner-9b83171dc0f53f18", "level": "error", "message": {"text": "FastAPI POST `translate_keys` without auth dependency \u2014 apps/api/app/routers/doc_generator_advanced.py:228"}, "properties": {"repobilityId": "7b493c00f31226cd", "scanner": "scanner-primary", "fingerprint": "9b83171dc0f53f18", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/doc_generator_advanced.py"}, "region": {"startLine": 228}}}]}, {"ruleId": "scanner-24244e1a95e52fb5", "level": "error", "message": {"text": "FastAPI POST `calculate_duty` without auth dependency \u2014 apps/api/app/routers/hs_code.py:518"}, "properties": {"repobilityId": "06cf0bf9aa49970b", "scanner": "scanner-primary", "fingerprint": "24244e1a95e52fb5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/hs_code.py"}, "region": {"startLine": 518}}}]}, {"ruleId": "scanner-ab33af3c91f77dd7", "level": "error", "message": {"text": "FastAPI POST `compare_classifications` without auth dependency \u2014 apps/api/app/routers/hs_code.py:1435"}, "properties": {"repobilityId": "d28ba4b42bf8690b", "scanner": "scanner-primary", "fingerprint": "ab33af3c91f77dd7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/hs_code.py"}, "region": {"startLine": 1435}}}]}, {"ruleId": "scanner-aabfdb183492eead", "level": "error", "message": {"text": "FastAPI POST `quick_screen` without auth dependency \u2014 apps/api/app/routers/sanctions.py:380"}, "properties": {"repobilityId": "7a96838cd5915018", "scanner": "scanner-primary", "fingerprint": "aabfdb183492eead", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/sanctions.py"}, "region": {"startLine": 380}}}]}, {"ruleId": "scanner-e931ecd3f6bc7a39", "level": "error", "message": {"text": "FastAPI POST `create_commodity` without auth dependency \u2014 apps/api/app/routers/price_verify_admin.py:110"}, "properties": {"repobilityId": "14009e95795eda5c", "scanner": "scanner-primary", "fingerprint": "e931ecd3f6bc7a39", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/price_verify_admin.py"}, "region": {"startLine": 110}}}]}, {"ruleId": "scanner-a3ae86e17e02d975", "level": "error", "message": {"text": "FastAPI PUT `update_commodity` without auth dependency \u2014 apps/api/app/routers/price_verify_admin.py:159"}, "properties": {"repobilityId": "f1a7acfd58d4c0ee", "scanner": "scanner-primary", "fingerprint": "a3ae86e17e02d975", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/price_verify_admin.py"}, "region": {"startLine": 159}}}]}, {"ruleId": "scanner-a1e3c4bfe407c89f", "level": "error", "message": {"text": "FastAPI DELETE `delete_commodity` without auth dependency \u2014 apps/api/app/routers/price_verify_admin.py:215"}, "properties": {"repobilityId": "91e2de0eb2a4afd3", "scanner": "scanner-primary", "fingerprint": "a1e3c4bfe407c89f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/price_verify_admin.py"}, "region": {"startLine": 215}}}]}, {"ruleId": "scanner-3f4495e9c225d768", "level": "error", "message": {"text": "FastAPI POST `review_commodity_request` without auth dependency \u2014 apps/api/app/routers/price_verify_admin.py:301"}, "properties": {"repobilityId": "54749848f54216f6", "scanner": "scanner-primary", "fingerprint": "3f4495e9c225d768", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/price_verify_admin.py"}, "region": {"startLine": 301}}}]}, {"ruleId": "scanner-de9bd857050d433a", "level": "error", "message": {"text": "FastAPI POST `export_results_pdf` without auth dependency \u2014 apps/api/app/routers/bank.py:1002"}, "properties": {"repobilityId": "44280c800280a560", "scanner": "scanner-primary", "fingerprint": "de9bd857050d433a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/bank.py"}, "region": {"startLine": 1002}}}]}, {"ruleId": "scanner-1747cec1a420d6a6", "level": "error", "message": {"text": "FastAPI POST `export_results_csv` without auth dependency \u2014 apps/api/app/routers/bank.py:1449"}, "properties": {"repobilityId": "9d7b1c7471beb465", "scanner": "scanner-primary", "fingerprint": "1747cec1a420d6a6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/bank.py"}, "region": {"startLine": 1449}}}]}, {"ruleId": "scanner-55ffbc1d00cd3815", "level": "error", "message": {"text": "FastAPI POST `stripe_webhook` without auth dependency \u2014 apps/api/app/routers/billing.py:513"}, "properties": {"repobilityId": "f53f3890151aaf1f", "scanner": "scanner-primary", "fingerprint": "55ffbc1d00cd3815", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/billing.py"}, "region": {"startLine": 513}}}]}, {"ruleId": "scanner-31946018fc789f7d", "level": "error", "message": {"text": "FastAPI POST `sslcommerz_webhook` without auth dependency \u2014 apps/api/app/routers/billing.py:560"}, "properties": {"repobilityId": "ad95c4d7b5fcc2fe", "scanner": "scanner-primary", "fingerprint": "31946018fc789f7d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/billing.py"}, "region": {"startLine": 560}}}]}, {"ruleId": "scanner-1ba848412bcf298c", "level": "error", "message": {"text": "FastAPI POST `seed_existing_users` without auth dependency \u2014 apps/api/app/routers/members.py:600"}, "properties": {"repobilityId": "9089d2a879b79302", "scanner": "scanner-primary", "fingerprint": "1ba848412bcf298c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/members.py"}, "region": {"startLine": 600}}}]}, {"ruleId": "scanner-62b290b7b0df7468", "level": "error", "message": {"text": "FastAPI POST `rotate_secrets` without auth dependency \u2014 apps/api/app/routers/admin/vault.py:59"}, "properties": {"repobilityId": "60030bd43f81c150", "scanner": "scanner-primary", "fingerprint": "62b290b7b0df7468", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/admin/vault.py"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-709c2806d0e615d6", "level": "error", "message": {"text": "FastAPI POST `provide_approval_decision` without auth dependency \u2014 apps/api/app/routers/admin/governance.py:86"}, "properties": {"repobilityId": "be9131a33c87766b", "scanner": "scanner-primary", "fingerprint": "709c2806d0e615d6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/admin/governance.py"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-656fdb73749434e2", "level": "error", "message": {"text": "FastAPI POST `cleanup_expired_approvals` without auth dependency \u2014 apps/api/app/routers/admin/governance.py:208"}, "properties": {"repobilityId": "a75a416a9a1bd90e", "scanner": "scanner-primary", "fingerprint": "656fdb73749434e2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/admin/governance.py"}, "region": {"startLine": 208}}}]}, {"ruleId": "scanner-dc5a4a4bb099e210", "level": "error", "message": {"text": "FastAPI POST `create_database_backup` without auth dependency \u2014 apps/api/app/routers/admin/dr.py:54"}, "properties": {"repobilityId": "6a45bc0405031ceb", "scanner": "scanner-primary", "fingerprint": "dc5a4a4bb099e210", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/admin/dr.py"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-6db99257971bc533", "level": "error", "message": {"text": "FastAPI POST `create_object_backup` without auth dependency \u2014 apps/api/app/routers/admin/dr.py:101"}, "properties": {"repobilityId": "98286bcdd6630369", "scanner": "scanner-primary", "fingerprint": "6db99257971bc533", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/admin/dr.py"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-3eb09c0f4b7c8167", "level": "error", "message": {"text": "FastAPI POST `run_dr_drill` without auth dependency \u2014 apps/api/app/routers/admin/dr.py:217"}, "properties": {"repobilityId": "789c8aec8464f036", "scanner": "scanner-primary", "fingerprint": "3eb09c0f4b7c8167", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/admin/dr.py"}, "region": {"startLine": 217}}}]}, {"ruleId": "scanner-4be489d7682eef47", "level": "error", "message": {"text": "FastAPI POST `verify_audit_chain` without auth dependency \u2014 apps/api/app/routers/admin/audit.py:181"}, "properties": {"repobilityId": "216ae1d67a2f3333", "scanner": "scanner-primary", "fingerprint": "4be489d7682eef47", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/app/routers/admin/audit.py"}, "region": {"startLine": 181}}}]}, {"ruleId": "scanner-c9c0348b8572c6d5", "level": "error", "message": {"text": "Flask mutation route `validate_lc` without `@login_required` \u2014 apps/api/sme_portal/resilient_app.py:220"}, "properties": {"repobilityId": "89d007c40753fa53", "scanner": "scanner-primary", "fingerprint": "c9c0348b8572c6d5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/sme_portal/resilient_app.py"}, "region": {"startLine": 220}}}]}, {"ruleId": "scanner-9c04e9d11927ca70", "level": "error", "message": {"text": "Flask mutation route `validate_lc` without `@login_required` \u2014 apps/api/sme_portal/app.py:210"}, "properties": {"repobilityId": "93ec7108c00ffa85", "scanner": "scanner-primary", "fingerprint": "9c04e9d11927ca70", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/sme_portal/app.py"}, "region": {"startLine": 210}}}]}, {"ruleId": "scanner-d0a317cf95c56b5c", "level": "error", "message": {"text": "Flask mutation route `api_validate` without `@login_required` \u2014 apps/api/sme_portal/app.py:397"}, "properties": {"repobilityId": "3fcba2f8d1c06770", "scanner": "scanner-primary", "fingerprint": "d0a317cf95c56b5c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/sme_portal/app.py"}, "region": {"startLine": 397}}}]}, {"ruleId": "scanner-67bf3a7303ca2759", "level": "error", "message": {"text": "Flask mutation route `api_evidence_pack` without `@login_required` \u2014 apps/api/sme_portal/app.py:471"}, "properties": {"repobilityId": "174c9436e88b3043", "scanner": "scanner-primary", "fingerprint": "67bf3a7303ca2759", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/sme_portal/app.py"}, "region": {"startLine": 471}}}]}, {"ruleId": "scanner-afe981ffd5b225a7", "level": "error", "message": {"text": "Dangling fetch: GET /api/translations/status (apps/web/src/components/admin/TranslationManager.tsx:50)"}, "properties": {"repobilityId": "819a24d07e199724", "scanner": "scanner-primary", "fingerprint": "afe981ffd5b225a7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6c28597dd594e684", "level": "error", "message": {"text": "Dangling fetch: GET /api/translations/pending?language=${language} (apps/web/src/components/admin/TranslationManager.tsx:67)"}, "properties": {"repobilityId": "eae6c88559ef8cf0", "scanner": "scanner-primary", "fingerprint": "6c28597dd594e684", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-780f8ace2ca4bc1a", "level": "error", "message": {"text": "Dangling fetch: POST /api/translations/generate (apps/web/src/components/admin/TranslationManager.tsx:99)"}, "properties": {"repobilityId": "53e1109ff953f7a6", "scanner": "scanner-primary", "fingerprint": "780f8ace2ca4bc1a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-26fffa8ab42f09af", "level": "error", "message": {"text": "Dangling fetch: POST /api/translations/verify (apps/web/src/components/admin/TranslationManager.tsx:134)"}, "properties": {"repobilityId": "2c0ea854269b1dd2", "scanner": "scanner-primary", "fingerprint": "26fffa8ab42f09af", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-feec850af7d38c50", "level": "error", "message": {"text": "Dangling fetch: POST /api/translations/cache/clear (apps/web/src/components/admin/TranslationManager.tsx:168)"}, "properties": {"repobilityId": "c0bd85d9dcfde1b4", "scanner": "scanner-primary", "fingerprint": "feec850af7d38c50", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bddfcaff9c4b1965", "level": "error", "message": {"text": "Dangling fetch: GET /api/geo (apps/web/src/pages/Register.tsx:219)"}, "properties": {"repobilityId": "3bdf164810ae3314", "scanner": "scanner-primary", "fingerprint": "bddfcaff9c4b1965", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d04245d66a430e1b", "level": "error", "message": {"text": "Dangling fetch: POST /api/sanctions/screen/vessel (apps/web/src/pages/tools/sanctions/SanctionsScreenVessel.tsx:82)"}, "properties": {"repobilityId": "7a82d5de0c766833", "scanner": "scanner-primary", "fingerprint": "d04245d66a430e1b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-108bc45b52347139", "level": "error", "message": {"text": "Dangling fetch: POST /api/sanctions/screen/goods (apps/web/src/pages/tools/sanctions/SanctionsScreenGoods.tsx:79)"}, "properties": {"repobilityId": "e595773a1937c8cd", "scanner": "scanner-primary", "fingerprint": "108bc45b52347139", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-38d9f3e9d6f95a2b", "level": "error", "message": {"text": "Dangling fetch: POST /api/sanctions/screen/party (apps/web/src/pages/tools/sanctions/SanctionsScreenParty.tsx:107)"}, "properties": {"repobilityId": "416a28f610c239d2", "scanner": "scanner-primary", "fingerprint": "38d9f3e9d6f95a2b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-52fdc156d7141e6a", "level": "error", "message": {"text": "Dangling fetch: POST /api/notifications/templates/${formData.template_key}/render (src/components/notify/TemplateEditor.tsx:82)"}, "properties": {"repobilityId": "307e1f1052dc7aa6", "scanner": "scanner-primary", "fingerprint": "52fdc156d7141e6a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b360bcb0f4c113b5", "level": "error", "message": {"text": "Dangling fetch: GET /api/notifications/subscriptions (src/pages/notifications/SettingsPage.tsx:73)"}, "properties": {"repobilityId": "8647e09fb2f3db02", "scanner": "scanner-primary", "fingerprint": "b360bcb0f4c113b5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-692236b6bbf8dc73", "level": "error", "message": {"text": "Dangling fetch: POST /api/notifications/channels/${channelId}/test (src/pages/notifications/SettingsPage.tsx:154)"}, "properties": {"repobilityId": "288be58bab11e757", "scanner": "scanner-primary", "fingerprint": "692236b6bbf8dc73", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c5f4af7a0dcf4d59", "level": "note", "message": {"text": "Unused endpoint: POST /warm"}, "properties": {"repobilityId": "20eab0924e15956a", "scanner": "scanner-primary", "fingerprint": "c5f4af7a0dcf4d59", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "566792cad650fd91", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1a6d91f2236825bf", "level": "note", "message": {"text": "Unused endpoint: ANY /"}, "properties": {"repobilityId": "39066b00ad0d743c", "scanner": "scanner-primary", "fingerprint": "1a6d91f2236825bf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-29747d0de7e51904", "level": "note", "message": {"text": "Unused endpoint: ANY /upload"}, "properties": {"repobilityId": "677a7646d04aeb4e", "scanner": "scanner-primary", "fingerprint": "29747d0de7e51904", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-10be72019bda2088", "level": "note", "message": {"text": "Unused endpoint: ANY /documents"}, "properties": {"repobilityId": "f183e1efb2963f82", "scanner": "scanner-primary", "fingerprint": "10be72019bda2088", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-084c1013db151437", "level": "note", "message": {"text": "Unused endpoint: ANY /review/<int:doc_id>"}, "properties": {"repobilityId": "162be7a61455da27", "scanner": "scanner-primary", "fingerprint": "084c1013db151437", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-05af03e8a09097f2", "level": "note", "message": {"text": "Unused endpoint: ANY /api/suggestion/<int:suggestion_id>"}, "properties": {"repobilityId": "bb912c1b4fb5124f", "scanner": "scanner-primary", "fingerprint": "05af03e8a09097f2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-15b1f91d96508cdc", "level": "note", "message": {"text": "Unused endpoint: ANY /export/<int:doc_id>"}, "properties": {"repobilityId": "53ef012da9aae482", "scanner": "scanner-primary", "fingerprint": "15b1f91d96508cdc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-199a69b9d8f98995", "level": "note", "message": {"text": "Unused endpoint: ANY /lint-check"}, "properties": {"repobilityId": "03d6dc0cf1e24991", "scanner": "scanner-primary", "fingerprint": "199a69b9d8f98995", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-48424c2c01868a26", "level": "note", "message": {"text": "Unused endpoint: GET /api/auth/csrf-token"}, "properties": {"repobilityId": "a304ffe076c2765d", "scanner": "scanner-primary", "fingerprint": "48424c2c01868a26", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f736ec52087cdb66", "level": "note", "message": {"text": "Unused endpoint: GET /auth/csrf-token"}, "properties": {"repobilityId": "3249d3384b5b353c", "scanner": "scanner-primary", "fingerprint": "f736ec52087cdb66", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d6d412ba6647f6cc", "level": "note", "message": {"text": "Unused endpoint: GET /live"}, "properties": {"repobilityId": "612ae8ce707509fb", "scanner": "scanner-primary", "fingerprint": "d6d412ba6647f6cc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8c236625afb6a8cb", "level": "note", "message": {"text": "Unused endpoint: GET /ready"}, "properties": {"repobilityId": "0265b66cb908a9fe", "scanner": "scanner-primary", "fingerprint": "8c236625afb6a8cb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ba6a8393a8df4ffe", "level": "note", "message": {"text": "Unused endpoint: GET /db-schema"}, "properties": {"repobilityId": "f324d9a666d27025", "scanner": "scanner-primary", "fingerprint": "ba6a8393a8df4ffe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2fe67deec6f78374", "level": "note", "message": {"text": "Unused endpoint: GET /error"}, "properties": {"repobilityId": "4fff331bbee6d97c", "scanner": "scanner-primary", "fingerprint": "2fe67deec6f78374", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-afb19e7fdd56ad1a", "level": "note", "message": {"text": "Unused endpoint: GET /spam-errors"}, "properties": {"repobilityId": "325bf0e2b0e1938a", "scanner": "scanner-primary", "fingerprint": "afb19e7fdd56ad1a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-68764950e8e19135", "level": "note", "message": {"text": "Unused endpoint: GET /warning"}, "properties": {"repobilityId": "9e8810ad0c3c313f", "scanner": "scanner-primary", "fingerprint": "68764950e8e19135", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-aa1dbd1c28e7f4d9", "level": "note", "message": {"text": "Unused endpoint: GET /critical"}, "properties": {"repobilityId": "c95173e3c92a0ec8", "scanner": "scanner-primary", "fingerprint": "aa1dbd1c28e7f4d9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7b69740a550d88e4", "level": "note", "message": {"text": "Unused endpoint: GET /slow"}, "properties": {"repobilityId": "ede3269584b613c0", "scanner": "scanner-primary", "fingerprint": "7b69740a550d88e4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-25d5ee3cd0647143", "level": "note", "message": {"text": "Unused endpoint: GET /5xx-series"}, "properties": {"repobilityId": "a422da0a626d6a05", "scanner": "scanner-primary", "fingerprint": "25d5ee3cd0647143", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e6ff8f2167a49b9c", "level": "note", "message": {"text": "Unused endpoint: GET /test-metrics"}, "properties": {"repobilityId": "2a906143d87aa9f1", "scanner": "scanner-primary", "fingerprint": "e6ff8f2167a49b9c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-64fdb2e4695228cf", "level": "note", "message": {"text": "Unused endpoint: POST /discrepancies"}, "properties": {"repobilityId": "21c48a58b91e3504", "scanner": "scanner-primary", "fingerprint": "64fdb2e4695228cf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5ea3f34a4eaf66ba", "level": "note", "message": {"text": "Unused endpoint: POST /bank-draft"}, "properties": {"repobilityId": "77599fde7e5a4f1a", "scanner": "scanner-primary", "fingerprint": "5ea3f34a4eaf66ba", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4921fbfdae55fef9", "level": "note", "message": {"text": "Unused endpoint: POST /amendment-draft"}, "properties": {"repobilityId": "73d1ed86e546d7bd", "scanner": "scanner-primary", "fingerprint": "4921fbfdae55fef9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cff8da5fbc19c76d", "level": "note", "message": {"text": "Unused endpoint: POST /chat"}, "properties": {"repobilityId": "f62dbac9b4ae29e1", "scanner": "scanner-primary", "fingerprint": "cff8da5fbc19c76d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fdf5c247113c99c5", "level": "note", "message": {"text": "Unused endpoint: GET /audit/{event_id}"}, "properties": {"repobilityId": "0b139145fa6586b9", "scanner": "scanner-primary", "fingerprint": "fdf5c247113c99c5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d467299d5c174fc0", "level": "note", "message": {"text": "Unused endpoint: GET /usage"}, "properties": {"repobilityId": "17a52e38d39f4246", "scanner": "scanner-primary", "fingerprint": "d467299d5c174fc0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-62c85412bbbdb876", "level": "note", "message": {"text": "Unused endpoint: GET /limits"}, "properties": {"repobilityId": "2ecd0350d9704058", "scanner": "scanner-primary", "fingerprint": "62c85412bbbdb876", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a009b1a56794f45", "level": "note", "message": {"text": "Unused endpoint: POST /"}, "properties": {"repobilityId": "1bd0043a04b908e3", "scanner": "scanner-primary", "fingerprint": "7a009b1a56794f45", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6f793bb9bb9a96b7", "level": "note", "message": {"text": "Unused endpoint: GET /{bank_id}"}, "properties": {"repobilityId": "d2cf8de8c8432f32", "scanner": "scanner-primary", "fingerprint": "6f793bb9bb9a96b7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3aa8667db285436c", "level": "note", "message": {"text": "Unused endpoint: PUT /{bank_id}"}, "properties": {"repobilityId": "9388bb7a125df9ab", "scanner": "scanner-primary", "fingerprint": "3aa8667db285436c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cc73478d316db849", "level": "note", "message": {"text": "Unused endpoint: POST /{bank_id}/invite"}, "properties": {"repobilityId": "fd1c3ad4799bebe4", "scanner": "scanner-primary", "fingerprint": "cc73478d316db849", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c73b252b22e7609a", "level": "note", "message": {"text": "Unused endpoint: DELETE /{bank_id}"}, "properties": {"repobilityId": "dd7415b7425f92ec", "scanner": "scanner-primary", "fingerprint": "c73b252b22e7609a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8dbcee1fc1f6cc94", "level": "note", "message": {"text": "Unused endpoint: GET /{workspace_id}/members"}, "properties": {"repobilityId": "5b70bb639ae823bb", "scanner": "scanner-primary", "fingerprint": "8dbcee1fc1f6cc94", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cbf796952ff45dfd", "level": "note", "message": {"text": "Unused endpoint: POST /{workspace_id}/members"}, "properties": {"repobilityId": "69121ceb565acb19", "scanner": "scanner-primary", "fingerprint": "cbf796952ff45dfd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5fa3af0791d4dc04", "level": "note", "message": {"text": "Unused endpoint: PUT /{workspace_id}/members/{member_id}"}, "properties": {"repobilityId": "16899a3312a0c021", "scanner": "scanner-primary", "fingerprint": "5fa3af0791d4dc04", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9f9c3f5b4c72fe49", "level": "note", "message": {"text": "Unused endpoint: DELETE /{workspace_id}/members/{member_id}"}, "properties": {"repobilityId": "cc7dc71fbb51d9d0", "scanner": "scanner-primary", "fingerprint": "9f9c3f5b4c72fe49", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c5d46939a725130e", "level": "note", "message": {"text": "Unused endpoint: POST /{workspace_id}/invite"}, "properties": {"repobilityId": "486ac95a14fff88c", "scanner": "scanner-primary", "fingerprint": "c5d46939a725130e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5ac6a8b041502791", "level": "note", "message": {"text": "Unused endpoint: GET /{workspace_id}/invitations"}, "properties": {"repobilityId": "6cefe3b7d5a6eeef", "scanner": "scanner-primary", "fingerprint": "5ac6a8b041502791", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cb4b40748d66b885", "level": "note", "message": {"text": "Unused endpoint: POST /invitations/{invitation_id}/accept"}, "properties": {"repobilityId": "f60dfbf58b9c6e56", "scanner": "scanner-primary", "fingerprint": "cb4b40748d66b885", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a4f2ffb0912c68e3", "level": "note", "message": {"text": "Unused endpoint: DELETE /invitations/{invitation_id}"}, "properties": {"repobilityId": "9ea9be1cee624450", "scanner": "scanner-primary", "fingerprint": "a4f2ffb0912c68e3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a1296b240f3a0f35", "level": "note", "message": {"text": "Unused endpoint: GET /documents/{document_id}/preview"}, "properties": {"repobilityId": "da95652187f004ef", "scanner": "scanner-primary", "fingerprint": "a1296b240f3a0f35", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6236b283b79811b8", "level": "note", "message": {"text": "Unused endpoint: POST /upload"}, "properties": {"repobilityId": "58c481d6b0701de0", "scanner": "scanner-primary", "fingerprint": "6236b283b79811b8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e199d98177176edf", "level": "note", "message": {"text": "Unused endpoint: POST /{ruleset_id}/publish"}, "properties": {"repobilityId": "e27971306b4d526d", "scanner": "scanner-primary", "fingerprint": "e199d98177176edf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-df78bf8e0c51c358", "level": "note", "message": {"text": "Unused endpoint: POST /{ruleset_id}/rollback"}, "properties": {"repobilityId": "1d6484380aeac809", "scanner": "scanner-primary", "fingerprint": "df78bf8e0c51c358", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0e1bcfcf736f3153", "level": "note", "message": {"text": "Unused endpoint: POST /{ruleset_id}/archive"}, "properties": {"repobilityId": "82363b15520507fd", "scanner": "scanner-primary", "fingerprint": "0e1bcfcf736f3153", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b9b18c59b1c1e9ab", "level": "note", "message": {"text": "Unused endpoint: DELETE /{ruleset_id}"}, "properties": {"repobilityId": "a407780af52db91e", "scanner": "scanner-primary", "fingerprint": "b9b18c59b1c1e9ab", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-89417aff260d9314", "level": "note", "message": {"text": "Unused endpoint: GET /active/all"}, "properties": {"repobilityId": "64938cc189830140", "scanner": "scanner-primary", "fingerprint": "89417aff260d9314", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-72eb8a13269a8eb3", "level": "note", "message": {"text": "Unused endpoint: GET /active"}, "properties": {"repobilityId": "7a36ed92ec00fd44", "scanner": "scanner-primary", "fingerprint": "72eb8a13269a8eb3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-905410c8c1020c5c", "level": "note", "message": {"text": "Unused endpoint: GET /{ruleset_id}/audit"}, "properties": {"repobilityId": "8a1db82add7523f9", "scanner": "scanner-primary", "fingerprint": "905410c8c1020c5c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}