{"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-135db902a27f218f", "name": "TODO/FIXME marker in shipping code \u2014 apps/api/src/startup-hooks.ts:119", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/api/src/startup-hooks.ts:119"}, "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-a1310725cb2e1fa1", "name": "TODO/FIXME marker in shipping code \u2014 apps/api/src/index.ts:17", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/api/src/index.ts:17"}, "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-26be2bb6aa80f6c7", "name": "Stray `console.log` in TS/JS \u2014 apps/api/src/middleware/security.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/middleware/security.js:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ae9308db9709eae3", "name": "TODO/FIXME marker in shipping code \u2014 apps/api/src/webhooks/intelligence.ts:54", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/api/src/webhooks/intelligence.ts:54"}, "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-87f56a5b17a98ff4", "name": "TODO/FIXME marker in shipping code \u2014 apps/api/src/webhooks/n8n.ts:88", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/api/src/webhooks/n8n.ts:88"}, "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-07bf70861bf45ef6", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/workspaces/[id]/_lib/members-tab.tsx:124", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/workspaces/[id]/_lib/members-tab.tsx:124"}, "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-597f94235a161898", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/workspaces/[id]/_lib/overview-tab.tsx:32", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/workspaces/[id]/_lib/overview-tab.tsx:32"}, "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-00d79b61fd986e2f", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/workspaces/[id]/_lib/service-group-card.", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/workspaces/[id]/_lib/service-group-card.tsx:81"}, "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-4de223a5aeabecdf", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/connectors/page.tsx:260", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/connectors/page.tsx:260"}, "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-534b94da5c568584", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/intelligence/page.tsx:280", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/intelligence/page.tsx:280"}, "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-ce77b0a8249f02c9", "name": "TODO/FIXME marker in shipping code \u2014 apps/pod-admin/app/(admin)/intelligence/page.tsx:823", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/pod-admin/app/(admin)/intelligence/page.tsx:823"}, "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-2fe054f94c3d1758", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/components/search-modal.tsx:456", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/components/search-modal.tsx:456"}, "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-285603d5073e951d", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/components/section-card.tsx:47", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/components/section-card.tsx:47"}, "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-5b1df184a2c8ab3a", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/components/resource-row.tsx:81", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/components/resource-row.tsx:81"}, "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-cf66b7353a5a5954", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/components/top-nav.tsx:180", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/components/top-nav.tsx:180"}, "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-846225ad339d3e53", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/components/detail-drawer.tsx:91", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/components/detail-drawer.tsx:91"}, "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-0e8a5d8055315b7c", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/audit/_lib/approval-queue-section.tsx:31", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/audit/_lib/approval-queue-section.tsx:315"}, "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-0d7d6538344ba465", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/audit/_lib/activity-section.tsx:295", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/audit/_lib/activity-section.tsx:295"}, "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-68f7d0787d4c90d5", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/entities/page.tsx:437", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/entities/page.tsx:437"}, "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-fd644509f0fe25b7", "name": "TODO/FIXME marker in shipping code \u2014 apps/pod-admin/app/(admin)/overview/page.tsx:266", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/pod-admin/app/(admin)/overview/page.tsx:266"}, "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-8b5efb83c7470ff7", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/people/page.tsx:301", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/people/page.tsx:301"}, "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-47c9befa7c1b06ac", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-admin-cli.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-admin-cli.ts:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c93e3aafc489049d", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-generation.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-generation.ts:30"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cfc0cbede7fca5d3", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-event-repository.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-event-repository.ts:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de1d04f534754140", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-system.ts:286", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-system.ts:286"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3f9d6831152bb148", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-hub-client.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-hub-client.ts:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b98f516530cc02b3", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-hub-flow.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-hub-flow.ts:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1d6b75a27b5723d1", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-storage.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-storage.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5001deb89f833765", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-event-store-performance.ts:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-event-store-performance.ts:86"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9bb53e079cdeb120", "name": "Stray `console.log` in TS/JS \u2014 scripts/monitor-dual-write.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/monitor-dual-write.ts:8"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b6ee11d5614fa337", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-types-deep.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-types-deep.ts:14"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b1f0a4128643233a", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-views.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-views.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bbc8e1c3316e8d60", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-conversation.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-conversation.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-73c82da30dc9bf78", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-conversational-flow.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-conversational-flow.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-80bc264d88905d2d", "name": "Stray `console.log` in TS/JS \u2014 deploy/pod-agent/server.js:214", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 deploy/pod-agent/server.js:214"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-86a2cd2f0d713b29", "name": "TODO/FIXME marker in shipping code \u2014 packages/auth/src/token-exchange.ts:39", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/auth/src/token-exchange.ts:39"}, "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-7503463837933ac2", "name": "TODO/FIXME marker in shipping code \u2014 packages/api/src/access/write-gate.tripwire.test.ts:52", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/access/write-gate.tripwire.test.ts:52"}, "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-82bf7127bdb0af9a", "name": "Stray `console.log` in TS/JS \u2014 packages/api/src/scripts/create-admin-cli.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/scripts/create-admin-cli.ts:29"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea7275814d58bab2", "name": "Stray `console.log` in TS/JS \u2014 packages/api/src/scripts/user-admin-cli.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/scripts/user-admin-cli.ts:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1b9db060927833ce", "name": "Stray `console.log` in TS/JS \u2014 packages/api/src/scripts/provision.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/scripts/provision.ts:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-36edd7eef2fbdafd", "name": "Stray `console.log` in TS/JS \u2014 packages/api/src/scripts/provision-agent.ts:93", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/scripts/provision-agent.ts:93"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-54a3bca6481d10a4", "name": "Stray `console.log` in TS/JS \u2014 packages/api/src/utils/server-vault.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/utils/server-vault.ts:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-30a3d92933315e8b", "name": "TODO/FIXME marker in shipping code \u2014 packages/api/src/lib/permissions.ts:79", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/lib/permissions.ts:79"}, "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-0ff2e67c254f20c5", "name": "Stray `console.log` in TS/JS \u2014 packages/api/src/lib/event-helpers.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/lib/event-helpers.ts:50"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b71fba3286fa4d39", "name": "Stray `console.log` in TS/JS \u2014 packages/api/src/services/api-keys.ts:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/services/api-keys.ts:91"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-64abcd305fc7134f", "name": "TODO/FIXME marker in shipping code \u2014 packages/api/src/services/playbooks/run-playbook.ts:109", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/services/playbooks/run-playbook.ts:109"}, "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-3e094b1e036dfd5f", "name": "TODO/FIXME marker in shipping code \u2014 packages/api/src/services/playbooks/executors/hybrid-executor.ts:22", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/services/playbooks/executors/hybrid-executor.ts:22"}, "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-7e2f0143d7948404", "name": "TODO/FIXME marker in shipping code \u2014 packages/api/src/services/capabilities/capability-registry.ts:129", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/services/capabilities/capability-registry.ts:129"}, "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-cc4a6346a403ba0e", "name": "Stray `console.log` in TS/JS \u2014 packages/api/src/routers/entities-data.ts:347", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/routers/entities-data.ts:347"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-11a23c1a88bc7399", "name": "TODO/FIXME marker in shipping code \u2014 packages/api/src/routers/system.ts:629", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/routers/system.ts:629"}, "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-bd2fdd6fa5f9f1fd", "name": "Stray `console.log` in TS/JS \u2014 packages/api/src/routers/system.ts:658", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/routers/system.ts:658"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9d96be263c2a77a1", "name": "Stray `console.log` in TS/JS \u2014 packages/api/src/routers/entities.ts:1996", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/routers/entities.ts:1996"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-904d632b1869e3a4", "name": "TODO/FIXME marker in shipping code \u2014 packages/api/src/routers/search.ts:183", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/routers/search.ts:183"}, "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-52ceb2c846ede726", "name": "TODO/FIXME marker in shipping code \u2014 packages/api/src/routers/channels.ts:1630", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/routers/channels.ts:1630"}, "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-f4b1f6faa0ea7c12", "name": "TODO/FIXME marker in shipping code \u2014 packages/api/src/routers/subscriptions.ts:351", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/routers/subscriptions.ts:351"}, "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-ce461ce795e3ee30", "name": "Stray `console.log` in TS/JS \u2014 packages/api/src/routers/workspaces.ts:413", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/routers/workspaces.ts:413"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f88c4b8eec9fd9f9", "name": "TODO/FIXME marker in shipping code \u2014 packages/api/src/routers/hub-protocol/profiles.ts:144", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/routers/hub-protocol/profiles.ts:144"}, "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-fcc354a7539ba344", "name": "TODO/FIXME marker in shipping code \u2014 packages/api/src/routers/hub-protocol/rest/auth.ts:165", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/routers/hub-protocol/rest/auth.ts:165"}, "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-7d38c248b5012655", "name": "TODO/FIXME marker in shipping code \u2014 packages/api/src/plugins/plugin-manager.ts:77", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/plugins/plugin-manager.ts:77"}, "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-2d654317c0812aab", "name": "TODO/FIXME marker in shipping code \u2014 packages/scripts/src/generate-table-code.ts:185", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/scripts/src/generate-table-code.ts:185"}, "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-62525990d6314e4d", "name": "Stray `console.log` in TS/JS \u2014 packages/scripts/src/generate-table-code.ts:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/scripts/src/generate-table-code.ts:54"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6c22ceb366380cc1", "name": "Stray `console.log` in TS/JS \u2014 packages/feed-service/src/FeedService.ts:160", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/feed-service/src/FeedService.ts:160"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ae277c0ea318b2c5", "name": "Stray `console.log` in TS/JS \u2014 packages/feed-service/src/interfaces/IFeedPublisher.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/feed-service/src/interfaces/IFeedPublisher.ts:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-259b91a092e0ee3b", "name": "Stray `console.log` in TS/JS \u2014 packages/database/test-db.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/test-db.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-054dfcc357851169", "name": "Stray `console.log` in TS/JS \u2014 packages/database/scripts/seed-profiles.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/scripts/seed-profiles.ts:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-62b869f132c59a23", "name": "Stray `console.log` in TS/JS \u2014 packages/database/scripts/backfill-entity-profiles.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/scripts/backfill-entity-profiles.ts:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1cfdc51b86b86954", "name": "Stray `console.log` in TS/JS \u2014 packages/database/scripts/test-rls.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/scripts/test-rls.ts:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9be3e965d5a7bfa8", "name": "Stray `console.log` in TS/JS \u2014 packages/database/migrations/feed-service-migration.ts:580", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/migrations/feed-service-migration.ts:580"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-20497eb4b5ef9953", "name": "Stray `console.log` in TS/JS \u2014 packages/database/src/__tests__/setup.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/src/__tests__/setup.ts:12"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f8aa8f014f593786", "name": "Stray `console.log` in TS/JS \u2014 packages/database/src/scripts/seed-profiles.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/src/scripts/seed-profiles.ts:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de4e32a55a05c318", "name": "Stray `console.log` in TS/JS \u2014 packages/database/src/scripts/init-hub-keys.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/src/scripts/init-hub-keys.ts:17"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9b7546cc0adc78a0", "name": "Stray `console.log` in TS/JS \u2014 packages/database/src/scripts/migrate.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/src/scripts/migrate.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-85bf2ddc60c67e7a", "name": "Stray `console.log` in TS/JS \u2014 packages/database/src/utils/server-vault.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/src/utils/server-vault.ts:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-120c7697e4230676", "name": "Stray `console.log` in TS/JS \u2014 packages/database/src/utils/create-default-whiteboard.ts:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/src/utils/create-default-whiteboard.ts:104"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f506312a78575f63", "name": "TODO/FIXME marker in shipping code \u2014 packages/database/src/repositories/inbox-repository.ts:65", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/database/src/repositories/inbox-repository.ts:65"}, "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-517c9c0773b40e54", "name": "Stray `console.log` in TS/JS \u2014 packages/search/src/services/indexing-service.ts:338", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/search/src/services/indexing-service.ts:338"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-266dcb70de47f03c", "name": "Stray `console.log` in TS/JS \u2014 packages/search/src/services/collection-service.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/search/src/services/collection-service.ts:34"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3f036b45f8ad66ab", "name": "TODO/FIXME marker in shipping code \u2014 packages/search/src/indexers/project-indexer.ts:32", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/search/src/indexers/project-indexer.ts:32"}, "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-0893ce53d0179b5f", "name": "TODO/FIXME marker in shipping code \u2014 packages/search/src/indexers/agent-indexer.ts:34", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/search/src/indexers/agent-indexer.ts:34"}, "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-5f54eadd0b8a9ebe", "name": "Stray `console.log` in TS/JS \u2014 packages/core/tests/local-mvp.test.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/tests/local-mvp.test.ts:9"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-86489c8ee7f80dd9", "name": "Stray `console.log` in TS/JS \u2014 packages/core/tests/test-capture.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/tests/test-capture.ts:9"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c14fd407111a31d2", "name": "TODO/FIXME marker in shipping code \u2014 packages/core/tests/multi-user.test.ts:292", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core/tests/multi-user.test.ts:292"}, "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-a47c70f0c50a8242", "name": "Stray `console.log` in TS/JS \u2014 packages/core/tests/multi-user.test.ts:79", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/tests/multi-user.test.ts:79"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d0e1a43e26982c04", "name": "Stray `console.log` in TS/JS \u2014 packages/core/tests/phase1.test.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/tests/phase1.test.ts:9"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4309ef6e925a1c87", "name": "Stray `console.log` in TS/JS \u2014 packages/core/tests/user-isolation.test.ts:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/tests/user-isolation.test.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-aac654bbc3f9d4e7", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/tracing.ts:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/tracing.ts:62"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-056a90e02125e546", "name": "Stray `console.log` in TS/JS \u2014 packages/test-e2e/src/setup.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/test-e2e/src/setup.ts:71"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-44cf9e9f36940804", "name": "Stray `console.log` in TS/JS \u2014 packages/jobs/src/scripts/index-existing-entities.ts:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/jobs/src/scripts/index-existing-entities.ts:75"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5b3cf7bfdc81be35", "name": "Stray `console.log` in TS/JS \u2014 packages/jobs/src/migrations/migrate-morning-briefing.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/jobs/src/migrations/migrate-morning-briefing.ts:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-56b8309909455440", "name": "Stray `console.log` in TS/JS \u2014 packages/jobs/src/migrations/migrate-weekly-digest.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/jobs/src/migrations/migrate-weekly-digest.ts:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9847f38537b0c93e", "name": "Stray `console.log` in TS/JS \u2014 packages/jobs/src/migrations/run-feed-migrations.ts:419", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/jobs/src/migrations/run-feed-migrations.ts:419"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f10682c4af4291eb", "name": "Stray `console.log` in TS/JS \u2014 packages/realtime/src/yjs-server.ts:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/realtime/src/yjs-server.ts:77"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b604be738df79b3b", "name": "Stray `console.log` in TS/JS \u2014 packages/realtime/src/bridge.ts:85", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/realtime/src/bridge.ts:85"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0a0b5950993952f8", "name": "Stray `console.log` in TS/JS \u2014 packages/realtime/src/server.ts:164", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/realtime/src/server.ts:164"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4f016284fb9c2fe1", "name": "Stray `console.log` in TS/JS \u2014 packages/storage/src/interface.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/storage/src/interface.ts:71"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5172e80545068a0a", "name": "Stray `console.log` in TS/JS \u2014 packages/storage/src/r2.ts:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/storage/src/r2.ts:80"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8987d6d1c30c7202", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "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-a3da6620aba7f86b", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "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-10b14ebe284b14f7", "name": "Dockerfile runs as root: deploy/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: deploy/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-419fdcf00b3a302e", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "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-aad4416308f63490", "name": "Dockerfile runs as root: deploy/pod-agent/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: deploy/pod-agent/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2bf6d6020f6996c7", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "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-43e496167fde2f4c", "name": "Runtime dotenv file present in repo: .env.test", "shortDescription": {"text": "Runtime dotenv file present in repo: .env.test"}, "fullDescription": {"text": "`.env.test` looks like a runtime dotenv file. It contains secret-looking assignments for MINIO_ACCESS_KEY, MINIO_SECRET_KEY. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-3609c8f3124ffa5f", "name": "Insecure pattern 'direct_innerhtml_assignment' in apps/api/src/index.ts:1440", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in apps/api/src/index.ts:1440"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-27a949384c6ffe75", "name": "Insecure pattern 'exec_used' in apps/api/src/routers/provision.ts:2469", "shortDescription": {"text": "Insecure pattern 'exec_used' in apps/api/src/routers/provision.ts:2469"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-26d287b818822ae0", "name": "Insecure pattern 'node_child_process' in scripts/validate-generation.ts:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/validate-generation.ts:14"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5e68063e3ae8da0e", "name": "Insecure pattern 'node_child_process' in deploy/pod-agent/server.js:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in deploy/pod-agent/server.js:17"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ebd3239682724696", "name": "Possible secret in packages/types/src/vault/index.ts", "shortDescription": {"text": "Possible secret in packages/types/src/vault/index.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-3cc3fb1120ce94a0", "name": "Insecure pattern 'node_child_process' in packages/api/scripts/gen-types.mjs:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/api/scripts/gen-types.mjs:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7d7fc6d5a1206f1b", "name": "Insecure pattern 'node_child_process' in packages/api/src/routers/system.ts:41", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/api/src/routers/system.ts:41"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-df34b54320293ba8", "name": "Insecure pattern 'node_child_process' in packages/test-e2e/src/setup.ts:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/test-e2e/src/setup.ts:15"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-225bf4ba87c7e217", "name": "Insecure pattern 'node_child_process' in packages/jobs/src/workers/materializer.ts:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/jobs/src/workers/materializer.ts:20"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-36fd3c86ff87e5ff", "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-b841c61fdfcff569", "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-076b03a16e76601d", "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-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-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-40026468741f8760", "name": "Very large file: apps/api/src/index.ts (1748 lines)", "shortDescription": {"text": "Very large file: apps/api/src/index.ts (1748 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-a5556debcd56b93e", "name": "Very large file: apps/api/src/routers/provision.ts (2489 lines)", "shortDescription": {"text": "Very large file: apps/api/src/routers/provision.ts (2489 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-e61e8da726940cc6", "name": "Very large file: packages/api/src/routers/proposals.ts (2705 lines)", "shortDescription": {"text": "Very large file: packages/api/src/routers/proposals.ts (2705 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-faf10c0b8805f2d3", "name": "Very large file: packages/api/src/routers/capture.ts (1540 lines)", "shortDescription": {"text": "Very large file: packages/api/src/routers/capture.ts (1540 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-5591c8cdee675569", "name": "Very large file: packages/api/src/routers/system.ts (1714 lines)", "shortDescription": {"text": "Very large file: packages/api/src/routers/system.ts (1714 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-02363032968822a7", "name": "Very large file: packages/api/src/routers/entities.ts (2075 lines)", "shortDescription": {"text": "Very large file: packages/api/src/routers/entities.ts (2075 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-1d1bfeb9d1aa1096", "name": "Very large file: packages/api/src/routers/intelligence.ts (1929 lines)", "shortDescription": {"text": "Very large file: packages/api/src/routers/intelligence.ts (1929 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-a20560bfcabc0514", "name": "Very large file: packages/api/src/routers/sync.ts (1875 lines)", "shortDescription": {"text": "Very large file: packages/api/src/routers/sync.ts (1875 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-0ff8360294a97972", "name": "Very large file: packages/api/src/routers/intelligence-registry.ts (1635 lines)", "shortDescription": {"text": "Very large file: packages/api/src/routers/intelligence-registry.ts (1635 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-774b8fccbef3d0bc", "name": "Very large file: packages/api/src/routers/channels.ts (4718 lines)", "shortDescription": {"text": "Very large file: packages/api/src/routers/channels.ts (4718 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-98691c175a868da1", "name": "Very large file: packages/api/src/routers/workspaces.ts (3845 lines)", "shortDescription": {"text": "Very large file: packages/api/src/routers/workspaces.ts (3845 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-79bea923e61f4f7d", "name": "Very large file: packages/api/src/routers/hub-protocol/signals.ts (1919 lines)", "shortDescription": {"text": "Very large file: packages/api/src/routers/hub-protocol/signals.ts (1919 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-df66d11b8b964db4", "name": "Very large file: packages/api/src/routers/hub-protocol/rest/setup.ts (1434 lines)", "shortDescription": {"text": "Very large file: packages/api/src/routers/hub-protocol/rest/setup.ts (1434 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-7f4769e275cfd4bf", "name": "Very large file: packages/database/src/utils/ensure-system-profiles.ts (2091 lines)", "shortDescription": {"text": "Very large file: packages/database/src/utils/ensure-system-profiles.ts (2091 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-fc1d04944a571411", "name": "Very large file: packages/database/src/utils/create-workspace-from-definition.ts (1589 lines)", "shortDescription": {"text": "Very large file: packages/database/src/utils/create-workspace-from-definition.ts (1589 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-9e7f866b133d84e6", "name": "Very large file: packages/database/src/schema/documents.d.ts (2309 lines)", "shortDescription": {"text": "Very large file: packages/database/src/schema/documents.d.ts (2309 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-271b6ebed6052f60", "name": "Very large file: packages/api-types/src/generated.d.ts (16060 lines)", "shortDescription": {"text": "Very large file: packages/api-types/src/generated.d.ts (16060 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-b9e870e6cb6d79dd", "name": "Very large file: packages/jobs/src/workers/automation-executor.ts (1733 lines)", "shortDescription": {"text": "Very large file: packages/jobs/src/workers/automation-executor.ts (1733 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": "92 tests / 908 src (ratio 0.10)."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-720a280bf799af06", "name": "36 TODO/FIXME markers", "shortDescription": {"text": "36 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-b06b8d86f24c77f9", "name": "Node manifest has dependencies but no lockfile: apps/api/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/api/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-909a5af09f39521a", "name": "Node manifest has dependencies but no lockfile: apps/pod-admin/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/pod-admin/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-cb3e52667c84fb86", "name": "Node manifest has dependencies but no lockfile: packages/types/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/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-80f569ae36a3e3bf", "name": "Node manifest has dependencies but no lockfile: packages/ai/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/ai/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-41b225e183229484", "name": "Node manifest has dependencies but no lockfile: packages/auth/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/auth/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-ebfceb680f5fe5a7", "name": "Node manifest has dependencies but no lockfile: packages/events/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/events/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-0a0634ffe3eb1107", "name": "Node manifest has dependencies but no lockfile: packages/api/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/api/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-e7246309df736100", "name": "Node manifest has dependencies but no lockfile: packages/ai-embeddings/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/ai-embeddings/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-a6a7703b84d70772", "name": "Node manifest has dependencies but no lockfile: packages/intelligence-client/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/intelligence-client/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-36e513ed369dc5f7", "name": "Node manifest has dependencies but no lockfile: packages/scripts/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/scripts/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-e66c2371f9795ef4", "name": "Node manifest has dependencies but no lockfile: packages/feed-service/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/feed-service/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-cb01c01804de0b47", "name": "Node manifest has dependencies but no lockfile: packages/database/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/database/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-e0cafd9b24c16070", "name": "Node manifest has dependencies but no lockfile: packages/search/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/search/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-5e9662705a4749ac", "name": "Node manifest has dependencies but no lockfile: packages/hub-protocol/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/hub-protocol/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-3df2b2b281c736b0", "name": "Node manifest has dependencies but no lockfile: packages/api-types/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/api-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-28e92806c0db3cd2", "name": "Node manifest has dependencies but no lockfile: packages/core/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/core/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-ca13af745764f575", "name": "Node manifest has dependencies but no lockfile: packages/test-e2e/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/test-e2e/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-9325d0624e45a2c4", "name": "Node manifest has dependencies but no lockfile: packages/shared-utils/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/shared-utils/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-10b94e263394e917", "name": "Node manifest has dependencies but no lockfile: packages/jobs/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/jobs/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-1f50989207eeba59", "name": "Node manifest has dependencies but no lockfile: packages/realtime/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/realtime/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-137007a5b04ba75f", "name": "Node manifest has dependencies but no lockfile: packages/storage/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/storage/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 637 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 173 placeholder/mock markers across 62 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, 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-cc55229a7a3c078d", "name": "Agent authority lacks a verifier contract: .mcp.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .mcp.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-24f2ea4bd14badc1", "name": "Agent instruction contains unpinned remote install: CLAUDE.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: CLAUDE.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-a896e3881e5522f3", "name": "Commented-code block (5 lines) in apps/api/src/index.ts:15", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/index.ts:15"}, "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-ed0596038b5ab1f4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/index.ts:364", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/index.ts:364"}, "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-3050102a39cdcefe", "name": "Commented-code block (5 lines) in apps/api/src/routers/provision.ts:113", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/routers/provision.ts: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-88a60de654f2cf14", "name": "Commented-code block (5 lines) in apps/pod-admin/middleware.ts:56", "shortDescription": {"text": "Commented-code block (5 lines) in apps/pod-admin/middleware.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-62649889b99525da", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/pod-admin/app/providers.tsx:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/pod-admin/app/providers.tsx:43"}, "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-d54c8ec56f7685b4", "name": "Commented-code block (6 lines) in apps/pod-admin/app/login/LoginForm.tsx:224", "shortDescription": {"text": "Commented-code block (6 lines) in apps/pod-admin/app/login/LoginForm.tsx:224"}, "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-c3416ceb566bef67", "name": "Commented-code block (6 lines) in apps/pod-admin/app/(admin)/workspaces/page.tsx:295", "shortDescription": {"text": "Commented-code block (6 lines) in apps/pod-admin/app/(admin)/workspaces/page.tsx:295"}, "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-b5555a21569e5ab9", "name": "Commented-code block (5 lines) in apps/pod-admin/app/(admin)/overview/page.tsx:263", "shortDescription": {"text": "Commented-code block (5 lines) in apps/pod-admin/app/(admin)/overview/page.tsx:263"}, "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-09e5fcdaf38cf468", "name": "Legacy-named symbol `apiTypesOld` in scripts/contracts-publish.mjs:145", "shortDescription": {"text": "Legacy-named symbol `apiTypesOld` in scripts/contracts-publish.mjs:145"}, "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-c8afd19a90027690", "name": "Commented-code block (5 lines) in deploy/pod-agent/server.js:22", "shortDescription": {"text": "Commented-code block (5 lines) in deploy/pod-agent/server.js:22"}, "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-43adb37df5089b0f", "name": "Commented-code block (5 lines) in packages/types/src/events/index.ts:378", "shortDescription": {"text": "Commented-code block (5 lines) in packages/types/src/events/index.ts:378"}, "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-f2057e5aa8fa772a", "name": "Legacy-named symbol `setup_agent_deprecated` in packages/types/src/external-connect/index.ts:37", "shortDescription": {"text": "Legacy-named symbol `setup_agent_deprecated` in packages/types/src/external-connect/index.ts:37"}, "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-964f1fd223d2b680", "name": "Commented-code block (6 lines) in packages/types/src/templates/schemas.ts:118", "shortDescription": {"text": "Commented-code block (6 lines) in packages/types/src/templates/schemas.ts:118"}, "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-3e9ea724d4885dd6", "name": "Commented-code block (6 lines) in packages/auth/src/ory-middleware.ts:72", "shortDescription": {"text": "Commented-code block (6 lines) in packages/auth/src/ory-middleware.ts:72"}, "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-0f568a8387fbacd9", "name": "Commented-code block (5 lines) in packages/events/src/realtime-schemas.ts:119", "shortDescription": {"text": "Commented-code block (5 lines) in packages/events/src/realtime-schemas.ts:119"}, "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-bb13c94e5b96976e", "name": "Commented-code block (5 lines) in packages/api/scripts/openapi-smoke.mjs:8", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/scripts/openapi-smoke.mjs:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e6f314bd9158a027", "name": "Commented-code block (5 lines) in packages/api/src/index.ts:598", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/index.ts:598"}, "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-32ed6e9c594e821a", "name": "Commented-code block (5 lines) in packages/api/src/setup-event-broadcasting.ts:83", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/setup-event-broadcasting.ts:83"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d15f859f63483f32", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/connectors/UnipileConnector.ts:188", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/connectors/UnipileConnector.ts:188"}, "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-f4889e427ed8fbbb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/connectors/NangoConnector.ts:112", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/connectors/NangoConnector.ts:112"}, "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-3f63fbdde7a5d1a4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/connectors/StalwartConnector.ts:105", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/connectors/StalwartConnector.ts:105"}, "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-35de4b6372c7c9c1", "name": "Commented-code block (5 lines) in packages/api/src/access/read-scoping.tripwire.test.ts:80", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/access/read-scoping.tripwire.test.ts: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-8ae81f54f847a780", "name": "Commented-code block (7 lines) in packages/api/src/utils/permission-check.ts:422", "shortDescription": {"text": "Commented-code block (7 lines) in packages/api/src/utils/permission-check.ts:422"}, "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-65795b4038071e00", "name": "Commented-code block (5 lines) in packages/api/src/utils/user-visible-where.ts:54", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/utils/user-visible-where.ts:54"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-beea064588f1134d", "name": "Commented-code block (6 lines) in packages/api/src/utils/materialize-composite.ts:212", "shortDescription": {"text": "Commented-code block (6 lines) in packages/api/src/utils/materialize-composite.ts: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-2373c6daa07f6642", "name": "Commented-code block (5 lines) in packages/api/src/utils/jwks-client.ts:232", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/utils/jwks-client.ts:232"}, "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-c02faa6e3487694f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/utils/validate-url.ts:7", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/utils/validate-url.ts:7"}, "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-3d17babf61f33ed4", "name": "Commented-code block (8 lines) in packages/api/src/utils/audit-log.ts:41", "shortDescription": {"text": "Commented-code block (8 lines) in packages/api/src/utils/audit-log.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-399bbc3b7227eea4", "name": "Commented-code block (5 lines) in packages/api/src/import/import-items.ts:138", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/import/import-items.ts:138"}, "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-c2fece9f8f979e18", "name": "Commented-code block (5 lines) in packages/api/src/import/import-deep.ts:201", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/import/import-deep.ts:201"}, "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-3c9249dbbc88b7ee", "name": "Commented-code block (6 lines) in packages/api/src/lib/permissions.ts:78", "shortDescription": {"text": "Commented-code block (6 lines) in packages/api/src/lib/permissions.ts:78"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-75e9030b962ed62b", "name": "Commented-code block (5 lines) in packages/api/src/lib/seed-widget-definitions.ts:122", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/lib/seed-widget-definitions.ts:122"}, "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-41b6c0b8ce217ce3", "name": "Commented-code block (5 lines) in packages/api/src/services/background-tasks-service.ts:213", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/services/background-tasks-service.ts:213"}, "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-b23e73c780e62535", "name": "Commented-code block (7 lines) in packages/api/src/services/agent-identity-service.ts:192", "shortDescription": {"text": "Commented-code block (7 lines) in packages/api/src/services/agent-identity-service.ts:192"}, "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-45214c3eb7b2e71c", "name": "Commented-code block (6 lines) in packages/api/src/services/import-orchestrator.ts:305", "shortDescription": {"text": "Commented-code block (6 lines) in packages/api/src/services/import-orchestrator.ts:305"}, "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-e37f336c4e7b7116", "name": "Commented-code block (6 lines) in packages/api/src/services/workspace-creation-service.ts:175", "shortDescription": {"text": "Commented-code block (6 lines) in packages/api/src/services/workspace-creation-service.ts:175"}, "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-4898cd3512b279ed", "name": "Commented-code block (5 lines) in packages/api/src/services/playbooks/executors/external-agent-executor.ts:86", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/services/playbooks/executors/external-agent-executor.ts:86"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fc8f9d1b115619be", "name": "Commented-code block (6 lines) in packages/api/src/services/retrieval/understand-query.ts:124", "shortDescription": {"text": "Commented-code block (6 lines) in packages/api/src/services/retrieval/understand-query.ts:124"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-06c5533a2b161983", "name": "Commented-code block (5 lines) in packages/api/src/services/knowledge/ask.ts:139", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/services/knowledge/ask.ts:139"}, "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-261a8ba3ae89f222", "name": "Commented-code block (6 lines) in packages/api/src/routers/proposals.ts:407", "shortDescription": {"text": "Commented-code block (6 lines) in packages/api/src/routers/proposals.ts:407"}, "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-122f3090ca0df0d2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/routers/proposals.ts:196", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/routers/proposals.ts: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-cd77ed40e6011ec3", "name": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol-rest.ts:95", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol-rest.ts:95"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8e656f22fd9b6fa7", "name": "Commented-code block (5 lines) in packages/api/src/routers/relation-defs.ts:22", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/routers/relation-defs.ts:22"}, "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-142523989651bc7c", "name": "Commented-code block (7 lines) in packages/api/src/routers/secrets-vault.ts:748", "shortDescription": {"text": "Commented-code block (7 lines) in packages/api/src/routers/secrets-vault.ts:748"}, "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-278c0d2ae81abc9a", "name": "Commented-code block (5 lines) in packages/api/src/routers/devplane.ts:1310", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/routers/devplane.ts:1310"}, "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-2385cf99df981836", "name": "Commented-code block (7 lines) in packages/api/src/routers/import.ts:66", "shortDescription": {"text": "Commented-code block (7 lines) in packages/api/src/routers/import.ts:66"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d243ed4af28fa285", "name": "Commented-code block (8 lines) in packages/api/src/routers/profiles.ts:1340", "shortDescription": {"text": "Commented-code block (8 lines) in packages/api/src/routers/profiles.ts:1340"}, "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-9fd3924e1f482eb4", "name": "Commented-code block (7 lines) in packages/api/src/routers/capture.ts:57", "shortDescription": {"text": "Commented-code block (7 lines) in packages/api/src/routers/capture.ts:57"}, "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-fdd598345859612e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/routers/automations.ts:549", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/routers/automations.ts:549"}, "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-4e764b63ad129754", "name": "Commented-code block (5 lines) in packages/api/src/routers/entities.ts:397", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/routers/entities.ts:397"}, "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-7f41cbf3dbbf6e75", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/routers/intelligence.ts:1415", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/routers/intelligence.ts:1415"}, "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-3d313336539c3a6e", "name": "Commented-code block (6 lines) in packages/api/src/routers/relations.ts:271", "shortDescription": {"text": "Commented-code block (6 lines) in packages/api/src/routers/relations.ts:271"}, "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-ecbc8f04a27a8370", "name": "Commented-code block (5 lines) in packages/api/src/routers/sync.ts:82", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/routers/sync.ts:82"}, "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-d8f17dae1fc1c6b8", "name": "Commented-code block (5 lines) in packages/api/src/routers/channels.ts:1588", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/routers/channels.ts:1588"}, "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-e16a6fd775789eb7", "name": "Commented-code block (6 lines) in packages/api/src/routers/hub.ts:69", "shortDescription": {"text": "Commented-code block (6 lines) in packages/api/src/routers/hub.ts:69"}, "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-c30c9abe083183bc", "name": "Commented-code block (6 lines) in packages/api/src/routers/subscriptions.ts:321", "shortDescription": {"text": "Commented-code block (6 lines) in packages/api/src/routers/subscriptions.ts:321"}, "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-79bedd3112729238", "name": "Commented-code block (5 lines) in packages/api/src/routers/workspaces.ts:2459", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/routers/workspaces.ts:2459"}, "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-6fa9be458b0586b8", "name": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/entities.ts:127", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/entities.ts:127"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-90b6435c6c7e8c36", "name": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/services.ts:117", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/services.ts:117"}, "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-b11f9242a4043769", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/routers/hub-protocol/signals.ts:1528", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/routers/hub-protocol/signals.ts:1528"}, "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-8588ddff4a411a90", "name": "Commented-code block (7 lines) in packages/api/src/routers/hub-protocol/channels.ts:581", "shortDescription": {"text": "Commented-code block (7 lines) in packages/api/src/routers/hub-protocol/channels.ts:581"}, "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-91fdba5d2ab96aa4", "name": "Commented-code block (7 lines) in packages/api/src/routers/hub-protocol/background-tasks.ts:108", "shortDescription": {"text": "Commented-code block (7 lines) in packages/api/src/routers/hub-protocol/background-tasks.ts:108"}, "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-b87bfe690c3eb1e4", "name": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/auth.ts:69", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/auth.ts:69"}, "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-dbb6fc2de6f10753", "name": "Commented-code block (9 lines) in packages/api/src/routers/hub-protocol/rest/threads.ts:409", "shortDescription": {"text": "Commented-code block (9 lines) in packages/api/src/routers/hub-protocol/rest/threads.ts:409"}, "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-62f1a1f32c46602b", "name": "Commented-code block (7 lines) in packages/api/src/routers/hub-protocol/rest/_shared.ts:265", "shortDescription": {"text": "Commented-code block (7 lines) in packages/api/src/routers/hub-protocol/rest/_shared.ts:265"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a5b61a816a68cf28", "name": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/agent-users.ts:126", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/agent-users.ts:126"}, "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-b7817bfd8c833caa", "name": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/messaging.ts:620", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/messaging.ts:620"}, "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-b57ffa86d1ac4faf", "name": "Commented-code block (6 lines) in packages/api/src/routers/hub-protocol/rest/automation-schema-doc.ts:28", "shortDescription": {"text": "Commented-code block (6 lines) in packages/api/src/routers/hub-protocol/rest/automation-schema-doc.ts:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ca90c4a529dae15e", "name": "Commented-code block (8 lines) in packages/api/src/routers/hub-protocol/rest/entities.ts:767", "shortDescription": {"text": "Commented-code block (8 lines) in packages/api/src/routers/hub-protocol/rest/entities.ts:767"}, "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-81e0b65de91bb220", "name": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/skills.ts:541", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/skills.ts:541"}, "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-c8c8c27d191c68f4", "name": "Commented-code block (7 lines) in packages/api/src/routers/hub-protocol/rest/knowledge.ts:592", "shortDescription": {"text": "Commented-code block (7 lines) in packages/api/src/routers/hub-protocol/rest/knowledge.ts:592"}, "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-250f78f75fc046dd", "name": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/runs.ts:157", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/runs.ts:157"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3ed1bb44c2f82c34", "name": "Commented-code block (6 lines) in packages/api/src/routers/hub-protocol/rest/setup.ts:367", "shortDescription": {"text": "Commented-code block (6 lines) in packages/api/src/routers/hub-protocol/rest/setup.ts:367"}, "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-acc750d6e0b35b08", "name": "Commented-code block (9 lines) in packages/api/src/routers/hub-protocol/rest/agents.ts:145", "shortDescription": {"text": "Commented-code block (9 lines) in packages/api/src/routers/hub-protocol/rest/agents.ts:145"}, "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-ed27014e0f5afbf4", "name": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/events.ts:219", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/events.ts:219"}, "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-d3bce5ff93be4307", "name": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/vault.ts:259", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/vault.ts:259"}, "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-993018f2a85399e1", "name": "Commented-code block (6 lines) in packages/api/src/routers/hub-protocol/rest/workspaces.ts:683", "shortDescription": {"text": "Commented-code block (6 lines) in packages/api/src/routers/hub-protocol/rest/workspaces.ts:683"}, "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-7428187ae0c2abc3", "name": "Commented-code block (5 lines) in packages/api/src/plugins/plugin-manager.ts:10", "shortDescription": {"text": "Commented-code block (5 lines) in packages/api/src/plugins/plugin-manager.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-114c7935c7eb06fd", "name": "Commented-code block (5 lines) in packages/intelligence-client/src/intelligence-hub-client.ts:210", "shortDescription": {"text": "Commented-code block (5 lines) in packages/intelligence-client/src/intelligence-hub-client.ts:210"}, "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-9c9e89a1ad304a3d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/FeedServiceFactory.ts:165", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/FeedServiceFactory.ts: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-90c74876ba5e221b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/FeedService.ts:64", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/FeedService.ts:64"}, "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-6b148f2a0c589cd1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/__tests__/integration.test.ts:109", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/__tests__/integration.test.ts:109"}, "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-6929936dd7373d13", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/interfaces/IFeedProvider.ts:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/interfaces/IFeedProvider.ts:33"}, "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-d4b67c65fa806a53", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/providers/NangoProvider.ts:121", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/providers/NangoProvider.ts:121"}, "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-6ddebb2f7b9924ed", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/providers/ISourceProvider.ts:140", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/providers/ISourceProvider.ts:140"}, "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-9aa4bcf97efeefb2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/providers/CPRelayProvider.ts:110", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/providers/CPRelayProvider.ts:110"}, "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-de72da6c1fe66f44", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/providers/HTTPAPIProvider.ts:140", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/providers/HTTPAPIProvider.ts:140"}, "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-1828865afa0fdb46", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/providers/CustomProvider.ts:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/providers/CustomProvider.ts:52"}, "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-5662bf8da6116f9f", "name": "Commented-code block (8 lines) in packages/database/src/client-pg.ts:26", "shortDescription": {"text": "Commented-code block (8 lines) in packages/database/src/client-pg.ts:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1fa595b4833a1feb", "name": "Commented-code block (6 lines) in packages/database/src/__tests__/channel-type-canon.test.ts:58", "shortDescription": {"text": "Commented-code block (6 lines) in packages/database/src/__tests__/channel-type-canon.test.ts:58"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-05c62aeee75d6ac9", "name": "Commented-code block (5 lines) in packages/database/src/scripts/seed-profiles.ts:566", "shortDescription": {"text": "Commented-code block (5 lines) in packages/database/src/scripts/seed-profiles.ts:566"}, "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-4d97ccf27d8af118", "name": "Commented-code block (6 lines) in packages/database/src/scripts/migrate.ts:53", "shortDescription": {"text": "Commented-code block (6 lines) in packages/database/src/scripts/migrate.ts:53"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-915a0cb08c6b3243", "name": "Commented-code block (6 lines) in packages/database/src/utils/ensure-system-profiles.ts:755", "shortDescription": {"text": "Commented-code block (6 lines) in packages/database/src/utils/ensure-system-profiles.ts:755"}, "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-6266e6bda9b80b1f", "name": "Commented-code block (6 lines) in packages/database/src/utils/create-workspace-from-definition.ts:795", "shortDescription": {"text": "Commented-code block (6 lines) in packages/database/src/utils/create-workspace-from-definition.ts:795"}, "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-0e49a27642864803", "name": "Legacy-named symbol `0066_channel_system_v2` in packages/database/src/utils/schema-coherence.ts:119", "shortDescription": {"text": "Legacy-named symbol `0066_channel_system_v2` in packages/database/src/utils/schema-coherence.ts:119"}, "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-73524580caa720b9", "name": "Commented-code block (6 lines) in packages/database/src/schema/property-defs.ts:95", "shortDescription": {"text": "Commented-code block (6 lines) in packages/database/src/schema/property-defs.ts:95"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7191f6c20bcc2848", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/database/src/schema/source-configs.ts:128", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/database/src/schema/source-configs.ts:128"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6804a7487868fd44", "name": "Commented-code block (8 lines) in packages/database/src/schema/secrets-vault.ts:87", "shortDescription": {"text": "Commented-code block (8 lines) in packages/database/src/schema/secrets-vault.ts:87"}, "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-6925e0328fdb7dfc", "name": "Commented-code block (6 lines) in packages/database/src/schema/property-defs.js:49", "shortDescription": {"text": "Commented-code block (6 lines) in packages/database/src/schema/property-defs.js:49"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb268d2b3583df8f", "name": "Commented-code block (10 lines) in packages/database/src/schema/profiles.ts:89", "shortDescription": {"text": "Commented-code block (10 lines) in packages/database/src/schema/profiles.ts:89"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-94bde90dd52c78ea", "name": "Commented-code block (5 lines) in packages/database/src/schema/api-keys.ts:77", "shortDescription": {"text": "Commented-code block (5 lines) in packages/database/src/schema/api-keys.ts:77"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a9469053d3b03ef6", "name": "Commented-code block (5 lines) in packages/database/src/schema/views.js:65", "shortDescription": {"text": "Commented-code block (5 lines) in packages/database/src/schema/views.js: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-7a08c949edea506d", "name": "Commented-code block (6 lines) in packages/database/src/schema/events.ts:65", "shortDescription": {"text": "Commented-code block (6 lines) in packages/database/src/schema/events.ts: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-c8fd95f220b0305f", "name": "Commented-code block (5 lines) in packages/database/src/schema/views.ts:80", "shortDescription": {"text": "Commented-code block (5 lines) in packages/database/src/schema/views.ts: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-1b66ae27ff28eb52", "name": "Commented-code block (6 lines) in packages/database/src/services/view-filter-compiler.ts:71", "shortDescription": {"text": "Commented-code block (6 lines) in packages/database/src/services/view-filter-compiler.ts:71"}, "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-ad43175a259d49a6", "name": "Commented-code block (6 lines) in packages/database/src/repositories/profile-repository.ts:244", "shortDescription": {"text": "Commented-code block (6 lines) in packages/database/src/repositories/profile-repository.ts:244"}, "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-3a1c65bf9c753ecc", "name": "Commented-code block (5 lines) in packages/database/src/repositories/event-repository.ts:35", "shortDescription": {"text": "Commented-code block (5 lines) in packages/database/src/repositories/event-repository.ts:35"}, "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-95fd2f5e52a3b360", "name": "Commented-code block (10 lines) in packages/database/src/repositories/secrets-vault-repository.ts:516", "shortDescription": {"text": "Commented-code block (10 lines) in packages/database/src/repositories/secrets-vault-repository.ts:516"}, "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-1119a9e4b0bdc7a2", "name": "Commented-code block (5 lines) in packages/database/src/repositories/knowledge-keys-repository.ts:333", "shortDescription": {"text": "Commented-code block (5 lines) in packages/database/src/repositories/knowledge-keys-repository.ts:333"}, "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-ad94f56371a250dc", "name": "Commented-code block (5 lines) in packages/database/src/repositories/entity-repository.ts:225", "shortDescription": {"text": "Commented-code block (5 lines) in packages/database/src/repositories/entity-repository.ts: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-c7e989d7b97037b0", "name": "Commented-code block (10 lines) in packages/governance-policy/src/index.ts:375", "shortDescription": {"text": "Commented-code block (10 lines) in packages/governance-policy/src/index.ts:375"}, "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-7313f401f9d7f83c", "name": "Commented-code block (6 lines) in packages/core/src/synap-event.ts:60", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/synap-event.ts:60"}, "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-4a9f33122c2c14ae", "name": "Commented-code block (13 lines) in packages/test-e2e/src/hub-protocol-e2e.test.ts:173", "shortDescription": {"text": "Commented-code block (13 lines) in packages/test-e2e/src/hub-protocol-e2e.test.ts:173"}, "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-63a788f907a18db5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/test-e2e/src/core-flows.test.ts:44", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/test-e2e/src/core-flows.test.ts:44"}, "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-3261e65e105fbe62", "name": "Commented-code block (7 lines) in packages/test-e2e/src/executor-flows.test.ts:60", "shortDescription": {"text": "Commented-code block (7 lines) in packages/test-e2e/src/executor-flows.test.ts:60"}, "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-41119a8e1a505fdd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/test-e2e/src/setup.ts:214", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/test-e2e/src/setup.ts:214"}, "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-0f3e5e773d8a3aa7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/scripts/index-existing-entities.ts:24", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/scripts/index-existing-entities.ts:24"}, "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-f445ded4b5990b45", "name": "Commented-code block (5 lines) in packages/jobs/src/utils/automation-governance.ts:157", "shortDescription": {"text": "Commented-code block (5 lines) in packages/jobs/src/utils/automation-governance.ts:157"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-37b3e2f2579f1546", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/a2ai-response-trigger.ts:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/a2ai-response-trigger.ts:57"}, "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-1a342b070b13b07d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/feed-source-executor.ts:195", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/feed-source-executor.ts:195"}, "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-38fe5af7f5a10258", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/crm-daily-digest.ts:83", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/crm-daily-digest.ts:83"}, "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-b838fb2005d50f97", "name": "Commented-code block (5 lines) in packages/jobs/src/workers/automation-executor.ts:446", "shortDescription": {"text": "Commented-code block (5 lines) in packages/jobs/src/workers/automation-executor.ts:446"}, "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-3f4f3503b056cf31", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/entity-embedding.ts:17", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/entity-embedding.ts:17"}, "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-9042c75d5bd03108", "name": "Commented-code block (6 lines) in packages/jobs/src/workers/materializer.ts:162", "shortDescription": {"text": "Commented-code block (6 lines) in packages/jobs/src/workers/materializer.ts:162"}, "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-61208d5a5a6393cc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/hermes-trigger-worker.ts:265", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/hermes-trigger-worker.ts:265"}, "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-cf49466a190fb6c8", "name": "Commented-code block (5 lines) in packages/jobs/src/workers/proactive-intelligence.ts:148", "shortDescription": {"text": "Commented-code block (5 lines) in packages/jobs/src/workers/proactive-intelligence.ts:148"}, "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-bc83d4599c111f1d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/proactive-intelligence.ts:449", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/proactive-intelligence.ts:449"}, "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-e57b02b9f39f1b74", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/snapshot-worker.ts:226", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/snapshot-worker.ts:226"}, "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-327ea0216b0306ba", "name": "Legacy-named symbol `oldWorkerDeprecated` in packages/jobs/src/migrations/migrate-morning-briefing.ts:56", "shortDescription": {"text": "Legacy-named symbol `oldWorkerDeprecated` in packages/jobs/src/migrations/migrate-morning-briefing.ts: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-23f5f38fd2369478", "name": "Legacy-named symbol `oldWorkerDeprecated` in packages/jobs/src/migrations/migrate-weekly-digest.ts:56", "shortDescription": {"text": "Legacy-named symbol `oldWorkerDeprecated` in packages/jobs/src/migrations/migrate-weekly-digest.ts: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-5ccad9163f3b092a", "name": "Commented-code block (7 lines) in packages/realtime/src/yjs-server.ts:416", "shortDescription": {"text": "Commented-code block (7 lines) in packages/realtime/src/yjs-server.ts:416"}, "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-d35c2593466e0f5e", "name": "Commented-code block (6 lines) in packages/realtime/src/server.ts:149", "shortDescription": {"text": "Commented-code block (6 lines) in packages/realtime/src/server.ts:149"}, "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-4e2b3afe9cdcf066", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/realtime/src/notification-room.ts:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/realtime/src/notification-room.ts:52"}, "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-3b58f6d57bf88637", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/realtime/src/__tests__/integration.test.ts:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/realtime/src/__tests__/integration.test.ts:55"}, "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-e198f122e758a653", "name": "Commented-code block (6 lines) in packages/realtime/src/__tests__/server-auth.test.ts:169", "shortDescription": {"text": "Commented-code block (6 lines) in packages/realtime/src/__tests__/server-auth.test.ts:169"}, "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-ea0e27ae3371aefc", "name": "160 env vars used in code but missing from .env.example", "shortDescription": {"text": "160 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ACTION`, `ADMIN_API_KEY`, `ADMIN_BOOTSTRAP_TOKEN`, `ADMIN_EMAIL`, `ADMIN_NAME`, `ADMIN_PASSWORD`, `AI_STREAMING`, `ALLOWED_ORIGINS` + 152 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-5f7fa275207617af", "name": "Dangling fetch: POST /api/hub/setup/first-admin (apps/api/src/index.ts:1421)", "shortDescription": {"text": "Dangling fetch: POST /api/hub/setup/first-admin (apps/api/src/index.ts:1421)"}, "fullDescription": {"text": "`apps/api/src/index.ts:1421` calls `POST /api/hub/setup/first-admin` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/hub/setup/first-admin`\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-84787bf63dd8b4e5", "name": "Dangling fetch: POST https://api.apollo.io/v1/auth/health (packages/api/src/routers/connectors-trpc.ts:1079)", "shortDescription": {"text": "Dangling fetch: POST https://api.apollo.io/v1/auth/health (packages/api/src/routers/connectors-trpc.ts:1079)"}, "fullDescription": {"text": "`packages/api/src/routers/connectors-trpc.ts:1079` calls `POST https://api.apollo.io/v1/auth/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.apollo.io/v1/auth/health`\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-b7579f92700ebe5a", "name": "Dangling fetch: GET https://api.apify.com/v2/users/me?token=${token} (packages/api/src/routers/connectors-trpc.ts:1128)", "shortDescription": {"text": "Dangling fetch: GET https://api.apify.com/v2/users/me?token=${token} (packages/api/src/routers/connectors-trpc.ts:1128)"}, "fullDescription": {"text": "`packages/api/src/routers/connectors-trpc.ts:1128` calls `GET https://api.apify.com/v2/users/me?token=${token}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.apify.com/v2/users/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d885c0e92013f9cb", "name": "Dangling fetch: GET /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:49)", "shortDescription": {"text": "Dangling fetch: GET /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:49)"}, "fullDescription": {"text": "`packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:49` calls `GET /things` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/things`\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-65007c7d7e6ca452", "name": "Dangling fetch: POST /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:112)", "shortDescription": {"text": "Dangling fetch: POST /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:112)"}, "fullDescription": {"text": "`packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:112` calls `POST /things` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/things`\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-293a8f620cb51e26", "name": "Dangling fetch: POST /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:113)", "shortDescription": {"text": "Dangling fetch: POST /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:113)"}, "fullDescription": {"text": "`packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:113` calls `POST /things` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/things`\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-98998217c48afe34", "name": "Dangling fetch: POST /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:132)", "shortDescription": {"text": "Dangling fetch: POST /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:132)"}, "fullDescription": {"text": "`packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:132` calls `POST /things` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/things`\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-11d864f01dd3da39", "name": "Dangling fetch: POST /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:133)", "shortDescription": {"text": "Dangling fetch: POST /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:133)"}, "fullDescription": {"text": "`packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:133` calls `POST /things` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/things`\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-4f12aadfebf9e530", "name": "Dangling fetch: POST /leak (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:154)", "shortDescription": {"text": "Dangling fetch: POST /leak (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:154)"}, "fullDescription": {"text": "`packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:154` calls `POST /leak` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/leak`\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-f64b554bcfcb9e87", "name": "Dangling fetch: POST /leak (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:155)", "shortDescription": {"text": "Dangling fetch: POST /leak (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:155)"}, "fullDescription": {"text": "`packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:155` calls `POST /leak` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/leak`\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-d22c16ed7968f88f", "name": "Dangling fetch: POST /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:181)", "shortDescription": {"text": "Dangling fetch: POST /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:181)"}, "fullDescription": {"text": "`packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:181` calls `POST /things` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/things`\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-fcc8b2093765a806", "name": "Dangling fetch: POST /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:186)", "shortDescription": {"text": "Dangling fetch: POST /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:186)"}, "fullDescription": {"text": "`packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:186` calls `POST /things` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/things`\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-f9248f1ec5968664", "name": "Dangling fetch: GET /auth/status (packages/api/src/routers/hub-protocol/rest/auth.test.ts:207)", "shortDescription": {"text": "Dangling fetch: GET /auth/status (packages/api/src/routers/hub-protocol/rest/auth.test.ts:207)"}, "fullDescription": {"text": "`packages/api/src/routers/hub-protocol/rest/auth.test.ts:207` calls `GET /auth/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/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-be995713d5324379", "name": "Dangling fetch: GET /auth/status (packages/api/src/routers/hub-protocol/rest/auth.test.ts:233)", "shortDescription": {"text": "Dangling fetch: GET /auth/status (packages/api/src/routers/hub-protocol/rest/auth.test.ts:233)"}, "fullDescription": {"text": "`packages/api/src/routers/hub-protocol/rest/auth.test.ts:233` calls `GET /auth/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/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-526cd993a1cc41da", "name": "Dangling fetch: GET /auth/status (packages/api/src/routers/hub-protocol/rest/auth.test.ts:248)", "shortDescription": {"text": "Dangling fetch: GET /auth/status (packages/api/src/routers/hub-protocol/rest/auth.test.ts:248)"}, "fullDescription": {"text": "`packages/api/src/routers/hub-protocol/rest/auth.test.ts:248` calls `GET /auth/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/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-a7b54c2197141547", "name": "Dangling fetch: GET /auth/status (packages/api/src/routers/hub-protocol/rest/auth.test.ts:263)", "shortDescription": {"text": "Dangling fetch: GET /auth/status (packages/api/src/routers/hub-protocol/rest/auth.test.ts:263)"}, "fullDescription": {"text": "`packages/api/src/routers/hub-protocol/rest/auth.test.ts:263` calls `GET /auth/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/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-a9b0cc7ae1700bff", "name": "Dangling fetch: GET /auth/status (packages/api/src/routers/hub-protocol/rest/auth.test.ts:281)", "shortDescription": {"text": "Dangling fetch: GET /auth/status (packages/api/src/routers/hub-protocol/rest/auth.test.ts:281)"}, "fullDescription": {"text": "`packages/api/src/routers/hub-protocol/rest/auth.test.ts:281` calls `GET /auth/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/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-aaa7990581ef7987", "name": "Dangling fetch: GET /auth/status (packages/api/src/routers/hub-protocol/rest/auth.test.ts:295)", "shortDescription": {"text": "Dangling fetch: GET /auth/status (packages/api/src/routers/hub-protocol/rest/auth.test.ts:295)"}, "fullDescription": {"text": "`packages/api/src/routers/hub-protocol/rest/auth.test.ts:295` calls `GET /auth/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/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-b5deed44ee298a25", "name": "Dangling fetch: GET /openapi.json (packages/api/src/routers/hub-protocol/rest/auth.test.ts:307)", "shortDescription": {"text": "Dangling fetch: GET /openapi.json (packages/api/src/routers/hub-protocol/rest/auth.test.ts:307)"}, "fullDescription": {"text": "`packages/api/src/routers/hub-protocol/rest/auth.test.ts:307` calls `GET /openapi.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/openapi.json`\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-5d2a9d79648baba1", "name": "Dangling fetch: GET /openapi.json (packages/api/src/routers/hub-protocol/rest/auth.test.ts:313)", "shortDescription": {"text": "Dangling fetch: GET /openapi.json (packages/api/src/routers/hub-protocol/rest/auth.test.ts:313)"}, "fullDescription": {"text": "`packages/api/src/routers/hub-protocol/rest/auth.test.ts:313` calls `GET /openapi.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/openapi.json`\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-4e1f8d71738f104c", "name": "Dangling fetch: GET http://localhost:3000/health (packages/core/tests/test-capture.ts:14)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:3000/health (packages/core/tests/test-capture.ts:14)"}, "fullDescription": {"text": "`packages/core/tests/test-capture.ts:14` calls `GET http://localhost:3000/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:3000/health`\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-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`apps/api/src/index.ts` 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-4446954da4a3174b", "name": "Unused endpoint: GET /admin/connect", "shortDescription": {"text": "Unused endpoint: GET /admin/connect"}, "fullDescription": {"text": "`apps/api/src/index.ts` declares `GET /admin/connect` 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-f86d00ce620ac060", "name": "Unused endpoint: ALL /.ory/kratos/public/*", "shortDescription": {"text": "Unused endpoint: ALL /.ory/kratos/public/*"}, "fullDescription": {"text": "`apps/api/src/index.ts` declares `ALL /.ory/kratos/public/*` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-488776c4a259ca0d", "name": "Unused endpoint: ALL /self-service/*", "shortDescription": {"text": "Unused endpoint: ALL /self-service/*"}, "fullDescription": {"text": "`apps/api/src/index.ts` declares `ALL /self-service/*` 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-a66f62b79d1b3e11", "name": "Unused endpoint: POST /api/auth/token-exchange", "shortDescription": {"text": "Unused endpoint: POST /api/auth/token-exchange"}, "fullDescription": {"text": "`apps/api/src/index.ts` declares `POST /api/auth/token-exchange` 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-e9c073feeab06dda", "name": "Unused endpoint: USE /api/handshake", "shortDescription": {"text": "Unused endpoint: USE /api/handshake"}, "fullDescription": {"text": "`apps/api/src/index.ts` declares `USE /api/handshake` 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-a2d8aa16737dcf49", "name": "Unused endpoint: POST /api/handshake", "shortDescription": {"text": "Unused endpoint: POST /api/handshake"}, "fullDescription": {"text": "`apps/api/src/index.ts` declares `POST /api/handshake` 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-6b0e7f5976711316", "name": "Unused endpoint: GET /api/session", "shortDescription": {"text": "Unused endpoint: GET /api/session"}, "fullDescription": {"text": "`apps/api/src/index.ts` declares `GET /api/session` 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-f7b27f8700f84a63", "name": "Unused endpoint: GET /api/events/stream", "shortDescription": {"text": "Unused endpoint: GET /api/events/stream"}, "fullDescription": {"text": "`apps/api/src/index.ts` declares `GET /api/events/stream` 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-9be260efccadaa46", "name": "Unused endpoint: USE /trpc/*", "shortDescription": {"text": "Unused endpoint: USE /trpc/*"}, "fullDescription": {"text": "`apps/api/src/index.ts` declares `USE /trpc/*` 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-20af8f121341584c", "name": "Unused endpoint: POST /api/ws-ticket", "shortDescription": {"text": "Unused endpoint: POST /api/ws-ticket"}, "fullDescription": {"text": "`apps/api/src/index.ts` declares `POST /api/ws-ticket` 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-8714c0b76c9f32b0", "name": "Unused endpoint: USE /api/hub/trpc/*", "shortDescription": {"text": "Unused endpoint: USE /api/hub/trpc/*"}, "fullDescription": {"text": "`apps/api/src/index.ts` declares `USE /api/hub/trpc/*` 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-4deefa05fed87342", "name": "Unused endpoint: USE /trpc/chat.sendMessage", "shortDescription": {"text": "Unused endpoint: USE /trpc/chat.sendMessage"}, "fullDescription": {"text": "`apps/api/src/index.ts` declares `USE /trpc/chat.sendMessage` 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-fed7cfdbfe370a4f", "name": "Unused endpoint: USE /trpc/channels.sendMessage", "shortDescription": {"text": "Unused endpoint: USE /trpc/channels.sendMessage"}, "fullDescription": {"text": "`apps/api/src/index.ts` declares `USE /trpc/channels.sendMessage` 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-d86afd7dd2beb431", "name": "Unused endpoint: GET /setup", "shortDescription": {"text": "Unused endpoint: GET /setup"}, "fullDescription": {"text": "`apps/api/src/index.ts` declares `GET /setup` 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-4ba5c1cd254ad129", "name": "Unused endpoint: POST /pull-sync", "shortDescription": {"text": "Unused endpoint: POST /pull-sync"}, "fullDescription": {"text": "`apps/api/src/routers/connectors.ts` declares `POST /pull-sync` 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-5b620c07e0749253", "name": "Unused endpoint: POST /nango-webhook", "shortDescription": {"text": "Unused endpoint: POST /nango-webhook"}, "fullDescription": {"text": "`apps/api/src/routers/connectors.ts` declares `POST /nango-webhook` 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-540ebf4772ccf420", "name": "Unused endpoint: POST /disconnect", "shortDescription": {"text": "Unused endpoint: POST /disconnect"}, "fullDescription": {"text": "`apps/api/src/routers/connectors.ts` declares `POST /disconnect` 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-2ab9bf5db6820af4", "name": "Unused endpoint: GET /models", "shortDescription": {"text": "Unused endpoint: GET /models"}, "fullDescription": {"text": "`apps/api/src/routers/providers.ts` declares `GET /models` 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-35c268ad9306182e", "name": "Unused endpoint: GET /credentials", "shortDescription": {"text": "Unused endpoint: GET /credentials"}, "fullDescription": {"text": "`apps/api/src/routers/providers.ts` declares `GET /credentials` 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-3abf952b8d28d710", "name": "Unused endpoint: USE /*", "shortDescription": {"text": "Unused endpoint: USE /*"}, "fullDescription": {"text": "`apps/api/src/routers/channel-gateway.ts` declares `USE /*` 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-aee9168e964a3822", "name": "Unused endpoint: POST /verify", "shortDescription": {"text": "Unused endpoint: POST /verify"}, "fullDescription": {"text": "`apps/api/src/routers/channel-gateway.ts` declares `POST /verify` 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-e1facef33a244397", "name": "Unused endpoint: POST /inbound", "shortDescription": {"text": "Unused endpoint: POST /inbound"}, "fullDescription": {"text": "`apps/api/src/routers/channel-gateway.ts` declares `POST /inbound` 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-3295d44f7b6283c3", "name": "Unused endpoint: POST /unlink", "shortDescription": {"text": "Unused endpoint: POST /unlink"}, "fullDescription": {"text": "`apps/api/src/routers/channel-gateway.ts` declares `POST /unlink` 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-a57e4ede2b9b55e8", "name": "Unused endpoint: POST /seed-trust", "shortDescription": {"text": "Unused endpoint: POST /seed-trust"}, "fullDescription": {"text": "`apps/api/src/routers/provision.ts` declares `POST /seed-trust` 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-8664e7608b8880ea", "name": "Unused endpoint: POST /connect", "shortDescription": {"text": "Unused endpoint: POST /connect"}, "fullDescription": {"text": "`apps/api/src/routers/provision.ts` declares `POST /connect` 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-62a4c98523d60527", "name": "Unused endpoint: POST /register-intelligence", "shortDescription": {"text": "Unused endpoint: POST /register-intelligence"}, "fullDescription": {"text": "`apps/api/src/routers/provision.ts` declares `POST /register-intelligence` 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-d9d63b1d2f4f3dbf", "name": "Unused endpoint: POST /reset-intelligence", "shortDescription": {"text": "Unused endpoint: POST /reset-intelligence"}, "fullDescription": {"text": "`apps/api/src/routers/provision.ts` declares `POST /reset-intelligence` 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-f370274f9c3e95da", "name": "Unused endpoint: POST /seed-admin", "shortDescription": {"text": "Unused endpoint: POST /seed-admin"}, "fullDescription": {"text": "`apps/api/src/routers/provision.ts` declares `POST /seed-admin` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f2c2e2136c796ec1", "name": "Unused endpoint: POST /admin-recovery-link", "shortDescription": {"text": "Unused endpoint: POST /admin-recovery-link"}, "fullDescription": {"text": "`apps/api/src/routers/provision.ts` declares `POST /admin-recovery-link` 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-ce6dc0015d2db449", "name": "Unused endpoint: POST /validate-credentials", "shortDescription": {"text": "Unused endpoint: POST /validate-credentials"}, "fullDescription": {"text": "`apps/api/src/routers/provision.ts` declares `POST /validate-credentials` 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-fa7bbe540d3e196d", "name": "Unused endpoint: GET /debug", "shortDescription": {"text": "Unused endpoint: GET /debug"}, "fullDescription": {"text": "`apps/api/src/routers/provision.ts` declares `GET /debug` 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-bb97464f1c563a6c", "name": "Unused endpoint: GET /diagnose-intelligence", "shortDescription": {"text": "Unused endpoint: GET /diagnose-intelligence"}, "fullDescription": {"text": "`apps/api/src/routers/provision.ts` declares `GET /diagnose-intelligence` 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-2c47b0cf2c728019", "name": "Unused endpoint: GET /addon-status", "shortDescription": {"text": "Unused endpoint: GET /addon-status"}, "fullDescription": {"text": "`apps/api/src/routers/provision.ts` declares `GET /addon-status` 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-6dde63fd22e7f0d7", "name": "Unused endpoint: POST /activate-addon", "shortDescription": {"text": "Unused endpoint: POST /activate-addon"}, "fullDescription": {"text": "`apps/api/src/routers/provision.ts` declares `POST /activate-addon` 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-da390cc53deb1e36", "name": "Unused endpoint: POST /deactivate-addon", "shortDescription": {"text": "Unused endpoint: POST /deactivate-addon"}, "fullDescription": {"text": "`apps/api/src/routers/provision.ts` declares `POST /deactivate-addon` 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-363674d5715d33ff", "name": "Unused endpoint: POST /trigger-update", "shortDescription": {"text": "Unused endpoint: POST /trigger-update"}, "fullDescription": {"text": "`apps/api/src/routers/provision.ts` declares `POST /trigger-update` 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-bf3dc2950c88f5d2", "name": "Unused endpoint: POST /bootstrap/claim", "shortDescription": {"text": "Unused endpoint: POST /bootstrap/claim"}, "fullDescription": {"text": "`apps/api/src/routers/admin.ts` declares `POST /bootstrap/claim` 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-a834e5a1d40cf3a9", "name": "Unused endpoint: GET /validate-invite", "shortDescription": {"text": "Unused endpoint: GET /validate-invite"}, "fullDescription": {"text": "`apps/api/src/routers/admin.ts` declares `GET /validate-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-46eb93a4accdc83b", "name": "Unused endpoint: POST /invite", "shortDescription": {"text": "Unused endpoint: POST /invite"}, "fullDescription": {"text": "`apps/api/src/routers/admin.ts` declares `POST /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-6c4452e1c08b3191", "name": "Unused endpoint: POST /callback", "shortDescription": {"text": "Unused endpoint: POST /callback"}, "fullDescription": {"text": "`apps/api/src/webhooks/intelligence.ts` declares `POST /callback` 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/src/webhooks/kratos.ts` 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-1af1cf9559446a09", "name": "Unused endpoint: POST /inbox", "shortDescription": {"text": "Unused endpoint: POST /inbox"}, "fullDescription": {"text": "`apps/api/src/webhooks/n8n.ts` declares `POST /inbox` 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-eb0428442a390121", "name": "Unused endpoint: GET /docs", "shortDescription": {"text": "Unused endpoint: GET /docs"}, "fullDescription": {"text": "`packages/api/src/routers/hub-protocol-rest.ts` declares `GET /docs` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5988a52edab51d0f", "name": "Unused endpoint: POST /inbound/:subscriptionId", "shortDescription": {"text": "Unused endpoint: POST /inbound/:subscriptionId"}, "fullDescription": {"text": "`packages/api/src/routers/webhooks-inbound.ts` declares `POST /inbound/:subscriptionId` 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-845148e77059cbcd", "name": "Unused endpoint: POST /messaging", "shortDescription": {"text": "Unused endpoint: POST /messaging"}, "fullDescription": {"text": "`packages/api/src/routers/webhooks-inbound.ts` declares `POST /messaging` 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": "`packages/api/src/routers/file-upload.ts` 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-4e5f2c7314334ad6", "name": "Unused endpoint: GET /documents/:documentId/url", "shortDescription": {"text": "Unused endpoint: GET /documents/:documentId/url"}, "fullDescription": {"text": "`packages/api/src/routers/file-upload.ts` declares `GET /documents/:documentId/url` 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-32db2697cade1838", "name": "Unused endpoint: GET /:entityId/url", "shortDescription": {"text": "Unused endpoint: GET /:entityId/url"}, "fullDescription": {"text": "`packages/api/src/routers/file-upload.ts` declares `GET /:entityId/url` 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-055dd4daced45986", "name": "Unused endpoint: POST /receive", "shortDescription": {"text": "Unused endpoint: POST /receive"}, "fullDescription": {"text": "`packages/api/src/routers/sync.ts` declares `POST /receive` 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/20670"}, "properties": {"repository": "Synap-core/backend", "repoUrl": "https://github.com/Synap-core/backend", "branch": "main"}, "results": [{"ruleId": "scanner-135db902a27f218f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/api/src/startup-hooks.ts:119"}, "properties": {"repobilityId": "4c5c04d59b709161", "scanner": "scanner-primary", "fingerprint": "135db902a27f218f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a1310725cb2e1fa1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/api/src/index.ts:17"}, "properties": {"repobilityId": "aec0eefcbfedb49b", "scanner": "scanner-primary", "fingerprint": "a1310725cb2e1fa1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-26be2bb6aa80f6c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/middleware/security.js:28"}, "properties": {"repobilityId": "e8ed687f6a00cb7f", "scanner": "scanner-primary", "fingerprint": "26be2bb6aa80f6c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae9308db9709eae3", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/api/src/webhooks/intelligence.ts:54"}, "properties": {"repobilityId": "ed8116f856a4780d", "scanner": "scanner-primary", "fingerprint": "ae9308db9709eae3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-87f56a5b17a98ff4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/api/src/webhooks/n8n.ts:88"}, "properties": {"repobilityId": "34abddddb8b3c18d", "scanner": "scanner-primary", "fingerprint": "87f56a5b17a98ff4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-07bf70861bf45ef6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/workspaces/[id]/_lib/members-tab.tsx:124"}, "properties": {"repobilityId": "e8a45bfd2e924604", "scanner": "scanner-primary", "fingerprint": "07bf70861bf45ef6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-597f94235a161898", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/workspaces/[id]/_lib/overview-tab.tsx:32"}, "properties": {"repobilityId": "edddcd4154d242f2", "scanner": "scanner-primary", "fingerprint": "597f94235a161898", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-00d79b61fd986e2f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/workspaces/[id]/_lib/service-group-card.tsx:81"}, "properties": {"repobilityId": "a42ee61ecefbac60", "scanner": "scanner-primary", "fingerprint": "00d79b61fd986e2f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4de223a5aeabecdf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/connectors/page.tsx:260"}, "properties": {"repobilityId": "ba2c238d55870655", "scanner": "scanner-primary", "fingerprint": "4de223a5aeabecdf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-534b94da5c568584", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/intelligence/page.tsx:280"}, "properties": {"repobilityId": "2439be17f0b31159", "scanner": "scanner-primary", "fingerprint": "534b94da5c568584", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ce77b0a8249f02c9", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/pod-admin/app/(admin)/intelligence/page.tsx:823"}, "properties": {"repobilityId": "9ee8e86da228e25c", "scanner": "scanner-primary", "fingerprint": "ce77b0a8249f02c9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-2fe054f94c3d1758", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/components/search-modal.tsx:456"}, "properties": {"repobilityId": "03cc724e1d74fb6a", "scanner": "scanner-primary", "fingerprint": "2fe054f94c3d1758", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-285603d5073e951d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/components/section-card.tsx:47"}, "properties": {"repobilityId": "a539db37460f1ae8", "scanner": "scanner-primary", "fingerprint": "285603d5073e951d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5b1df184a2c8ab3a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/components/resource-row.tsx:81"}, "properties": {"repobilityId": "b6be3baae9621a46", "scanner": "scanner-primary", "fingerprint": "5b1df184a2c8ab3a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cf66b7353a5a5954", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/components/top-nav.tsx:180"}, "properties": {"repobilityId": "b14b08e0df80b127", "scanner": "scanner-primary", "fingerprint": "cf66b7353a5a5954", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-846225ad339d3e53", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/components/detail-drawer.tsx:91"}, "properties": {"repobilityId": "b3b4f0e96a18fa42", "scanner": "scanner-primary", "fingerprint": "846225ad339d3e53", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0e8a5d8055315b7c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/audit/_lib/approval-queue-section.tsx:315"}, "properties": {"repobilityId": "68ebe40def98c780", "scanner": "scanner-primary", "fingerprint": "0e8a5d8055315b7c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0d7d6538344ba465", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/audit/_lib/activity-section.tsx:295"}, "properties": {"repobilityId": "f902232b2c983972", "scanner": "scanner-primary", "fingerprint": "0d7d6538344ba465", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-68f7d0787d4c90d5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/entities/page.tsx:437"}, "properties": {"repobilityId": "18465dd035668b5e", "scanner": "scanner-primary", "fingerprint": "68f7d0787d4c90d5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fd644509f0fe25b7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/pod-admin/app/(admin)/overview/page.tsx:266"}, "properties": {"repobilityId": "d5ea33380cbff202", "scanner": "scanner-primary", "fingerprint": "fd644509f0fe25b7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-8b5efb83c7470ff7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/pod-admin/app/(admin)/people/page.tsx:301"}, "properties": {"repobilityId": "59414f636d6d75f7", "scanner": "scanner-primary", "fingerprint": "8b5efb83c7470ff7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-47c9befa7c1b06ac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-admin-cli.ts:28"}, "properties": {"repobilityId": "796ee651b55411ba", "scanner": "scanner-primary", "fingerprint": "47c9befa7c1b06ac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c93e3aafc489049d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-generation.ts:30"}, "properties": {"repobilityId": "7710c05fcff61395", "scanner": "scanner-primary", "fingerprint": "c93e3aafc489049d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cfc0cbede7fca5d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-event-repository.ts:15"}, "properties": {"repobilityId": "0c424ab1fa0a7d73", "scanner": "scanner-primary", "fingerprint": "cfc0cbede7fca5d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de1d04f534754140", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-system.ts:286"}, "properties": {"repobilityId": "561188e3abc03687", "scanner": "scanner-primary", "fingerprint": "de1d04f534754140", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f9d6831152bb148", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-hub-client.ts:28"}, "properties": {"repobilityId": "bba6edeccee78f04", "scanner": "scanner-primary", "fingerprint": "3f9d6831152bb148", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b98f516530cc02b3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-hub-flow.ts:25"}, "properties": {"repobilityId": "0bf657c3c5fa5e1e", "scanner": "scanner-primary", "fingerprint": "b98f516530cc02b3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1d6b75a27b5723d1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-storage.ts:19"}, "properties": {"repobilityId": "d3a1afebba6ad67f", "scanner": "scanner-primary", "fingerprint": "1d6b75a27b5723d1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5001deb89f833765", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-event-store-performance.ts:86"}, "properties": {"repobilityId": "dbbcbf43d54acf8b", "scanner": "scanner-primary", "fingerprint": "5001deb89f833765", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9bb53e079cdeb120", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/monitor-dual-write.ts:8"}, "properties": {"repobilityId": "bd6f3866eafe28ad", "scanner": "scanner-primary", "fingerprint": "9bb53e079cdeb120", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b6ee11d5614fa337", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-types-deep.ts:14"}, "properties": {"repobilityId": "9b6ea41f97279e67", "scanner": "scanner-primary", "fingerprint": "b6ee11d5614fa337", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1f0a4128643233a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-views.ts:19"}, "properties": {"repobilityId": "91fae101841346bf", "scanner": "scanner-primary", "fingerprint": "b1f0a4128643233a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bbc8e1c3316e8d60", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-conversation.ts:11"}, "properties": {"repobilityId": "399d782176687be2", "scanner": "scanner-primary", "fingerprint": "bbc8e1c3316e8d60", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-73c82da30dc9bf78", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-conversational-flow.ts:20"}, "properties": {"repobilityId": "1f5ddd001ef8b9e6", "scanner": "scanner-primary", "fingerprint": "73c82da30dc9bf78", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-80bc264d88905d2d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 deploy/pod-agent/server.js:214"}, "properties": {"repobilityId": "5530fd1fd925e897", "scanner": "scanner-primary", "fingerprint": "80bc264d88905d2d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-86a2cd2f0d713b29", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/auth/src/token-exchange.ts:39"}, "properties": {"repobilityId": "6e68243b71d2a708", "scanner": "scanner-primary", "fingerprint": "86a2cd2f0d713b29", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-7503463837933ac2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/access/write-gate.tripwire.test.ts:52"}, "properties": {"repobilityId": "615efc3173ea86d4", "scanner": "scanner-primary", "fingerprint": "7503463837933ac2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-82bf7127bdb0af9a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/scripts/create-admin-cli.ts:29"}, "properties": {"repobilityId": "1e763380e83f5a9f", "scanner": "scanner-primary", "fingerprint": "82bf7127bdb0af9a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ea7275814d58bab2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/scripts/user-admin-cli.ts:38"}, "properties": {"repobilityId": "02fccdff9c4d1dec", "scanner": "scanner-primary", "fingerprint": "ea7275814d58bab2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1b9db060927833ce", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/scripts/provision.ts:52"}, "properties": {"repobilityId": "b4680e30c31cc9bf", "scanner": "scanner-primary", "fingerprint": "1b9db060927833ce", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36edd7eef2fbdafd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/scripts/provision-agent.ts:93"}, "properties": {"repobilityId": "ed0d17363cbc1ff6", "scanner": "scanner-primary", "fingerprint": "36edd7eef2fbdafd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-54a3bca6481d10a4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/utils/server-vault.ts:18"}, "properties": {"repobilityId": "f407a518a88926d9", "scanner": "scanner-primary", "fingerprint": "54a3bca6481d10a4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-30a3d92933315e8b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/lib/permissions.ts:79"}, "properties": {"repobilityId": "dd2b95466f55ffa3", "scanner": "scanner-primary", "fingerprint": "30a3d92933315e8b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-0ff2e67c254f20c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/lib/event-helpers.ts:50"}, "properties": {"repobilityId": "dc62f1d7f48076bc", "scanner": "scanner-primary", "fingerprint": "0ff2e67c254f20c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b71fba3286fa4d39", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/services/api-keys.ts:91"}, "properties": {"repobilityId": "1b038c0ab44572c2", "scanner": "scanner-primary", "fingerprint": "b71fba3286fa4d39", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-64abcd305fc7134f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/services/playbooks/run-playbook.ts:109"}, "properties": {"repobilityId": "40724d3f02fd131a", "scanner": "scanner-primary", "fingerprint": "64abcd305fc7134f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-3e094b1e036dfd5f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/services/playbooks/executors/hybrid-executor.ts:22"}, "properties": {"repobilityId": "db7b91667b62f8f5", "scanner": "scanner-primary", "fingerprint": "3e094b1e036dfd5f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-7e2f0143d7948404", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/services/capabilities/capability-registry.ts:129"}, "properties": {"repobilityId": "b0abf8884acbdd29", "scanner": "scanner-primary", "fingerprint": "7e2f0143d7948404", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-cc4a6346a403ba0e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/routers/entities-data.ts:347"}, "properties": {"repobilityId": "d2e301a8c59a8db9", "scanner": "scanner-primary", "fingerprint": "cc4a6346a403ba0e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-11a23c1a88bc7399", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/routers/system.ts:629"}, "properties": {"repobilityId": "5feff4ba45b61db5", "scanner": "scanner-primary", "fingerprint": "11a23c1a88bc7399", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-bd2fdd6fa5f9f1fd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/routers/system.ts:658"}, "properties": {"repobilityId": "e253eed70a936635", "scanner": "scanner-primary", "fingerprint": "bd2fdd6fa5f9f1fd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d96be263c2a77a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/routers/entities.ts:1996"}, "properties": {"repobilityId": "bb7096b277e8994b", "scanner": "scanner-primary", "fingerprint": "9d96be263c2a77a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-904d632b1869e3a4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/routers/search.ts:183"}, "properties": {"repobilityId": "fd835e8ac6e162ad", "scanner": "scanner-primary", "fingerprint": "904d632b1869e3a4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-52ceb2c846ede726", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/routers/channels.ts:1630"}, "properties": {"repobilityId": "3f0fe0d128edfaf1", "scanner": "scanner-primary", "fingerprint": "52ceb2c846ede726", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-f4b1f6faa0ea7c12", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/routers/subscriptions.ts:351"}, "properties": {"repobilityId": "ca0638f73b5cfb73", "scanner": "scanner-primary", "fingerprint": "f4b1f6faa0ea7c12", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ce461ce795e3ee30", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/api/src/routers/workspaces.ts:413"}, "properties": {"repobilityId": "4a836fa3b7ec5fa9", "scanner": "scanner-primary", "fingerprint": "ce461ce795e3ee30", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f88c4b8eec9fd9f9", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/routers/hub-protocol/profiles.ts:144"}, "properties": {"repobilityId": "3d131d9a2fd85909", "scanner": "scanner-primary", "fingerprint": "f88c4b8eec9fd9f9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-fcc354a7539ba344", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/routers/hub-protocol/rest/auth.ts:165"}, "properties": {"repobilityId": "263917e5c04b7914", "scanner": "scanner-primary", "fingerprint": "fcc354a7539ba344", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-7d38c248b5012655", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/api/src/plugins/plugin-manager.ts:77"}, "properties": {"repobilityId": "df4f57171f113b9d", "scanner": "scanner-primary", "fingerprint": "7d38c248b5012655", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-2d654317c0812aab", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/scripts/src/generate-table-code.ts:185"}, "properties": {"repobilityId": "30428b8a773b4d78", "scanner": "scanner-primary", "fingerprint": "2d654317c0812aab", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-62525990d6314e4d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/scripts/src/generate-table-code.ts:54"}, "properties": {"repobilityId": "da16efc9d9cbdeca", "scanner": "scanner-primary", "fingerprint": "62525990d6314e4d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6c22ceb366380cc1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/feed-service/src/FeedService.ts:160"}, "properties": {"repobilityId": "a2d815b7a7d438b4", "scanner": "scanner-primary", "fingerprint": "6c22ceb366380cc1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae277c0ea318b2c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/feed-service/src/interfaces/IFeedPublisher.ts:36"}, "properties": {"repobilityId": "dcca1fb4f96526e5", "scanner": "scanner-primary", "fingerprint": "ae277c0ea318b2c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-259b91a092e0ee3b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/test-db.ts:11"}, "properties": {"repobilityId": "521e10ea1b4d1245", "scanner": "scanner-primary", "fingerprint": "259b91a092e0ee3b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-054dfcc357851169", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/scripts/seed-profiles.ts:28"}, "properties": {"repobilityId": "bd03e8dcae40f2ef", "scanner": "scanner-primary", "fingerprint": "054dfcc357851169", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-62b869f132c59a23", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/scripts/backfill-entity-profiles.ts:22"}, "properties": {"repobilityId": "f1ec1f17d3504edb", "scanner": "scanner-primary", "fingerprint": "62b869f132c59a23", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1cfdc51b86b86954", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/scripts/test-rls.ts:23"}, "properties": {"repobilityId": "09e7a1b694e0de0d", "scanner": "scanner-primary", "fingerprint": "1cfdc51b86b86954", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9be3e965d5a7bfa8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/migrations/feed-service-migration.ts:580"}, "properties": {"repobilityId": "f5b13cc8bbb46743", "scanner": "scanner-primary", "fingerprint": "9be3e965d5a7bfa8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-20497eb4b5ef9953", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/src/__tests__/setup.ts:12"}, "properties": {"repobilityId": "9719f21541db0aa8", "scanner": "scanner-primary", "fingerprint": "20497eb4b5ef9953", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f8aa8f014f593786", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/src/scripts/seed-profiles.ts:18"}, "properties": {"repobilityId": "ef84f734e70931d3", "scanner": "scanner-primary", "fingerprint": "f8aa8f014f593786", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de4e32a55a05c318", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/src/scripts/init-hub-keys.ts:17"}, "properties": {"repobilityId": "01768a597623e4f3", "scanner": "scanner-primary", "fingerprint": "de4e32a55a05c318", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9b7546cc0adc78a0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/src/scripts/migrate.ts:33"}, "properties": {"repobilityId": "5bd1301fa68acd75", "scanner": "scanner-primary", "fingerprint": "9b7546cc0adc78a0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-85bf2ddc60c67e7a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/src/utils/server-vault.ts:18"}, "properties": {"repobilityId": "85ddddcac64288cf", "scanner": "scanner-primary", "fingerprint": "85bf2ddc60c67e7a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-120c7697e4230676", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/database/src/utils/create-default-whiteboard.ts:104"}, "properties": {"repobilityId": "c16a7957c74d7222", "scanner": "scanner-primary", "fingerprint": "120c7697e4230676", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f506312a78575f63", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/database/src/repositories/inbox-repository.ts:65"}, "properties": {"repobilityId": "950427403cf8a672", "scanner": "scanner-primary", "fingerprint": "f506312a78575f63", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-517c9c0773b40e54", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/search/src/services/indexing-service.ts:338"}, "properties": {"repobilityId": "332d1ea049218725", "scanner": "scanner-primary", "fingerprint": "517c9c0773b40e54", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-266dcb70de47f03c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/search/src/services/collection-service.ts:34"}, "properties": {"repobilityId": "4a7801570b3182ad", "scanner": "scanner-primary", "fingerprint": "266dcb70de47f03c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f036b45f8ad66ab", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/search/src/indexers/project-indexer.ts:32"}, "properties": {"repobilityId": "31143fd7fefce84d", "scanner": "scanner-primary", "fingerprint": "3f036b45f8ad66ab", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-0893ce53d0179b5f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/search/src/indexers/agent-indexer.ts:34"}, "properties": {"repobilityId": "a864683a35c3ce5f", "scanner": "scanner-primary", "fingerprint": "0893ce53d0179b5f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-5f54eadd0b8a9ebe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/tests/local-mvp.test.ts:9"}, "properties": {"repobilityId": "a404b84f75f41bf8", "scanner": "scanner-primary", "fingerprint": "5f54eadd0b8a9ebe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-86489c8ee7f80dd9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/tests/test-capture.ts:9"}, "properties": {"repobilityId": "718ee72146875da8", "scanner": "scanner-primary", "fingerprint": "86489c8ee7f80dd9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c14fd407111a31d2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core/tests/multi-user.test.ts:292"}, "properties": {"repobilityId": "68f0c7584ddd5c5b", "scanner": "scanner-primary", "fingerprint": "c14fd407111a31d2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a47c70f0c50a8242", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/tests/multi-user.test.ts:79"}, "properties": {"repobilityId": "0e76b237fdcd7b39", "scanner": "scanner-primary", "fingerprint": "a47c70f0c50a8242", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d0e1a43e26982c04", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/tests/phase1.test.ts:9"}, "properties": {"repobilityId": "ba9834c4f07473e6", "scanner": "scanner-primary", "fingerprint": "d0e1a43e26982c04", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4309ef6e925a1c87", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/tests/user-isolation.test.ts:90"}, "properties": {"repobilityId": "b7b20f203b961a80", "scanner": "scanner-primary", "fingerprint": "4309ef6e925a1c87", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aac654bbc3f9d4e7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/tracing.ts:62"}, "properties": {"repobilityId": "1ee0e978576a368a", "scanner": "scanner-primary", "fingerprint": "aac654bbc3f9d4e7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-056a90e02125e546", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/test-e2e/src/setup.ts:71"}, "properties": {"repobilityId": "74b761d5609d62ec", "scanner": "scanner-primary", "fingerprint": "056a90e02125e546", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-44cf9e9f36940804", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/jobs/src/scripts/index-existing-entities.ts:75"}, "properties": {"repobilityId": "4589c233b5fc2560", "scanner": "scanner-primary", "fingerprint": "44cf9e9f36940804", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5b3cf7bfdc81be35", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/jobs/src/migrations/migrate-morning-briefing.ts:16"}, "properties": {"repobilityId": "291bc3dd9d16da81", "scanner": "scanner-primary", "fingerprint": "5b3cf7bfdc81be35", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-56b8309909455440", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/jobs/src/migrations/migrate-weekly-digest.ts:16"}, "properties": {"repobilityId": "c6f4e8b7db6350a4", "scanner": "scanner-primary", "fingerprint": "56b8309909455440", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9847f38537b0c93e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/jobs/src/migrations/run-feed-migrations.ts:419"}, "properties": {"repobilityId": "e308696d21205081", "scanner": "scanner-primary", "fingerprint": "9847f38537b0c93e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f10682c4af4291eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/realtime/src/yjs-server.ts:77"}, "properties": {"repobilityId": "7942c9862a232e72", "scanner": "scanner-primary", "fingerprint": "f10682c4af4291eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b604be738df79b3b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/realtime/src/bridge.ts:85"}, "properties": {"repobilityId": "8a760a69ccd13296", "scanner": "scanner-primary", "fingerprint": "b604be738df79b3b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0a0b5950993952f8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/realtime/src/server.ts:164"}, "properties": {"repobilityId": "bc5e4bbd2c002859", "scanner": "scanner-primary", "fingerprint": "0a0b5950993952f8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4f016284fb9c2fe1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/storage/src/interface.ts:71"}, "properties": {"repobilityId": "0fc108f0b50524d9", "scanner": "scanner-primary", "fingerprint": "4f016284fb9c2fe1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5172e80545068a0a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/storage/src/r2.ts:80"}, "properties": {"repobilityId": "b9317c184f648b33", "scanner": "scanner-primary", "fingerprint": "5172e80545068a0a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8987d6d1c30c7202", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "068fbf45727eac17", "scanner": "scanner-primary", "fingerprint": "8987d6d1c30c7202", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8987d6d1c30c7202", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "79eaf17c1979a3db", "scanner": "scanner-primary", "fingerprint": "8987d6d1c30c7202", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-a3da6620aba7f86b", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "0b4afabfe49de4c9", "scanner": "scanner-primary", "fingerprint": "a3da6620aba7f86b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/pod-admin/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a3da6620aba7f86b", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "b276135b90351472", "scanner": "scanner-primary", "fingerprint": "a3da6620aba7f86b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/pod-admin/Dockerfile"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-10b14ebe284b14f7", "level": "warning", "message": {"text": "Dockerfile runs as root: deploy/Dockerfile"}, "properties": {"repobilityId": "9053b6b03af6ef1c", "scanner": "scanner-primary", "fingerprint": "10b14ebe284b14f7", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-419fdcf00b3a302e", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "33315cc34464e82f", "scanner": "scanner-primary", "fingerprint": "419fdcf00b3a302e", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "deploy/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-419fdcf00b3a302e", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "1bbad0bec4ff2f4b", "scanner": "scanner-primary", "fingerprint": "419fdcf00b3a302e", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "deploy/Dockerfile"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-aad4416308f63490", "level": "warning", "message": {"text": "Dockerfile runs as root: deploy/pod-agent/Dockerfile"}, "properties": {"repobilityId": "d897febff9d29427", "scanner": "scanner-primary", "fingerprint": "aad4416308f63490", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-2bf6d6020f6996c7", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "250495ddd393c8cd", "scanner": "scanner-primary", "fingerprint": "2bf6d6020f6996c7", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "deploy/pod-agent/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-43e496167fde2f4c", "level": "error", "message": {"text": "Runtime dotenv file present in repo: .env.test"}, "properties": {"repobilityId": "25baea8a4d77c75a", "scanner": "scanner-primary", "fingerprint": "43e496167fde2f4c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env", "env_file_with_secret"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".env.test"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3609c8f3124ffa5f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in apps/api/src/index.ts:1440"}, "properties": {"repobilityId": "a731ce51262914be", "scanner": "scanner-primary", "fingerprint": "3609c8f3124ffa5f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/index.ts"}, "region": {"startLine": 1440}}}]}, {"ruleId": "scanner-27a949384c6ffe75", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in apps/api/src/routers/provision.ts:2469"}, "properties": {"repobilityId": "4e5d251ef37b0303", "scanner": "scanner-primary", "fingerprint": "27a949384c6ffe75", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/src/routers/provision.ts"}, "region": {"startLine": 2469}}}]}, {"ruleId": "scanner-26d287b818822ae0", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/validate-generation.ts:14"}, "properties": {"repobilityId": "6a17d47fcf72317d", "scanner": "scanner-primary", "fingerprint": "26d287b818822ae0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/validate-generation.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-5e68063e3ae8da0e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in deploy/pod-agent/server.js:17"}, "properties": {"repobilityId": "600a98e45d2f69a5", "scanner": "scanner-primary", "fingerprint": "5e68063e3ae8da0e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "deploy/pod-agent/server.js"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-ebd3239682724696", "level": "error", "message": {"text": "Possible secret in packages/types/src/vault/index.ts"}, "properties": {"repobilityId": "1a86d9b819c115f4", "scanner": "scanner-primary", "fingerprint": "ebd3239682724696", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/types/src/vault/index.ts"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-ebd3239682724696", "level": "error", "message": {"text": "Possible secret in packages/types/src/vault/index.ts"}, "properties": {"repobilityId": "1a86d9b819c115f4", "scanner": "scanner-primary", "fingerprint": "ebd3239682724696", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/types/src/vault/index.ts"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-3cc3fb1120ce94a0", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/api/scripts/gen-types.mjs:1"}, "properties": {"repobilityId": "cbe6508c29ec1e8b", "scanner": "scanner-primary", "fingerprint": "3cc3fb1120ce94a0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/api/scripts/gen-types.mjs"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7d7fc6d5a1206f1b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/api/src/routers/system.ts:41"}, "properties": {"repobilityId": "d5a40eb1cf8e3027", "scanner": "scanner-primary", "fingerprint": "7d7fc6d5a1206f1b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/api/src/routers/system.ts"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-df34b54320293ba8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/test-e2e/src/setup.ts:15"}, "properties": {"repobilityId": "0c6541161f22aa43", "scanner": "scanner-primary", "fingerprint": "df34b54320293ba8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/test-e2e/src/setup.ts"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-225bf4ba87c7e217", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/jobs/src/workers/materializer.ts:20"}, "properties": {"repobilityId": "05daae5049227ca3", "scanner": "scanner-primary", "fingerprint": "225bf4ba87c7e217", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/jobs/src/workers/materializer.ts"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-36fd3c86ff87e5ff", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "75e29310f7a503b9", "scanner": "scanner-primary", "fingerprint": "36fd3c86ff87e5ff", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-staging.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-b841c61fdfcff569", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "83a185deafa37ffa", "scanner": "scanner-primary", "fingerprint": "b841c61fdfcff569", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-b841c61fdfcff569", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "92a252f237fefd54", "scanner": "scanner-primary", "fingerprint": "b841c61fdfcff569", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-b841c61fdfcff569", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9865da7d2b2ff924", "scanner": "scanner-primary", "fingerprint": "b841c61fdfcff569", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-b841c61fdfcff569", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3ced3a497e6628d3", "scanner": "scanner-primary", "fingerprint": "b841c61fdfcff569", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-b841c61fdfcff569", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9d466ae031f3d865", "scanner": "scanner-primary", "fingerprint": "b841c61fdfcff569", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 104}}}]}, {"ruleId": "scanner-b841c61fdfcff569", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9d466ae031f3d865", "scanner": "scanner-primary", "fingerprint": "b841c61fdfcff569", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 158}}}]}, {"ruleId": "scanner-b841c61fdfcff569", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "83a185deafa37ffa", "scanner": "scanner-primary", "fingerprint": "b841c61fdfcff569", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 192}}}]}, {"ruleId": "scanner-b841c61fdfcff569", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "92a252f237fefd54", "scanner": "scanner-primary", "fingerprint": "b841c61fdfcff569", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 197}}}]}, {"ruleId": "scanner-b841c61fdfcff569", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9865da7d2b2ff924", "scanner": "scanner-primary", "fingerprint": "b841c61fdfcff569", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 200}}}]}, {"ruleId": "scanner-b841c61fdfcff569", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3ced3a497e6628d3", "scanner": "scanner-primary", "fingerprint": "b841c61fdfcff569", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 216}}}]}, {"ruleId": "scanner-b841c61fdfcff569", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9d466ae031f3d865", "scanner": "scanner-primary", "fingerprint": "b841c61fdfcff569", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 228}}}]}, {"ruleId": "scanner-b841c61fdfcff569", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "83a185deafa37ffa", "scanner": "scanner-primary", "fingerprint": "b841c61fdfcff569", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 262}}}]}, {"ruleId": "scanner-b841c61fdfcff569", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "92a252f237fefd54", "scanner": "scanner-primary", "fingerprint": "b841c61fdfcff569", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 267}}}]}, {"ruleId": "scanner-b841c61fdfcff569", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9865da7d2b2ff924", "scanner": "scanner-primary", "fingerprint": "b841c61fdfcff569", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 270}}}]}, {"ruleId": "scanner-b841c61fdfcff569", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3ced3a497e6628d3", "scanner": "scanner-primary", "fingerprint": "b841c61fdfcff569", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 286}}}]}, {"ruleId": "scanner-b841c61fdfcff569", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9d466ae031f3d865", "scanner": "scanner-primary", "fingerprint": "b841c61fdfcff569", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 298}}}]}, {"ruleId": "scanner-076b03a16e76601d", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "a42462ccbe3d06f2", "scanner": "scanner-primary", "fingerprint": "076b03a16e76601d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 1}}}]}, {"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": 40}}}]}, {"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": 43}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "54597edb7f5bad38", "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": 48}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "54c8f1b47dd62535", "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": 57}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "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": 169}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "714673743ff59cef", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-40026468741f8760", "level": "note", "message": {"text": "Very large file: apps/api/src/index.ts (1748 lines)"}, "properties": {"repobilityId": "4658da8605705e2c", "scanner": "scanner-primary", "fingerprint": "40026468741f8760", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a5556debcd56b93e", "level": "note", "message": {"text": "Very large file: apps/api/src/routers/provision.ts (2489 lines)"}, "properties": {"repobilityId": "956c8d1f635c15c0", "scanner": "scanner-primary", "fingerprint": "a5556debcd56b93e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e61e8da726940cc6", "level": "note", "message": {"text": "Very large file: packages/api/src/routers/proposals.ts (2705 lines)"}, "properties": {"repobilityId": "13877a9b80bb3df7", "scanner": "scanner-primary", "fingerprint": "e61e8da726940cc6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-faf10c0b8805f2d3", "level": "note", "message": {"text": "Very large file: packages/api/src/routers/capture.ts (1540 lines)"}, "properties": {"repobilityId": "311172ab8b981fa6", "scanner": "scanner-primary", "fingerprint": "faf10c0b8805f2d3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5591c8cdee675569", "level": "note", "message": {"text": "Very large file: packages/api/src/routers/system.ts (1714 lines)"}, "properties": {"repobilityId": "296c137aa4c73ce7", "scanner": "scanner-primary", "fingerprint": "5591c8cdee675569", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-02363032968822a7", "level": "note", "message": {"text": "Very large file: packages/api/src/routers/entities.ts (2075 lines)"}, "properties": {"repobilityId": "8a01546802e34c09", "scanner": "scanner-primary", "fingerprint": "02363032968822a7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1d1bfeb9d1aa1096", "level": "note", "message": {"text": "Very large file: packages/api/src/routers/intelligence.ts (1929 lines)"}, "properties": {"repobilityId": "12a07a83c2b04270", "scanner": "scanner-primary", "fingerprint": "1d1bfeb9d1aa1096", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a20560bfcabc0514", "level": "note", "message": {"text": "Very large file: packages/api/src/routers/sync.ts (1875 lines)"}, "properties": {"repobilityId": "3c186f8a2b222a0b", "scanner": "scanner-primary", "fingerprint": "a20560bfcabc0514", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0ff8360294a97972", "level": "note", "message": {"text": "Very large file: packages/api/src/routers/intelligence-registry.ts (1635 lines)"}, "properties": {"repobilityId": "fd58a22c767c71f2", "scanner": "scanner-primary", "fingerprint": "0ff8360294a97972", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-774b8fccbef3d0bc", "level": "note", "message": {"text": "Very large file: packages/api/src/routers/channels.ts (4718 lines)"}, "properties": {"repobilityId": "0b68ca4354ff0c0d", "scanner": "scanner-primary", "fingerprint": "774b8fccbef3d0bc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-98691c175a868da1", "level": "note", "message": {"text": "Very large file: packages/api/src/routers/workspaces.ts (3845 lines)"}, "properties": {"repobilityId": "c75393bdb4fd9b64", "scanner": "scanner-primary", "fingerprint": "98691c175a868da1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-79bea923e61f4f7d", "level": "note", "message": {"text": "Very large file: packages/api/src/routers/hub-protocol/signals.ts (1919 lines)"}, "properties": {"repobilityId": "fe810441329bc94e", "scanner": "scanner-primary", "fingerprint": "79bea923e61f4f7d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-df66d11b8b964db4", "level": "note", "message": {"text": "Very large file: packages/api/src/routers/hub-protocol/rest/setup.ts (1434 lines)"}, "properties": {"repobilityId": "cbd0d0d1aac94beb", "scanner": "scanner-primary", "fingerprint": "df66d11b8b964db4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7f4769e275cfd4bf", "level": "note", "message": {"text": "Very large file: packages/database/src/utils/ensure-system-profiles.ts (2091 lines)"}, "properties": {"repobilityId": "6f9205ab151409e1", "scanner": "scanner-primary", "fingerprint": "7f4769e275cfd4bf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fc1d04944a571411", "level": "note", "message": {"text": "Very large file: packages/database/src/utils/create-workspace-from-definition.ts (1589 lines)"}, "properties": {"repobilityId": "65c6c2af8a5be4a4", "scanner": "scanner-primary", "fingerprint": "fc1d04944a571411", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9e7f866b133d84e6", "level": "note", "message": {"text": "Very large file: packages/database/src/schema/documents.d.ts (2309 lines)"}, "properties": {"repobilityId": "293bab7b7538fcc5", "scanner": "scanner-primary", "fingerprint": "9e7f866b133d84e6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-271b6ebed6052f60", "level": "note", "message": {"text": "Very large file: packages/api-types/src/generated.d.ts (16060 lines)"}, "properties": {"repobilityId": "aba021daba28e788", "scanner": "scanner-primary", "fingerprint": "271b6ebed6052f60", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b9e870e6cb6d79dd", "level": "note", "message": {"text": "Very large file: packages/jobs/src/workers/automation-executor.ts (1733 lines)"}, "properties": {"repobilityId": "385ecf1690a4351a", "scanner": "scanner-primary", "fingerprint": "b9e870e6cb6d79dd", "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-720a280bf799af06", "level": "note", "message": {"text": "36 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "720a280bf799af06", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "e72e991b28913c60", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b06b8d86f24c77f9", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/api/package.json"}, "properties": {"repobilityId": "ce77cd34ed0306d4", "scanner": "scanner-primary", "fingerprint": "b06b8d86f24c77f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-909a5af09f39521a", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/pod-admin/package.json"}, "properties": {"repobilityId": "5439841569b2d84e", "scanner": "scanner-primary", "fingerprint": "909a5af09f39521a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/pod-admin/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cb3e52667c84fb86", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/types/package.json"}, "properties": {"repobilityId": "b5e2784f829944e6", "scanner": "scanner-primary", "fingerprint": "cb3e52667c84fb86", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/types/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-80f569ae36a3e3bf", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/ai/package.json"}, "properties": {"repobilityId": "2d5eb1212f62ce31", "scanner": "scanner-primary", "fingerprint": "80f569ae36a3e3bf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ai/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-41b225e183229484", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/auth/package.json"}, "properties": {"repobilityId": "c022328d0892fb4d", "scanner": "scanner-primary", "fingerprint": "41b225e183229484", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/auth/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ebfceb680f5fe5a7", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/events/package.json"}, "properties": {"repobilityId": "7fc1e535470b80cb", "scanner": "scanner-primary", "fingerprint": "ebfceb680f5fe5a7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/events/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0a0634ffe3eb1107", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/api/package.json"}, "properties": {"repobilityId": "61aa8b13d545e157", "scanner": "scanner-primary", "fingerprint": "0a0634ffe3eb1107", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/api/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e7246309df736100", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/ai-embeddings/package.json"}, "properties": {"repobilityId": "900bc8675ff457e5", "scanner": "scanner-primary", "fingerprint": "e7246309df736100", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ai-embeddings/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a6a7703b84d70772", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/intelligence-client/package.json"}, "properties": {"repobilityId": "db7ed8e3d85e821b", "scanner": "scanner-primary", "fingerprint": "a6a7703b84d70772", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/intelligence-client/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-36e513ed369dc5f7", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/scripts/package.json"}, "properties": {"repobilityId": "7ab183ac03f0ec57", "scanner": "scanner-primary", "fingerprint": "36e513ed369dc5f7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/scripts/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e66c2371f9795ef4", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/feed-service/package.json"}, "properties": {"repobilityId": "c77f3074745fb986", "scanner": "scanner-primary", "fingerprint": "e66c2371f9795ef4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/feed-service/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cb01c01804de0b47", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/database/package.json"}, "properties": {"repobilityId": "9b313fab9370ec72", "scanner": "scanner-primary", "fingerprint": "cb01c01804de0b47", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/database/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e0cafd9b24c16070", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/search/package.json"}, "properties": {"repobilityId": "ff4e7b8557c970a3", "scanner": "scanner-primary", "fingerprint": "e0cafd9b24c16070", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/search/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5e9662705a4749ac", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/hub-protocol/package.json"}, "properties": {"repobilityId": "3ba1345179d5884c", "scanner": "scanner-primary", "fingerprint": "5e9662705a4749ac", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/hub-protocol/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3df2b2b281c736b0", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/api-types/package.json"}, "properties": {"repobilityId": "296d71dc08023b98", "scanner": "scanner-primary", "fingerprint": "3df2b2b281c736b0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/api-types/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-28e92806c0db3cd2", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/core/package.json"}, "properties": {"repobilityId": "8640e46be7e3f9b2", "scanner": "scanner-primary", "fingerprint": "28e92806c0db3cd2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ca13af745764f575", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/test-e2e/package.json"}, "properties": {"repobilityId": "ee26a082ac4aa770", "scanner": "scanner-primary", "fingerprint": "ca13af745764f575", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/test-e2e/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9325d0624e45a2c4", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/shared-utils/package.json"}, "properties": {"repobilityId": "dd2b9dcfec45c64e", "scanner": "scanner-primary", "fingerprint": "9325d0624e45a2c4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/shared-utils/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-10b94e263394e917", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/jobs/package.json"}, "properties": {"repobilityId": "38044b1863de601d", "scanner": "scanner-primary", "fingerprint": "10b94e263394e917", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/jobs/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1f50989207eeba59", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/realtime/package.json"}, "properties": {"repobilityId": "5bc9ef4d652372e6", "scanner": "scanner-primary", "fingerprint": "1f50989207eeba59", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/realtime/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-137007a5b04ba75f", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/storage/package.json"}, "properties": {"repobilityId": "c54ae775ce7f58ec", "scanner": "scanner-primary", "fingerprint": "137007a5b04ba75f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/storage/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "78728833ae965100", "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": "004570a202d147fc", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "a5109624a41018c9", "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": "488825ace51b207c", "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": "f9bb6a93c219f027", "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": "1bcd69a6d64fc405", "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": "1f9f76f2c87dcd0b", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-cc55229a7a3c078d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .mcp.json"}, "properties": {"repobilityId": "51942fb3d5b8b5b4", "scanner": "scanner-primary", "fingerprint": "cc55229a7a3c078d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "mcp_config"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".mcp.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-24f2ea4bd14badc1", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: CLAUDE.md"}, "properties": {"repobilityId": "0f6049734704e537", "scanner": "scanner-primary", "fingerprint": "24f2ea4bd14badc1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 194}}}]}, {"ruleId": "scanner-a896e3881e5522f3", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/index.ts:15"}, "properties": {"repobilityId": "9ca1aac795f91eee", "scanner": "scanner-primary", "fingerprint": "a896e3881e5522f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed0596038b5ab1f4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/index.ts:364"}, "properties": {"repobilityId": "9f7753b71c64742f", "scanner": "scanner-primary", "fingerprint": "ed0596038b5ab1f4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3050102a39cdcefe", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/routers/provision.ts:113"}, "properties": {"repobilityId": "a7fb956706ae190d", "scanner": "scanner-primary", "fingerprint": "3050102a39cdcefe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-88a60de654f2cf14", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/pod-admin/middleware.ts:56"}, "properties": {"repobilityId": "5dd1939ef481383a", "scanner": "scanner-primary", "fingerprint": "88a60de654f2cf14", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62649889b99525da", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/pod-admin/app/providers.tsx:43"}, "properties": {"repobilityId": "7d886a89235800f7", "scanner": "scanner-primary", "fingerprint": "62649889b99525da", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d54c8ec56f7685b4", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/pod-admin/app/login/LoginForm.tsx:224"}, "properties": {"repobilityId": "795f10080851cd4b", "scanner": "scanner-primary", "fingerprint": "d54c8ec56f7685b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c3416ceb566bef67", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/pod-admin/app/(admin)/workspaces/page.tsx:295"}, "properties": {"repobilityId": "1aae0c360a2a8613", "scanner": "scanner-primary", "fingerprint": "c3416ceb566bef67", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5555a21569e5ab9", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/pod-admin/app/(admin)/overview/page.tsx:263"}, "properties": {"repobilityId": "ff75c56ba569070b", "scanner": "scanner-primary", "fingerprint": "b5555a21569e5ab9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09e5fcdaf38cf468", "level": "note", "message": {"text": "Legacy-named symbol `apiTypesOld` in scripts/contracts-publish.mjs:145"}, "properties": {"repobilityId": "779b700675ca795a", "scanner": "scanner-primary", "fingerprint": "09e5fcdaf38cf468", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c8afd19a90027690", "level": "none", "message": {"text": "Commented-code block (5 lines) in deploy/pod-agent/server.js:22"}, "properties": {"repobilityId": "693303bf2271fb01", "scanner": "scanner-primary", "fingerprint": "c8afd19a90027690", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43adb37df5089b0f", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/types/src/events/index.ts:378"}, "properties": {"repobilityId": "7f19bdd4eda05910", "scanner": "scanner-primary", "fingerprint": "43adb37df5089b0f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2057e5aa8fa772a", "level": "note", "message": {"text": "Legacy-named symbol `setup_agent_deprecated` in packages/types/src/external-connect/index.ts:37"}, "properties": {"repobilityId": "78e03dda7e32d8dd", "scanner": "scanner-primary", "fingerprint": "f2057e5aa8fa772a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-964f1fd223d2b680", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/types/src/templates/schemas.ts:118"}, "properties": {"repobilityId": "17ee9abfe3b8cd63", "scanner": "scanner-primary", "fingerprint": "964f1fd223d2b680", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e9ea724d4885dd6", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/auth/src/ory-middleware.ts:72"}, "properties": {"repobilityId": "61505a747712dec1", "scanner": "scanner-primary", "fingerprint": "3e9ea724d4885dd6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f568a8387fbacd9", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/events/src/realtime-schemas.ts:119"}, "properties": {"repobilityId": "a637aeda86ff0fbd", "scanner": "scanner-primary", "fingerprint": "0f568a8387fbacd9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb13c94e5b96976e", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/scripts/openapi-smoke.mjs:8"}, "properties": {"repobilityId": "9b74be9eea190e33", "scanner": "scanner-primary", "fingerprint": "bb13c94e5b96976e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e6f314bd9158a027", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/index.ts:598"}, "properties": {"repobilityId": "28bb0d663529be12", "scanner": "scanner-primary", "fingerprint": "e6f314bd9158a027", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-32ed6e9c594e821a", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/setup-event-broadcasting.ts:83"}, "properties": {"repobilityId": "e100de80357cc04f", "scanner": "scanner-primary", "fingerprint": "32ed6e9c594e821a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d15f859f63483f32", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/connectors/UnipileConnector.ts:188"}, "properties": {"repobilityId": "ebf032f89659cd6f", "scanner": "scanner-primary", "fingerprint": "d15f859f63483f32", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f4889e427ed8fbbb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/connectors/NangoConnector.ts:112"}, "properties": {"repobilityId": "017310ec5c32f6ce", "scanner": "scanner-primary", "fingerprint": "f4889e427ed8fbbb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3f63fbdde7a5d1a4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/connectors/StalwartConnector.ts:105"}, "properties": {"repobilityId": "f1468fc7567a0a4a", "scanner": "scanner-primary", "fingerprint": "3f63fbdde7a5d1a4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-35de4b6372c7c9c1", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/access/read-scoping.tripwire.test.ts:80"}, "properties": {"repobilityId": "932ed1ad1cd497b2", "scanner": "scanner-primary", "fingerprint": "35de4b6372c7c9c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ae81f54f847a780", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/api/src/utils/permission-check.ts:422"}, "properties": {"repobilityId": "27463a1362dbe291", "scanner": "scanner-primary", "fingerprint": "8ae81f54f847a780", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-65795b4038071e00", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/utils/user-visible-where.ts:54"}, "properties": {"repobilityId": "cf43ae9270322d0e", "scanner": "scanner-primary", "fingerprint": "65795b4038071e00", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-beea064588f1134d", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/api/src/utils/materialize-composite.ts:212"}, "properties": {"repobilityId": "9ee22ca8f807c25a", "scanner": "scanner-primary", "fingerprint": "beea064588f1134d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2373c6daa07f6642", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/utils/jwks-client.ts:232"}, "properties": {"repobilityId": "106b6f23063eb679", "scanner": "scanner-primary", "fingerprint": "2373c6daa07f6642", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c02faa6e3487694f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/utils/validate-url.ts:7"}, "properties": {"repobilityId": "b59a3c772cbe758f", "scanner": "scanner-primary", "fingerprint": "c02faa6e3487694f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3d17babf61f33ed4", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/api/src/utils/audit-log.ts:41"}, "properties": {"repobilityId": "c5dfeb61fe5e94d2", "scanner": "scanner-primary", "fingerprint": "3d17babf61f33ed4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-399bbc3b7227eea4", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/import/import-items.ts:138"}, "properties": {"repobilityId": "fac7adfbe06c3ab1", "scanner": "scanner-primary", "fingerprint": "399bbc3b7227eea4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2fece9f8f979e18", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/import/import-deep.ts:201"}, "properties": {"repobilityId": "13b927884d9d04ed", "scanner": "scanner-primary", "fingerprint": "c2fece9f8f979e18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3c9249dbbc88b7ee", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/api/src/lib/permissions.ts:78"}, "properties": {"repobilityId": "c6bbe9f0dcf03fd6", "scanner": "scanner-primary", "fingerprint": "3c9249dbbc88b7ee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75e9030b962ed62b", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/lib/seed-widget-definitions.ts:122"}, "properties": {"repobilityId": "a9976eb590b1b5ef", "scanner": "scanner-primary", "fingerprint": "75e9030b962ed62b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41b6c0b8ce217ce3", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/services/background-tasks-service.ts:213"}, "properties": {"repobilityId": "76d310181d25bf86", "scanner": "scanner-primary", "fingerprint": "41b6c0b8ce217ce3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b23e73c780e62535", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/api/src/services/agent-identity-service.ts:192"}, "properties": {"repobilityId": "31d9dca09b8cde6a", "scanner": "scanner-primary", "fingerprint": "b23e73c780e62535", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-45214c3eb7b2e71c", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/api/src/services/import-orchestrator.ts:305"}, "properties": {"repobilityId": "499b2aee35c4653a", "scanner": "scanner-primary", "fingerprint": "45214c3eb7b2e71c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e37f336c4e7b7116", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/api/src/services/workspace-creation-service.ts:175"}, "properties": {"repobilityId": "43f98ae4203195ff", "scanner": "scanner-primary", "fingerprint": "e37f336c4e7b7116", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4898cd3512b279ed", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/services/playbooks/executors/external-agent-executor.ts:86"}, "properties": {"repobilityId": "f0052f1c3061835e", "scanner": "scanner-primary", "fingerprint": "4898cd3512b279ed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc8f9d1b115619be", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/api/src/services/retrieval/understand-query.ts:124"}, "properties": {"repobilityId": "2b5ee66ec280be3a", "scanner": "scanner-primary", "fingerprint": "fc8f9d1b115619be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06c5533a2b161983", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/services/knowledge/ask.ts:139"}, "properties": {"repobilityId": "78c85a6de21af3fd", "scanner": "scanner-primary", "fingerprint": "06c5533a2b161983", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-261a8ba3ae89f222", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/api/src/routers/proposals.ts:407"}, "properties": {"repobilityId": "3a599891bd6c7103", "scanner": "scanner-primary", "fingerprint": "261a8ba3ae89f222", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-122f3090ca0df0d2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/routers/proposals.ts:196"}, "properties": {"repobilityId": "dd8ba406794d1db9", "scanner": "scanner-primary", "fingerprint": "122f3090ca0df0d2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cd77ed40e6011ec3", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol-rest.ts:95"}, "properties": {"repobilityId": "54f66561762b213a", "scanner": "scanner-primary", "fingerprint": "cd77ed40e6011ec3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e656f22fd9b6fa7", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/routers/relation-defs.ts:22"}, "properties": {"repobilityId": "3d5f30a744468297", "scanner": "scanner-primary", "fingerprint": "8e656f22fd9b6fa7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-142523989651bc7c", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/api/src/routers/secrets-vault.ts:748"}, "properties": {"repobilityId": "5b3c1c59b4f87c11", "scanner": "scanner-primary", "fingerprint": "142523989651bc7c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-278c0d2ae81abc9a", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/routers/devplane.ts:1310"}, "properties": {"repobilityId": "622cda7d524875a0", "scanner": "scanner-primary", "fingerprint": "278c0d2ae81abc9a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2385cf99df981836", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/api/src/routers/import.ts:66"}, "properties": {"repobilityId": "ba3e62f7e337bd3a", "scanner": "scanner-primary", "fingerprint": "2385cf99df981836", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d243ed4af28fa285", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/api/src/routers/profiles.ts:1340"}, "properties": {"repobilityId": "15d30f9b018b945b", "scanner": "scanner-primary", "fingerprint": "d243ed4af28fa285", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9fd3924e1f482eb4", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/api/src/routers/capture.ts:57"}, "properties": {"repobilityId": "9f3739f161a99033", "scanner": "scanner-primary", "fingerprint": "9fd3924e1f482eb4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fdd598345859612e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/routers/automations.ts:549"}, "properties": {"repobilityId": "afffc79ccb9275ae", "scanner": "scanner-primary", "fingerprint": "fdd598345859612e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4e764b63ad129754", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/routers/entities.ts:397"}, "properties": {"repobilityId": "f909986b4ad505ac", "scanner": "scanner-primary", "fingerprint": "4e764b63ad129754", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7f41cbf3dbbf6e75", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/routers/intelligence.ts:1415"}, "properties": {"repobilityId": "eed2240a86ea6dba", "scanner": "scanner-primary", "fingerprint": "7f41cbf3dbbf6e75", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3d313336539c3a6e", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/api/src/routers/relations.ts:271"}, "properties": {"repobilityId": "b6c1da15790d940a", "scanner": "scanner-primary", "fingerprint": "3d313336539c3a6e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ecbc8f04a27a8370", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/routers/sync.ts:82"}, "properties": {"repobilityId": "7650c3d1160c1619", "scanner": "scanner-primary", "fingerprint": "ecbc8f04a27a8370", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d8f17dae1fc1c6b8", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/routers/channels.ts:1588"}, "properties": {"repobilityId": "c5b075fbecb25732", "scanner": "scanner-primary", "fingerprint": "d8f17dae1fc1c6b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e16a6fd775789eb7", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/api/src/routers/hub.ts:69"}, "properties": {"repobilityId": "d89889446741c39c", "scanner": "scanner-primary", "fingerprint": "e16a6fd775789eb7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c30c9abe083183bc", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/api/src/routers/subscriptions.ts:321"}, "properties": {"repobilityId": "fb8719c5e98e16d8", "scanner": "scanner-primary", "fingerprint": "c30c9abe083183bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-79bedd3112729238", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/routers/workspaces.ts:2459"}, "properties": {"repobilityId": "90365e971fbe3c1f", "scanner": "scanner-primary", "fingerprint": "79bedd3112729238", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6fa9be458b0586b8", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/entities.ts:127"}, "properties": {"repobilityId": "6424c9a28fcc1823", "scanner": "scanner-primary", "fingerprint": "6fa9be458b0586b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90b6435c6c7e8c36", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/services.ts:117"}, "properties": {"repobilityId": "796b3f8878730864", "scanner": "scanner-primary", "fingerprint": "90b6435c6c7e8c36", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b11f9242a4043769", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/api/src/routers/hub-protocol/signals.ts:1528"}, "properties": {"repobilityId": "a746b6af6c4926be", "scanner": "scanner-primary", "fingerprint": "b11f9242a4043769", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8588ddff4a411a90", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/api/src/routers/hub-protocol/channels.ts:581"}, "properties": {"repobilityId": "5d6602a1297133ea", "scanner": "scanner-primary", "fingerprint": "8588ddff4a411a90", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91fdba5d2ab96aa4", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/api/src/routers/hub-protocol/background-tasks.ts:108"}, "properties": {"repobilityId": "5ccb184dfd45d157", "scanner": "scanner-primary", "fingerprint": "91fdba5d2ab96aa4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b87bfe690c3eb1e4", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/auth.ts:69"}, "properties": {"repobilityId": "a7874b8c9c4dca01", "scanner": "scanner-primary", "fingerprint": "b87bfe690c3eb1e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dbb6fc2de6f10753", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/api/src/routers/hub-protocol/rest/threads.ts:409"}, "properties": {"repobilityId": "e9e81ed8cddf7083", "scanner": "scanner-primary", "fingerprint": "dbb6fc2de6f10753", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62f1a1f32c46602b", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/api/src/routers/hub-protocol/rest/_shared.ts:265"}, "properties": {"repobilityId": "6610a20e66845f8a", "scanner": "scanner-primary", "fingerprint": "62f1a1f32c46602b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a5b61a816a68cf28", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/agent-users.ts:126"}, "properties": {"repobilityId": "66d4b05a256d5b45", "scanner": "scanner-primary", "fingerprint": "a5b61a816a68cf28", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7817bfd8c833caa", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/messaging.ts:620"}, "properties": {"repobilityId": "51ca5022ce2989c2", "scanner": "scanner-primary", "fingerprint": "b7817bfd8c833caa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b57ffa86d1ac4faf", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/api/src/routers/hub-protocol/rest/automation-schema-doc.ts:28"}, "properties": {"repobilityId": "bd68a93e16f359db", "scanner": "scanner-primary", "fingerprint": "b57ffa86d1ac4faf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca90c4a529dae15e", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/api/src/routers/hub-protocol/rest/entities.ts:767"}, "properties": {"repobilityId": "f7e2101c850ca0a9", "scanner": "scanner-primary", "fingerprint": "ca90c4a529dae15e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-81e0b65de91bb220", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/skills.ts:541"}, "properties": {"repobilityId": "136bb7c0047e64e0", "scanner": "scanner-primary", "fingerprint": "81e0b65de91bb220", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8c8c27d191c68f4", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/api/src/routers/hub-protocol/rest/knowledge.ts:592"}, "properties": {"repobilityId": "7b99bf010993167e", "scanner": "scanner-primary", "fingerprint": "c8c8c27d191c68f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-250f78f75fc046dd", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/runs.ts:157"}, "properties": {"repobilityId": "2a7758972f19cff4", "scanner": "scanner-primary", "fingerprint": "250f78f75fc046dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ed1bb44c2f82c34", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/api/src/routers/hub-protocol/rest/setup.ts:367"}, "properties": {"repobilityId": "8bfe017590c88744", "scanner": "scanner-primary", "fingerprint": "3ed1bb44c2f82c34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-acc750d6e0b35b08", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/api/src/routers/hub-protocol/rest/agents.ts:145"}, "properties": {"repobilityId": "a0b5cda8ebd574d7", "scanner": "scanner-primary", "fingerprint": "acc750d6e0b35b08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed27014e0f5afbf4", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/events.ts:219"}, "properties": {"repobilityId": "936b0dce74e32799", "scanner": "scanner-primary", "fingerprint": "ed27014e0f5afbf4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3bce5ff93be4307", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/routers/hub-protocol/rest/vault.ts:259"}, "properties": {"repobilityId": "ce71a8c02d81dc61", "scanner": "scanner-primary", "fingerprint": "d3bce5ff93be4307", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-993018f2a85399e1", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/api/src/routers/hub-protocol/rest/workspaces.ts:683"}, "properties": {"repobilityId": "21ea063723e30fc7", "scanner": "scanner-primary", "fingerprint": "993018f2a85399e1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7428187ae0c2abc3", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/api/src/plugins/plugin-manager.ts:10"}, "properties": {"repobilityId": "181d27c793480136", "scanner": "scanner-primary", "fingerprint": "7428187ae0c2abc3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-114c7935c7eb06fd", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/intelligence-client/src/intelligence-hub-client.ts:210"}, "properties": {"repobilityId": "88434cbe1b8098f9", "scanner": "scanner-primary", "fingerprint": "114c7935c7eb06fd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c9e89a1ad304a3d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/FeedServiceFactory.ts:165"}, "properties": {"repobilityId": "c904c0be71e14b84", "scanner": "scanner-primary", "fingerprint": "9c9e89a1ad304a3d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-90c74876ba5e221b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/FeedService.ts:64"}, "properties": {"repobilityId": "b1825d1e1d13684a", "scanner": "scanner-primary", "fingerprint": "90c74876ba5e221b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6b148f2a0c589cd1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/__tests__/integration.test.ts:109"}, "properties": {"repobilityId": "24d1ce0aae457543", "scanner": "scanner-primary", "fingerprint": "6b148f2a0c589cd1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6929936dd7373d13", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/interfaces/IFeedProvider.ts:33"}, "properties": {"repobilityId": "cc7b6ea1bdcd171c", "scanner": "scanner-primary", "fingerprint": "6929936dd7373d13", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d4b67c65fa806a53", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/providers/NangoProvider.ts:121"}, "properties": {"repobilityId": "0980f835cbfa5bf8", "scanner": "scanner-primary", "fingerprint": "d4b67c65fa806a53", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6ddebb2f7b9924ed", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/providers/ISourceProvider.ts:140"}, "properties": {"repobilityId": "0b269336ddd15cab", "scanner": "scanner-primary", "fingerprint": "6ddebb2f7b9924ed", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9aa4bcf97efeefb2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/providers/CPRelayProvider.ts:110"}, "properties": {"repobilityId": "022a5faa5cd10f73", "scanner": "scanner-primary", "fingerprint": "9aa4bcf97efeefb2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-de72da6c1fe66f44", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/providers/HTTPAPIProvider.ts:140"}, "properties": {"repobilityId": "0614055acaa3530e", "scanner": "scanner-primary", "fingerprint": "de72da6c1fe66f44", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1828865afa0fdb46", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/feed-service/src/providers/CustomProvider.ts:52"}, "properties": {"repobilityId": "7ed6d4370dc9dea6", "scanner": "scanner-primary", "fingerprint": "1828865afa0fdb46", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5662bf8da6116f9f", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/database/src/client-pg.ts:26"}, "properties": {"repobilityId": "cb12c455bbc5f4bd", "scanner": "scanner-primary", "fingerprint": "5662bf8da6116f9f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1fa595b4833a1feb", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/database/src/__tests__/channel-type-canon.test.ts:58"}, "properties": {"repobilityId": "7f4ae3e64b83cf3f", "scanner": "scanner-primary", "fingerprint": "1fa595b4833a1feb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05c62aeee75d6ac9", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/database/src/scripts/seed-profiles.ts:566"}, "properties": {"repobilityId": "ec478c2f6870fcff", "scanner": "scanner-primary", "fingerprint": "05c62aeee75d6ac9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d97ccf27d8af118", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/database/src/scripts/migrate.ts:53"}, "properties": {"repobilityId": "0268226467d97c83", "scanner": "scanner-primary", "fingerprint": "4d97ccf27d8af118", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-915a0cb08c6b3243", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/database/src/utils/ensure-system-profiles.ts:755"}, "properties": {"repobilityId": "4cf5562eb04d6cee", "scanner": "scanner-primary", "fingerprint": "915a0cb08c6b3243", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6266e6bda9b80b1f", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/database/src/utils/create-workspace-from-definition.ts:795"}, "properties": {"repobilityId": "b7e0958ded758cab", "scanner": "scanner-primary", "fingerprint": "6266e6bda9b80b1f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e49a27642864803", "level": "note", "message": {"text": "Legacy-named symbol `0066_channel_system_v2` in packages/database/src/utils/schema-coherence.ts:119"}, "properties": {"repobilityId": "7ecb3df0b46c6de0", "scanner": "scanner-primary", "fingerprint": "0e49a27642864803", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-73524580caa720b9", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/database/src/schema/property-defs.ts:95"}, "properties": {"repobilityId": "396ee88e12564fbc", "scanner": "scanner-primary", "fingerprint": "73524580caa720b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7191f6c20bcc2848", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/database/src/schema/source-configs.ts:128"}, "properties": {"repobilityId": "12b82a2ddd772ef7", "scanner": "scanner-primary", "fingerprint": "7191f6c20bcc2848", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6804a7487868fd44", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/database/src/schema/secrets-vault.ts:87"}, "properties": {"repobilityId": "cdf6f5851bc43262", "scanner": "scanner-primary", "fingerprint": "6804a7487868fd44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6925e0328fdb7dfc", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/database/src/schema/property-defs.js:49"}, "properties": {"repobilityId": "2be9177c91afe0de", "scanner": "scanner-primary", "fingerprint": "6925e0328fdb7dfc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb268d2b3583df8f", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/database/src/schema/profiles.ts:89"}, "properties": {"repobilityId": "d3842702a0321d11", "scanner": "scanner-primary", "fingerprint": "cb268d2b3583df8f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94bde90dd52c78ea", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/database/src/schema/api-keys.ts:77"}, "properties": {"repobilityId": "fb77d186fafb7f0d", "scanner": "scanner-primary", "fingerprint": "94bde90dd52c78ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a9469053d3b03ef6", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/database/src/schema/views.js:65"}, "properties": {"repobilityId": "d2559ee0ffb436e6", "scanner": "scanner-primary", "fingerprint": "a9469053d3b03ef6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7a08c949edea506d", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/database/src/schema/events.ts:65"}, "properties": {"repobilityId": "70b18353ed8ff6a6", "scanner": "scanner-primary", "fingerprint": "7a08c949edea506d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8fd95f220b0305f", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/database/src/schema/views.ts:80"}, "properties": {"repobilityId": "2c60dce54b7d587b", "scanner": "scanner-primary", "fingerprint": "c8fd95f220b0305f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1b66ae27ff28eb52", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/database/src/services/view-filter-compiler.ts:71"}, "properties": {"repobilityId": "b6dabce92c18d065", "scanner": "scanner-primary", "fingerprint": "1b66ae27ff28eb52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad43175a259d49a6", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/database/src/repositories/profile-repository.ts:244"}, "properties": {"repobilityId": "9b771d9f201d30e8", "scanner": "scanner-primary", "fingerprint": "ad43175a259d49a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a1c65bf9c753ecc", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/database/src/repositories/event-repository.ts:35"}, "properties": {"repobilityId": "22880a8c5420fc80", "scanner": "scanner-primary", "fingerprint": "3a1c65bf9c753ecc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95fd2f5e52a3b360", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/database/src/repositories/secrets-vault-repository.ts:516"}, "properties": {"repobilityId": "efce84e4e144fd8a", "scanner": "scanner-primary", "fingerprint": "95fd2f5e52a3b360", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1119a9e4b0bdc7a2", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/database/src/repositories/knowledge-keys-repository.ts:333"}, "properties": {"repobilityId": "521b036b27aa4967", "scanner": "scanner-primary", "fingerprint": "1119a9e4b0bdc7a2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad94f56371a250dc", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/database/src/repositories/entity-repository.ts:225"}, "properties": {"repobilityId": "4ffd00177ae3ff1d", "scanner": "scanner-primary", "fingerprint": "ad94f56371a250dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7e989d7b97037b0", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/governance-policy/src/index.ts:375"}, "properties": {"repobilityId": "8b0ae359357a1355", "scanner": "scanner-primary", "fingerprint": "c7e989d7b97037b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7313f401f9d7f83c", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/synap-event.ts:60"}, "properties": {"repobilityId": "97c5992e4cd73c87", "scanner": "scanner-primary", "fingerprint": "7313f401f9d7f83c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4a9f33122c2c14ae", "level": "none", "message": {"text": "Commented-code block (13 lines) in packages/test-e2e/src/hub-protocol-e2e.test.ts:173"}, "properties": {"repobilityId": "ef4bfc102e28b2a1", "scanner": "scanner-primary", "fingerprint": "4a9f33122c2c14ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63a788f907a18db5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/test-e2e/src/core-flows.test.ts:44"}, "properties": {"repobilityId": "91dfb5c00c327fc7", "scanner": "scanner-primary", "fingerprint": "63a788f907a18db5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3261e65e105fbe62", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/test-e2e/src/executor-flows.test.ts:60"}, "properties": {"repobilityId": "b8369cf486439418", "scanner": "scanner-primary", "fingerprint": "3261e65e105fbe62", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41119a8e1a505fdd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/test-e2e/src/setup.ts:214"}, "properties": {"repobilityId": "7518833f60be1d7b", "scanner": "scanner-primary", "fingerprint": "41119a8e1a505fdd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0f3e5e773d8a3aa7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/scripts/index-existing-entities.ts:24"}, "properties": {"repobilityId": "b633875317c6534c", "scanner": "scanner-primary", "fingerprint": "0f3e5e773d8a3aa7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f445ded4b5990b45", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/jobs/src/utils/automation-governance.ts:157"}, "properties": {"repobilityId": "66c84d6f9c792578", "scanner": "scanner-primary", "fingerprint": "f445ded4b5990b45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-37b3e2f2579f1546", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/a2ai-response-trigger.ts:57"}, "properties": {"repobilityId": "ef531e6ade8e0272", "scanner": "scanner-primary", "fingerprint": "37b3e2f2579f1546", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1a342b070b13b07d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/feed-source-executor.ts:195"}, "properties": {"repobilityId": "2664053f6d82ce63", "scanner": "scanner-primary", "fingerprint": "1a342b070b13b07d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-38fe5af7f5a10258", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/crm-daily-digest.ts:83"}, "properties": {"repobilityId": "2b2589f03eb93406", "scanner": "scanner-primary", "fingerprint": "38fe5af7f5a10258", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b838fb2005d50f97", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/jobs/src/workers/automation-executor.ts:446"}, "properties": {"repobilityId": "57611c1078951a06", "scanner": "scanner-primary", "fingerprint": "b838fb2005d50f97", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f4f3503b056cf31", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/entity-embedding.ts:17"}, "properties": {"repobilityId": "a9663f35fe72ca82", "scanner": "scanner-primary", "fingerprint": "3f4f3503b056cf31", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9042c75d5bd03108", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/jobs/src/workers/materializer.ts:162"}, "properties": {"repobilityId": "4769371d1d07cc2f", "scanner": "scanner-primary", "fingerprint": "9042c75d5bd03108", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61208d5a5a6393cc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/hermes-trigger-worker.ts:265"}, "properties": {"repobilityId": "d80cb44551777515", "scanner": "scanner-primary", "fingerprint": "61208d5a5a6393cc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cf49466a190fb6c8", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/jobs/src/workers/proactive-intelligence.ts:148"}, "properties": {"repobilityId": "2598ec0bcf6c8403", "scanner": "scanner-primary", "fingerprint": "cf49466a190fb6c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc83d4599c111f1d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/proactive-intelligence.ts:449"}, "properties": {"repobilityId": "8737c7d238831bc0", "scanner": "scanner-primary", "fingerprint": "bc83d4599c111f1d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e57b02b9f39f1b74", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/jobs/src/workers/snapshot-worker.ts:226"}, "properties": {"repobilityId": "8d661521f4d7854f", "scanner": "scanner-primary", "fingerprint": "e57b02b9f39f1b74", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-327ea0216b0306ba", "level": "note", "message": {"text": "Legacy-named symbol `oldWorkerDeprecated` in packages/jobs/src/migrations/migrate-morning-briefing.ts:56"}, "properties": {"repobilityId": "97730aab96ab83ad", "scanner": "scanner-primary", "fingerprint": "327ea0216b0306ba", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-23f5f38fd2369478", "level": "note", "message": {"text": "Legacy-named symbol `oldWorkerDeprecated` in packages/jobs/src/migrations/migrate-weekly-digest.ts:56"}, "properties": {"repobilityId": "230fc1c5999309cd", "scanner": "scanner-primary", "fingerprint": "23f5f38fd2369478", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5ccad9163f3b092a", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/realtime/src/yjs-server.ts:416"}, "properties": {"repobilityId": "4a22a5d758ace1b6", "scanner": "scanner-primary", "fingerprint": "5ccad9163f3b092a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d35c2593466e0f5e", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/realtime/src/server.ts:149"}, "properties": {"repobilityId": "e4320c34e3f97178", "scanner": "scanner-primary", "fingerprint": "d35c2593466e0f5e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e2b3afe9cdcf066", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/realtime/src/notification-room.ts:52"}, "properties": {"repobilityId": "f7f0f3d0dfbd998e", "scanner": "scanner-primary", "fingerprint": "4e2b3afe9cdcf066", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3b58f6d57bf88637", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/realtime/src/__tests__/integration.test.ts:55"}, "properties": {"repobilityId": "ee87d2b5a772cce9", "scanner": "scanner-primary", "fingerprint": "3b58f6d57bf88637", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e198f122e758a653", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/realtime/src/__tests__/server-auth.test.ts:169"}, "properties": {"repobilityId": "0005fae1215e1156", "scanner": "scanner-primary", "fingerprint": "e198f122e758a653", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea0e27ae3371aefc", "level": "note", "message": {"text": "160 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "a14e67a69864e912", "scanner": "scanner-primary", "fingerprint": "ea0e27ae3371aefc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-5f7fa275207617af", "level": "error", "message": {"text": "Dangling fetch: POST /api/hub/setup/first-admin (apps/api/src/index.ts:1421)"}, "properties": {"repobilityId": "b3e9f8267014068c", "scanner": "scanner-primary", "fingerprint": "5f7fa275207617af", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-84787bf63dd8b4e5", "level": "error", "message": {"text": "Dangling fetch: POST https://api.apollo.io/v1/auth/health (packages/api/src/routers/connectors-trpc.ts:1079)"}, "properties": {"repobilityId": "c83952111e2fdf5b", "scanner": "scanner-primary", "fingerprint": "84787bf63dd8b4e5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b7579f92700ebe5a", "level": "error", "message": {"text": "Dangling fetch: GET https://api.apify.com/v2/users/me?token=${token} (packages/api/src/routers/connectors-trpc.ts:1128)"}, "properties": {"repobilityId": "5bc7f427cd04aba3", "scanner": "scanner-primary", "fingerprint": "b7579f92700ebe5a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d885c0e92013f9cb", "level": "error", "message": {"text": "Dangling fetch: GET /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:49)"}, "properties": {"repobilityId": "2e56eb75116ebe52", "scanner": "scanner-primary", "fingerprint": "d885c0e92013f9cb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-65007c7d7e6ca452", "level": "error", "message": {"text": "Dangling fetch: POST /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:112)"}, "properties": {"repobilityId": "aca82d3b22300609", "scanner": "scanner-primary", "fingerprint": "65007c7d7e6ca452", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-293a8f620cb51e26", "level": "error", "message": {"text": "Dangling fetch: POST /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:113)"}, "properties": {"repobilityId": "140ef6c92e63c9da", "scanner": "scanner-primary", "fingerprint": "293a8f620cb51e26", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-98998217c48afe34", "level": "error", "message": {"text": "Dangling fetch: POST /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:132)"}, "properties": {"repobilityId": "590abf71b63ba58b", "scanner": "scanner-primary", "fingerprint": "98998217c48afe34", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-11d864f01dd3da39", "level": "error", "message": {"text": "Dangling fetch: POST /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:133)"}, "properties": {"repobilityId": "49b0661caefea1cf", "scanner": "scanner-primary", "fingerprint": "11d864f01dd3da39", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4f12aadfebf9e530", "level": "error", "message": {"text": "Dangling fetch: POST /leak (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:154)"}, "properties": {"repobilityId": "f55a601791099fdd", "scanner": "scanner-primary", "fingerprint": "4f12aadfebf9e530", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f64b554bcfcb9e87", "level": "error", "message": {"text": "Dangling fetch: POST /leak (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:155)"}, "properties": {"repobilityId": "a168caf59385142a", "scanner": "scanner-primary", "fingerprint": "f64b554bcfcb9e87", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d22c16ed7968f88f", "level": "error", "message": {"text": "Dangling fetch: POST /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:181)"}, "properties": {"repobilityId": "8628589fdad97d57", "scanner": "scanner-primary", "fingerprint": "d22c16ed7968f88f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fcc8b2093765a806", "level": "error", "message": {"text": "Dangling fetch: POST /things (packages/api/src/routers/hub-protocol/_middleware/idempotency.test.ts:186)"}, "properties": {"repobilityId": "5b49d795d7069fd3", "scanner": "scanner-primary", "fingerprint": "fcc8b2093765a806", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f9248f1ec5968664", "level": "error", "message": {"text": "Dangling fetch: GET /auth/status (packages/api/src/routers/hub-protocol/rest/auth.test.ts:207)"}, "properties": {"repobilityId": "11ca8a719dec4d59", "scanner": "scanner-primary", "fingerprint": "f9248f1ec5968664", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-be995713d5324379", "level": "error", "message": {"text": "Dangling fetch: GET /auth/status (packages/api/src/routers/hub-protocol/rest/auth.test.ts:233)"}, "properties": {"repobilityId": "5340fb69b4c52786", "scanner": "scanner-primary", "fingerprint": "be995713d5324379", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-526cd993a1cc41da", "level": "error", "message": {"text": "Dangling fetch: GET /auth/status (packages/api/src/routers/hub-protocol/rest/auth.test.ts:248)"}, "properties": {"repobilityId": "2976e71ae1d25e4f", "scanner": "scanner-primary", "fingerprint": "526cd993a1cc41da", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a7b54c2197141547", "level": "error", "message": {"text": "Dangling fetch: GET /auth/status (packages/api/src/routers/hub-protocol/rest/auth.test.ts:263)"}, "properties": {"repobilityId": "dd576394d5de2e82", "scanner": "scanner-primary", "fingerprint": "a7b54c2197141547", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a9b0cc7ae1700bff", "level": "error", "message": {"text": "Dangling fetch: GET /auth/status (packages/api/src/routers/hub-protocol/rest/auth.test.ts:281)"}, "properties": {"repobilityId": "8558b86c4b611b28", "scanner": "scanner-primary", "fingerprint": "a9b0cc7ae1700bff", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-aaa7990581ef7987", "level": "error", "message": {"text": "Dangling fetch: GET /auth/status (packages/api/src/routers/hub-protocol/rest/auth.test.ts:295)"}, "properties": {"repobilityId": "e3f3c89c77d1e524", "scanner": "scanner-primary", "fingerprint": "aaa7990581ef7987", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b5deed44ee298a25", "level": "error", "message": {"text": "Dangling fetch: GET /openapi.json (packages/api/src/routers/hub-protocol/rest/auth.test.ts:307)"}, "properties": {"repobilityId": "74709c706b1666fc", "scanner": "scanner-primary", "fingerprint": "b5deed44ee298a25", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5d2a9d79648baba1", "level": "error", "message": {"text": "Dangling fetch: GET /openapi.json (packages/api/src/routers/hub-protocol/rest/auth.test.ts:313)"}, "properties": {"repobilityId": "cbac9b01ae4641fc", "scanner": "scanner-primary", "fingerprint": "5d2a9d79648baba1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4e1f8d71738f104c", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:3000/health (packages/core/tests/test-capture.ts:14)"}, "properties": {"repobilityId": "b956ebea9e157398", "scanner": "scanner-primary", "fingerprint": "4e1f8d71738f104c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "c6e42631df98c44d", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4446954da4a3174b", "level": "note", "message": {"text": "Unused endpoint: GET /admin/connect"}, "properties": {"repobilityId": "ab74fb144d6f36f9", "scanner": "scanner-primary", "fingerprint": "4446954da4a3174b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f86d00ce620ac060", "level": "note", "message": {"text": "Unused endpoint: ALL /.ory/kratos/public/*"}, "properties": {"repobilityId": "5fad9fc57a78695e", "scanner": "scanner-primary", "fingerprint": "f86d00ce620ac060", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-488776c4a259ca0d", "level": "note", "message": {"text": "Unused endpoint: ALL /self-service/*"}, "properties": {"repobilityId": "ccbb32adb5e68a89", "scanner": "scanner-primary", "fingerprint": "488776c4a259ca0d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a66f62b79d1b3e11", "level": "note", "message": {"text": "Unused endpoint: POST /api/auth/token-exchange"}, "properties": {"repobilityId": "3cad5a3177d9c204", "scanner": "scanner-primary", "fingerprint": "a66f62b79d1b3e11", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e9c073feeab06dda", "level": "note", "message": {"text": "Unused endpoint: USE /api/handshake"}, "properties": {"repobilityId": "7569134193626a80", "scanner": "scanner-primary", "fingerprint": "e9c073feeab06dda", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a2d8aa16737dcf49", "level": "note", "message": {"text": "Unused endpoint: POST /api/handshake"}, "properties": {"repobilityId": "c107b78895830609", "scanner": "scanner-primary", "fingerprint": "a2d8aa16737dcf49", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6b0e7f5976711316", "level": "note", "message": {"text": "Unused endpoint: GET /api/session"}, "properties": {"repobilityId": "5ed1bbd026287713", "scanner": "scanner-primary", "fingerprint": "6b0e7f5976711316", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f7b27f8700f84a63", "level": "note", "message": {"text": "Unused endpoint: GET /api/events/stream"}, "properties": {"repobilityId": "ea1ea63ac91ef299", "scanner": "scanner-primary", "fingerprint": "f7b27f8700f84a63", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9be260efccadaa46", "level": "note", "message": {"text": "Unused endpoint: USE /trpc/*"}, "properties": {"repobilityId": "088e1f5f971d01b6", "scanner": "scanner-primary", "fingerprint": "9be260efccadaa46", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-20af8f121341584c", "level": "note", "message": {"text": "Unused endpoint: POST /api/ws-ticket"}, "properties": {"repobilityId": "b0b55f44b892d9a7", "scanner": "scanner-primary", "fingerprint": "20af8f121341584c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8714c0b76c9f32b0", "level": "note", "message": {"text": "Unused endpoint: USE /api/hub/trpc/*"}, "properties": {"repobilityId": "3a6b9e901d309ff9", "scanner": "scanner-primary", "fingerprint": "8714c0b76c9f32b0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4deefa05fed87342", "level": "note", "message": {"text": "Unused endpoint: USE /trpc/chat.sendMessage"}, "properties": {"repobilityId": "9945fa83cbb37ff8", "scanner": "scanner-primary", "fingerprint": "4deefa05fed87342", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fed7cfdbfe370a4f", "level": "note", "message": {"text": "Unused endpoint: USE /trpc/channels.sendMessage"}, "properties": {"repobilityId": "cf7c76cd6f4b2e87", "scanner": "scanner-primary", "fingerprint": "fed7cfdbfe370a4f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d86afd7dd2beb431", "level": "note", "message": {"text": "Unused endpoint: GET /setup"}, "properties": {"repobilityId": "4820a61161994725", "scanner": "scanner-primary", "fingerprint": "d86afd7dd2beb431", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4ba5c1cd254ad129", "level": "note", "message": {"text": "Unused endpoint: POST /pull-sync"}, "properties": {"repobilityId": "30882b9b812fb084", "scanner": "scanner-primary", "fingerprint": "4ba5c1cd254ad129", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5b620c07e0749253", "level": "note", "message": {"text": "Unused endpoint: POST /nango-webhook"}, "properties": {"repobilityId": "3ccc97dc9816704e", "scanner": "scanner-primary", "fingerprint": "5b620c07e0749253", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-540ebf4772ccf420", "level": "note", "message": {"text": "Unused endpoint: POST /disconnect"}, "properties": {"repobilityId": "eebdb725262d0079", "scanner": "scanner-primary", "fingerprint": "540ebf4772ccf420", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2ab9bf5db6820af4", "level": "note", "message": {"text": "Unused endpoint: GET /models"}, "properties": {"repobilityId": "399be6d80878d937", "scanner": "scanner-primary", "fingerprint": "2ab9bf5db6820af4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-35c268ad9306182e", "level": "note", "message": {"text": "Unused endpoint: GET /credentials"}, "properties": {"repobilityId": "0ed41c078537e5e5", "scanner": "scanner-primary", "fingerprint": "35c268ad9306182e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3abf952b8d28d710", "level": "note", "message": {"text": "Unused endpoint: USE /*"}, "properties": {"repobilityId": "64b24ddec2b92688", "scanner": "scanner-primary", "fingerprint": "3abf952b8d28d710", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-aee9168e964a3822", "level": "note", "message": {"text": "Unused endpoint: POST /verify"}, "properties": {"repobilityId": "8036e68de75f029a", "scanner": "scanner-primary", "fingerprint": "aee9168e964a3822", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e1facef33a244397", "level": "note", "message": {"text": "Unused endpoint: POST /inbound"}, "properties": {"repobilityId": "8cc888a0d0bf4324", "scanner": "scanner-primary", "fingerprint": "e1facef33a244397", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3295d44f7b6283c3", "level": "note", "message": {"text": "Unused endpoint: POST /unlink"}, "properties": {"repobilityId": "7f543bd22d179460", "scanner": "scanner-primary", "fingerprint": "3295d44f7b6283c3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a57e4ede2b9b55e8", "level": "note", "message": {"text": "Unused endpoint: POST /seed-trust"}, "properties": {"repobilityId": "c0c23fb15221d04c", "scanner": "scanner-primary", "fingerprint": "a57e4ede2b9b55e8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8664e7608b8880ea", "level": "note", "message": {"text": "Unused endpoint: POST /connect"}, "properties": {"repobilityId": "9bbb63a34dcf67aa", "scanner": "scanner-primary", "fingerprint": "8664e7608b8880ea", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-62a4c98523d60527", "level": "note", "message": {"text": "Unused endpoint: POST /register-intelligence"}, "properties": {"repobilityId": "1bef813ef588c39b", "scanner": "scanner-primary", "fingerprint": "62a4c98523d60527", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d9d63b1d2f4f3dbf", "level": "note", "message": {"text": "Unused endpoint: POST /reset-intelligence"}, "properties": {"repobilityId": "bb03255cc97e8c6a", "scanner": "scanner-primary", "fingerprint": "d9d63b1d2f4f3dbf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f370274f9c3e95da", "level": "note", "message": {"text": "Unused endpoint: POST /seed-admin"}, "properties": {"repobilityId": "86e29a3b8fb90c0f", "scanner": "scanner-primary", "fingerprint": "f370274f9c3e95da", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f2c2e2136c796ec1", "level": "note", "message": {"text": "Unused endpoint: POST /admin-recovery-link"}, "properties": {"repobilityId": "5be7486507a6d8c9", "scanner": "scanner-primary", "fingerprint": "f2c2e2136c796ec1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ce6dc0015d2db449", "level": "note", "message": {"text": "Unused endpoint: POST /validate-credentials"}, "properties": {"repobilityId": "f1555e1e748c4b61", "scanner": "scanner-primary", "fingerprint": "ce6dc0015d2db449", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fa7bbe540d3e196d", "level": "note", "message": {"text": "Unused endpoint: GET /debug"}, "properties": {"repobilityId": "93c9ff7987ccd8d1", "scanner": "scanner-primary", "fingerprint": "fa7bbe540d3e196d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bb97464f1c563a6c", "level": "note", "message": {"text": "Unused endpoint: GET /diagnose-intelligence"}, "properties": {"repobilityId": "755fb7f4e774d069", "scanner": "scanner-primary", "fingerprint": "bb97464f1c563a6c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2c47b0cf2c728019", "level": "note", "message": {"text": "Unused endpoint: GET /addon-status"}, "properties": {"repobilityId": "83b9a85544cb3868", "scanner": "scanner-primary", "fingerprint": "2c47b0cf2c728019", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6dde63fd22e7f0d7", "level": "note", "message": {"text": "Unused endpoint: POST /activate-addon"}, "properties": {"repobilityId": "98e556ce6ef60c8d", "scanner": "scanner-primary", "fingerprint": "6dde63fd22e7f0d7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-da390cc53deb1e36", "level": "note", "message": {"text": "Unused endpoint: POST /deactivate-addon"}, "properties": {"repobilityId": "9dfb029356bf1e40", "scanner": "scanner-primary", "fingerprint": "da390cc53deb1e36", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-363674d5715d33ff", "level": "note", "message": {"text": "Unused endpoint: POST /trigger-update"}, "properties": {"repobilityId": "2f0b11794f011cf0", "scanner": "scanner-primary", "fingerprint": "363674d5715d33ff", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bf3dc2950c88f5d2", "level": "note", "message": {"text": "Unused endpoint: POST /bootstrap/claim"}, "properties": {"repobilityId": "4b5e28cb914bd1f7", "scanner": "scanner-primary", "fingerprint": "bf3dc2950c88f5d2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a834e5a1d40cf3a9", "level": "note", "message": {"text": "Unused endpoint: GET /validate-invite"}, "properties": {"repobilityId": "80adfbd1505e930e", "scanner": "scanner-primary", "fingerprint": "a834e5a1d40cf3a9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-46eb93a4accdc83b", "level": "note", "message": {"text": "Unused endpoint: POST /invite"}, "properties": {"repobilityId": "5f1bd9cd461d80ec", "scanner": "scanner-primary", "fingerprint": "46eb93a4accdc83b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6c4452e1c08b3191", "level": "note", "message": {"text": "Unused endpoint: POST /callback"}, "properties": {"repobilityId": "9039f61d3763c832", "scanner": "scanner-primary", "fingerprint": "6c4452e1c08b3191", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a009b1a56794f45", "level": "note", "message": {"text": "Unused endpoint: POST /"}, "properties": {"repobilityId": "0d27b7fb11cedbee", "scanner": "scanner-primary", "fingerprint": "7a009b1a56794f45", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1af1cf9559446a09", "level": "note", "message": {"text": "Unused endpoint: POST /inbox"}, "properties": {"repobilityId": "46b56bc6d5e95b20", "scanner": "scanner-primary", "fingerprint": "1af1cf9559446a09", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-eb0428442a390121", "level": "note", "message": {"text": "Unused endpoint: GET /docs"}, "properties": {"repobilityId": "e2c9b1b0e1ab8a22", "scanner": "scanner-primary", "fingerprint": "eb0428442a390121", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5988a52edab51d0f", "level": "note", "message": {"text": "Unused endpoint: POST /inbound/:subscriptionId"}, "properties": {"repobilityId": "f3cad4cb85b83bd3", "scanner": "scanner-primary", "fingerprint": "5988a52edab51d0f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-845148e77059cbcd", "level": "note", "message": {"text": "Unused endpoint: POST /messaging"}, "properties": {"repobilityId": "1a59e19f1165ae19", "scanner": "scanner-primary", "fingerprint": "845148e77059cbcd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6236b283b79811b8", "level": "note", "message": {"text": "Unused endpoint: POST /upload"}, "properties": {"repobilityId": "ba6b910cc1b9a0d1", "scanner": "scanner-primary", "fingerprint": "6236b283b79811b8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4e5f2c7314334ad6", "level": "note", "message": {"text": "Unused endpoint: GET /documents/:documentId/url"}, "properties": {"repobilityId": "473e4e4a2d293355", "scanner": "scanner-primary", "fingerprint": "4e5f2c7314334ad6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-32db2697cade1838", "level": "note", "message": {"text": "Unused endpoint: GET /:entityId/url"}, "properties": {"repobilityId": "c0c5b593c8c7eed0", "scanner": "scanner-primary", "fingerprint": "32db2697cade1838", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-055dd4daced45986", "level": "note", "message": {"text": "Unused endpoint: POST /receive"}, "properties": {"repobilityId": "ca0e0e387b65e74e", "scanner": "scanner-primary", "fingerprint": "055dd4daced45986", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}