{"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-4c4781b592c73598", "name": "Stray `console.log` in TS/JS \u2014 packages/plugins/create-paperclip-plugin/src/index.ts:249", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/plugins/create-paperclip-plugin/src/index.ts:249"}, "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-82000b4140d0be7f", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/plugins/examples/plugin-kitchen-sink-example/src/ui/index.", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/plugins/examples/plugin-kitchen-sink-example/src/ui/index.tsx:2329"}, "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-e89bbe5369fa4f44", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/plugins/examples/plugin-file-browser-example/src/ui/index.", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/plugins/examples/plugin-file-browser-example/src/ui/index.tsx:613"}, "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-5eee0755f5ddaa0c", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/plugins/plugin-llm-wiki/src/ui/app.tsx:1316", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/plugins/plugin-llm-wiki/src/ui/app.tsx:1316"}, "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-09900bea57f699a7", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/plugins/plugin-workspace-diff/src/ui/index.tsx:221", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/plugins/plugin-workspace-diff/src/ui/index.tsx:221"}, "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-0ccedf3c705fc4f5", "name": "Stray `console.log` in TS/JS \u2014 packages/plugins/sdk/src/dev-cli.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/plugins/sdk/src/dev-cli.ts:35"}, "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-06fd7a8578bac03c", "name": "Stray `console.log` in TS/JS \u2014 packages/plugins/sdk/src/ui/components.ts:572", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/plugins/sdk/src/ui/components.ts:572"}, "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-6df3b479ba7e167d", "name": "Stray `console.log` in TS/JS \u2014 packages/adapters/cursor-local/src/cli/format-event.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/cursor-local/src/cli/format-event.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-495be1d4a8a38580", "name": "Stray `console.log` in TS/JS \u2014 packages/adapters/claude-local/src/cli/format-event.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/claude-local/src/cli/format-event.ts:35"}, "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-a7f481ad1245f05b", "name": "Stray `console.log` in TS/JS \u2014 packages/adapters/claude-local/src/cli/quota-probe.ts:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/claude-local/src/cli/quota-probe.ts:111"}, "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-0ed47d485930a9c2", "name": "Stray `console.log` in TS/JS \u2014 packages/adapters/gemini-local/src/cli/format-event.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/gemini-local/src/cli/format-event.ts:46"}, "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-dced8885bf9da487", "name": "Stray `console.log` in TS/JS \u2014 packages/adapters/cursor-cloud/src/cli/format-event.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/cursor-cloud/src/cli/format-event.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-ab8f3853c90219eb", "name": "Stray `console.log` in TS/JS \u2014 packages/adapters/grok-local/src/cli/format-event.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/grok-local/src/cli/format-event.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-a3763eba3fd85c08", "name": "Stray `console.log` in TS/JS \u2014 packages/adapters/pi-local/src/cli/format-event.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/pi-local/src/cli/format-event.ts:35"}, "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-f414db3775751a43", "name": "Stray `console.log` in TS/JS \u2014 packages/adapters/codex-local/src/cli/format-event.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/codex-local/src/cli/format-event.ts:37"}, "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-90a35a432cf6b847", "name": "Stray `console.log` in TS/JS \u2014 packages/adapters/codex-local/src/cli/quota-probe.ts:99", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/codex-local/src/cli/quota-probe.ts:99"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee4daa9143e420e4", "name": "Stray `console.log` in TS/JS \u2014 packages/adapters/opencode-local/src/cli/format-event.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/opencode-local/src/cli/format-event.ts:48"}, "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-192cd76962e7b823", "name": "Stray `console.log` in TS/JS \u2014 packages/adapters/acpx-local/src/cli/format-event.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/acpx-local/src/cli/format-event.ts:56"}, "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-4abe82b2d3286b6d", "name": "Stray `console.log` in TS/JS \u2014 packages/adapters/openclaw-gateway/src/cli/format-event.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/openclaw-gateway/src/cli/format-event.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-014d657d25101c7d", "name": "Stray `console.log` in TS/JS \u2014 packages/teams-catalog/scripts/validate-catalog.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/teams-catalog/scripts/validate-catalog.ts:13"}, "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-dc027b9e86d40557", "name": "Stray `console.log` in TS/JS \u2014 packages/teams-catalog/scripts/build-catalog-manifest.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/teams-catalog/scripts/build-catalog-manifest.ts:13"}, "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-a1283ebc4d257e7b", "name": "Stray `console.log` in TS/JS \u2014 packages/skills-catalog/scripts/validate-catalog.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/skills-catalog/scripts/validate-catalog.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-fb967f8a4cff7f13", "name": "Stray `console.log` in TS/JS \u2014 packages/skills-catalog/scripts/build-catalog-manifest.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/skills-catalog/scripts/build-catalog-manifest.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-ba7625260375de40", "name": "Stray `console.log` in TS/JS \u2014 packages/db/src/migrate.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/src/migrate.ts:7"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-554d3bc9a765f210", "name": "Stray `console.log` in TS/JS \u2014 packages/db/src/migration-status.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/src/migration-status.ts:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df86237a802cc0b4", "name": "Stray `console.log` in TS/JS \u2014 packages/db/src/backup.ts:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/src/backup.ts:74"}, "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-898cf980a1d8d306", "name": "Stray `console.log` in TS/JS \u2014 packages/db/src/seed.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/src/seed.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-29feca8349601fb1", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-company-assets.ts:313", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-company-assets.ts:313"}, "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-b4eb480e2f67ad80", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-issue-reference-mentions.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-issue-reference-mentions.ts:27"}, "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-bd6e38aacb2edda6", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-inline-env-secrets.ts:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-inline-env-secrets.ts:114"}, "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-68119b9ad849f8e1", "name": "Stray `console.log` in TS/JS \u2014 scripts/dev-service.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-service.ts:21"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c8027b1b64b1891", "name": "Stray `console.log` in TS/JS \u2014 scripts/dev-runner.ts:155", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-runner.ts:155"}, "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-95f5951f88cb44ec", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-org-chart-satori-comparison.ts:141", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-org-chart-satori-comparison.ts:141"}, "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-cf5f2e692c1b51c9", "name": "Stray `console.log` in TS/JS \u2014 scripts/ensure-workspace-package-links.ts:93", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ensure-workspace-package-links.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-aa70c3eca989573e", "name": "Stray `console.log` in TS/JS \u2014 scripts/paperclip-commit-metrics.ts:176", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/paperclip-commit-metrics.ts:176"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0334fc82b48d7e40", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-org-chart-images.ts:619", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-org-chart-images.ts:619"}, "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-3c6bfd9916402a51", "name": "Stray `console.log` in TS/JS \u2014 server/src/index.ts:905", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/index.ts:905"}, "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-451bb5ad27140ec9", "name": "Stray `console.log` in TS/JS \u2014 server/src/startup-banner.ts:176", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/startup-banner.ts:176"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8a3505030a711abb", "name": "Stray `console.log` in TS/JS \u2014 server/src/adapters/registry.ts:590", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/adapters/registry.ts:590"}, "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-dec9f827ec404233", "name": "Stray `console.log` in TS/JS \u2014 server/src/services/plugin-loader.ts:730", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/services/plugin-loader.ts:730"}, "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-9391074e9595274f", "name": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/gemini-local-adapter-environment.test.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/gemini-local-adapter-environment.test.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-d742a081497481b8", "name": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/pi-local-execute.test.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/pi-local-execute.test.ts:10"}, "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-5f0b9c5eeaa17829", "name": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/codex-local-execute.test.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/codex-local-execute.test.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-4113d4fdccc7b6c6", "name": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/cursor-local-adapter-environment.test.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/cursor-local-adapter-environment.test.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-95b25720b3c1bb8a", "name": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/pi-local-adapter-environment.test.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/pi-local-adapter-environment.test.ts:13"}, "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-12e6cee3452851ae", "name": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/cursor-local-execute.test.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/cursor-local-execute.test.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-53dca3138c36d749", "name": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/gemini-local-execute.test.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/gemini-local-execute.test.ts:21"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-76d9c292e80d0101", "name": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/dev-runner-snapshot.test.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/dev-runner-snapshot.test.ts:42"}, "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-2f42e6081c60fa52", "name": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/claude-local-execute.test.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/claude-local-execute.test.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-a916b63013aef5f6", "name": "Stray `console.log` in TS/JS \u2014 cli/src/adapters/process/format-event.ts:3", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/adapters/process/format-event.ts:3"}, "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-dcb496c77f3635d8", "name": "Stray `console.log` in TS/JS \u2014 cli/src/adapters/http/format-event.ts:3", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/adapters/http/format-event.ts:3"}, "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-9ee85fd96ddac9cb", "name": "Stray `console.log` in TS/JS \u2014 cli/src/utils/banner.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/utils/banner.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-9b61c9ac4db294f1", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/worktree.ts:1888", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/worktree.ts:1888"}, "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-f07db1c29bbbc335", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/heartbeat-run.ts:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/heartbeat-run.ts:97"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b7cecbfb49f6225b", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/routines.ts:320", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/routines.ts:320"}, "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-66bb22dd8d38a395", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/db-backup.ts:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/db-backup.ts:82"}, "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-2908c9b7c03121e7", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/secrets.ts:247", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/secrets.ts:247"}, "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-2eec357868ba099d", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/project.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/project.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-0f046cbb918e5952", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/feedback.ts:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/feedback.ts:111"}, "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-ef95ffd55139be07", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/token.ts:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/token.ts:111"}, "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-c09d7a2a2383f102", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/skills.ts:271", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/skills.ts:271"}, "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-69865eec4b92f6c9", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/approval.ts:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/approval.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-3ea91fdb4d0cb293", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/cloud.ts:178", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/cloud.ts:178"}, "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-007fd7668a55cae0", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/run.ts:150", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/run.ts:150"}, "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-852a147ac273a282", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/activity.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/activity.ts:55"}, "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-e38642539fc410ba", "name": "TODO/FIXME marker in shipping code \u2014 cli/src/commands/client/company.ts:392", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 cli/src/commands/client/company.ts:392"}, "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-3d1805a9b0cf6992", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/company.ts:742", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/company.ts:742"}, "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-60011050c69c76f5", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/agent.ts:247", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/agent.ts:247"}, "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-070aa512b928eed2", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/context.ts:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/context.ts:83"}, "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-6ac327388b853639", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/issue.ts:206", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/issue.ts:206"}, "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-631b441fbbc9c3f8", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/goal.ts:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/goal.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-aeb7b7ecce745983", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/connect.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/connect.ts:73"}, "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-d3aba1622e8ce2fa", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/plugin.ts:270", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/plugin.ts:270"}, "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-43531a960dd434f6", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/common.ts:195", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/common.ts:195"}, "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-c9e1a4f2f0cb33b3", "name": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/teams.ts:626", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/teams.ts:626"}, "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-7a4278cc7eb09145", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/plugins/launchers.tsx:585", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/plugins/launchers.tsx:585"}, "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-eb9211d33da67746", "name": "TODO/FIXME marker in shipping code \u2014 ui/src/adapters/runtime-json-fields.tsx:5", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 ui/src/adapters/runtime-json-fields.tsx:5"}, "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-e51f9d3326ebdc56", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/adapters/schema-config-fields.tsx:185", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/adapters/schema-config-fields.tsx:185"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-910dec5887e17b98", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/RoutineRunVariablesDialog.tsx:372", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/RoutineRunVariablesDialog.tsx:372"}, "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-0a134d594632f596", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/RoutineHistoryTab.tsx:473", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/RoutineHistoryTab.tsx:473"}, "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-fc85e8cf8166a156", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/NewProjectDialog.tsx:364", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/NewProjectDialog.tsx:364"}, "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-3a6eed5b3f9120d8", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/RoutineList.tsx:102", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/RoutineList.tsx:102"}, "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-8021ce7b0dcd5fd7", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueChatThread.tsx:984", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueChatThread.tsx:984"}, "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-14ca7387f0370182", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/CompanySwitcher.tsx:51", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/CompanySwitcher.tsx:51"}, "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-e832f34d39d127aa", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssuePlanDecompositionsSection.tsx:145", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssuePlanDecompositionsSection.tsx:145"}, "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-302051c11e5037d0", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 ui/src/components/MarkdownBody.tsx:546", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 ui/src/components/MarkdownBody.tsx:546"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-74c6009f235182bb", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/GoalTree.tsx:47", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/GoalTree.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-5c7baaa834ba65e5", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueRecoveryActionCard.tsx:220", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueRecoveryActionCard.tsx:220"}, "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-8afd9a4443a61f9e", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SidebarNavItem.tsx:58", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SidebarNavItem.tsx:58"}, "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-448edb9504b0d930", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueRunLedger.tsx:579", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueRunLedger.tsx:579"}, "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-9b4ec3f0efa48f2c", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/NewIssueDialog.tsx:1291", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/NewIssueDialog.tsx:1291"}, "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-9c5e433193e456f0", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueRelatedWorkPanel.tsx:59", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueRelatedWorkPanel.tsx:59"}, "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-6e699e1a2dbffd58", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SidebarCompanyMenu.tsx:103", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SidebarCompanyMenu.tsx:103"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d0e704c724678fa7", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/CommandPalette.tsx:156", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/CommandPalette.tsx:156"}, "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-ecefa187caea7c1d", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueFiltersPopover.tsx:281", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueFiltersPopover.tsx:281"}, "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-9d6af615418ccef3", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SourceResolvedFoldCallout.tsx:38", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SourceResolvedFoldCallout.tsx:38"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-77e3d7cd844a5812", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueThreadInteractionCard.tsx:266", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueThreadInteractionCard.tsx:266"}, "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-aabf5502581fea14", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SystemNotice.tsx:117", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SystemNotice.tsx:117"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9634bccbd63dcbd2", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/InstanceSidebar.tsx:35", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/InstanceSidebar.tsx:35"}, "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-9a79963edb5800ed", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueBlockedNotice.tsx:192", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueBlockedNotice.tsx:192"}, "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-aba4152974915f62", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueProperties.tsx:248", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueProperties.tsx:248"}, "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-58040f7645fd30a8", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueDocumentsSection.tsx:991", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueDocumentsSection.tsx:991"}, "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-2e6bdea7726a4856", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/Sidebar.tsx:91", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/Sidebar.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-ac45d80a84035ae4", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueColumns.tsx:269", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueColumns.tsx:269"}, "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-d291dbda68830334", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/WorktreeBanner.tsx:36", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/WorktreeBanner.tsx:36"}, "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-42c3dd9afe6163f2", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SidebarAgents.tsx:145", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SidebarAgents.tsx:145"}, "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-c29a84bab47d717e", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueSiblingNavigation.tsx:84", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueSiblingNavigation.tsx:84"}, "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-905bd12fd19f452c", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/BreadcrumbBar.tsx:82", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/BreadcrumbBar.tsx:82"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-85b00867d320d1ae", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/OnboardingWizard.tsx:1145", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/OnboardingWizard.tsx:1145"}, "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-2927ecfb634550dc", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueAttachmentsSection.tsx:181", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueAttachmentsSection.tsx:181"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-48f04a5e251b6e09", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/InlineEntitySelector.tsx:209", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/InlineEntitySelector.tsx:209"}, "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-96984f513bf33e5a", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/WorkspaceRuntimeControls.tsx:488", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/WorkspaceRuntimeControls.tsx:488"}, "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-18d7a4721faf4028", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/CommentThread.tsx:1071", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/CommentThread.tsx:1071"}, "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-f691eae2faf27c8d", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueGroupHeader.tsx:34", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueGroupHeader.tsx:34"}, "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-b2c5b9edaa8170f4", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/BlockedReasonChip.tsx:79", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/BlockedReasonChip.tsx:79"}, "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-6551aa4012d9873b", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/ActivityRow.tsx:62", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/ActivityRow.tsx:62"}, "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-92699116b1a6815d", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/ReportsToPicker.tsx:54", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/ReportsToPicker.tsx:54"}, "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-f543bec2348347b5", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/AgentConfigForm.tsx:1366", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/AgentConfigForm.tsx:1366"}, "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-60c41c5fd7f70bbf", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/CompanySettingsSidebar.tsx:92", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/CompanySettingsSidebar.tsx:92"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-179dc3c936bda9f9", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SidebarProjects.tsx:144", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SidebarProjects.tsx:144"}, "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-1329d08ab64daed7", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/ExecutionParticipantPicker.tsx:108", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/ExecutionParticipantPicker.tsx:108"}, "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-2db8ef7080015c38", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SidebarAccountMenu.tsx:153", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SidebarAccountMenu.tsx:153"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-de332a7e18a567cb", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/DocumentAnnotationPanel.tsx:523", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/DocumentAnnotationPanel.tsx:523"}, "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-649a48281365f8ac", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/MobileBottomNav.tsx:86", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/MobileBottomNav.tsx:86"}, "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-d86a1fffa24aca8a", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/FinanceKindCard.tsx:26", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/FinanceKindCard.tsx:26"}, "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-e7cc97c682891ce2", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/ProviderQuotaCard.tsx:272", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/ProviderQuotaCard.tsx:272"}, "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-61e8e74a4ca1ac48", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/search/SearchResultRow.tsx:75", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/search/SearchResultRow.tsx:75"}, "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-da4c2d762cba3789", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/artifacts/ArtifactCard.tsx:231", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/artifacts/ArtifactCard.tsx:231"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a43b91e15a9fdcb2", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Tasks.tsx:218", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Tasks.tsx:218"}, "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-32331bfbdd8f2c4f", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/IssueChatUxLab.tsx:114", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/IssueChatUxLab.tsx:114"}, "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-dbfa76c0cd3f893f", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/UserProfile.tsx:86", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/UserProfile.tsx:86"}, "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-0385e964c4dfc87b", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/RoutineDetail.tsx:949", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/RoutineDetail.tsx:949"}, "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-98ff140d2f23cbad", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Artifacts.tsx:338", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Artifacts.tsx:338"}, "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-c40a0e0dfcf949cf", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/AgentDetail.tsx:1000", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/AgentDetail.tsx:1000"}, "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-a8f61868d01794f6", "name": "TODO/FIXME marker in shipping code \u2014 ui/src/pages/AgentDetail.tsx:880", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 ui/src/pages/AgentDetail.tsx:880"}, "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-89754ca3bb835e25", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/ProfileSettings.tsx:219", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/ProfileSettings.tsx:219"}, "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-a82e96d815c25bfc", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/CompanyAccess.tsx:331", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/CompanyAccess.tsx:331"}, "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-151820fb4af105da", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Secrets.tsx:1927", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Secrets.tsx:1927"}, "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-a3959cac3fc6c784", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/InstanceSettings.tsx:237", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/InstanceSettings.tsx:237"}, "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-3403fae359db0f54", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Inbox.tsx:325", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Inbox.tsx:325"}, "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-0484a3ac8dd83810", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Search.tsx:476", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Search.tsx:476"}, "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-3cf792d77824bc29", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/CompanyExport.tsx:529", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/CompanyExport.tsx:529"}, "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-664a70ff59c7227c", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/ProjectWorkspaceDetail.tsx:451", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/ProjectWorkspaceDetail.tsx:451"}, "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-04039cc10c8bf37b", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/CompanyImport.tsx:223", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/CompanyImport.tsx:223"}, "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-32f0133ac61fdcb1", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/InstanceAccess.tsx:138", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/InstanceAccess.tsx:138"}, "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-2589fa437989a436", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Costs.tsx:774", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Costs.tsx:774"}, "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-24e5e044f6ba21fc", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/CompanySkills.tsx:794", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/CompanySkills.tsx:794"}, "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-8bb721cdaab81dea", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/ExecutionWorkspaceDetail.tsx:392", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/ExecutionWorkspaceDetail.tsx:392"}, "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-d8b265f061a6fbbc", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Routines.tsx:711", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Routines.tsx:711"}, "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-c4b5749eb3ac1e05", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/TeamCatalog.tsx:420", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/TeamCatalog.tsx:420"}, "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-e3dd44cf35653532", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/IssueDetail.tsx:495", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/IssueDetail.tsx:495"}, "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-09a97290fe829b71", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Dashboard.tsx:364", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Dashboard.tsx:364"}, "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-522474b3fcad8a23", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/storybook/stories/projects-goals-workspaces.stories.tsx:234", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/storybook/stories/projects-goals-workspaces.stories.tsx:234"}, "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-2ca992e04b4f58fc", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/storybook/stories/issue-management.stories.tsx:201", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/storybook/stories/issue-management.stories.tsx:201"}, "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-928fee2c109b85c7", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/storybook/stories/navigation-layout.stories.tsx:151", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/storybook/stories/navigation-layout.stories.tsx:151"}, "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-0c522711357f20b1", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/storybook/stories/search.stories.tsx:417", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/storybook/stories/search.stories.tsx:417"}, "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-14fce6f4c43b67d2", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/storybook/stories/artifacts.stories.tsx:603", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/storybook/stories/artifacts.stories.tsx:603"}, "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-5f6bb79387efeaf5", "name": "`truncate` class without `title=` for hover reveal \u2014 ui/storybook/stories/document-annotations.stories.tsx:401", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/storybook/stories/document-annotations.stories.tsx:401"}, "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-f7f8b123c4290cd1", "name": "Docker base image is tag-pinned but not digest-pinned: node:lts-trixie-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:lts-trixie-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0ed72884a644a629", "name": "Dockerfile runs as root: packages/plugins/sandbox-providers/cloudflare/bridge-template/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: packages/plugins/sandbox-providers/cloudflare/bridge-template/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-99879b1bd8352d1c", "name": "Docker base image is tag-pinned but not digest-pinned: docker.io/cloudflare/sandbox:0.7.0", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: docker.io/cloudflare/sandbox:0.7.0"}, "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-f074bab2bb8ac44e", "name": "Dockerfile runs as root: docker/openclaw-smoke/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: docker/openclaw-smoke/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-7df6277204bdca9a", "name": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-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-cb522fa53f353572", "name": "Docker base image is tag-pinned but not digest-pinned: node:lts-trixie-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:lts-trixie-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e1a1d965bd4071e3", "name": "Insecure pattern 'node_child_process' in packages/plugins/create-paperclip-plugin/src/index.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/plugins/create-paperclip-plugin/src/index.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cf43985f4a72abbe", "name": "Possible secret in packages/plugins/sandbox-providers/exe-dev/src/plugin.test.ts", "shortDescription": {"text": "Possible secret in packages/plugins/sandbox-providers/exe-dev/src/plugin.test.ts"}, "fullDescription": {"text": "Detected pattern matching private_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-fec632299630b323", "name": "Insecure pattern 'private_key_in_repo' in packages/plugins/sandbox-providers/exe-dev/src/plugin.test.ts:340", "shortDescription": {"text": "Insecure pattern 'private_key_in_repo' in packages/plugins/sandbox-providers/exe-dev/src/plugin.test.ts:340"}, "fullDescription": {"text": "Found a known-risky pattern (private_key_in_repo). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-48b5e5228a397dfc", "name": "Insecure pattern 'node_child_process' in packages/plugins/sandbox-providers/exe-dev/src/plugin.ts:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/plugins/sandbox-providers/exe-dev/src/plugin.ts:5"}, "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-bf2e133ec24897c2", "name": "Possible secret in packages/plugins/plugin-llm-wiki/tests/plugin.spec.ts", "shortDescription": {"text": "Possible secret in packages/plugins/plugin-llm-wiki/tests/plugin.spec.ts"}, "fullDescription": {"text": "Detected pattern matching openai_or_anthropic_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-14f9bef45dbfb6e9", "name": "Insecure pattern 'node_child_process' in packages/plugins/paperclip-plugin-fake-sandbox/src/plugin.ts:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/plugins/paperclip-plugin-fake-sandbox/src/plugin.ts:5"}, "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-96aff9608330bd4e", "name": "Insecure pattern 'node_child_process' in packages/plugins/plugin-workspace-diff/src/workspace-diff.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/plugins/plugin-workspace-diff/src/workspace-diff.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7521a8fdcffaff1c", "name": "Insecure pattern 'node_child_process' in packages/adapters/claude-local/src/server/quota.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/adapters/claude-local/src/server/quota.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-92da28d132743cf3", "name": "Insecure pattern 'node_child_process' in packages/adapters/codex-local/src/server/quota-spawn-error.test.ts:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/adapters/codex-local/src/server/quota-spawn-error.test.ts:5"}, "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-e9267d230f4cbb54", "name": "Insecure pattern 'node_child_process' in packages/adapters/codex-local/src/server/quota.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/adapters/codex-local/src/server/quota.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f9ac52e557fa4e6a", "name": "Insecure pattern 'node_child_process' in packages/db/src/backup-lib.ts:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/db/src/backup-lib.ts:4"}, "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-4be7d683c4dd3daa", "name": "Possible secret in packages/db/src/migration-runtime.ts", "shortDescription": {"text": "Possible secret in packages/db/src/migration-runtime.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-215bab21faeae732", "name": "Possible secret in packages/db/src/test-embedded-postgres.ts", "shortDescription": {"text": "Possible secret in packages/db/src/test-embedded-postgres.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-e651fb89e9f03dbd", "name": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/server-utils.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/server-utils.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dfe73be794be02c2", "name": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/sandbox-managed-runtime.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/sandbox-managed-runtime.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5f96afa17f607168", "name": "Possible secret in packages/adapter-utils/src/server-utils.test.ts", "shortDescription": {"text": "Possible secret in packages/adapter-utils/src/server-utils.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4e1653f41eac92a9", "name": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/server-utils.test.ts:452", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/server-utils.test.ts:452"}, "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-7876aaa9aa7d78a7", "name": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/sandbox-managed-runtime.test.ts:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/sandbox-managed-runtime.test.ts:4"}, "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-a72a8a508024107a", "name": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/ssh.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/ssh.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5e2e7e8f73d27433", "name": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/sandbox-callback-bridge.test.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/sandbox-callback-bridge.test.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e9cbf897186e31b3", "name": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/command-managed-runtime.test.ts:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/command-managed-runtime.test.ts:4"}, "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-c3d94794bfa965b5", "name": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/ssh-fixture.test.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/ssh-fixture.test.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5f28afb61481114b", "name": "Insecure pattern 'node_child_process' in scripts/check-release-package-bootstrap.mjs:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-release-package-bootstrap.mjs:3"}, "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-87d92c2d49b52c7b", "name": "Insecure pattern 'node_child_process' in scripts/ensure-plugin-build-deps.mjs:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ensure-plugin-build-deps.mjs:3"}, "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-615116b96d910cf1", "name": "Insecure pattern 'node_child_process' in scripts/release-lib.sh:144", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/release-lib.sh:144"}, "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-e61ea42337ed85d9", "name": "Insecure pattern 'node_child_process' in scripts/run-typecheck-build-gaps.mjs:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/run-typecheck-build-gaps.mjs:4"}, "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-4250cd8a5429e1bb", "name": "Insecure pattern 'node_child_process' in scripts/run-vitest-stable.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/run-vitest-stable.mjs:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2a762989e353b8ff", "name": "Insecure pattern 'node_child_process' in scripts/bootstrap-npm-package.mjs:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/bootstrap-npm-package.mjs:3"}, "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-479d5bfc5e42a27c", "name": "Insecure pattern 'node_child_process' in scripts/build-standalone-public-packages.mjs:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/build-standalone-public-packages.mjs:3"}, "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-1e031e5251e3ce9f", "name": "Insecure pattern 'node_child_process' in scripts/dev-runner.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/dev-runner.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e07a568cc01c2639", "name": "Insecure pattern 'direct_outerhtml_assignment' in scripts/generate-org-chart-satori-comparison.ts:191", "shortDescription": {"text": "Insecure pattern 'direct_outerhtml_assignment' in scripts/generate-org-chart-satori-comparison.ts:191"}, "fullDescription": {"text": "Found a known-risky pattern (direct_outerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-93c58dbbaa9de14a", "name": "Insecure pattern 'exec_used' in scripts/check-no-git-push.test.mjs:31", "shortDescription": {"text": "Insecure pattern 'exec_used' in scripts/check-no-git-push.test.mjs:31"}, "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-53495456a9f09925", "name": "Insecure pattern 'node_child_process' in scripts/check-no-git-push.test.mjs:112", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-no-git-push.test.mjs:112"}, "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-e01b45b7e80bf905", "name": "Insecure pattern 'node_child_process' in scripts/paperclip-commit-metrics.ts:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/paperclip-commit-metrics.ts:3"}, "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-c42467fd4ff8c72b", "name": "Insecure pattern 'node_child_process' in scripts/dev-runner.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/dev-runner.mjs:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b877a2b8fbcbd328", "name": "Insecure pattern 'exec_used' in scripts/check-forbidden-tokens.mjs:68", "shortDescription": {"text": "Insecure pattern 'exec_used' in scripts/check-forbidden-tokens.mjs:68"}, "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-431d755b0c19c72a", "name": "Insecure pattern 'node_child_process' in scripts/check-forbidden-tokens.mjs:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-forbidden-tokens.mjs: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-57e46445851a4388", "name": "Insecure pattern 'node_child_process' in server/scripts/dev-watch.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/scripts/dev-watch.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-90b77a11ba2cff1e", "name": "Possible secret in server/src/index.ts", "shortDescription": {"text": "Possible secret in server/src/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-89457e660bc256b3", "name": "Insecure pattern 'node_child_process' in server/src/config.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/src/config.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-444f17f911bb7da8", "name": "Insecure pattern 'node_child_process' in server/src/adapters/utils.ts:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/src/adapters/utils.ts:4"}, "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-8004cf626aa1cf82", "name": "Insecure pattern 'node_child_process' in server/src/adapters/cursor-models.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/src/adapters/cursor-models.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7bbb3583a98abc50", "name": "Insecure pattern 'node_child_process' in server/src/services/execution-workspaces.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/src/services/execution-workspaces.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f9d29e103501458a", "name": "Insecure pattern 'node_child_process' in server/src/services/plugin-worker-manager.ts:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/src/services/plugin-worker-manager.ts:21"}, "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-7b70f4739cdd5182", "name": "Insecure pattern 'node_child_process' in server/src/services/workspace-runtime.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/src/services/workspace-runtime.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9a26ca3c2aebfe19", "name": "Insecure pattern 'node_child_process' in server/src/services/company-portability.ts:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/src/services/company-portability.ts:3"}, "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-1a1b85a6ea988b2a", "name": "Insecure pattern 'node_child_process' in server/src/services/local-service-supervisor.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/src/services/local-service-supervisor.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ee0c6e134a1e5f73", "name": "Insecure pattern 'node_child_process' in server/src/services/heartbeat.ts:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/src/services/heartbeat.ts:3"}, "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-62b4624d12ba9902", "name": "Insecure pattern 'node_child_process' in server/src/services/plugin-loader.ts:29", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/src/services/plugin-loader.ts:29"}, "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-d427c41129d8453b", "name": "Possible secret in server/src/__tests__/environment-config.test.ts", "shortDescription": {"text": "Possible secret in server/src/__tests__/environment-config.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-8a6dc4343e14c48b", "name": "Possible secret in server/src/__tests__/heartbeat-run-log.test.ts", "shortDescription": {"text": "Possible secret in server/src/__tests__/heartbeat-run-log.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-7f0d634146a7dc0e", "name": "Possible secret in server/src/__tests__/sandbox-provider-runtime.test.ts", "shortDescription": {"text": "Possible secret in server/src/__tests__/sandbox-provider-runtime.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-164e3b7012c44594", "name": "Possible secret in server/src/__tests__/company-portability.test.ts", "shortDescription": {"text": "Possible secret in server/src/__tests__/company-portability.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-912beee66ea7e929", "name": "Insecure pattern 'node_child_process' in server/src/__tests__/company-portability.test.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/src/__tests__/company-portability.test.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d4508dbd4a576362", "name": "Insecure pattern 'node_child_process' in server/src/__tests__/heartbeat-accepted-plan-workspace-refresh.test.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/src/__tests__/heartbeat-accepted-plan-workspace-refresh.test.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ff9b25e8a59e4cc4", "name": "Possible secret in server/src/__tests__/redaction.test.ts", "shortDescription": {"text": "Possible secret in server/src/__tests__/redaction.test.ts"}, "fullDescription": {"text": "Detected pattern matching github_token. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-eb8d8f3559074eee", "name": "Possible secret in server/src/__tests__/environment-routes.test.ts", "shortDescription": {"text": "Possible secret in server/src/__tests__/environment-routes.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-83031546d0ac8b40", "name": "Possible secret in server/src/__tests__/environment-runtime.test.ts", "shortDescription": {"text": "Possible secret in server/src/__tests__/environment-runtime.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-01e10789e2ea67a0", "name": "Possible secret in server/src/__tests__/heartbeat-process-recovery.test.ts", "shortDescription": {"text": "Possible secret in server/src/__tests__/heartbeat-process-recovery.test.ts"}, "fullDescription": {"text": "Detected pattern matching openai_or_anthropic_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-3a32d668381a8a01", "name": "Insecure pattern 'node_child_process' in server/src/__tests__/heartbeat-process-recovery.test.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/src/__tests__/heartbeat-process-recovery.test.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9c092d688fc288b1", "name": "Insecure pattern 'node_child_process' in server/src/__tests__/workspace-runtime.test.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/src/__tests__/workspace-runtime.test.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bde21ca79158a931", "name": "Possible secret in server/src/__tests__/heartbeat-active-run-output-watchdog.test.ts", "shortDescription": {"text": "Possible secret in server/src/__tests__/heartbeat-active-run-output-watchdog.test.ts"}, "fullDescription": {"text": "Detected pattern matching github_token. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-322f2aa397820c16", "name": "Insecure pattern 'node_child_process' in server/src/__tests__/execution-workspaces-service.test.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/src/__tests__/execution-workspaces-service.test.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b374b5b33fc4de61", "name": "Insecure pattern 'node_child_process' in server/src/routes/adapters.ts:16", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/src/routes/adapters.ts:16"}, "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-5d018de6aa7b0995", "name": "Insecure pattern 'cors_wildcard' in server/src/routes/plugin-ui-static.ts:475", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in server/src/routes/plugin-ui-static.ts:475"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dca6ecb238f726dd", "name": "Insecure pattern 'node_child_process' in pbn/scripts/pbn-writer-stub.mjs:16", "shortDescription": {"text": "Insecure pattern 'node_child_process' in pbn/scripts/pbn-writer-stub.mjs:16"}, "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-48105ceb609d1b69", "name": "Insecure pattern 'node_child_process' in pbn/scripts/generate-post.mjs:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in pbn/scripts/generate-post.mjs:12"}, "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-7f6c2c4a608dc618", "name": "Possible secret in cli/src/commands/worktree.ts", "shortDescription": {"text": "Possible secret in cli/src/commands/worktree.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-5fecff02bf0c902c", "name": "Insecure pattern 'new_function_used' in cli/src/commands/worktree.ts:324", "shortDescription": {"text": "Insecure pattern 'new_function_used' in cli/src/commands/worktree.ts:324"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1eff18fa48477669", "name": "Insecure pattern 'node_child_process' in cli/src/commands/worktree.ts:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in cli/src/commands/worktree.ts: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-48bd5b66d7126f1e", "name": "Insecure pattern 'node_child_process' in cli/src/commands/run.ts:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in cli/src/commands/run.ts:3"}, "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-ee012f7ff9ea4246", "name": "Possible secret in cli/src/commands/routines.ts", "shortDescription": {"text": "Possible secret in cli/src/commands/routines.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-8a0ae01909d5a0fe", "name": "Insecure pattern 'node_child_process' in cli/src/client/board-auth.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in cli/src/client/board-auth.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f086587cf4276ccf", "name": "Insecure pattern 'node_child_process' in cli/src/config/server-bind.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in cli/src/config/server-bind.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bc5851b986c116f4", "name": "Insecure pattern 'node_child_process' in cli/src/__tests__/company-import-export-e2e.test.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in cli/src/__tests__/company-import-export-e2e.test.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-81a7fcf67ce81194", "name": "Insecure pattern 'node_child_process' in cli/src/__tests__/worktree.test.ts:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in cli/src/__tests__/worktree.test.ts:4"}, "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-e502d3b6022df81a", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/App.test.tsx:97", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/App.test.tsx:97"}, "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-0a6766893e93644d", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/context/ToastContext.test.tsx:20", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/context/ToastContext.test.tsx:20"}, "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-308743e2619bf2cb", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/context/DialogContext.test.tsx:13", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/context/DialogContext.test.tsx:13"}, "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-b8658ed4ba21b50f", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/CompanySettingsSidebar.test.tsx:133", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/CompanySettingsSidebar.test.tsx:133"}, "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-33311f3e2f38b96e", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/InlineEntitySelector.test.tsx:32", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/InlineEntitySelector.test.tsx:32"}, "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-ff88ef3b401f3dac", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/ActiveAgentsPanel.test.tsx:131", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/ActiveAgentsPanel.test.tsx:131"}, "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-aac4348362f1fe6f", "name": "Insecure pattern 'dangerous_innerhtml' in ui/src/components/MarkdownBody.tsx:546", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in ui/src/components/MarkdownBody.tsx:546"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ed26bdf8071d170f", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/IssueProperties.test.tsx:385", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/IssueProperties.test.tsx:385"}, "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-12f792aa4413f411", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/InstanceSidebar.test.tsx:127", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/InstanceSidebar.test.tsx:127"}, "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-8fd858417a468605", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/SidebarCompanyMenu.test.tsx:136", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/SidebarCompanyMenu.test.tsx:136"}, "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-bd9a05cf4f695d21", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/SidebarAccountMenu.test.tsx:78", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/SidebarAccountMenu.test.tsx:78"}, "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-9391230094c057c9", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/NewIssueDialog.test.tsx:340", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/NewIssueDialog.test.tsx:340"}, "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-42609278d4800d24", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/ProjectWorkspaceSummaryCard.test.tsx:105", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/ProjectWorkspaceSummaryCard.test.tsx:105"}, "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-7e242313ef5c4ec7", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/AgentActionButtons.test.tsx:123", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/AgentActionButtons.test.tsx:123"}, "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-5bfaa26b8b5f09b5", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/MembershipAction.test.tsx:38", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/MembershipAction.test.tsx:38"}, "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-484f1613d5a2c398", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/StandaloneBrowserControls.test.tsx:92", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/StandaloneBrowserControls.test.tsx:92"}, "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-dc1fe370ceaf9e67", "name": "Possible secret in ui/src/components/JsonSchemaForm.test.tsx", "shortDescription": {"text": "Possible secret in ui/src/components/JsonSchemaForm.test.tsx"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-f54cf8b6421c142e", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/JsonSchemaForm.test.tsx:49", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/JsonSchemaForm.test.tsx:49"}, "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-ecd15f6bbfd9e36b", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/KanbanBoard.test.tsx:101", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/KanbanBoard.test.tsx:101"}, "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-d9e6fc00abdc6365", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/SidebarSection.test.tsx:69", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/SidebarSection.test.tsx:69"}, "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-037f06f3f6c8c69a", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/Layout.test.tsx:243", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/Layout.test.tsx:243"}, "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-bcffeebcc342aaa6", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/NewAgentDialog.test.tsx:132", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/NewAgentDialog.test.tsx:132"}, "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-6f86b829d09c7206", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/RoutineRunVariablesDialog.test.tsx:183", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/RoutineRunVariablesDialog.test.tsx:183"}, "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-5ae1d0acb1effee4", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/Sidebar.test.tsx:132", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/Sidebar.test.tsx:132"}, "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-ba8e9bcec230edc2", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/SidebarProjects.test.tsx:310", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/SidebarProjects.test.tsx:310"}, "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-ab368afc32492e43", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/SidebarAgents.test.tsx:256", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/SidebarAgents.test.tsx:256"}, "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-4938a8cc194ac080", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/WorkspaceRuntimeControls.test.tsx:261", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/WorkspaceRuntimeControls.test.tsx:261"}, "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-2409f49fb576de32", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/IssueFiltersPopover.test.tsx:52", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/IssueFiltersPopover.test.tsx:52"}, "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-0b296eeb0409104a", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/access/CompanySettingsNav.test.tsx:62", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/access/CompanySettingsNav.test.tsx:62"}, "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-d62c3c741d2c825e", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/Agents.test.tsx:196", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/Agents.test.tsx:196"}, "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-e7539c74aceb5f1e", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/CompanySettings.test.tsx:135", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/CompanySettings.test.tsx:135"}, "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-a3cb8d6b382b1c9a", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/ProfileSettings.test.tsx:86", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/ProfileSettings.test.tsx:86"}, "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-97e925d17e22b349", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/Auth.test.tsx:83", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/Auth.test.tsx:83"}, "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-e952fa030d82aeaa", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/CloudUpstream.test.tsx:112", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/CloudUpstream.test.tsx:112"}, "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-cd7c710132dc9e04", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/TeamCatalog.test.tsx:236", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/TeamCatalog.test.tsx:236"}, "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-bb4b1367c0cce340", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/OrgChart.test.tsx:188", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/OrgChart.test.tsx:188"}, "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-9e6ade58f9922c09", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/PluginSettings.test.tsx:160", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/PluginSettings.test.tsx:160"}, "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-07df5884d170625a", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/PluginPage.test.tsx:122", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/PluginPage.test.tsx:122"}, "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-e3f2ad8209080cd9", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/useInstallTeamCatalogEntry.test.tsx:83", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/useInstallTeamCatalogEntry.test.tsx:83"}, "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-b82108412898ebab", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/IssueDetail.test.tsx:948", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/IssueDetail.test.tsx:948"}, "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-41316e8e2d2082da", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/TeamCard.test.tsx:30", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/TeamCard.test.tsx:30"}, "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-70e20437f99dd86a", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/Secrets.render.test.tsx:241", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/Secrets.render.test.tsx:241"}, "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-50ccd61e3a734156", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/ProjectWorkspaceDetail.test.tsx:332", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/ProjectWorkspaceDetail.test.tsx:332"}, "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-932b98fc7c133876", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/InviteUxLab.test.tsx:27", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/InviteUxLab.test.tsx:27"}, "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-670db9767a297ee3", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/CompanyInvites.test.tsx:117", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/CompanyInvites.test.tsx:117"}, "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-813397ac2ea0d526", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/Routines.test.tsx:343", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/Routines.test.tsx:343"}, "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-d34cc93b030e5d51", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/InviteLanding.test.tsx:128", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/InviteLanding.test.tsx:128"}, "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-a56fa7c4ce570dc4", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/CompanyAccess.test.tsx:190", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/CompanyAccess.test.tsx:190"}, "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-b28fa9218dac125d", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/CompanySettingsPluginPage.test.tsx:106", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/CompanySettingsPluginPage.test.tsx:106"}, "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-60544b34fe96f605", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/Projects.test.tsx:167", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/Projects.test.tsx:167"}, "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-488ef5caaf431115", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/IssueDetail.tsx:3018", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/IssueDetail.tsx:3018"}, "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-a47b10a4c9ae941c", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/secrets/ImportFromVaultDialog.test.tsx:118", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/secrets/ImportFromVaultDialog.test.tsx:118"}, "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-38a9039f1330db46", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/lib/main-content-focus.test.ts:14", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/lib/main-content-focus.test.ts:14"}, "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-16f119f22b9d970c", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/lib/keyboardShortcuts.test.ts:19", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/lib/keyboardShortcuts.test.ts:19"}, "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-e4442ba86879c392", "name": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/lib/document-annotation-selection.test.ts:36", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/lib/document-annotation-selection.test.ts:36"}, "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-7f0f9976570faa6d", "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@v6 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-68a2b8f5c8cd6b53", "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-efed3422adddb107", "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@v6 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-ad68512e70961fa7", "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@v6 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-6c8b928d59fa733f", "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-f57bdd766cc7e40e", "name": "pull_request_target workflow appears to check out untrusted PR code", "shortDescription": {"text": "pull_request_target workflow appears to check out untrusted PR code"}, "fullDescription": {"text": "pull_request_target runs with base-repo privileges. Checking out PR head code in that context can expose repository tokens or secrets to attacker-controlled code."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "high", "confidence": 1.0}}, {"id": "scanner-46c644c6227e4d4a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v6 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-1838a141491ce38c", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d4f698dcefef5da8", "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@v6 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-b5352a803cc6302e", "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-fc31c4952eb9d233", "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-c8d19776a46ce14b", "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-67aba4a33436e220", "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-d5fb6e4ce68a1283", "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-2401fef190a45de4", "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-ab2a88c4a0c0c7b1", "name": "Very large file: packages/plugins/examples/plugin-kitchen-sink-example/src/ui/index.tsx (2475 lines)", "shortDescription": {"text": "Very large file: packages/plugins/examples/plugin-kitchen-sink-example/src/ui/index.tsx (2475 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-c3e8daf1e1645378", "name": "Very large file: packages/plugins/plugin-llm-wiki/tests/plugin.spec.ts (3747 lines)", "shortDescription": {"text": "Very large file: packages/plugins/plugin-llm-wiki/tests/plugin.spec.ts (3747 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-37fa7997d5ea97b7", "name": "Very large file: packages/plugins/plugin-llm-wiki/src/wiki/core.ts (4980 lines)", "shortDescription": {"text": "Very large file: packages/plugins/plugin-llm-wiki/src/wiki/core.ts (4980 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-b8e0ffdaa609dc7d", "name": "Very large file: packages/plugins/plugin-llm-wiki/src/ui/app.tsx (7125 lines)", "shortDescription": {"text": "Very large file: packages/plugins/plugin-llm-wiki/src/ui/app.tsx (7125 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-1311c35bde48c8cd", "name": "Very large file: packages/plugins/sdk/src/worker-rpc-host.ts (1858 lines)", "shortDescription": {"text": "Very large file: packages/plugins/sdk/src/worker-rpc-host.ts (1858 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-82c7d68e4ef26486", "name": "Very large file: packages/plugins/sdk/src/types.ts (1932 lines)", "shortDescription": {"text": "Very large file: packages/plugins/sdk/src/types.ts (1932 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-5c3f122973bb8601", "name": "Very large file: packages/plugins/sdk/src/testing.ts (2493 lines)", "shortDescription": {"text": "Very large file: packages/plugins/sdk/src/testing.ts (2493 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-7b90a004f56f126e", "name": "Very large file: packages/adapters/acpx-local/src/server/execute.ts (1731 lines)", "shortDescription": {"text": "Very large file: packages/adapters/acpx-local/src/server/execute.ts (1731 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-2776d693452fb6a5", "name": "Very large file: packages/adapters/openclaw-gateway/src/server/execute.ts (1507 lines)", "shortDescription": {"text": "Very large file: packages/adapters/openclaw-gateway/src/server/execute.ts (1507 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-bf8d01280fd429da", "name": "Very large file: packages/adapter-utils/src/server-utils.ts (2286 lines)", "shortDescription": {"text": "Very large file: packages/adapter-utils/src/server-utils.ts (2286 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-a967bb4cadb4ed10", "name": "Very large file: server/src/services/secrets.ts (2332 lines)", "shortDescription": {"text": "Very large file: server/src/services/secrets.ts (2332 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-51006c8b225806fa", "name": "Very large file: server/src/services/feedback.ts (2117 lines)", "shortDescription": {"text": "Very large file: server/src/services/feedback.ts (2117 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-cdf508eb6bbaa9de", "name": "Very large file: server/src/services/workspace-runtime.ts (3132 lines)", "shortDescription": {"text": "Very large file: server/src/services/workspace-runtime.ts (3132 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-60e5ceda43dd5f13", "name": "Very large file: server/src/services/issue-thread-interactions.ts (1453 lines)", "shortDescription": {"text": "Very large file: server/src/services/issue-thread-interactions.ts (1453 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-d87bc2db995f711e", "name": "Very large file: server/src/services/routines.ts (2478 lines)", "shortDescription": {"text": "Very large file: server/src/services/routines.ts (2478 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-25d85a74899acef7", "name": "Very large file: server/src/services/company-portability.ts (4992 lines)", "shortDescription": {"text": "Very large file: server/src/services/company-portability.ts (4992 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-5ba965f56b05987a", "name": "Very large file: server/src/services/issues.ts (6261 lines)", "shortDescription": {"text": "Very large file: server/src/services/issues.ts (6261 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-16dcc50b1c4523a1", "name": "Very large file: server/src/services/plugin-host-services.ts (2745 lines)", "shortDescription": {"text": "Very large file: server/src/services/plugin-host-services.ts (2745 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-a32bbc11da068483", "name": "Very large file: server/src/services/company-skills.ts (3524 lines)", "shortDescription": {"text": "Very large file: server/src/services/company-skills.ts (3524 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-ba7c6765d73b2518", "name": "Very large file: server/src/services/heartbeat.ts (11151 lines)", "shortDescription": {"text": "Very large file: server/src/services/heartbeat.ts (11151 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-ad8a319147895e2a", "name": "Very large file: server/src/services/plugin-loader.ts (2094 lines)", "shortDescription": {"text": "Very large file: server/src/services/plugin-loader.ts (2094 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-c259710aa388b9b3", "name": "Very large file: server/src/services/recovery/service.ts (3618 lines)", "shortDescription": {"text": "Very large file: server/src/services/recovery/service.ts (3618 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-6c28720d2ef71f02", "name": "Very large file: server/src/__tests__/issue-comment-reopen-routes.test.ts (1576 lines)", "shortDescription": {"text": "Very large file: server/src/__tests__/issue-comment-reopen-routes.test.ts (1576 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-b46d24755a9daab0", "name": "Very large file: server/src/__tests__/company-portability.test.ts (3721 lines)", "shortDescription": {"text": "Very large file: server/src/__tests__/company-portability.test.ts (3721 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-407cf0c10a40715f", "name": "Very large file: server/src/__tests__/heartbeat-comment-wake-batching.test.ts (1662 lines)", "shortDescription": {"text": "Very large file: server/src/__tests__/heartbeat-comment-wake-batching.test.ts (1662 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-4d8ed042e4801b03", "name": "Very large file: server/src/__tests__/issues-service.test.ts (4537 lines)", "shortDescription": {"text": "Very large file: server/src/__tests__/issues-service.test.ts (4537 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-e7ded54678ebb0aa", "name": "Very large file: server/src/__tests__/routines-service.test.ts (1674 lines)", "shortDescription": {"text": "Very large file: server/src/__tests__/routines-service.test.ts (1674 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-b84c65ef12b92caf", "name": "Very large file: server/src/__tests__/heartbeat-process-recovery.test.ts (3345 lines)", "shortDescription": {"text": "Very large file: server/src/__tests__/heartbeat-process-recovery.test.ts (3345 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-37823f1137f553a8", "name": "Very large file: server/src/__tests__/secrets-service.test.ts (1956 lines)", "shortDescription": {"text": "Very large file: server/src/__tests__/secrets-service.test.ts (1956 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-228feda790eaa0f9", "name": "Very large file: server/src/__tests__/workspace-runtime.test.ts (3484 lines)", "shortDescription": {"text": "Very large file: server/src/__tests__/workspace-runtime.test.ts (3484 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-276d62e6e7459bd9", "name": "Very large file: server/src/routes/agents.ts (3646 lines)", "shortDescription": {"text": "Very large file: server/src/routes/agents.ts (3646 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-ad89e69d8cdc45d1", "name": "Very large file: server/src/routes/openapi.ts (4401 lines)", "shortDescription": {"text": "Very large file: server/src/routes/openapi.ts (4401 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-2ae1c44e18492640", "name": "Very large file: server/src/routes/issues.ts (7068 lines)", "shortDescription": {"text": "Very large file: server/src/routes/issues.ts (7068 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-a20cf17779ed89a2", "name": "Very large file: server/src/routes/access.ts (4625 lines)", "shortDescription": {"text": "Very large file: server/src/routes/access.ts (4625 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-fcc8d6662c3f535b", "name": "Very large file: server/src/routes/plugins.ts (2965 lines)", "shortDescription": {"text": "Very large file: server/src/routes/plugins.ts (2965 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-a21348a961c67189", "name": "Very large file: cli/src/commands/worktree.ts (3369 lines)", "shortDescription": {"text": "Very large file: cli/src/commands/worktree.ts (3369 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-bb6fcf562b8e709a", "name": "Very large file: cli/src/commands/client/company.ts (1780 lines)", "shortDescription": {"text": "Very large file: cli/src/commands/client/company.ts (1780 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-7c56b55f867d235b", "name": "Very large file: cli/src/commands/client/issue.ts (1450 lines)", "shortDescription": {"text": "Very large file: cli/src/commands/client/issue.ts (1450 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-4deb04e8c84ee452", "name": "Very large file: cli/src/__tests__/worktree.test.ts (1390 lines)", "shortDescription": {"text": "Very large file: cli/src/__tests__/worktree.test.ts (1390 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-f638a4dfd4b4c973", "name": "Very large file: doc/plans/2026-05-23-cli-api-parity-openapi-reference.ts (3585 lines)", "shortDescription": {"text": "Very large file: doc/plans/2026-05-23-cli-api-parity-openapi-reference.ts (3585 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-f2f5db2da162e0d3", "name": "Very large file: ui/src/components/IssueChatThread.tsx (4546 lines)", "shortDescription": {"text": "Very large file: ui/src/components/IssueChatThread.tsx (4546 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-9c78393cc1ea0bc1", "name": "Very large file: ui/src/components/IssueChatThread.test.tsx (2941 lines)", "shortDescription": {"text": "Very large file: ui/src/components/IssueChatThread.test.tsx (2941 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-442ca6d437c6b095", "name": "Very large file: ui/src/components/NewIssueDialog.tsx (2090 lines)", "shortDescription": {"text": "Very large file: ui/src/components/NewIssueDialog.tsx (2090 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-b2307b6effb5d4c4", "name": "Very large file: ui/src/components/IssueThreadInteractionCard.tsx (1880 lines)", "shortDescription": {"text": "Very large file: ui/src/components/IssueThreadInteractionCard.tsx (1880 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-4e5dd922a70972ad", "name": "Very large file: ui/src/components/IssueProperties.tsx (2112 lines)", "shortDescription": {"text": "Very large file: ui/src/components/IssueProperties.tsx (2112 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-5be71ef1dde80634", "name": "Very large file: ui/src/components/IssueDocumentsSection.tsx (1351 lines)", "shortDescription": {"text": "Very large file: ui/src/components/IssueDocumentsSection.tsx (1351 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-b3aa97362636bf5b", "name": "Very large file: ui/src/components/OnboardingWizard.tsx (1327 lines)", "shortDescription": {"text": "Very large file: ui/src/components/OnboardingWizard.tsx (1327 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-6059f4a2763aaf28", "name": "Very large file: ui/src/components/AgentConfigForm.tsx (1844 lines)", "shortDescription": {"text": "Very large file: ui/src/components/AgentConfigForm.tsx (1844 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-5ce4fd551b698539", "name": "Very large file: ui/src/components/IssuesList.tsx (1973 lines)", "shortDescription": {"text": "Very large file: ui/src/components/IssuesList.tsx (1973 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ed9cbfe88ef9f475", "name": "Very large file: ui/src/components/IssuesList.test.tsx (1753 lines)", "shortDescription": {"text": "Very large file: ui/src/components/IssuesList.test.tsx (1753 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-54e2217fc09a55d3", "name": "Very large file: ui/src/components/transcript/RunTranscriptView.tsx (1526 lines)", "shortDescription": {"text": "Very large file: ui/src/components/transcript/RunTranscriptView.tsx (1526 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-8c93149dd16cba86", "name": "Very large file: ui/src/pages/IssueDetail.test.tsx (1962 lines)", "shortDescription": {"text": "Very large file: ui/src/pages/IssueDetail.test.tsx (1962 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-ee24bfa547e95aa8", "name": "Very large file: ui/src/pages/RoutineDetail.tsx (1358 lines)", "shortDescription": {"text": "Very large file: ui/src/pages/RoutineDetail.tsx (1358 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-a35a05cb22b360fe", "name": "Very large file: ui/src/pages/AgentDetail.tsx (4333 lines)", "shortDescription": {"text": "Very large file: ui/src/pages/AgentDetail.tsx (4333 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-10681d89f5bc9a81", "name": "Very large file: ui/src/pages/DesignGuide.tsx (1623 lines)", "shortDescription": {"text": "Very large file: ui/src/pages/DesignGuide.tsx (1623 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-b1a59c97ddc67ed0", "name": "Very large file: ui/src/pages/Secrets.tsx (2444 lines)", "shortDescription": {"text": "Very large file: ui/src/pages/Secrets.tsx (2444 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-bd247b7a04d57fef", "name": "Very large file: ui/src/pages/Inbox.tsx (2769 lines)", "shortDescription": {"text": "Very large file: ui/src/pages/Inbox.tsx (2769 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-7bb27a345bc75d54", "name": "Very large file: ui/src/pages/CompanyImport.tsx (1356 lines)", "shortDescription": {"text": "Very large file: ui/src/pages/CompanyImport.tsx (1356 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-6b0d7abf53937358", "name": "Very large file: ui/src/pages/CompanySkills.tsx (2620 lines)", "shortDescription": {"text": "Very large file: ui/src/pages/CompanySkills.tsx (2620 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-50c1c7a36618a742", "name": "Very large file: ui/src/pages/ExecutionWorkspaceDetail.tsx (1253 lines)", "shortDescription": {"text": "Very large file: ui/src/pages/ExecutionWorkspaceDetail.tsx (1253 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-b800fdaa45b3da7d", "name": "Very large file: ui/src/pages/TeamCatalog.tsx (2536 lines)", "shortDescription": {"text": "Very large file: ui/src/pages/TeamCatalog.tsx (2536 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-0fa9adb66c3974c1", "name": "Very large file: ui/src/pages/IssueDetail.tsx (4320 lines)", "shortDescription": {"text": "Very large file: ui/src/pages/IssueDetail.tsx (4320 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-49b22dc66a0101c1", "name": "Very large file: ui/src/pages/secrets/ImportFromVaultDialog.tsx (1477 lines)", "shortDescription": {"text": "Very large file: ui/src/pages/secrets/ImportFromVaultDialog.tsx (1477 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-6a8e9937e2e7e04e", "name": "Very large file: ui/storybook/fixtures/paperclipData.ts (1639 lines)", "shortDescription": {"text": "Very large file: ui/storybook/fixtures/paperclipData.ts (1639 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-c1c50b392d6630c3", "name": "46 TODO/FIXME markers", "shortDescription": {"text": "46 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-c23c5652bd37b6de", "name": "Node manifest has dependencies but no lockfile: packages/plugins/create-paperclip-plugin/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/create-paperclip-plugin/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-cf5f6d9b94d66d94", "name": "Node manifest has dependencies but no lockfile: packages/plugins/sandbox-providers/e2b/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/sandbox-providers/e2b/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-d9460afac01373f7", "name": "Node manifest has dependencies but no lockfile: packages/plugins/sandbox-providers/exe-dev/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/sandbox-providers/exe-dev/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-77f139406166ddd6", "name": "Node manifest has dependencies but no lockfile: packages/plugins/sandbox-providers/cloudflare/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/sandbox-providers/cloudflare/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-b6d51f04fde91b9a", "name": "Node manifest has dependencies but no lockfile: packages/plugins/sandbox-providers/cloudflare/bridge-template/package.js", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/sandbox-providers/cloudflare/bridge-template/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-a82bd1da6a333aaf", "name": "Node manifest has dependencies but no lockfile: packages/plugins/sandbox-providers/daytona/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/sandbox-providers/daytona/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-ee800c1173c0d684", "name": "Node manifest has dependencies but no lockfile: packages/plugins/sandbox-providers/modal/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/sandbox-providers/modal/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-a33ebf2456fd9aee", "name": "Node manifest has dependencies but no lockfile: packages/plugins/examples/plugin-hello-world-example/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/examples/plugin-hello-world-example/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-89e7e93a9c5e799d", "name": "Node manifest has dependencies but no lockfile: packages/plugins/examples/plugin-kitchen-sink-example/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/examples/plugin-kitchen-sink-example/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-b3c1406325b1134f", "name": "Node manifest has dependencies but no lockfile: packages/plugins/examples/plugin-file-browser-example/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/examples/plugin-file-browser-example/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-5761eb1f4d55dc21", "name": "Node manifest has dependencies but no lockfile: packages/plugins/examples/plugin-orchestration-smoke-example/package.jso", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/examples/plugin-orchestration-smoke-example/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-d4f3b289a4cc0bef", "name": "Node manifest has dependencies but no lockfile: packages/plugins/examples/plugin-authoring-smoke-example/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/examples/plugin-authoring-smoke-example/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-b9d852e4db53cf6d", "name": "Node manifest has dependencies but no lockfile: packages/plugins/plugin-llm-wiki/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/plugin-llm-wiki/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-7011a40665334182", "name": "Node manifest has dependencies but no lockfile: packages/plugins/paperclip-plugin-fake-sandbox/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/paperclip-plugin-fake-sandbox/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-5f5be5e5080ce69a", "name": "Node manifest has dependencies but no lockfile: packages/plugins/plugin-workspace-diff/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/plugin-workspace-diff/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-7f86d6cfb48f8aad", "name": "Node manifest has dependencies but no lockfile: packages/plugins/sdk/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/sdk/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-b348fdb5854fe1e2", "name": "Node manifest has dependencies but no lockfile: packages/adapters/cursor-local/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/adapters/cursor-local/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-d839c442d06448dd", "name": "Node manifest has dependencies but no lockfile: packages/adapters/claude-local/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/adapters/claude-local/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-3e2ad63680d8c5f8", "name": "Node manifest has dependencies but no lockfile: packages/adapters/gemini-local/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/adapters/gemini-local/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-7371ef72e2acdc41", "name": "Node manifest has dependencies but no lockfile: packages/adapters/cursor-cloud/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/adapters/cursor-cloud/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-0a74dc5a94e1de28", "name": "Node manifest has dependencies but no lockfile: packages/adapters/grok-local/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/adapters/grok-local/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-a8a5b5df41e22858", "name": "Node manifest has dependencies but no lockfile: packages/adapters/pi-local/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/adapters/pi-local/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-be0658149fde12ab", "name": "Node manifest has dependencies but no lockfile: packages/adapters/codex-local/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/adapters/codex-local/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-8ac04a97e650d782", "name": "Node manifest has dependencies but no lockfile: packages/adapters/opencode-local/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/adapters/opencode-local/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-dcf089bbea56d3c6", "name": "Node manifest has dependencies but no lockfile: packages/adapters/acpx-local/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/adapters/acpx-local/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-0237f9c8a095a24b", "name": "Node manifest has dependencies but no lockfile: packages/adapters/openclaw-gateway/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/adapters/openclaw-gateway/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-7635d21ff1769683", "name": "Node manifest has dependencies but no lockfile: packages/teams-catalog/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/teams-catalog/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-3f187671ee4d3cce", "name": "Node manifest has dependencies but no lockfile: packages/skills-catalog/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/skills-catalog/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-7b16ae2bd0fca524", "name": "Node manifest has dependencies but no lockfile: packages/db/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/db/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-f74e6dafbdb9c766", "name": "Node manifest has dependencies but no lockfile: packages/adapter-utils/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/adapter-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-2699d5f16ae11282", "name": "Node manifest has dependencies but no lockfile: packages/shared/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/shared/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-6cf7d86f806aee43", "name": "Node manifest has dependencies but no lockfile: packages/mcp-server/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/mcp-server/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-d7101ca1926e3342", "name": "Node manifest has dependencies but no lockfile: server/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: server/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-4c3728641a0d9039", "name": "Node manifest has dependencies but no lockfile: cli/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: cli/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-eb52245e50d88e17", "name": "Node manifest has dependencies but no lockfile: ui/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: ui/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 512 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 537 placeholder/mock markers across 135 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing 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-2679282aa1c484b5", "name": "Agent authority lacks a verifier contract: AGENTS.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: AGENTS.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5a39855eff292e82", "name": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/bundled/software-development/github-pr-wor", "shortDescription": {"text": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/bundled/software-development/github-pr-workflow/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8c082989684e633f", "name": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/bundled/paperclip-operations/issue-triage/", "shortDescription": {"text": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/bundled/paperclip-operations/issue-triage/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3c94e2ddd694fa21", "name": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/bundled/paperclip-operations/task-planning", "shortDescription": {"text": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/bundled/paperclip-operations/task-planning/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7d0860b4f4f16b43", "name": "Agent authority lacks a verifier contract: packages/skills-catalog/catalog/bundled/paperclip-operations/task-planning/SK", "shortDescription": {"text": "Agent authority lacks a verifier contract: packages/skills-catalog/catalog/bundled/paperclip-operations/task-planning/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-302d3cc72e63c0d3", "name": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/bundled/docs/doc-maintenance/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/bundled/docs/doc-maintenance/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5cf524c8bb3b415c", "name": "Agent authority lacks a verifier contract: packages/skills-catalog/catalog/bundled/docs/doc-maintenance/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: packages/skills-catalog/catalog/bundled/docs/doc-maintenance/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0b50b18d4cc3c97a", "name": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/bundled/quality/qa-acceptance/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/bundled/quality/qa-acceptance/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5b35bb4de6ba4a49", "name": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/bundled/product/wireframe/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/bundled/product/wireframe/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c36e73a72d8ec1c8", "name": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/optional/browser/agent-browser/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/optional/browser/agent-browser/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c78b7229d092c644", "name": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/optional/content/release-announcement/SKIL", "shortDescription": {"text": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/optional/content/release-announcement/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cdc3f233e1dc153e", "name": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/optional/product/design-critique/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/optional/product/design-critique/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e1315ac1814d40f", "name": "Agent authority lacks a verifier contract: server/src/onboarding-assets/default/AGENTS.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: server/src/onboarding-assets/default/AGENTS.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d12bc8b7bf7486a", "name": "Agent authority lacks a verifier contract: docs/api/agents.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/api/agents.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ec1ec671557905f7", "name": "Agent authority lacks a verifier contract: skills/para-memory-files/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/para-memory-files/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5d854c58be614fb1", "name": "Agent authority lacks a verifier contract: skills/paperclip-create-agent/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/paperclip-create-agent/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6eeea7f3f0064297", "name": "Agent authority lacks a verifier contract: .claude/skills/design-guide/references/component-index.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/design-guide/references/component-index.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-01e431cc15ef3f74", "name": "Commented-code block (7 lines) in packages/plugins/sandbox-providers/e2b/src/plugin.ts:155", "shortDescription": {"text": "Commented-code block (7 lines) in packages/plugins/sandbox-providers/e2b/src/plugin.ts:155"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1f50e7d035360b92", "name": "Commented-code block (6 lines) in packages/plugins/sandbox-providers/exe-dev/src/plugin.ts:932", "shortDescription": {"text": "Commented-code block (6 lines) in packages/plugins/sandbox-providers/exe-dev/src/plugin.ts:932"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9d33cc0809eb1fb4", "name": "Commented-code block (6 lines) in packages/plugins/sandbox-providers/cloudflare/src/plugin.test.ts:282", "shortDescription": {"text": "Commented-code block (6 lines) in packages/plugins/sandbox-providers/cloudflare/src/plugin.test.ts:282"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-751588135f341c65", "name": "Commented-code block (5 lines) in packages/plugins/sandbox-providers/cloudflare/src/plugin.ts:320", "shortDescription": {"text": "Commented-code block (5 lines) in packages/plugins/sandbox-providers/cloudflare/src/plugin.ts:320"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bc4222dd1df39df0", "name": "Commented-code block (8 lines) in packages/plugins/sandbox-providers/cloudflare/bridge-template/src/auth.ts:8", "shortDescription": {"text": "Commented-code block (8 lines) in packages/plugins/sandbox-providers/cloudflare/bridge-template/src/auth.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-52951800c2e61963", "name": "Commented-code block (6 lines) in packages/plugins/sandbox-providers/cloudflare/bridge-template/src/sessions.ts:34", "shortDescription": {"text": "Commented-code block (6 lines) in packages/plugins/sandbox-providers/cloudflare/bridge-template/src/sessions.ts:34"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d5f2e1980f077bd1", "name": "Commented-code block (5 lines) in packages/plugins/sandbox-providers/cloudflare/bridge-template/src/routes.ts:284", "shortDescription": {"text": "Commented-code block (5 lines) in packages/plugins/sandbox-providers/cloudflare/bridge-template/src/routes.ts:284"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c5a97b3ffca68ce0", "name": "Commented-code block (5 lines) in packages/plugins/sandbox-providers/daytona/src/plugin.ts:244", "shortDescription": {"text": "Commented-code block (5 lines) in packages/plugins/sandbox-providers/daytona/src/plugin.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-bdaf8f9974ccb0bc", "name": "Commented-code block (7 lines) in packages/plugins/sandbox-providers/modal/src/plugin.ts:214", "shortDescription": {"text": "Commented-code block (7 lines) in packages/plugins/sandbox-providers/modal/src/plugin.ts:214"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-537efbec106954e9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/examples/plugin-kitchen-sink-example/src/worker.ts:591", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/examples/plugin-kitchen-sink-example/src/worker.ts:591"}, "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-277d2e5bc31dbd40", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/examples/plugin-kitchen-sink-example/src/ui/index.tsx:409", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/examples/plugin-kitchen-sink-example/src/ui/index.tsx:409"}, "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-7d1c82d4247c93c0", "name": "Commented-code block (5 lines) in packages/plugins/plugin-llm-wiki/tests/screenshots/harness.tsx:10", "shortDescription": {"text": "Commented-code block (5 lines) in packages/plugins/plugin-llm-wiki/tests/screenshots/harness.tsx: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-1ba30bb516dcbdaf", "name": "Commented-code block (6 lines) in packages/plugins/plugin-llm-wiki/src/ui/app.tsx:5426", "shortDescription": {"text": "Commented-code block (6 lines) in packages/plugins/plugin-llm-wiki/src/ui/app.tsx:5426"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-13dcec6abaac745e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/sdk/src/host-client-factory.ts:145", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/sdk/src/host-client-factory.ts:145"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fd2e0484f995bd21", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/sdk/src/worker-rpc-host.ts:528", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/sdk/src/worker-rpc-host.ts:528"}, "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-7a8e654a7d453ad8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/sdk/src/types.ts:634", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/sdk/src/types.ts:634"}, "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-10aed2c3c24cd17d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/sdk/src/testing.ts:843", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/sdk/src/testing.ts:843"}, "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-4ad06260a39970e0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/sdk/src/define-plugin.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/sdk/src/define-plugin.ts:23"}, "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-cfbe30e59fc1c119", "name": "Commented-code block (7 lines) in packages/adapters/cursor-local/src/index.ts:6", "shortDescription": {"text": "Commented-code block (7 lines) in packages/adapters/cursor-local/src/index.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a158e8a9ab65c748", "name": "Legacy-named symbol `queue_v1` in packages/adapters/cursor-local/src/server/execute.remote.test.ts:43", "shortDescription": {"text": "Legacy-named symbol `queue_v1` in packages/adapters/cursor-local/src/server/execute.remote.test.ts:43"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6ab8b63f4bf56add", "name": "Legacy-named symbol `queue_v1` in packages/adapters/claude-local/src/server/execute.remote.test.ts:37", "shortDescription": {"text": "Legacy-named symbol `queue_v1` in packages/adapters/claude-local/src/server/execute.remote.test.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-c94f488adf06cd09", "name": "Legacy-named symbol `queue_v1` in packages/adapters/gemini-local/src/server/execute.remote.test.ts:48", "shortDescription": {"text": "Legacy-named symbol `queue_v1` in packages/adapters/gemini-local/src/server/execute.remote.test.ts:48"}, "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-4a37fa40ffea664b", "name": "Commented-code block (5 lines) in packages/adapters/gemini-local/src/server/parse.ts:127", "shortDescription": {"text": "Commented-code block (5 lines) in packages/adapters/gemini-local/src/server/parse.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-6271bc10e263bdb8", "name": "Commented-code block (5 lines) in packages/adapters/grok-local/src/shared/turn-boundary.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/adapters/grok-local/src/shared/turn-boundary.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2d7947a25ae79239", "name": "Legacy-named symbol `queue_v1` in packages/adapters/pi-local/src/server/execute.remote.test.ts:52", "shortDescription": {"text": "Legacy-named symbol `queue_v1` in packages/adapters/pi-local/src/server/execute.remote.test.ts:52"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5e2c5aa38d2798e1", "name": "Commented-code block (6 lines) in packages/adapters/pi-local/src/server/execute.ts:321", "shortDescription": {"text": "Commented-code block (6 lines) in packages/adapters/pi-local/src/server/execute.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-2c8c22b6fd854ec6", "name": "Legacy-named symbol `queue_v1` in packages/adapters/codex-local/src/server/execute.remote.test.ts:33", "shortDescription": {"text": "Legacy-named symbol `queue_v1` in packages/adapters/codex-local/src/server/execute.remote.test.ts:33"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-50383ccf202977b0", "name": "Commented-code block (5 lines) in packages/adapters/codex-local/src/server/test.ts:297", "shortDescription": {"text": "Commented-code block (5 lines) in packages/adapters/codex-local/src/server/test.ts:297"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f9da4406b891e7df", "name": "Commented-code block (14 lines) in packages/adapters/opencode-local/src/index.ts:6", "shortDescription": {"text": "Commented-code block (14 lines) in packages/adapters/opencode-local/src/index.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7dd2c35b411869a1", "name": "Commented-code block (5 lines) in packages/adapters/opencode-local/src/server/runtime-config.ts:48", "shortDescription": {"text": "Commented-code block (5 lines) in packages/adapters/opencode-local/src/server/runtime-config.ts:48"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1e03b2b2126e08c0", "name": "Legacy-named symbol `queue_v1` in packages/adapters/opencode-local/src/server/execute.remote.test.ts:60", "shortDescription": {"text": "Legacy-named symbol `queue_v1` in packages/adapters/opencode-local/src/server/execute.remote.test.ts:60"}, "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-ff8ffe187703a6b6", "name": "Commented-code block (5 lines) in packages/adapters/opencode-local/src/server/test.ts:219", "shortDescription": {"text": "Commented-code block (5 lines) in packages/adapters/opencode-local/src/server/test.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-e6495230cd3b317e", "name": "Commented-code block (7 lines) in packages/adapters/acpx-local/src/server/execute.ts:581", "shortDescription": {"text": "Commented-code block (7 lines) in packages/adapters/acpx-local/src/server/execute.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-1aebbb2209217717", "name": "Commented-code block (6 lines) in packages/adapter-utils/src/server-utils.ts:1022", "shortDescription": {"text": "Commented-code block (6 lines) in packages/adapter-utils/src/server-utils.ts:1022"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4a477453e748e2b3", "name": "Commented-code block (6 lines) in packages/adapter-utils/src/command-managed-runtime.ts:205", "shortDescription": {"text": "Commented-code block (6 lines) in packages/adapter-utils/src/command-managed-runtime.ts:205"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-27df8acdcfe4d9e4", "name": "Legacy-named symbol `queue_v1` in packages/adapter-utils/src/execution-target.ts:1184", "shortDescription": {"text": "Legacy-named symbol `queue_v1` in packages/adapter-utils/src/execution-target.ts:1184"}, "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-74436217029bcd5e", "name": "Commented-code block (7 lines) in packages/adapter-utils/src/execution-target.ts:327", "shortDescription": {"text": "Commented-code block (7 lines) in packages/adapter-utils/src/execution-target.ts:327"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-95141a8710252fbf", "name": "Commented-code block (9 lines) in packages/adapter-utils/src/sandbox-install-command.ts:5", "shortDescription": {"text": "Commented-code block (9 lines) in packages/adapter-utils/src/sandbox-install-command.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-52c6c5fb8b45f550", "name": "Legacy-named symbol `queue_v1` in packages/adapter-utils/src/sandbox-callback-bridge.ts:319", "shortDescription": {"text": "Legacy-named symbol `queue_v1` in packages/adapter-utils/src/sandbox-callback-bridge.ts:319"}, "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-10aac498ec7b2e95", "name": "Commented-code block (5 lines) in packages/adapter-utils/src/sandbox-callback-bridge.ts:28", "shortDescription": {"text": "Commented-code block (5 lines) in packages/adapter-utils/src/sandbox-callback-bridge.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-9a51a8c404f964cd", "name": "Legacy-named symbol `queue_v1` in packages/adapter-utils/src/execution-target-sandbox.test.ts:429", "shortDescription": {"text": "Legacy-named symbol `queue_v1` in packages/adapter-utils/src/execution-target-sandbox.test.ts:429"}, "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-4a88ff55d5ea5df8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/adapter-utils/src/execution-target-sandbox.test.ts:431", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/adapter-utils/src/execution-target-sandbox.test.ts:431"}, "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-a4f62ad545ca1a30", "name": "Commented-code block (6 lines) in packages/adapter-utils/src/sandbox-managed-runtime.ts:141", "shortDescription": {"text": "Commented-code block (6 lines) in packages/adapter-utils/src/sandbox-managed-runtime.ts:141"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-67f32e263a4058d7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/adapter-utils/src/sandbox-callback-bridge.test.ts:203", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/adapter-utils/src/sandbox-callback-bridge.test.ts:203"}, "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-41a1596677eacf99", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/mcp-server/src/client.ts:95", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/mcp-server/src/client.ts:95"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-358487ebcdcd2fce", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dev-runner.ts:517", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dev-runner.ts:517"}, "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-8c10dc58cbcf0d1c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/paperclip-commit-metrics.ts:837", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/paperclip-commit-metrics.ts:837"}, "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-442be5a9928fa427", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dev-runner.mjs:435", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dev-runner.mjs:435"}, "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-6b31982a28ef1a6d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/smoke/terminal-bench-loop-skill-smoke.mjs:116", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/smoke/terminal-bench-loop-skill-smoke.mjs:116"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0eb1f85c30566d07", "name": "Commented-code block (5 lines) in .github/scripts/check-pr-dedup-search.mjs:15", "shortDescription": {"text": "Commented-code block (5 lines) in .github/scripts/check-pr-dedup-search.mjs: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-8217054e11150d3a", "name": "Commented-code block (5 lines) in .github/scripts/check-pr-security.mjs:273", "shortDescription": {"text": "Commented-code block (5 lines) in .github/scripts/check-pr-security.mjs:273"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-77a00d277e2ef949", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .github/scripts/get-bot-token.mjs:29", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .github/scripts/get-bot-token.mjs:29"}, "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-e439c27927743250", "name": "Commented-code block (5 lines) in server/src/app.ts:348", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/app.ts:348"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ddb6a181a420e787", "name": "Commented-code block (9 lines) in server/src/adapters/registry.ts:538", "shortDescription": {"text": "Commented-code block (9 lines) in server/src/adapters/registry.ts:538"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cbe314af91c848a8", "name": "Legacy-named symbol `aws_secrets_manager_v1` in server/src/secrets/aws-secrets-manager-provider.ts:18", "shortDescription": {"text": "Legacy-named symbol `aws_secrets_manager_v1` in server/src/secrets/aws-secrets-manager-provider.ts:18"}, "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-d6a53156cde5e127", "name": "Legacy-named symbol `local_encrypted_v1` in server/src/secrets/local-encrypted-provider.ts:15", "shortDescription": {"text": "Legacy-named symbol `local_encrypted_v1` in server/src/secrets/local-encrypted-provider.ts:15"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f95767768e21774b", "name": "Legacy-named symbol `external_reference_v1` in server/src/secrets/external-stub-providers.ts:24", "shortDescription": {"text": "Legacy-named symbol `external_reference_v1` in server/src/secrets/external-stub-providers.ts:24"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8905ad83071de512", "name": "Legacy-named symbol `paperclip_labs_feedback_v1` in server/src/services/feedback.ts:53", "shortDescription": {"text": "Legacy-named symbol `paperclip_labs_feedback_v1` in server/src/services/feedback.ts:53"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-916f78d13e84fa29", "name": "Commented-code block (5 lines) in server/src/services/plugin-worker-manager.ts:638", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/services/plugin-worker-manager.ts:638"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0539f046e8cef623", "name": "Commented-code block (6 lines) in server/src/services/environment-runtime.ts:442", "shortDescription": {"text": "Commented-code block (6 lines) in server/src/services/environment-runtime.ts:442"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-daf71900b791e86d", "name": "Commented-code block (7 lines) in server/src/services/plugin-event-bus.ts:181", "shortDescription": {"text": "Commented-code block (7 lines) in server/src/services/plugin-event-bus.ts:181"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d0cdd30c5489121b", "name": "Legacy-named symbol `canCreateAgentsLegacy` in server/src/services/authorization.ts:124", "shortDescription": {"text": "Legacy-named symbol `canCreateAgentsLegacy` in server/src/services/authorization.ts:124"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-659d8c9cfec5a70e", "name": "Commented-code block (8 lines) in server/src/services/execution-workspace-policy.ts:154", "shortDescription": {"text": "Commented-code block (8 lines) in server/src/services/execution-workspace-policy.ts:154"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-12d94d7aa19ffe1e", "name": "Commented-code block (5 lines) in server/src/services/plugin-runtime-sandbox.ts:141", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/services/plugin-runtime-sandbox.ts:141"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-459a45e8d1eb2f81", "name": "Commented-code block (6 lines) in server/src/services/issues.ts:716", "shortDescription": {"text": "Commented-code block (6 lines) in server/src/services/issues.ts:716"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e387589f48b0ba55", "name": "Commented-code block (7 lines) in server/src/services/company-search.ts:438", "shortDescription": {"text": "Commented-code block (7 lines) in server/src/services/company-search.ts:438"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f02ee4400b6457cc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/services/feedback-share-client.ts:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/services/feedback-share-client.ts:34"}, "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-22a89c3182c1f197", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/services/plugin-host-services.ts:135", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/services/plugin-host-services.ts:135"}, "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-9273068876df0347", "name": "Commented-code block (8 lines) in server/src/services/plugin-lifecycle.ts:791", "shortDescription": {"text": "Commented-code block (8 lines) in server/src/services/plugin-lifecycle.ts:791"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-18def304ad77190e", "name": "Commented-code block (6 lines) in server/src/services/heartbeat.ts:7953", "shortDescription": {"text": "Commented-code block (6 lines) in server/src/services/heartbeat.ts:7953"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-64814a08850fdaf2", "name": "Commented-code block (5 lines) in server/src/services/plugin-loader.ts:1647", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/services/plugin-loader.ts:1647"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-16ba600f6dadc4de", "name": "Legacy-named symbol `deterministic_feedback_v2` in server/src/services/feedback-redaction.ts:168", "shortDescription": {"text": "Legacy-named symbol `deterministic_feedback_v2` in server/src/services/feedback-redaction.ts:168"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-35939ef4bfb2da80", "name": "Commented-code block (5 lines) in server/src/__tests__/agent-live-run-routes.test.ts:565", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/__tests__/agent-live-run-routes.test.ts:565"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fb159d745115682f", "name": "Legacy-named symbol `paperclip_labs_feedback_v1` in server/src/__tests__/feedback-service.test.ts:998", "shortDescription": {"text": "Legacy-named symbol `paperclip_labs_feedback_v1` in server/src/__tests__/feedback-service.test.ts:998"}, "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-77eedf23a3d3a919", "name": "Legacy-named symbol `queue_v1` in server/src/__tests__/codex-local-execute.test.ts:378", "shortDescription": {"text": "Legacy-named symbol `queue_v1` in server/src/__tests__/codex-local-execute.test.ts:378"}, "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-7020463a42a8ffe5", "name": "Commented-code block (5 lines) in server/src/__tests__/plugin-tool-dispatcher-pluginDbId.test.ts:100", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/__tests__/plugin-tool-dispatcher-pluginDbId.test.ts:100"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5f7f55acc4573a92", "name": "Commented-code block (10 lines) in server/src/__tests__/qa-routine-secrets-e2e.test.ts:4", "shortDescription": {"text": "Commented-code block (10 lines) in server/src/__tests__/qa-routine-secrets-e2e.test.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b3e48b029a860f92", "name": "Commented-code block (5 lines) in server/src/__tests__/issue-thread-interactions-service.test.ts:1526", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/__tests__/issue-thread-interactions-service.test.ts:1526"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-afc529895aa34e46", "name": "Legacy-named symbol `aws_secrets_manager_v1` in server/src/__tests__/secrets-service.test.ts:805", "shortDescription": {"text": "Legacy-named symbol `aws_secrets_manager_v1` in server/src/__tests__/secrets-service.test.ts:805"}, "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-ad4c8126c4871e97", "name": "Legacy-named symbol `aws_secrets_manager_v1` in server/src/__tests__/aws-secrets-manager-provider.test.ts:637", "shortDescription": {"text": "Legacy-named symbol `aws_secrets_manager_v1` in server/src/__tests__/aws-secrets-manager-provider.test.ts:637"}, "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-3075d2d462fea21f", "name": "Legacy-named symbol `queue_v1` in server/src/__tests__/claude-local-execute.test.ts:658", "shortDescription": {"text": "Legacy-named symbol `queue_v1` in server/src/__tests__/claude-local-execute.test.ts:658"}, "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-bf7086a3139eebdd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/__tests__/workspace-runtime.test.ts:2256", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/__tests__/workspace-runtime.test.ts:2256"}, "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-0bf201237f75f9c2", "name": "Commented-code block (5 lines) in server/src/routes/agents.ts:353", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/routes/agents.ts:353"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-df6c4c9ccaec0ea7", "name": "Commented-code block (6 lines) in server/src/routes/plugin-ui-static.ts:300", "shortDescription": {"text": "Commented-code block (6 lines) in server/src/routes/plugin-ui-static.ts:300"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f6316884949370c4", "name": "Commented-code block (5 lines) in pbn/scripts/pbn-writer-stub.mjs:4", "shortDescription": {"text": "Commented-code block (5 lines) in pbn/scripts/pbn-writer-stub.mjs:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d0f9866159b6f683", "name": "Commented-code block (10 lines) in pbn/scripts/onboard-openclaw.mjs:12", "shortDescription": {"text": "Commented-code block (10 lines) in pbn/scripts/onboard-openclaw.mjs:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6b0a372b03406fdf", "name": "Commented-code block (6 lines) in pbn/wp/publish.mjs:16", "shortDescription": {"text": "Commented-code block (6 lines) in pbn/wp/publish.mjs:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e7a22fad94dd4074", "name": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/commands/onboard.ts:533", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/commands/onboard.ts:533"}, "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-f1b2a1a9a01be805", "name": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/commands/client/cloud.ts:532", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/commands/client/cloud.ts:532"}, "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-7409123512510050", "name": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/commands/client/asset.ts:104", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/commands/client/asset.ts:104"}, "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-9ae3c76f37042e92", "name": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/commands/client/cloud-transfer.ts:174", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/commands/client/cloud-transfer.ts:174"}, "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-7dc140a507808ff0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/commands/client/issue.ts:1409", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/commands/client/issue.ts:1409"}, "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-ca4cf61c5cc6d054", "name": "Commented-code block (5 lines) in cli/src/commands/client/common.ts:138", "shortDescription": {"text": "Commented-code block (5 lines) in cli/src/commands/client/common.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-070596a6a1a0c381", "name": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/checks/llm-check.ts:54", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/checks/llm-check.ts:54"}, "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-646bfed507574b57", "name": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/__tests__/issue-subresources.test.ts:226", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/__tests__/issue-subresources.test.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-033c228f29190e3c", "name": "Legacy-named symbol `paperclip_labs_feedback_v1` in cli/src/__tests__/feedback.test.ts:30", "shortDescription": {"text": "Legacy-named symbol `paperclip_labs_feedback_v1` in cli/src/__tests__/feedback.test.ts:30"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c7efb80d92767a8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/__tests__/company-import-export-e2e.test.ts:203", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/__tests__/company-import-export-e2e.test.ts:203"}, "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-98e9f75447b52939", "name": "`fetch()` without try/.catch or AbortSignal \u2014 ui/src/plugins/slots.tsx:424", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 ui/src/plugins/slots.tsx:424"}, "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-692a970a83dff7c5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 ui/src/api/assets.ts:9", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 ui/src/api/assets.ts:9"}, "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-6972617c09654a8e", "name": "Legacy-named symbol `inOld` in ui/src/components/RoutineHistoryTab.tsx:1192", "shortDescription": {"text": "Legacy-named symbol `inOld` in ui/src/components/RoutineHistoryTab.tsx:1192"}, "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-fbeb714ba9fc4bde", "name": "Commented-code block (6 lines) in ui/src/components/IssueChatThread.tsx:2936", "shortDescription": {"text": "Commented-code block (6 lines) in ui/src/components/IssueChatThread.tsx:2936"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-910dd97dc3b3b683", "name": "Commented-code block (5 lines) in ui/src/components/IssueChatThread.test.tsx:682", "shortDescription": {"text": "Commented-code block (5 lines) in ui/src/components/IssueChatThread.test.tsx:682"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d498765122b03ea", "name": "Commented-code block (6 lines) in ui/src/components/NewIssueDialog.tsx:1227", "shortDescription": {"text": "Commented-code block (6 lines) in ui/src/components/NewIssueDialog.tsx:1227"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c3318f916f3ee27c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 ui/src/components/IssueAttachmentsSection.tsx:37", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 ui/src/components/IssueAttachmentsSection.tsx:37"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3925b02d6094997e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 ui/src/components/MarkdownBody.test.tsx:143", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 ui/src/components/MarkdownBody.test.tsx:143"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2a41ca7f75ceefea", "name": "`fetch()` without try/.catch or AbortSignal \u2014 ui/src/components/MarkdownEditor.test.tsx:308", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 ui/src/components/MarkdownEditor.test.tsx:308"}, "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-2effde93412dc3f2", "name": "Legacy-named symbol `shouldClearLegacy` in ui/src/pages/AgentDetail.tsx:1998", "shortDescription": {"text": "Legacy-named symbol `shouldClearLegacy` in ui/src/pages/AgentDetail.tsx:1998"}, "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-f7c2d472f10d43d6", "name": "Commented-code block (5 lines) in ui/src/pages/TeamCatalog.tsx:457", "shortDescription": {"text": "Commented-code block (5 lines) in ui/src/pages/TeamCatalog.tsx:457"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bec9204540e01764", "name": "Commented-code block (5 lines) in ui/src/lib/issue-reference.ts:51", "shortDescription": {"text": "Commented-code block (5 lines) in ui/src/lib/issue-reference.ts:51"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5f0f6d79825095e9", "name": "Commented-code block (5 lines) in ui/src/lib/company-routes.test.ts:39", "shortDescription": {"text": "Commented-code block (5 lines) in ui/src/lib/company-routes.test.ts:39"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7fd46ddea10d9c43", "name": "Commented-code block (7 lines) in ui/src/lib/status-colors.ts:88", "shortDescription": {"text": "Commented-code block (7 lines) in ui/src/lib/status-colors.ts:88"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-25ad2281f494cf59", "name": "Commented-code block (5 lines) in ui/src/lib/taskTemplates.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in ui/src/lib/taskTemplates.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-53dc6708c23ca815", "name": "Commented-code block (8 lines) in ui/storybook/stories/sub-issues-workflow.stories.tsx:49", "shortDescription": {"text": "Commented-code block (8 lines) in ui/storybook/stories/sub-issues-workflow.stories.tsx: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-0db3e4cf4b3b9879", "name": "Legacy-named symbol `stripe_legacy` in ui/storybook/fixtures/paperclipData.ts:1489", "shortDescription": {"text": "Legacy-named symbol `stripe_legacy` in ui/storybook/fixtures/paperclipData.ts:1489"}, "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-957f249714e75313", "name": "210 env vars used in code but missing from .env.example", "shortDescription": {"text": "210 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `AGENT_KEY`, `AGENT_NAME`, `ANTHROPIC_API_KEY`, `ANTHROPIC_BASE_URL`, `ANTHROPIC_BEDROCK_BASE_URL`, `APPDATA`, `AWS_ACCESS_KEY_ID`, `AWS_CONFIG_FILE` + 202 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-edd26b85efd19a4c", "name": "Frontend route `dashboard/live` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `dashboard/live` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-33e54ed01677d35f", "name": "Frontend route `onboarding` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `onboarding` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-db980bfa79323a04", "name": "Frontend route `companies` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `companies` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-23fb1383ce00affa", "name": "Frontend route `company/settings` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `company/settings` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-85fef5f4afc71eb1", "name": "Frontend route `company/settings/environments` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `company/settings/environments` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f214ab03c1eaec9f", "name": "Frontend route `company/settings/cloud-upstream` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `company/settings/cloud-upstream` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9a4dee91c29c8c97", "name": "Frontend route `company/settings/members` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `company/settings/members` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-946613a1dc9fd222", "name": "Frontend route `company/settings/access` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `company/settings/access` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1d0074df34ce014b", "name": "Frontend route `company/settings/invites` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `company/settings/invites` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bfdf0f77a513c180", "name": "Frontend route `company/export/*` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `company/export/*` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9958b6542c5c7828", "name": "Frontend route `company/import` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `company/import` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-107db8b8cac5b83a", "name": "Frontend route `company/settings/secrets` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `company/settings/secrets` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b0914d4d53f8be65", "name": "Frontend route `company/settings/instance` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `company/settings/instance` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7a83689ba8ec5401", "name": "Frontend route `company/settings/instance/profile` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `company/settings/instance/profile` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8dccec451eaa71f5", "name": "Frontend route `company/settings/instance/general` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `company/settings/instance/general` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-86dcee19dd80d2ff", "name": "Frontend route `company/settings/instance/access` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `company/settings/instance/access` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-de28127e9a0e2b09", "name": "Frontend route `company/settings/instance/heartbeats` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `company/settings/instance/heartbeats` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6db975b7cb27af4d", "name": "Frontend route `company/settings/instance/experimental` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `company/settings/instance/experimental` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0904e7a502c73fb9", "name": "Frontend route `company/settings/instance/plugins` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `company/settings/instance/plugins` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cf4b6b5ec2dd0956", "name": "Frontend route `company/settings/instance/plugins/:pluginId` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `company/settings/instance/plugins/:pluginId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5b5af0217a6a5b28", "name": "Frontend route `company/settings/instance/adapters` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `company/settings/instance/adapters` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-47d0795128ec976c", "name": "Frontend route `company/settings/:settingsRoutePath/*` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `company/settings/:settingsRoutePath/*` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c2c93ca5a8a39fdf", "name": "Frontend route `skills/*` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `skills/*` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c5adca2b1799bb02", "name": "Frontend route `settings` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `settings` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-541195d859905ee1", "name": "Frontend route `settings/*` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `settings/*` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1f5d37819b9f5134", "name": "Frontend route `plugins/:pluginId` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `plugins/:pluginId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-64b0f6e4cd6b3f71", "name": "Frontend route `org` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `org` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0ff3153270f243a4", "name": "Frontend route `agents` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `agents` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ca17e91a0a2c8db0", "name": "Frontend route `agents/all` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `agents/all` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-335b8d6a8fc1f28b", "name": "Frontend route `agents/active` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `agents/active` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-353fe1b1276a339f", "name": "Frontend route `agents/paused` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `agents/paused` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f80350200fc6ba09", "name": "Frontend route `agents/error` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `agents/error` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4dc1a19d564e7fda", "name": "Frontend route `agents/new` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `agents/new` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9dd7b6e37f4472f8", "name": "Frontend route `agents/:agentId` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `agents/:agentId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aee7891478433de0", "name": "Frontend route `agents/:agentId/:tab` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `agents/:agentId/:tab` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c57ff3fa0a195611", "name": "Frontend route `agents/:agentId/runs/:runId` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `agents/:agentId/runs/:runId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-903942ee59f52b2f", "name": "Frontend route `projects` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `projects` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-88ae3e61b7bf942c", "name": "Frontend route `projects/:projectId` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `projects/:projectId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2f19b097bbb05df5", "name": "Frontend route `projects/:projectId/overview` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `projects/:projectId/overview` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c3caffe23c4f6752", "name": "Frontend route `projects/:projectId/issues` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `projects/:projectId/issues` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fa37457a01a0cf90", "name": "Frontend route `projects/:projectId/issues/:filter` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `projects/:projectId/issues/:filter` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ce712c761f2bc37b", "name": "Frontend route `projects/:projectId/workspaces/:workspaceId` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `projects/:projectId/workspaces/:workspaceId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2fe981588148e413", "name": "Frontend route `projects/:projectId/workspaces` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `projects/:projectId/workspaces` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0a3683ef5d85ae57", "name": "Frontend route `projects/:projectId/configuration` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `projects/:projectId/configuration` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-48aa1c5f23ad671a", "name": "Frontend route `projects/:projectId/budget` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `projects/:projectId/budget` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6a95e5f1b6f9cba8", "name": "Frontend route `workspaces` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `workspaces` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5a1441683b7f85b1", "name": "Frontend route `search` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `search` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-82f39ce846ffaa50", "name": "Frontend route `issues/all` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `issues/all` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0befae566b5416f5", "name": "Frontend route `issues/active` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `issues/active` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fcc7d6ea1822b596", "name": "Frontend route `issues/backlog` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `issues/backlog` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-64d992fe0e599da5", "name": "Frontend route `issues/done` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `issues/done` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-366161c82ec5e7aa", "name": "Frontend route `issues/recent` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `issues/recent` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e45cb0a2c282c9f3", "name": "Frontend route `issues/:issueId` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `issues/:issueId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e37fdd10b3265d68", "name": "Frontend route `tests/perf/long-thread` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `tests/perf/long-thread` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-89a00b29ca08c5c0", "name": "Frontend route `tasks` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `tasks` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d6d00f47a619ce77", "name": "Frontend route `routines` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `routines` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-131d7f16baac9d32", "name": "Frontend route `routines/:routineId` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `routines/:routineId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-28222a8a1e847256", "name": "Frontend route `execution-workspaces/:workspaceId` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `execution-workspaces/:workspaceId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b2c0e4621d9f3af5", "name": "Frontend route `execution-workspaces/:workspaceId/services` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `execution-workspaces/:workspaceId/services` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b943beecc17413f3", "name": "Frontend route `execution-workspaces/:workspaceId/configuration` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `execution-workspaces/:workspaceId/configuration` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-03cfaa8752f3b52c", "name": "Frontend route `execution-workspaces/:workspaceId/runtime-logs` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `execution-workspaces/:workspaceId/runtime-logs` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6a2513e09e0a74a0", "name": "Frontend route `execution-workspaces/:workspaceId/issues` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `execution-workspaces/:workspaceId/issues` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ee633b171c5343c1", "name": "Frontend route `execution-workspaces/:workspaceId/routines` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `execution-workspaces/:workspaceId/routines` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b59721286366a908", "name": "Frontend route `goals` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `goals` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-271baec363c39689", "name": "Frontend route `goals/:goalId` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `goals/:goalId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0d1fb5094172e677", "name": "Frontend route `artifacts` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `artifacts` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a882251932ec772c", "name": "Frontend route `approvals` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `approvals` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7d5f487541805003", "name": "Frontend route `approvals/pending` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `approvals/pending` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0fa6060bb5f0d348", "name": "Frontend route `approvals/all` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `approvals/all` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-268715a7577a5aee", "name": "Frontend route `approvals/:approvalId` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `approvals/:approvalId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-75aea038a9c4b16c", "name": "Frontend route `costs` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `costs` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fa130e1f9b1bf37b", "name": "Frontend route `activity` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `activity` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-27984fc2f77b4a82", "name": "Frontend route `inbox` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `inbox` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-768abbef5dbf1869", "name": "Frontend route `inbox/mine` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `inbox/mine` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e3c3f1fb78b1ea6d", "name": "Frontend route `inbox/recent` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `inbox/recent` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2492574ebed3a47f", "name": "Frontend route `inbox/unread` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `inbox/unread` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e4b41541d21782fd", "name": "Frontend route `inbox/blocked` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `inbox/blocked` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-665277341bcbdeba", "name": "Frontend route `inbox/all` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `inbox/all` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-39c2228d8d0b0601", "name": "Frontend route `inbox/requests` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `inbox/requests` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-75722be26f4c221a", "name": "Frontend route `inbox/new` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `inbox/new` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7df02fce47ac956b", "name": "Frontend route `u/:userSlug` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `u/:userSlug` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-47ec4b718c57f108", "name": "Frontend route `design-guide` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `design-guide` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-af1737ca8c5b4817", "name": "Frontend route `instance/settings/adapters` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `instance/settings/adapters` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-434f843f736e4bcc", "name": "Frontend route `:pluginRoutePath/*` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `:pluginRoutePath/*` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-208064284f239f57", "name": "Frontend route `auth` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `auth` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-39072c41b89e4653", "name": "Frontend route `board-claim/:token` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `board-claim/:token` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f69ec2a8d88bf8cd", "name": "Frontend route `cli-auth/:id` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `cli-auth/:id` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d27d2467de6ca15a", "name": "Frontend route `invite/:token` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `invite/:token` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b2e9be206129d05f", "name": "Frontend route `ux-lab/cloud-upstream` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `ux-lab/cloud-upstream` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b7bfb2d2aef6f0a2", "name": "Frontend route `ux-lab/bootstrap-setup` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `ux-lab/bootstrap-setup` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4794a82b7dd06339", "name": "Frontend route `instance` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `instance` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-89253a23608fc0d1", "name": "Frontend route `instance/settings` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `instance/settings` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c0f2438ea40992d4", "name": "Frontend route `instance/settings/*` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `instance/settings/*` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-26698ba754d2eeae", "name": "Frontend route `:companyPrefix` has no Link/navigate to it \u2014 ui/src/App.tsx", "shortDescription": {"text": "Frontend route `:companyPrefix` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c6ec81b3135826d5", "name": "Frontend route `/auth` has no Link/navigate to it \u2014 ui/src/pages/Auth.test.tsx", "shortDescription": {"text": "Frontend route `/auth` has no Link/navigate to it \u2014 ui/src/pages/Auth.test.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bd24133e07c9217a", "name": "Frontend route `/invite/:token` has no Link/navigate to it \u2014 ui/src/pages/InviteLanding.test.tsx", "shortDescription": {"text": "Frontend route `/invite/:token` has no Link/navigate to it \u2014 ui/src/pages/InviteLanding.test.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8051a698d7ec969c", "name": "JS POST `/admin/users/${userId}/demote-instance-admin` admin endpoint without auth \u2014 ui/src/api/access.ts:409", "shortDescription": {"text": "JS POST `/admin/users/${userId}/demote-instance-admin` admin endpoint without auth \u2014 ui/src/api/access.ts:409"}, "fullDescription": {"text": "Admin-scoped JS route with no recognizable auth: no middleware-position guard, no router-level guard above it in this file, and no inline permission call within the first 15 lines of the handler. If auth is applied where this router is mounted, dismiss with reason `by_design` or tag the route `// public-by-design`."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b78bbb5245a0a508", "name": "Dangling fetch: GET http://127.0.0.1:${serverPort}/api/health (scripts/dev-runner.mjs:435)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:${serverPort}/api/health (scripts/dev-runner.mjs:435)"}, "fullDescription": {"text": "`scripts/dev-runner.mjs:435` calls `GET http://127.0.0.1:${serverPort}/api/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:/127.0.0.1:/<p>/api/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-bc16fb92e207f3ab", "name": "Dangling fetch: GET https://api.github.com${path} (.github/scripts/get-bot-token.mjs:29)", "shortDescription": {"text": "Dangling fetch: GET https://api.github.com${path} (.github/scripts/get-bot-token.mjs:29)"}, "fullDescription": {"text": "`.github/scripts/get-bot-token.mjs:29` calls `GET https://api.github.com${path}` 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.github.com/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ccbedc76d5f1cfa", "name": "Dangling fetch: GET https://attacker.com/collect (.github/scripts/tests/check-pr-security.test.mjs:266)", "shortDescription": {"text": "Dangling fetch: GET https://attacker.com/collect (.github/scripts/tests/check-pr-security.test.mjs:266)"}, "fullDescription": {"text": "`.github/scripts/tests/check-pr-security.test.mjs:266` calls `GET https://attacker.com/collect` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/attacker.com/collect`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dc2f9a1567b2eb58", "name": "Dangling fetch: GET https://api.example.com (.github/scripts/tests/check-pr-security.test.mjs:282)", "shortDescription": {"text": "Dangling fetch: GET https://api.example.com (.github/scripts/tests/check-pr-security.test.mjs:282)"}, "fullDescription": {"text": "`.github/scripts/tests/check-pr-security.test.mjs:282` calls `GET https://api.example.com` 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.example.com`\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-a793a6aee9246938", "name": "Dangling fetch: POST https://api.linear.app/... (packages/plugins/sdk/src/define-plugin.ts:23)", "shortDescription": {"text": "Dangling fetch: POST https://api.linear.app/... (packages/plugins/sdk/src/define-plugin.ts:23)"}, "fullDescription": {"text": "`packages/plugins/sdk/src/define-plugin.ts:23` calls `POST https://api.linear.app/...` 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.linear.app/...`\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-303c6ff798197453", "name": "Dangling fetch: GET http://127.0.0.1:${serverPort}/api/health (scripts/dev-runner.ts:517)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:${serverPort}/api/health (scripts/dev-runner.ts:517)"}, "fullDescription": {"text": "`scripts/dev-runner.ts:517` calls `GET http://127.0.0.1:${serverPort}/api/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:/127.0.0.1:/<p>/api/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-4ac11793dc305001", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (cli/src/commands/onboard.ts:512)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (cli/src/commands/onboard.ts:512)"}, "fullDescription": {"text": "`cli/src/commands/onboard.ts:512` calls `POST https://api.anthropic.com/v1/messages` 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.anthropic.com/v1/messages`\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-3a9f2e56c9ec4967", "name": "Dangling fetch: GET https://api.openai.com/v1/models (cli/src/commands/onboard.ts:533)", "shortDescription": {"text": "Dangling fetch: GET https://api.openai.com/v1/models (cli/src/commands/onboard.ts:533)"}, "fullDescription": {"text": "`cli/src/commands/onboard.ts:533` calls `GET https://api.openai.com/v1/models` 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.openai.com/v1/models`\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-bee6c3d7d070c717", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (cli/src/checks/llm-check.ts:23)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (cli/src/checks/llm-check.ts:23)"}, "fullDescription": {"text": "`cli/src/checks/llm-check.ts:23` calls `POST https://api.anthropic.com/v1/messages` 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.anthropic.com/v1/messages`\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-62c26c199235f299", "name": "Dangling fetch: GET https://api.openai.com/v1/models (cli/src/checks/llm-check.ts:54)", "shortDescription": {"text": "Dangling fetch: GET https://api.openai.com/v1/models (cli/src/checks/llm-check.ts:54)"}, "fullDescription": {"text": "`cli/src/checks/llm-check.ts:54` calls `GET https://api.openai.com/v1/models` 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.openai.com/v1/models`\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-52b3b10b0c4b7260", "name": "Dangling fetch: POST /api/auth${path} (ui/src/api/auth.ts:64)", "shortDescription": {"text": "Dangling fetch: POST /api/auth${path} (ui/src/api/auth.ts:64)"}, "fullDescription": {"text": "`ui/src/api/auth.ts:64` calls `POST /api/auth${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bea8ea2bcfad10f2", "name": "Dangling fetch: PATCH /api/auth${path} (ui/src/api/auth.ts:78)", "shortDescription": {"text": "Dangling fetch: PATCH /api/auth${path} (ui/src/api/auth.ts:78)"}, "fullDescription": {"text": "`ui/src/api/auth.ts:78` calls `PATCH /api/auth${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-187f0ab45d3d79e1", "name": "Dangling fetch: GET /api/auth/get-session (ui/src/api/auth.ts:93)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/get-session (ui/src/api/auth.ts:93)"}, "fullDescription": {"text": "`ui/src/api/auth.ts:93` calls `GET /api/auth/get-session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/get-session`\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-ffa3aaf172872664", "name": "Dangling fetch: GET /api/auth/profile (ui/src/api/auth.ts:117)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/profile (ui/src/api/auth.ts:117)"}, "fullDescription": {"text": "`ui/src/api/auth.ts:117` calls `GET /api/auth/profile` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/profile`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-36cfebc4eb6e1815", "name": "Dangling fetch: POST /api/health/dev-server/restart (ui/src/api/health.ts:42)", "shortDescription": {"text": "Dangling fetch: POST /api/health/dev-server/restart (ui/src/api/health.ts:42)"}, "fullDescription": {"text": "`ui/src/api/health.ts:42` calls `POST /api/health/dev-server/restart` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/health/dev-server/restart`\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-fde4c08eb253fd07", "name": "Dangling fetch: GET /api/secrets (ui/src/components/MarkdownBody.test.tsx:143)", "shortDescription": {"text": "Dangling fetch: GET /api/secrets (ui/src/components/MarkdownBody.test.tsx:143)"}, "fullDescription": {"text": "`ui/src/components/MarkdownBody.test.tsx:143` calls `GET /api/secrets` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/secrets`\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-ee95b9a174a94bc6", "name": "Dangling fetch: GET /api/secrets (ui/src/components/MarkdownEditor.test.tsx:308)", "shortDescription": {"text": "Dangling fetch: GET /api/secrets (ui/src/components/MarkdownEditor.test.tsx:308)"}, "fullDescription": {"text": "`ui/src/components/MarkdownEditor.test.tsx:308` calls `GET /api/secrets` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/secrets`\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-213db461165aa6a8", "name": "Dangling fetch: GET /api/secrets (ui/src/components/MarkdownEditor.test.tsx:319)", "shortDescription": {"text": "Dangling fetch: GET /api/secrets (ui/src/components/MarkdownEditor.test.tsx:319)"}, "fullDescription": {"text": "`ui/src/components/MarkdownEditor.test.tsx:319` calls `GET /api/secrets` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/secrets`\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-fce382c99e5b80d0", "name": "Dangling fetch: GET https://registry.npmjs.org/${encodeURIComponent(packageName)}/latest (ui/src/pages/AdapterManager.ts", "shortDescription": {"text": "Dangling fetch: GET https://registry.npmjs.org/${encodeURIComponent(packageName)}/latest (ui/src/pages/AdapterManager.tsx:167)"}, "fullDescription": {"text": "`ui/src/pages/AdapterManager.tsx:167` calls `GET https://registry.npmjs.org/${encodeURIComponent(packageName)}/latest` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/registry.npmjs.org/<p>/latest`\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-6eb452fbfb454d20", "name": "Unused endpoint: USE /api/auth", "shortDescription": {"text": "Unused endpoint: USE /api/auth"}, "fullDescription": {"text": "`server/src/app.ts` declares `USE /api/auth` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a58e0f87cdbe627c", "name": "Unused endpoint: ALL /api/auth/{*authPath}", "shortDescription": {"text": "Unused endpoint: ALL /api/auth/{*authPath}"}, "fullDescription": {"text": "`server/src/app.ts` declares `ALL /api/auth/{*authPath}` 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-374a37cda7ad9705", "name": "Unused endpoint: USE /companies", "shortDescription": {"text": "Unused endpoint: USE /companies"}, "fullDescription": {"text": "`server/src/app.ts` declares `USE /companies` 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-dde3adb27bf7eebe", "name": "Unused endpoint: USE /api", "shortDescription": {"text": "Unused endpoint: USE /api"}, "fullDescription": {"text": "`server/src/app.ts` declares `USE /api` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3b59435b3211a9df", "name": "Unused endpoint: USE /assets", "shortDescription": {"text": "Unused endpoint: USE /assets"}, "fullDescription": {"text": "`server/src/app.ts` declares `USE /assets` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c85586f25e3eaaa", "name": "Unused endpoint: GET /cloud-upstreams", "shortDescription": {"text": "Unused endpoint: GET /cloud-upstreams"}, "fullDescription": {"text": "`server/src/routes/cloud-upstreams.ts` declares `GET /cloud-upstreams` 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-16880f67b39e9976", "name": "Unused endpoint: POST /cloud-upstreams/connect/start", "shortDescription": {"text": "Unused endpoint: POST /cloud-upstreams/connect/start"}, "fullDescription": {"text": "`server/src/routes/cloud-upstreams.ts` declares `POST /cloud-upstreams/connect/start` 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-c876827e18ce6253", "name": "Unused endpoint: POST /cloud-upstreams/connect/finish", "shortDescription": {"text": "Unused endpoint: POST /cloud-upstreams/connect/finish"}, "fullDescription": {"text": "`server/src/routes/cloud-upstreams.ts` declares `POST /cloud-upstreams/connect/finish` 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-68d67a90a324d04f", "name": "Unused endpoint: POST /cloud-upstreams/:connectionId/push-runs/preview", "shortDescription": {"text": "Unused endpoint: POST /cloud-upstreams/:connectionId/push-runs/preview"}, "fullDescription": {"text": "`server/src/routes/cloud-upstreams.ts` declares `POST /cloud-upstreams/:connectionId/push-runs/preview` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c19f3c1f6dfad65", "name": "Unused endpoint: POST /cloud-upstreams/:connectionId/push-runs", "shortDescription": {"text": "Unused endpoint: POST /cloud-upstreams/:connectionId/push-runs"}, "fullDescription": {"text": "`server/src/routes/cloud-upstreams.ts` declares `POST /cloud-upstreams/:connectionId/push-runs` 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-00d8d401005cac0c", "name": "Unused endpoint: GET /cloud-upstreams/:connectionId/push-runs/:runId", "shortDescription": {"text": "Unused endpoint: GET /cloud-upstreams/:connectionId/push-runs/:runId"}, "fullDescription": {"text": "`server/src/routes/cloud-upstreams.ts` declares `GET /cloud-upstreams/:connectionId/push-runs/:runId` 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-d04dc63c75395018", "name": "Unused endpoint: POST /cloud-upstreams/:connectionId/push-runs/:runId/cancel", "shortDescription": {"text": "Unused endpoint: POST /cloud-upstreams/:connectionId/push-runs/:runId/cancel"}, "fullDescription": {"text": "`server/src/routes/cloud-upstreams.ts` declares `POST /cloud-upstreams/:connectionId/push-runs/:runId/cancel` 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-dc66dc1546c5f49e", "name": "Unused endpoint: POST /cloud-upstreams/:connectionId/push-runs/:runId/activation", "shortDescription": {"text": "Unused endpoint: POST /cloud-upstreams/:connectionId/push-runs/:runId/activation"}, "fullDescription": {"text": "`server/src/routes/cloud-upstreams.ts` declares `POST /cloud-upstreams/:connectionId/push-runs/:runId/activation` 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-9a62dd20edf92579", "name": "Unused endpoint: GET /llms/agent-configuration.txt", "shortDescription": {"text": "Unused endpoint: GET /llms/agent-configuration.txt"}, "fullDescription": {"text": "`server/src/routes/llms.ts` declares `GET /llms/agent-configuration.txt` 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-a03b289a13c8e749", "name": "Unused endpoint: GET /llms/agent-icons.txt", "shortDescription": {"text": "Unused endpoint: GET /llms/agent-icons.txt"}, "fullDescription": {"text": "`server/src/routes/llms.ts` declares `GET /llms/agent-icons.txt` 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-36517128f8d98883", "name": "Unused endpoint: GET /llms/agent-configuration/:adapterType.txt", "shortDescription": {"text": "Unused endpoint: GET /llms/agent-configuration/:adapterType.txt"}, "fullDescription": {"text": "`server/src/routes/llms.ts` declares `GET /llms/agent-configuration/:adapterType.txt` 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-1f4df8a7dd600aec", "name": "Unused endpoint: GET /companies/:companyId/execution-workspaces", "shortDescription": {"text": "Unused endpoint: GET /companies/:companyId/execution-workspaces"}, "fullDescription": {"text": "`server/src/routes/execution-workspaces.ts` declares `GET /companies/:companyId/execution-workspaces` 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-0145a62448b9b080", "name": "Unused endpoint: GET /execution-workspaces/:id", "shortDescription": {"text": "Unused endpoint: GET /execution-workspaces/:id"}, "fullDescription": {"text": "`server/src/routes/execution-workspaces.ts` declares `GET /execution-workspaces/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4fbd6f2d1161647e", "name": "Unused endpoint: GET /execution-workspaces/:id/close-readiness", "shortDescription": {"text": "Unused endpoint: GET /execution-workspaces/:id/close-readiness"}, "fullDescription": {"text": "`server/src/routes/execution-workspaces.ts` declares `GET /execution-workspaces/:id/close-readiness` 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-e0c1d9fe35ced43a", "name": "Unused endpoint: GET /execution-workspaces/:id/workspace-operations", "shortDescription": {"text": "Unused endpoint: GET /execution-workspaces/:id/workspace-operations"}, "fullDescription": {"text": "`server/src/routes/execution-workspaces.ts` declares `GET /execution-workspaces/:id/workspace-operations` 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-69645fc2deb1865d", "name": "Unused endpoint: POST /execution-workspaces/:id/runtime-services/:action", "shortDescription": {"text": "Unused endpoint: POST /execution-workspaces/:id/runtime-services/:action"}, "fullDescription": {"text": "`server/src/routes/execution-workspaces.ts` declares `POST /execution-workspaces/:id/runtime-services/:action` 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-cb8d112595019845", "name": "Unused endpoint: POST /execution-workspaces/:id/runtime-commands/:action", "shortDescription": {"text": "Unused endpoint: POST /execution-workspaces/:id/runtime-commands/:action"}, "fullDescription": {"text": "`server/src/routes/execution-workspaces.ts` declares `POST /execution-workspaces/:id/runtime-commands/:action` 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-941c2db50bfd4587", "name": "Unused endpoint: PATCH /execution-workspaces/:id", "shortDescription": {"text": "Unused endpoint: PATCH /execution-workspaces/:id"}, "fullDescription": {"text": "`server/src/routes/execution-workspaces.ts` declares `PATCH /execution-workspaces/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-17020e2f2b339d80", "name": "Unused endpoint: GET /companies/:companyId/secret-providers", "shortDescription": {"text": "Unused endpoint: GET /companies/:companyId/secret-providers"}, "fullDescription": {"text": "`server/src/routes/secrets.ts` declares `GET /companies/:companyId/secret-providers` 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-a047b7b5c7859c0d", "name": "Unused endpoint: GET /companies/:companyId/secret-providers/health", "shortDescription": {"text": "Unused endpoint: GET /companies/:companyId/secret-providers/health"}, "fullDescription": {"text": "`server/src/routes/secrets.ts` declares `GET /companies/:companyId/secret-providers/health` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-185968e08da4e213", "name": "Unused endpoint: GET /companies/:companyId/secret-provider-configs", "shortDescription": {"text": "Unused endpoint: GET /companies/:companyId/secret-provider-configs"}, "fullDescription": {"text": "`server/src/routes/secrets.ts` declares `GET /companies/:companyId/secret-provider-configs` 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-48ad7e215f20425a", "name": "Unused endpoint: POST /companies/:companyId/secret-provider-configs/discovery/preview", "shortDescription": {"text": "Unused endpoint: POST /companies/:companyId/secret-provider-configs/discovery/preview"}, "fullDescription": {"text": "`server/src/routes/secrets.ts` declares `POST /companies/:companyId/secret-provider-configs/discovery/preview` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d54e24d275513921", "name": "Unused endpoint: POST /companies/:companyId/secret-provider-configs", "shortDescription": {"text": "Unused endpoint: POST /companies/:companyId/secret-provider-configs"}, "fullDescription": {"text": "`server/src/routes/secrets.ts` declares `POST /companies/:companyId/secret-provider-configs` 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-1891d5343b00abd0", "name": "Unused endpoint: GET /secret-provider-configs/:id", "shortDescription": {"text": "Unused endpoint: GET /secret-provider-configs/:id"}, "fullDescription": {"text": "`server/src/routes/secrets.ts` declares `GET /secret-provider-configs/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c89b26a21c6fe3b6", "name": "Unused endpoint: PATCH /secret-provider-configs/:id", "shortDescription": {"text": "Unused endpoint: PATCH /secret-provider-configs/:id"}, "fullDescription": {"text": "`server/src/routes/secrets.ts` declares `PATCH /secret-provider-configs/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c6fcee81dfc8c8f5", "name": "Unused endpoint: DELETE /secret-provider-configs/:id", "shortDescription": {"text": "Unused endpoint: DELETE /secret-provider-configs/:id"}, "fullDescription": {"text": "`server/src/routes/secrets.ts` declares `DELETE /secret-provider-configs/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7fd18396e89cbc24", "name": "Unused endpoint: POST /secret-provider-configs/:id/default", "shortDescription": {"text": "Unused endpoint: POST /secret-provider-configs/:id/default"}, "fullDescription": {"text": "`server/src/routes/secrets.ts` declares `POST /secret-provider-configs/:id/default` 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-a4a52fb6a9221f66", "name": "Unused endpoint: POST /secret-provider-configs/:id/health", "shortDescription": {"text": "Unused endpoint: POST /secret-provider-configs/:id/health"}, "fullDescription": {"text": "`server/src/routes/secrets.ts` declares `POST /secret-provider-configs/:id/health` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5ad3ff549aa01ccc", "name": "Unused endpoint: GET /companies/:companyId/secrets", "shortDescription": {"text": "Unused endpoint: GET /companies/:companyId/secrets"}, "fullDescription": {"text": "`server/src/routes/secrets.ts` declares `GET /companies/:companyId/secrets` 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-60c52a0cdc66bcfd", "name": "Unused endpoint: POST /companies/:companyId/secrets", "shortDescription": {"text": "Unused endpoint: POST /companies/:companyId/secrets"}, "fullDescription": {"text": "`server/src/routes/secrets.ts` declares `POST /companies/:companyId/secrets` 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-69c7541b17642d8d", "name": "Unused endpoint: POST /companies/:companyId/secrets/remote-import/preview", "shortDescription": {"text": "Unused endpoint: POST /companies/:companyId/secrets/remote-import/preview"}, "fullDescription": {"text": "`server/src/routes/secrets.ts` declares `POST /companies/:companyId/secrets/remote-import/preview` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7974ced1a9a61fd4", "name": "Unused endpoint: POST /companies/:companyId/secrets/remote-import", "shortDescription": {"text": "Unused endpoint: POST /companies/:companyId/secrets/remote-import"}, "fullDescription": {"text": "`server/src/routes/secrets.ts` declares `POST /companies/:companyId/secrets/remote-import` 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-1ba1c032b8bbd574", "name": "Unused endpoint: POST /secrets/:id/rotate", "shortDescription": {"text": "Unused endpoint: POST /secrets/:id/rotate"}, "fullDescription": {"text": "`server/src/routes/secrets.ts` declares `POST /secrets/:id/rotate` 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-02acc2e09c3b64f9", "name": "Unused endpoint: PATCH /secrets/:id", "shortDescription": {"text": "Unused endpoint: PATCH /secrets/:id"}, "fullDescription": {"text": "`server/src/routes/secrets.ts` declares `PATCH /secrets/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d6219fe194f33aa0", "name": "Unused endpoint: GET /secrets/:id/usage", "shortDescription": {"text": "Unused endpoint: GET /secrets/:id/usage"}, "fullDescription": {"text": "`server/src/routes/secrets.ts` declares `GET /secrets/:id/usage` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ac2fda574401735d", "name": "Unused endpoint: GET /secrets/:id/access-events", "shortDescription": {"text": "Unused endpoint: GET /secrets/:id/access-events"}, "fullDescription": {"text": "`server/src/routes/secrets.ts` declares `GET /secrets/:id/access-events` 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-1ea4ce911b268d01", "name": "Unused endpoint: DELETE /secrets/:id", "shortDescription": {"text": "Unused endpoint: DELETE /secrets/:id"}, "fullDescription": {"text": "`server/src/routes/secrets.ts` declares `DELETE /secrets/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-163278158f636ae9", "name": "Unused endpoint: GET /companies/:companyId/projects", "shortDescription": {"text": "Unused endpoint: GET /companies/:companyId/projects"}, "fullDescription": {"text": "`server/src/routes/projects.ts` declares `GET /companies/:companyId/projects` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cdcec0c7af38dbaa", "name": "Unused endpoint: GET /projects/:id", "shortDescription": {"text": "Unused endpoint: GET /projects/:id"}, "fullDescription": {"text": "`server/src/routes/projects.ts` declares `GET /projects/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d21c60a040cc1d66", "name": "Unused endpoint: POST /companies/:companyId/projects", "shortDescription": {"text": "Unused endpoint: POST /companies/:companyId/projects"}, "fullDescription": {"text": "`server/src/routes/projects.ts` declares `POST /companies/:companyId/projects` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6984a16bee78bd37", "name": "Unused endpoint: PATCH /projects/:id", "shortDescription": {"text": "Unused endpoint: PATCH /projects/:id"}, "fullDescription": {"text": "`server/src/routes/projects.ts` declares `PATCH /projects/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-32cfc600e800f72e", "name": "Unused endpoint: GET /projects/:id/workspaces", "shortDescription": {"text": "Unused endpoint: GET /projects/:id/workspaces"}, "fullDescription": {"text": "`server/src/routes/projects.ts` declares `GET /projects/:id/workspaces` 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-5388b49a5b253c4a", "name": "Unused endpoint: POST /projects/:id/workspaces", "shortDescription": {"text": "Unused endpoint: POST /projects/:id/workspaces"}, "fullDescription": {"text": "`server/src/routes/projects.ts` declares `POST /projects/:id/workspaces` 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-7669ae6438bf44ac", "name": "Unused endpoint: PATCH /projects/:id/workspaces/:workspaceId", "shortDescription": {"text": "Unused endpoint: PATCH /projects/:id/workspaces/:workspaceId"}, "fullDescription": {"text": "`server/src/routes/projects.ts` declares `PATCH /projects/:id/workspaces/:workspaceId` 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-bbe73d2d35e40f33", "name": "Unused endpoint: POST /projects/:id/workspaces/:workspaceId/runtime-services/:action", "shortDescription": {"text": "Unused endpoint: POST /projects/:id/workspaces/:workspaceId/runtime-services/:action"}, "fullDescription": {"text": "`server/src/routes/projects.ts` declares `POST /projects/:id/workspaces/:workspaceId/runtime-services/:action` 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/24316"}, "properties": {"repository": "Arno125456/pbn-paperclip", "repoUrl": "https://github.com/Arno125456/pbn-paperclip", "branch": "main"}, "results": [{"ruleId": "scanner-4c4781b592c73598", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/plugins/create-paperclip-plugin/src/index.ts:249"}, "properties": {"repobilityId": "9305c71bba773f84", "scanner": "scanner-primary", "fingerprint": "4c4781b592c73598", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-82000b4140d0be7f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/plugins/examples/plugin-kitchen-sink-example/src/ui/index.tsx:2329"}, "properties": {"repobilityId": "1865d6c1291aea76", "scanner": "scanner-primary", "fingerprint": "82000b4140d0be7f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e89bbe5369fa4f44", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/plugins/examples/plugin-file-browser-example/src/ui/index.tsx:613"}, "properties": {"repobilityId": "802e22b0bec18ee6", "scanner": "scanner-primary", "fingerprint": "e89bbe5369fa4f44", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5eee0755f5ddaa0c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/plugins/plugin-llm-wiki/src/ui/app.tsx:1316"}, "properties": {"repobilityId": "fdc341341297553c", "scanner": "scanner-primary", "fingerprint": "5eee0755f5ddaa0c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-09900bea57f699a7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/plugins/plugin-workspace-diff/src/ui/index.tsx:221"}, "properties": {"repobilityId": "a4dcae092b45a0bd", "scanner": "scanner-primary", "fingerprint": "09900bea57f699a7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0ccedf3c705fc4f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/plugins/sdk/src/dev-cli.ts:35"}, "properties": {"repobilityId": "9fad1163021449ca", "scanner": "scanner-primary", "fingerprint": "0ccedf3c705fc4f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-06fd7a8578bac03c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/plugins/sdk/src/ui/components.ts:572"}, "properties": {"repobilityId": "a3899cb2215bac15", "scanner": "scanner-primary", "fingerprint": "06fd7a8578bac03c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6df3b479ba7e167d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/cursor-local/src/cli/format-event.ts:30"}, "properties": {"repobilityId": "2761c0486d8582f7", "scanner": "scanner-primary", "fingerprint": "6df3b479ba7e167d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-495be1d4a8a38580", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/claude-local/src/cli/format-event.ts:35"}, "properties": {"repobilityId": "d4eca06482011624", "scanner": "scanner-primary", "fingerprint": "495be1d4a8a38580", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a7f481ad1245f05b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/claude-local/src/cli/quota-probe.ts:111"}, "properties": {"repobilityId": "66f6e6a8f92de04b", "scanner": "scanner-primary", "fingerprint": "a7f481ad1245f05b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ed47d485930a9c2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/gemini-local/src/cli/format-event.ts:46"}, "properties": {"repobilityId": "f0ae84e31842dd09", "scanner": "scanner-primary", "fingerprint": "0ed47d485930a9c2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dced8885bf9da487", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/cursor-cloud/src/cli/format-event.ts:9"}, "properties": {"repobilityId": "6e43006d27d14c6b", "scanner": "scanner-primary", "fingerprint": "dced8885bf9da487", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ab8f3853c90219eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/grok-local/src/cli/format-event.ts:20"}, "properties": {"repobilityId": "bcd9febd9c0695e3", "scanner": "scanner-primary", "fingerprint": "ab8f3853c90219eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a3763eba3fd85c08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/pi-local/src/cli/format-event.ts:35"}, "properties": {"repobilityId": "7b3992ab2de36e0e", "scanner": "scanner-primary", "fingerprint": "a3763eba3fd85c08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f414db3775751a43", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/codex-local/src/cli/format-event.ts:37"}, "properties": {"repobilityId": "946ce401374987f6", "scanner": "scanner-primary", "fingerprint": "f414db3775751a43", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-90a35a432cf6b847", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/codex-local/src/cli/quota-probe.ts:99"}, "properties": {"repobilityId": "aa012214f0c5bdac", "scanner": "scanner-primary", "fingerprint": "90a35a432cf6b847", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee4daa9143e420e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/opencode-local/src/cli/format-event.ts:48"}, "properties": {"repobilityId": "49c29dc12718f945", "scanner": "scanner-primary", "fingerprint": "ee4daa9143e420e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-192cd76962e7b823", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/acpx-local/src/cli/format-event.ts:56"}, "properties": {"repobilityId": "ff6b12439ca88504", "scanner": "scanner-primary", "fingerprint": "192cd76962e7b823", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4abe82b2d3286b6d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/adapters/openclaw-gateway/src/cli/format-event.ts:8"}, "properties": {"repobilityId": "f44f617f08ed168b", "scanner": "scanner-primary", "fingerprint": "4abe82b2d3286b6d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-014d657d25101c7d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/teams-catalog/scripts/validate-catalog.ts:13"}, "properties": {"repobilityId": "2a29e4d5d6312350", "scanner": "scanner-primary", "fingerprint": "014d657d25101c7d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dc027b9e86d40557", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/teams-catalog/scripts/build-catalog-manifest.ts:13"}, "properties": {"repobilityId": "9dd629d18ddb18d3", "scanner": "scanner-primary", "fingerprint": "dc027b9e86d40557", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a1283ebc4d257e7b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/skills-catalog/scripts/validate-catalog.ts:14"}, "properties": {"repobilityId": "e235e076775ed05b", "scanner": "scanner-primary", "fingerprint": "a1283ebc4d257e7b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fb967f8a4cff7f13", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/skills-catalog/scripts/build-catalog-manifest.ts:14"}, "properties": {"repobilityId": "49596a8247751652", "scanner": "scanner-primary", "fingerprint": "fb967f8a4cff7f13", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ba7625260375de40", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/src/migrate.ts:7"}, "properties": {"repobilityId": "db22b3b1e686b1a6", "scanner": "scanner-primary", "fingerprint": "ba7625260375de40", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-554d3bc9a765f210", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/src/migration-status.ts:40"}, "properties": {"repobilityId": "200de1f51118cf6d", "scanner": "scanner-primary", "fingerprint": "554d3bc9a765f210", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df86237a802cc0b4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/src/backup.ts:74"}, "properties": {"repobilityId": "4ee8da0d0d94eeea", "scanner": "scanner-primary", "fingerprint": "df86237a802cc0b4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-898cf980a1d8d306", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/src/seed.ts:9"}, "properties": {"repobilityId": "23cafb689c64510c", "scanner": "scanner-primary", "fingerprint": "898cf980a1d8d306", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-29feca8349601fb1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-company-assets.ts:313"}, "properties": {"repobilityId": "b5bafa38043f1f07", "scanner": "scanner-primary", "fingerprint": "29feca8349601fb1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b4eb480e2f67ad80", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-issue-reference-mentions.ts:27"}, "properties": {"repobilityId": "d4c8798e180e424e", "scanner": "scanner-primary", "fingerprint": "b4eb480e2f67ad80", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bd6e38aacb2edda6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-inline-env-secrets.ts:114"}, "properties": {"repobilityId": "b924a4b77f639815", "scanner": "scanner-primary", "fingerprint": "bd6e38aacb2edda6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-68119b9ad849f8e1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-service.ts:21"}, "properties": {"repobilityId": "6ffe9785d578b337", "scanner": "scanner-primary", "fingerprint": "68119b9ad849f8e1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c8027b1b64b1891", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-runner.ts:155"}, "properties": {"repobilityId": "1fde33e78242ba57", "scanner": "scanner-primary", "fingerprint": "3c8027b1b64b1891", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-95f5951f88cb44ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-org-chart-satori-comparison.ts:141"}, "properties": {"repobilityId": "0124fb843ffcb71f", "scanner": "scanner-primary", "fingerprint": "95f5951f88cb44ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cf5f2e692c1b51c9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ensure-workspace-package-links.ts:93"}, "properties": {"repobilityId": "5bcffc3345d5daef", "scanner": "scanner-primary", "fingerprint": "cf5f2e692c1b51c9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa70c3eca989573e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/paperclip-commit-metrics.ts:176"}, "properties": {"repobilityId": "248e36f8857acb8b", "scanner": "scanner-primary", "fingerprint": "aa70c3eca989573e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0334fc82b48d7e40", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-org-chart-images.ts:619"}, "properties": {"repobilityId": "14be438273e6d886", "scanner": "scanner-primary", "fingerprint": "0334fc82b48d7e40", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c6bfd9916402a51", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/index.ts:905"}, "properties": {"repobilityId": "966123b8e19cb728", "scanner": "scanner-primary", "fingerprint": "3c6bfd9916402a51", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-451bb5ad27140ec9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/startup-banner.ts:176"}, "properties": {"repobilityId": "2010f0521214cd3e", "scanner": "scanner-primary", "fingerprint": "451bb5ad27140ec9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8a3505030a711abb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/adapters/registry.ts:590"}, "properties": {"repobilityId": "4ab07b3755897169", "scanner": "scanner-primary", "fingerprint": "8a3505030a711abb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dec9f827ec404233", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/services/plugin-loader.ts:730"}, "properties": {"repobilityId": "f7f5abc7b8a0cd63", "scanner": "scanner-primary", "fingerprint": "dec9f827ec404233", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9391074e9595274f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/gemini-local-adapter-environment.test.ts:15"}, "properties": {"repobilityId": "a9bc090cf30d2758", "scanner": "scanner-primary", "fingerprint": "9391074e9595274f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d742a081497481b8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/pi-local-execute.test.ts:10"}, "properties": {"repobilityId": "b012ffb8d5a4498b", "scanner": "scanner-primary", "fingerprint": "d742a081497481b8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f0b9c5eeaa17829", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/codex-local-execute.test.ts:28"}, "properties": {"repobilityId": "bd8d19d243550ab5", "scanner": "scanner-primary", "fingerprint": "5f0b9c5eeaa17829", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4113d4fdccc7b6c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/cursor-local-adapter-environment.test.ts:16"}, "properties": {"repobilityId": "566be02236364c9d", "scanner": "scanner-primary", "fingerprint": "4113d4fdccc7b6c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-95b25720b3c1bb8a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/pi-local-adapter-environment.test.ts:13"}, "properties": {"repobilityId": "04d6704f93726d30", "scanner": "scanner-primary", "fingerprint": "95b25720b3c1bb8a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-12e6cee3452851ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/cursor-local-execute.test.ts:23"}, "properties": {"repobilityId": "ddfb0fc4110d597e", "scanner": "scanner-primary", "fingerprint": "12e6cee3452851ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-53dca3138c36d749", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/gemini-local-execute.test.ts:21"}, "properties": {"repobilityId": "465db01d3d8691ec", "scanner": "scanner-primary", "fingerprint": "53dca3138c36d749", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-76d9c292e80d0101", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/dev-runner-snapshot.test.ts:42"}, "properties": {"repobilityId": "acfbdfad0552c49d", "scanner": "scanner-primary", "fingerprint": "76d9c292e80d0101", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f42e6081c60fa52", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/__tests__/claude-local-execute.test.ts:15"}, "properties": {"repobilityId": "b633f9436f35cdd4", "scanner": "scanner-primary", "fingerprint": "2f42e6081c60fa52", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a916b63013aef5f6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/adapters/process/format-event.ts:3"}, "properties": {"repobilityId": "723b4b3dd6747e4c", "scanner": "scanner-primary", "fingerprint": "a916b63013aef5f6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dcb496c77f3635d8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/adapters/http/format-event.ts:3"}, "properties": {"repobilityId": "40b9e9a5788a9974", "scanner": "scanner-primary", "fingerprint": "dcb496c77f3635d8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9ee85fd96ddac9cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/utils/banner.ts:23"}, "properties": {"repobilityId": "d32da4fb80d3b3c9", "scanner": "scanner-primary", "fingerprint": "9ee85fd96ddac9cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9b61c9ac4db294f1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/worktree.ts:1888"}, "properties": {"repobilityId": "a7836ab66bd0f1b4", "scanner": "scanner-primary", "fingerprint": "9b61c9ac4db294f1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f07db1c29bbbc335", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/heartbeat-run.ts:97"}, "properties": {"repobilityId": "feb5ae629e559206", "scanner": "scanner-primary", "fingerprint": "f07db1c29bbbc335", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b7cecbfb49f6225b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/routines.ts:320"}, "properties": {"repobilityId": "cec34d323fe0b935", "scanner": "scanner-primary", "fingerprint": "b7cecbfb49f6225b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-66bb22dd8d38a395", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/db-backup.ts:82"}, "properties": {"repobilityId": "fbe538d3af0a99f2", "scanner": "scanner-primary", "fingerprint": "66bb22dd8d38a395", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2908c9b7c03121e7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/secrets.ts:247"}, "properties": {"repobilityId": "7bfd453f2bfd107a", "scanner": "scanner-primary", "fingerprint": "2908c9b7c03121e7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2eec357868ba099d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/project.ts:71"}, "properties": {"repobilityId": "116d3654052b0c09", "scanner": "scanner-primary", "fingerprint": "2eec357868ba099d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f046cbb918e5952", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/feedback.ts:111"}, "properties": {"repobilityId": "fdc9083576eacec5", "scanner": "scanner-primary", "fingerprint": "0f046cbb918e5952", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ef95ffd55139be07", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/token.ts:111"}, "properties": {"repobilityId": "99593419c8fd8cea", "scanner": "scanner-primary", "fingerprint": "ef95ffd55139be07", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c09d7a2a2383f102", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/skills.ts:271"}, "properties": {"repobilityId": "ffebf28707dfcd95", "scanner": "scanner-primary", "fingerprint": "c09d7a2a2383f102", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-69865eec4b92f6c9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/approval.ts:77"}, "properties": {"repobilityId": "d179acfa5b83bad5", "scanner": "scanner-primary", "fingerprint": "69865eec4b92f6c9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3ea91fdb4d0cb293", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/cloud.ts:178"}, "properties": {"repobilityId": "1325df01e747d28c", "scanner": "scanner-primary", "fingerprint": "3ea91fdb4d0cb293", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-007fd7668a55cae0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/run.ts:150"}, "properties": {"repobilityId": "6623b2f48114378a", "scanner": "scanner-primary", "fingerprint": "007fd7668a55cae0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-852a147ac273a282", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/activity.ts:55"}, "properties": {"repobilityId": "7c9c73e69c8bf1cd", "scanner": "scanner-primary", "fingerprint": "852a147ac273a282", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e38642539fc410ba", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 cli/src/commands/client/company.ts:392"}, "properties": {"repobilityId": "678f5822f4c89886", "scanner": "scanner-primary", "fingerprint": "e38642539fc410ba", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-3d1805a9b0cf6992", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/company.ts:742"}, "properties": {"repobilityId": "03cb4dba122a626e", "scanner": "scanner-primary", "fingerprint": "3d1805a9b0cf6992", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-60011050c69c76f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/agent.ts:247"}, "properties": {"repobilityId": "73ce9c6e62f658b8", "scanner": "scanner-primary", "fingerprint": "60011050c69c76f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-070aa512b928eed2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/context.ts:83"}, "properties": {"repobilityId": "4e5c9798b17d193a", "scanner": "scanner-primary", "fingerprint": "070aa512b928eed2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ac327388b853639", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/issue.ts:206"}, "properties": {"repobilityId": "c0d75d12a164baef", "scanner": "scanner-primary", "fingerprint": "6ac327388b853639", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-631b441fbbc9c3f8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/goal.ts:62"}, "properties": {"repobilityId": "37c06ff9c032b6c8", "scanner": "scanner-primary", "fingerprint": "631b441fbbc9c3f8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aeb7b7ecce745983", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/connect.ts:73"}, "properties": {"repobilityId": "7bbe8464c8c8c945", "scanner": "scanner-primary", "fingerprint": "aeb7b7ecce745983", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d3aba1622e8ce2fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/plugin.ts:270"}, "properties": {"repobilityId": "fbca8e701d004130", "scanner": "scanner-primary", "fingerprint": "d3aba1622e8ce2fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-43531a960dd434f6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/common.ts:195"}, "properties": {"repobilityId": "18ff3b3e20cf01f6", "scanner": "scanner-primary", "fingerprint": "43531a960dd434f6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c9e1a4f2f0cb33b3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cli/src/commands/client/teams.ts:626"}, "properties": {"repobilityId": "c76951c841795698", "scanner": "scanner-primary", "fingerprint": "c9e1a4f2f0cb33b3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a4278cc7eb09145", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/plugins/launchers.tsx:585"}, "properties": {"repobilityId": "ee9daccec6e5d29d", "scanner": "scanner-primary", "fingerprint": "7a4278cc7eb09145", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-eb9211d33da67746", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 ui/src/adapters/runtime-json-fields.tsx:5"}, "properties": {"repobilityId": "87bf37f941ab3e26", "scanner": "scanner-primary", "fingerprint": "eb9211d33da67746", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e51f9d3326ebdc56", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/adapters/schema-config-fields.tsx:185"}, "properties": {"repobilityId": "49de50c278298667", "scanner": "scanner-primary", "fingerprint": "e51f9d3326ebdc56", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-910dec5887e17b98", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/RoutineRunVariablesDialog.tsx:372"}, "properties": {"repobilityId": "bf43d6f2255f5671", "scanner": "scanner-primary", "fingerprint": "910dec5887e17b98", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0a134d594632f596", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/RoutineHistoryTab.tsx:473"}, "properties": {"repobilityId": "06969a47f2b3cee4", "scanner": "scanner-primary", "fingerprint": "0a134d594632f596", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fc85e8cf8166a156", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/NewProjectDialog.tsx:364"}, "properties": {"repobilityId": "125e1c7ba1aa9c97", "scanner": "scanner-primary", "fingerprint": "fc85e8cf8166a156", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3a6eed5b3f9120d8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/RoutineList.tsx:102"}, "properties": {"repobilityId": "d52f8468778bdceb", "scanner": "scanner-primary", "fingerprint": "3a6eed5b3f9120d8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8021ce7b0dcd5fd7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueChatThread.tsx:984"}, "properties": {"repobilityId": "ead73f848a12025b", "scanner": "scanner-primary", "fingerprint": "8021ce7b0dcd5fd7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-14ca7387f0370182", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/CompanySwitcher.tsx:51"}, "properties": {"repobilityId": "7946bc4ac9f035fd", "scanner": "scanner-primary", "fingerprint": "14ca7387f0370182", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e832f34d39d127aa", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssuePlanDecompositionsSection.tsx:145"}, "properties": {"repobilityId": "f0b7f1024b9dfe84", "scanner": "scanner-primary", "fingerprint": "e832f34d39d127aa", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-302051c11e5037d0", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 ui/src/components/MarkdownBody.tsx:546"}, "properties": {"repobilityId": "5c465fe29647489f", "scanner": "scanner-primary", "fingerprint": "302051c11e5037d0", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-74c6009f235182bb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/GoalTree.tsx:47"}, "properties": {"repobilityId": "80d7b90e504427b5", "scanner": "scanner-primary", "fingerprint": "74c6009f235182bb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5c7baaa834ba65e5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueRecoveryActionCard.tsx:220"}, "properties": {"repobilityId": "0ccad06184e1e011", "scanner": "scanner-primary", "fingerprint": "5c7baaa834ba65e5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8afd9a4443a61f9e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SidebarNavItem.tsx:58"}, "properties": {"repobilityId": "bb4ea333aba8fa6f", "scanner": "scanner-primary", "fingerprint": "8afd9a4443a61f9e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-448edb9504b0d930", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueRunLedger.tsx:579"}, "properties": {"repobilityId": "8de3f19965c36737", "scanner": "scanner-primary", "fingerprint": "448edb9504b0d930", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9b4ec3f0efa48f2c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/NewIssueDialog.tsx:1291"}, "properties": {"repobilityId": "416b0a30fcf39eb6", "scanner": "scanner-primary", "fingerprint": "9b4ec3f0efa48f2c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9c5e433193e456f0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueRelatedWorkPanel.tsx:59"}, "properties": {"repobilityId": "4229a3acc2ed532f", "scanner": "scanner-primary", "fingerprint": "9c5e433193e456f0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6e699e1a2dbffd58", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SidebarCompanyMenu.tsx:103"}, "properties": {"repobilityId": "7f5f278e29ffc4ee", "scanner": "scanner-primary", "fingerprint": "6e699e1a2dbffd58", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d0e704c724678fa7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/CommandPalette.tsx:156"}, "properties": {"repobilityId": "6be3fbc4fa1a2f83", "scanner": "scanner-primary", "fingerprint": "d0e704c724678fa7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ecefa187caea7c1d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueFiltersPopover.tsx:281"}, "properties": {"repobilityId": "0f2c892fb08d1d5b", "scanner": "scanner-primary", "fingerprint": "ecefa187caea7c1d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9d6af615418ccef3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SourceResolvedFoldCallout.tsx:38"}, "properties": {"repobilityId": "4891da8ab0595db3", "scanner": "scanner-primary", "fingerprint": "9d6af615418ccef3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-77e3d7cd844a5812", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueThreadInteractionCard.tsx:266"}, "properties": {"repobilityId": "6c96587dda46a15d", "scanner": "scanner-primary", "fingerprint": "77e3d7cd844a5812", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-aabf5502581fea14", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SystemNotice.tsx:117"}, "properties": {"repobilityId": "9d2e5e56dfa6fe62", "scanner": "scanner-primary", "fingerprint": "aabf5502581fea14", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9634bccbd63dcbd2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/InstanceSidebar.tsx:35"}, "properties": {"repobilityId": "5c98a3f060b45937", "scanner": "scanner-primary", "fingerprint": "9634bccbd63dcbd2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9a79963edb5800ed", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueBlockedNotice.tsx:192"}, "properties": {"repobilityId": "7c1e673130186934", "scanner": "scanner-primary", "fingerprint": "9a79963edb5800ed", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-aba4152974915f62", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueProperties.tsx:248"}, "properties": {"repobilityId": "10d948dd223ab981", "scanner": "scanner-primary", "fingerprint": "aba4152974915f62", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-58040f7645fd30a8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueDocumentsSection.tsx:991"}, "properties": {"repobilityId": "836f7236e6a36cb3", "scanner": "scanner-primary", "fingerprint": "58040f7645fd30a8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2e6bdea7726a4856", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/Sidebar.tsx:91"}, "properties": {"repobilityId": "6af664b06244e010", "scanner": "scanner-primary", "fingerprint": "2e6bdea7726a4856", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ac45d80a84035ae4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueColumns.tsx:269"}, "properties": {"repobilityId": "d5ec73206aae1cb9", "scanner": "scanner-primary", "fingerprint": "ac45d80a84035ae4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d291dbda68830334", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/WorktreeBanner.tsx:36"}, "properties": {"repobilityId": "81dde01911877889", "scanner": "scanner-primary", "fingerprint": "d291dbda68830334", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-42c3dd9afe6163f2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SidebarAgents.tsx:145"}, "properties": {"repobilityId": "626580dca3c7b68d", "scanner": "scanner-primary", "fingerprint": "42c3dd9afe6163f2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c29a84bab47d717e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueSiblingNavigation.tsx:84"}, "properties": {"repobilityId": "960b0a6218376b81", "scanner": "scanner-primary", "fingerprint": "c29a84bab47d717e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-905bd12fd19f452c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/BreadcrumbBar.tsx:82"}, "properties": {"repobilityId": "77e356ab4b8ba242", "scanner": "scanner-primary", "fingerprint": "905bd12fd19f452c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-85b00867d320d1ae", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/OnboardingWizard.tsx:1145"}, "properties": {"repobilityId": "7a1aaa6325dfe3f8", "scanner": "scanner-primary", "fingerprint": "85b00867d320d1ae", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2927ecfb634550dc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueAttachmentsSection.tsx:181"}, "properties": {"repobilityId": "52adf60283dfb54f", "scanner": "scanner-primary", "fingerprint": "2927ecfb634550dc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-48f04a5e251b6e09", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/InlineEntitySelector.tsx:209"}, "properties": {"repobilityId": "b60f28afdaffb701", "scanner": "scanner-primary", "fingerprint": "48f04a5e251b6e09", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-96984f513bf33e5a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/WorkspaceRuntimeControls.tsx:488"}, "properties": {"repobilityId": "87a411030b0282b7", "scanner": "scanner-primary", "fingerprint": "96984f513bf33e5a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-18d7a4721faf4028", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/CommentThread.tsx:1071"}, "properties": {"repobilityId": "6d48da9bc9bb97c1", "scanner": "scanner-primary", "fingerprint": "18d7a4721faf4028", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f691eae2faf27c8d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/IssueGroupHeader.tsx:34"}, "properties": {"repobilityId": "3ebc317f7c1f451b", "scanner": "scanner-primary", "fingerprint": "f691eae2faf27c8d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b2c5b9edaa8170f4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/BlockedReasonChip.tsx:79"}, "properties": {"repobilityId": "f0374831b8a03f18", "scanner": "scanner-primary", "fingerprint": "b2c5b9edaa8170f4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6551aa4012d9873b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/ActivityRow.tsx:62"}, "properties": {"repobilityId": "dcb46e0940ebc03c", "scanner": "scanner-primary", "fingerprint": "6551aa4012d9873b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-92699116b1a6815d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/ReportsToPicker.tsx:54"}, "properties": {"repobilityId": "4912f400a74f0b51", "scanner": "scanner-primary", "fingerprint": "92699116b1a6815d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f543bec2348347b5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/AgentConfigForm.tsx:1366"}, "properties": {"repobilityId": "2bc21d98051bf92d", "scanner": "scanner-primary", "fingerprint": "f543bec2348347b5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-60c41c5fd7f70bbf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/CompanySettingsSidebar.tsx:92"}, "properties": {"repobilityId": "3841284119db96ed", "scanner": "scanner-primary", "fingerprint": "60c41c5fd7f70bbf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-179dc3c936bda9f9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SidebarProjects.tsx:144"}, "properties": {"repobilityId": "36c825336c22144f", "scanner": "scanner-primary", "fingerprint": "179dc3c936bda9f9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1329d08ab64daed7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/ExecutionParticipantPicker.tsx:108"}, "properties": {"repobilityId": "7913ef4d0380999b", "scanner": "scanner-primary", "fingerprint": "1329d08ab64daed7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2db8ef7080015c38", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/SidebarAccountMenu.tsx:153"}, "properties": {"repobilityId": "360a6db4037ac3cd", "scanner": "scanner-primary", "fingerprint": "2db8ef7080015c38", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-de332a7e18a567cb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/DocumentAnnotationPanel.tsx:523"}, "properties": {"repobilityId": "76f30245e7bf9096", "scanner": "scanner-primary", "fingerprint": "de332a7e18a567cb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-649a48281365f8ac", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/MobileBottomNav.tsx:86"}, "properties": {"repobilityId": "99b41aca8488dcf3", "scanner": "scanner-primary", "fingerprint": "649a48281365f8ac", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d86a1fffa24aca8a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/FinanceKindCard.tsx:26"}, "properties": {"repobilityId": "497610cf36578424", "scanner": "scanner-primary", "fingerprint": "d86a1fffa24aca8a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e7cc97c682891ce2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/ProviderQuotaCard.tsx:272"}, "properties": {"repobilityId": "b38cea2323e23aba", "scanner": "scanner-primary", "fingerprint": "e7cc97c682891ce2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-61e8e74a4ca1ac48", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/search/SearchResultRow.tsx:75"}, "properties": {"repobilityId": "9c11cc0a4627909d", "scanner": "scanner-primary", "fingerprint": "61e8e74a4ca1ac48", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-da4c2d762cba3789", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/components/artifacts/ArtifactCard.tsx:231"}, "properties": {"repobilityId": "84a132f34b95af50", "scanner": "scanner-primary", "fingerprint": "da4c2d762cba3789", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a43b91e15a9fdcb2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Tasks.tsx:218"}, "properties": {"repobilityId": "cadaa598adf1ec67", "scanner": "scanner-primary", "fingerprint": "a43b91e15a9fdcb2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-32331bfbdd8f2c4f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/IssueChatUxLab.tsx:114"}, "properties": {"repobilityId": "a0c763adab71ba0e", "scanner": "scanner-primary", "fingerprint": "32331bfbdd8f2c4f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dbfa76c0cd3f893f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/UserProfile.tsx:86"}, "properties": {"repobilityId": "63cfda54bc8658eb", "scanner": "scanner-primary", "fingerprint": "dbfa76c0cd3f893f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0385e964c4dfc87b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/RoutineDetail.tsx:949"}, "properties": {"repobilityId": "6d521da8bdbcc3af", "scanner": "scanner-primary", "fingerprint": "0385e964c4dfc87b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-98ff140d2f23cbad", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Artifacts.tsx:338"}, "properties": {"repobilityId": "7cd61c431217a536", "scanner": "scanner-primary", "fingerprint": "98ff140d2f23cbad", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c40a0e0dfcf949cf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/AgentDetail.tsx:1000"}, "properties": {"repobilityId": "5b1c4b6769d5627d", "scanner": "scanner-primary", "fingerprint": "c40a0e0dfcf949cf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a8f61868d01794f6", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 ui/src/pages/AgentDetail.tsx:880"}, "properties": {"repobilityId": "b3529015bb8fd364", "scanner": "scanner-primary", "fingerprint": "a8f61868d01794f6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-89754ca3bb835e25", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/ProfileSettings.tsx:219"}, "properties": {"repobilityId": "1910b2b8f25ed0da", "scanner": "scanner-primary", "fingerprint": "89754ca3bb835e25", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a82e96d815c25bfc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/CompanyAccess.tsx:331"}, "properties": {"repobilityId": "17b24711ae7b19a2", "scanner": "scanner-primary", "fingerprint": "a82e96d815c25bfc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-151820fb4af105da", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Secrets.tsx:1927"}, "properties": {"repobilityId": "be31fbfd843b52e6", "scanner": "scanner-primary", "fingerprint": "151820fb4af105da", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a3959cac3fc6c784", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/InstanceSettings.tsx:237"}, "properties": {"repobilityId": "1a9f484f221f9b69", "scanner": "scanner-primary", "fingerprint": "a3959cac3fc6c784", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3403fae359db0f54", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Inbox.tsx:325"}, "properties": {"repobilityId": "fdbbf82243c93658", "scanner": "scanner-primary", "fingerprint": "3403fae359db0f54", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0484a3ac8dd83810", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Search.tsx:476"}, "properties": {"repobilityId": "9d0db0bc1a25629f", "scanner": "scanner-primary", "fingerprint": "0484a3ac8dd83810", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3cf792d77824bc29", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/CompanyExport.tsx:529"}, "properties": {"repobilityId": "b668291aafa505c7", "scanner": "scanner-primary", "fingerprint": "3cf792d77824bc29", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-664a70ff59c7227c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/ProjectWorkspaceDetail.tsx:451"}, "properties": {"repobilityId": "a6cc82dc5858c7de", "scanner": "scanner-primary", "fingerprint": "664a70ff59c7227c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-04039cc10c8bf37b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/CompanyImport.tsx:223"}, "properties": {"repobilityId": "a697115ccfffb825", "scanner": "scanner-primary", "fingerprint": "04039cc10c8bf37b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-32f0133ac61fdcb1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/InstanceAccess.tsx:138"}, "properties": {"repobilityId": "1e6a4efdf1e51387", "scanner": "scanner-primary", "fingerprint": "32f0133ac61fdcb1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2589fa437989a436", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Costs.tsx:774"}, "properties": {"repobilityId": "503c68d7ac7d0d4e", "scanner": "scanner-primary", "fingerprint": "2589fa437989a436", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-24e5e044f6ba21fc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/CompanySkills.tsx:794"}, "properties": {"repobilityId": "a8ac16d7a04e9726", "scanner": "scanner-primary", "fingerprint": "24e5e044f6ba21fc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8bb721cdaab81dea", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/ExecutionWorkspaceDetail.tsx:392"}, "properties": {"repobilityId": "e1510d4d7caa534b", "scanner": "scanner-primary", "fingerprint": "8bb721cdaab81dea", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d8b265f061a6fbbc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Routines.tsx:711"}, "properties": {"repobilityId": "f23b98bde3ec645f", "scanner": "scanner-primary", "fingerprint": "d8b265f061a6fbbc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c4b5749eb3ac1e05", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/TeamCatalog.tsx:420"}, "properties": {"repobilityId": "66920f9a3242adda", "scanner": "scanner-primary", "fingerprint": "c4b5749eb3ac1e05", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e3dd44cf35653532", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/IssueDetail.tsx:495"}, "properties": {"repobilityId": "50e6e5f01bc8a988", "scanner": "scanner-primary", "fingerprint": "e3dd44cf35653532", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-09a97290fe829b71", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/src/pages/Dashboard.tsx:364"}, "properties": {"repobilityId": "88fc145d807aab04", "scanner": "scanner-primary", "fingerprint": "09a97290fe829b71", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-522474b3fcad8a23", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/storybook/stories/projects-goals-workspaces.stories.tsx:234"}, "properties": {"repobilityId": "a402dca99b73c20e", "scanner": "scanner-primary", "fingerprint": "522474b3fcad8a23", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2ca992e04b4f58fc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/storybook/stories/issue-management.stories.tsx:201"}, "properties": {"repobilityId": "aad61af63ad04405", "scanner": "scanner-primary", "fingerprint": "2ca992e04b4f58fc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-928fee2c109b85c7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/storybook/stories/navigation-layout.stories.tsx:151"}, "properties": {"repobilityId": "82c9e4e10420de8b", "scanner": "scanner-primary", "fingerprint": "928fee2c109b85c7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0c522711357f20b1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/storybook/stories/search.stories.tsx:417"}, "properties": {"repobilityId": "739e104e59809ab4", "scanner": "scanner-primary", "fingerprint": "0c522711357f20b1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-14fce6f4c43b67d2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/storybook/stories/artifacts.stories.tsx:603"}, "properties": {"repobilityId": "63c078bf54885f7a", "scanner": "scanner-primary", "fingerprint": "14fce6f4c43b67d2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5f6bb79387efeaf5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ui/storybook/stories/document-annotations.stories.tsx:401"}, "properties": {"repobilityId": "b73355572662c869", "scanner": "scanner-primary", "fingerprint": "5f6bb79387efeaf5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f7f8b123c4290cd1", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:lts-trixie-slim"}, "properties": {"repobilityId": "173bd3f8d72f3b4b", "scanner": "scanner-primary", "fingerprint": "f7f8b123c4290cd1", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-0ed72884a644a629", "level": "warning", "message": {"text": "Dockerfile runs as root: packages/plugins/sandbox-providers/cloudflare/bridge-template/Dockerfile"}, "properties": {"repobilityId": "fb3310fbb1464569", "scanner": "scanner-primary", "fingerprint": "0ed72884a644a629", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-99879b1bd8352d1c", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: docker.io/cloudflare/sandbox:0.7.0"}, "properties": {"repobilityId": "9b932989448cc5d5", "scanner": "scanner-primary", "fingerprint": "99879b1bd8352d1c", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/sandbox-providers/cloudflare/bridge-template/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f074bab2bb8ac44e", "level": "warning", "message": {"text": "Dockerfile runs as root: docker/openclaw-smoke/Dockerfile"}, "properties": {"repobilityId": "ecf83b6ff32d61d1", "scanner": "scanner-primary", "fingerprint": "f074bab2bb8ac44e", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-7df6277204bdca9a", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "properties": {"repobilityId": "54a4c4ebf7789704", "scanner": "scanner-primary", "fingerprint": "7df6277204bdca9a", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/openclaw-smoke/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cb522fa53f353572", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:lts-trixie-slim"}, "properties": {"repobilityId": "d7b69c4e5eea7b51", "scanner": "scanner-primary", "fingerprint": "cb522fa53f353572", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/untrusted-review/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e1a1d965bd4071e3", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/plugins/create-paperclip-plugin/src/index.ts:1"}, "properties": {"repobilityId": "99e743dfeee490c5", "scanner": "scanner-primary", "fingerprint": "e1a1d965bd4071e3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/create-paperclip-plugin/src/index.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cf43985f4a72abbe", "level": "error", "message": {"text": "Possible secret in packages/plugins/sandbox-providers/exe-dev/src/plugin.test.ts"}, "properties": {"repobilityId": "2931a38a021d3562", "scanner": "scanner-primary", "fingerprint": "cf43985f4a72abbe", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/sandbox-providers/exe-dev/src/plugin.test.ts"}, "region": {"startLine": 340}}}]}, {"ruleId": "scanner-fec632299630b323", "level": "error", "message": {"text": "Insecure pattern 'private_key_in_repo' in packages/plugins/sandbox-providers/exe-dev/src/plugin.test.ts:340"}, "properties": {"repobilityId": "3bd7bda2b85bb207", "scanner": "scanner-primary", "fingerprint": "fec632299630b323", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["owasp", "private_key_in_repo"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/sandbox-providers/exe-dev/src/plugin.test.ts"}, "region": {"startLine": 340}}}]}, {"ruleId": "scanner-48b5e5228a397dfc", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/plugins/sandbox-providers/exe-dev/src/plugin.ts:5"}, "properties": {"repobilityId": "b9c4a5aaaff66796", "scanner": "scanner-primary", "fingerprint": "48b5e5228a397dfc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/sandbox-providers/exe-dev/src/plugin.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-bf2e133ec24897c2", "level": "error", "message": {"text": "Possible secret in packages/plugins/plugin-llm-wiki/tests/plugin.spec.ts"}, "properties": {"repobilityId": "25fc1a280924b560", "scanner": "scanner-primary", "fingerprint": "bf2e133ec24897c2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/plugin-llm-wiki/tests/plugin.spec.ts"}, "region": {"startLine": 2049}}}]}, {"ruleId": "scanner-bf2e133ec24897c2", "level": "error", "message": {"text": "Possible secret in packages/plugins/plugin-llm-wiki/tests/plugin.spec.ts"}, "properties": {"repobilityId": "25fc1a280924b560", "scanner": "scanner-primary", "fingerprint": "bf2e133ec24897c2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/plugin-llm-wiki/tests/plugin.spec.ts"}, "region": {"startLine": 2066}}}]}, {"ruleId": "scanner-bf2e133ec24897c2", "level": "error", "message": {"text": "Possible secret in packages/plugins/plugin-llm-wiki/tests/plugin.spec.ts"}, "properties": {"repobilityId": "25fc1a280924b560", "scanner": "scanner-primary", "fingerprint": "bf2e133ec24897c2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/plugin-llm-wiki/tests/plugin.spec.ts"}, "region": {"startLine": 2082}}}]}, {"ruleId": "scanner-bf2e133ec24897c2", "level": "error", "message": {"text": "Possible secret in packages/plugins/plugin-llm-wiki/tests/plugin.spec.ts"}, "properties": {"repobilityId": "25fc1a280924b560", "scanner": "scanner-primary", "fingerprint": "bf2e133ec24897c2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/plugin-llm-wiki/tests/plugin.spec.ts"}, "region": {"startLine": 2557}}}]}, {"ruleId": "scanner-bf2e133ec24897c2", "level": "error", "message": {"text": "Possible secret in packages/plugins/plugin-llm-wiki/tests/plugin.spec.ts"}, "properties": {"repobilityId": "25fc1a280924b560", "scanner": "scanner-primary", "fingerprint": "bf2e133ec24897c2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/plugin-llm-wiki/tests/plugin.spec.ts"}, "region": {"startLine": 2575}}}]}, {"ruleId": "scanner-14f9bef45dbfb6e9", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/plugins/paperclip-plugin-fake-sandbox/src/plugin.ts:5"}, "properties": {"repobilityId": "f95a53246a327a0f", "scanner": "scanner-primary", "fingerprint": "14f9bef45dbfb6e9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/paperclip-plugin-fake-sandbox/src/plugin.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-96aff9608330bd4e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/plugins/plugin-workspace-diff/src/workspace-diff.ts:1"}, "properties": {"repobilityId": "56888c1515ad30dc", "scanner": "scanner-primary", "fingerprint": "96aff9608330bd4e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/plugin-workspace-diff/src/workspace-diff.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7521a8fdcffaff1c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/adapters/claude-local/src/server/quota.ts:1"}, "properties": {"repobilityId": "8958391ce3f281de", "scanner": "scanner-primary", "fingerprint": "7521a8fdcffaff1c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapters/claude-local/src/server/quota.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-92da28d132743cf3", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/adapters/codex-local/src/server/quota-spawn-error.test.ts:5"}, "properties": {"repobilityId": "e0832b0201fa7508", "scanner": "scanner-primary", "fingerprint": "92da28d132743cf3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapters/codex-local/src/server/quota-spawn-error.test.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-e9267d230f4cbb54", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/adapters/codex-local/src/server/quota.ts:1"}, "properties": {"repobilityId": "58791188759c4c9d", "scanner": "scanner-primary", "fingerprint": "e9267d230f4cbb54", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapters/codex-local/src/server/quota.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f9ac52e557fa4e6a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/db/src/backup-lib.ts:4"}, "properties": {"repobilityId": "5cb5435dcddba0f3", "scanner": "scanner-primary", "fingerprint": "f9ac52e557fa4e6a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/db/src/backup-lib.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-4be7d683c4dd3daa", "level": "error", "message": {"text": "Possible secret in packages/db/src/migration-runtime.ts"}, "properties": {"repobilityId": "9570db27cef02fcb", "scanner": "scanner-primary", "fingerprint": "4be7d683c4dd3daa", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/db/src/migration-runtime.ts"}, "region": {"startLine": 142}}}]}, {"ruleId": "scanner-215bab21faeae732", "level": "error", "message": {"text": "Possible secret in packages/db/src/test-embedded-postgres.ts"}, "properties": {"repobilityId": "bd30d95a339adc84", "scanner": "scanner-primary", "fingerprint": "215bab21faeae732", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/db/src/test-embedded-postgres.ts"}, "region": {"startLine": 94}}}]}, {"ruleId": "scanner-e651fb89e9f03dbd", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/server-utils.ts:1"}, "properties": {"repobilityId": "554714468b4e4af1", "scanner": "scanner-primary", "fingerprint": "e651fb89e9f03dbd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapter-utils/src/server-utils.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dfe73be794be02c2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/sandbox-managed-runtime.ts:1"}, "properties": {"repobilityId": "c987da431a600013", "scanner": "scanner-primary", "fingerprint": "dfe73be794be02c2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapter-utils/src/sandbox-managed-runtime.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5f96afa17f607168", "level": "error", "message": {"text": "Possible secret in packages/adapter-utils/src/server-utils.test.ts"}, "properties": {"repobilityId": "6b1f5f7316752161", "scanner": "scanner-primary", "fingerprint": "5f96afa17f607168", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapter-utils/src/server-utils.test.ts"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-4e1653f41eac92a9", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/server-utils.test.ts:452"}, "properties": {"repobilityId": "30778f9fae2690d9", "scanner": "scanner-primary", "fingerprint": "4e1653f41eac92a9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapter-utils/src/server-utils.test.ts"}, "region": {"startLine": 452}}}]}, {"ruleId": "scanner-7876aaa9aa7d78a7", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/sandbox-managed-runtime.test.ts:4"}, "properties": {"repobilityId": "0228eef0e1a8bde3", "scanner": "scanner-primary", "fingerprint": "7876aaa9aa7d78a7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapter-utils/src/sandbox-managed-runtime.test.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-a72a8a508024107a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/ssh.ts:2"}, "properties": {"repobilityId": "d5896c2236fe8065", "scanner": "scanner-primary", "fingerprint": "a72a8a508024107a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapter-utils/src/ssh.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-5e2e7e8f73d27433", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/sandbox-callback-bridge.test.ts:1"}, "properties": {"repobilityId": "5ffd0ed454e202b0", "scanner": "scanner-primary", "fingerprint": "5e2e7e8f73d27433", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapter-utils/src/sandbox-callback-bridge.test.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e9cbf897186e31b3", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/command-managed-runtime.test.ts:4"}, "properties": {"repobilityId": "2050aae1ede177da", "scanner": "scanner-primary", "fingerprint": "e9cbf897186e31b3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapter-utils/src/command-managed-runtime.test.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-c3d94794bfa965b5", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/adapter-utils/src/ssh-fixture.test.ts:1"}, "properties": {"repobilityId": "e4e116d177333ab1", "scanner": "scanner-primary", "fingerprint": "c3d94794bfa965b5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapter-utils/src/ssh-fixture.test.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5f28afb61481114b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-release-package-bootstrap.mjs:3"}, "properties": {"repobilityId": "477eda7a61369f24", "scanner": "scanner-primary", "fingerprint": "5f28afb61481114b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-release-package-bootstrap.mjs"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-87d92c2d49b52c7b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ensure-plugin-build-deps.mjs:3"}, "properties": {"repobilityId": "c277d5d69106f36b", "scanner": "scanner-primary", "fingerprint": "87d92c2d49b52c7b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ensure-plugin-build-deps.mjs"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-615116b96d910cf1", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/release-lib.sh:144"}, "properties": {"repobilityId": "ff09cb5be31dfd84", "scanner": "scanner-primary", "fingerprint": "615116b96d910cf1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/release-lib.sh"}, "region": {"startLine": 144}}}]}, {"ruleId": "scanner-e61ea42337ed85d9", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/run-typecheck-build-gaps.mjs:4"}, "properties": {"repobilityId": "2027b8889832233f", "scanner": "scanner-primary", "fingerprint": "e61ea42337ed85d9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/run-typecheck-build-gaps.mjs"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-4250cd8a5429e1bb", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/run-vitest-stable.mjs:2"}, "properties": {"repobilityId": "3250891deef9a51b", "scanner": "scanner-primary", "fingerprint": "4250cd8a5429e1bb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/run-vitest-stable.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-2a762989e353b8ff", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/bootstrap-npm-package.mjs:3"}, "properties": {"repobilityId": "1b9d44aa7a18f44d", "scanner": "scanner-primary", "fingerprint": "2a762989e353b8ff", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/bootstrap-npm-package.mjs"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-479d5bfc5e42a27c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/build-standalone-public-packages.mjs:3"}, "properties": {"repobilityId": "dc62f18c19ef232b", "scanner": "scanner-primary", "fingerprint": "479d5bfc5e42a27c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/build-standalone-public-packages.mjs"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-1e031e5251e3ce9f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/dev-runner.ts:2"}, "properties": {"repobilityId": "184ee254c50fee95", "scanner": "scanner-primary", "fingerprint": "1e031e5251e3ce9f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dev-runner.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-e07a568cc01c2639", "level": "warning", "message": {"text": "Insecure pattern 'direct_outerhtml_assignment' in scripts/generate-org-chart-satori-comparison.ts:191"}, "properties": {"repobilityId": "5f0bce7a29163a0d", "scanner": "scanner-primary", "fingerprint": "e07a568cc01c2639", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_outerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate-org-chart-satori-comparison.ts"}, "region": {"startLine": 191}}}]}, {"ruleId": "scanner-93c58dbbaa9de14a", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in scripts/check-no-git-push.test.mjs:31"}, "properties": {"repobilityId": "6f4f46e7d9ca1966", "scanner": "scanner-primary", "fingerprint": "93c58dbbaa9de14a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-no-git-push.test.mjs"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-53495456a9f09925", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-no-git-push.test.mjs:112"}, "properties": {"repobilityId": "2f3bbb3774130319", "scanner": "scanner-primary", "fingerprint": "53495456a9f09925", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-no-git-push.test.mjs"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-e01b45b7e80bf905", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/paperclip-commit-metrics.ts:3"}, "properties": {"repobilityId": "ca614c8bb9f870fc", "scanner": "scanner-primary", "fingerprint": "e01b45b7e80bf905", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/paperclip-commit-metrics.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-c42467fd4ff8c72b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/dev-runner.mjs:2"}, "properties": {"repobilityId": "27109498e5bbe3c8", "scanner": "scanner-primary", "fingerprint": "c42467fd4ff8c72b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dev-runner.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-b877a2b8fbcbd328", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in scripts/check-forbidden-tokens.mjs:68"}, "properties": {"repobilityId": "943738f1f058f3c0", "scanner": "scanner-primary", "fingerprint": "b877a2b8fbcbd328", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-forbidden-tokens.mjs"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-431d755b0c19c72a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-forbidden-tokens.mjs:14"}, "properties": {"repobilityId": "6f535609f8d151db", "scanner": "scanner-primary", "fingerprint": "431d755b0c19c72a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-forbidden-tokens.mjs"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-57e46445851a4388", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/scripts/dev-watch.ts:1"}, "properties": {"repobilityId": "f2672341647b41c8", "scanner": "scanner-primary", "fingerprint": "57e46445851a4388", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/scripts/dev-watch.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-90b77a11ba2cff1e", "level": "error", "message": {"text": "Possible secret in server/src/index.ts"}, "properties": {"repobilityId": "4ef3c6efca91a5c8", "scanner": "scanner-primary", "fingerprint": "90b77a11ba2cff1e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/index.ts"}, "region": {"startLine": 415}}}]}, {"ruleId": "scanner-89457e660bc256b3", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/src/config.ts:2"}, "properties": {"repobilityId": "6f5ccb9278e51412", "scanner": "scanner-primary", "fingerprint": "89457e660bc256b3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/config.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-444f17f911bb7da8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/src/adapters/utils.ts:4"}, "properties": {"repobilityId": "3811249b8efc6c49", "scanner": "scanner-primary", "fingerprint": "444f17f911bb7da8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/adapters/utils.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-8004cf626aa1cf82", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/src/adapters/cursor-models.ts:1"}, "properties": {"repobilityId": "d2f52b4d8b7cba86", "scanner": "scanner-primary", "fingerprint": "8004cf626aa1cf82", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/adapters/cursor-models.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7bbb3583a98abc50", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/src/services/execution-workspaces.ts:1"}, "properties": {"repobilityId": "2212ab45b89704f3", "scanner": "scanner-primary", "fingerprint": "7bbb3583a98abc50", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/services/execution-workspaces.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f9d29e103501458a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/src/services/plugin-worker-manager.ts:21"}, "properties": {"repobilityId": "96aa5d4c9be51659", "scanner": "scanner-primary", "fingerprint": "f9d29e103501458a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/services/plugin-worker-manager.ts"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-7b70f4739cdd5182", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/src/services/workspace-runtime.ts:1"}, "properties": {"repobilityId": "1ff3aea0b67e8241", "scanner": "scanner-primary", "fingerprint": "7b70f4739cdd5182", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/services/workspace-runtime.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9a26ca3c2aebfe19", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/src/services/company-portability.ts:3"}, "properties": {"repobilityId": "992a872f8dc4f3df", "scanner": "scanner-primary", "fingerprint": "9a26ca3c2aebfe19", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/services/company-portability.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-1a1b85a6ea988b2a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/src/services/local-service-supervisor.ts:1"}, "properties": {"repobilityId": "4d8370907ee2a973", "scanner": "scanner-primary", "fingerprint": "1a1b85a6ea988b2a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/services/local-service-supervisor.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ee0c6e134a1e5f73", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/src/services/heartbeat.ts:3"}, "properties": {"repobilityId": "f01bfe0b8b3df9b7", "scanner": "scanner-primary", "fingerprint": "ee0c6e134a1e5f73", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/services/heartbeat.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-62b4624d12ba9902", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/src/services/plugin-loader.ts:29"}, "properties": {"repobilityId": "ca4beec669dece59", "scanner": "scanner-primary", "fingerprint": "62b4624d12ba9902", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/services/plugin-loader.ts"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-d427c41129d8453b", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/environment-config.test.ts"}, "properties": {"repobilityId": "1274089cf7148efe", "scanner": "scanner-primary", "fingerprint": "d427c41129d8453b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/environment-config.test.ts"}, "region": {"startLine": 150}}}]}, {"ruleId": "scanner-d427c41129d8453b", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/environment-config.test.ts"}, "properties": {"repobilityId": "1274089cf7148efe", "scanner": "scanner-primary", "fingerprint": "d427c41129d8453b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/environment-config.test.ts"}, "region": {"startLine": 158}}}]}, {"ruleId": "scanner-d427c41129d8453b", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/environment-config.test.ts"}, "properties": {"repobilityId": "1274089cf7148efe", "scanner": "scanner-primary", "fingerprint": "d427c41129d8453b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/environment-config.test.ts"}, "region": {"startLine": 191}}}]}, {"ruleId": "scanner-d427c41129d8453b", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/environment-config.test.ts"}, "properties": {"repobilityId": "1274089cf7148efe", "scanner": "scanner-primary", "fingerprint": "d427c41129d8453b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/environment-config.test.ts"}, "region": {"startLine": 202}}}]}, {"ruleId": "scanner-8a6dc4343e14c48b", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/heartbeat-run-log.test.ts"}, "properties": {"repobilityId": "8d31d60977bf1644", "scanner": "scanner-primary", "fingerprint": "8a6dc4343e14c48b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/heartbeat-run-log.test.ts"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-7f0d634146a7dc0e", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/sandbox-provider-runtime.test.ts"}, "properties": {"repobilityId": "ccc6cb731c204cad", "scanner": "scanner-primary", "fingerprint": "7f0d634146a7dc0e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/sandbox-provider-runtime.test.ts"}, "region": {"startLine": 118}}}]}, {"ruleId": "scanner-7f0d634146a7dc0e", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/sandbox-provider-runtime.test.ts"}, "properties": {"repobilityId": "ccc6cb731c204cad", "scanner": "scanner-primary", "fingerprint": "7f0d634146a7dc0e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/sandbox-provider-runtime.test.ts"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-7f0d634146a7dc0e", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/sandbox-provider-runtime.test.ts"}, "properties": {"repobilityId": "ccc6cb731c204cad", "scanner": "scanner-primary", "fingerprint": "7f0d634146a7dc0e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/sandbox-provider-runtime.test.ts"}, "region": {"startLine": 137}}}]}, {"ruleId": "scanner-7f0d634146a7dc0e", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/sandbox-provider-runtime.test.ts"}, "properties": {"repobilityId": "ccc6cb731c204cad", "scanner": "scanner-primary", "fingerprint": "7f0d634146a7dc0e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/sandbox-provider-runtime.test.ts"}, "region": {"startLine": 198}}}]}, {"ruleId": "scanner-7f0d634146a7dc0e", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/sandbox-provider-runtime.test.ts"}, "properties": {"repobilityId": "ccc6cb731c204cad", "scanner": "scanner-primary", "fingerprint": "7f0d634146a7dc0e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/sandbox-provider-runtime.test.ts"}, "region": {"startLine": 203}}}]}, {"ruleId": "scanner-164e3b7012c44594", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/company-portability.test.ts"}, "properties": {"repobilityId": "922042e06f71daf9", "scanner": "scanner-primary", "fingerprint": "164e3b7012c44594", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/company-portability.test.ts"}, "region": {"startLine": 524}}}]}, {"ruleId": "scanner-912beee66ea7e929", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/src/__tests__/company-portability.test.ts:1"}, "properties": {"repobilityId": "84285dd215bcc5af", "scanner": "scanner-primary", "fingerprint": "912beee66ea7e929", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/company-portability.test.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d4508dbd4a576362", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/src/__tests__/heartbeat-accepted-plan-workspace-refresh.test.ts:1"}, "properties": {"repobilityId": "bdcc664bb2baec68", "scanner": "scanner-primary", "fingerprint": "d4508dbd4a576362", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/heartbeat-accepted-plan-workspace-refresh.test.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ff9b25e8a59e4cc4", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/redaction.test.ts"}, "properties": {"repobilityId": "cbcb96676ac64601", "scanner": "scanner-primary", "fingerprint": "ff9b25e8a59e4cc4", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/redaction.test.ts"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-ff9b25e8a59e4cc4", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/redaction.test.ts"}, "properties": {"repobilityId": "144487aeefde601c", "scanner": "scanner-primary", "fingerprint": "ff9b25e8a59e4cc4", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/redaction.test.ts"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-eb8d8f3559074eee", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/environment-routes.test.ts"}, "properties": {"repobilityId": "1169b43fbc2fa8f2", "scanner": "scanner-primary", "fingerprint": "eb8d8f3559074eee", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/environment-routes.test.ts"}, "region": {"startLine": 762}}}]}, {"ruleId": "scanner-eb8d8f3559074eee", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/environment-routes.test.ts"}, "properties": {"repobilityId": "1169b43fbc2fa8f2", "scanner": "scanner-primary", "fingerprint": "eb8d8f3559074eee", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/environment-routes.test.ts"}, "region": {"startLine": 832}}}]}, {"ruleId": "scanner-eb8d8f3559074eee", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/environment-routes.test.ts"}, "properties": {"repobilityId": "1169b43fbc2fa8f2", "scanner": "scanner-primary", "fingerprint": "eb8d8f3559074eee", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/environment-routes.test.ts"}, "region": {"startLine": 858}}}]}, {"ruleId": "scanner-83031546d0ac8b40", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/environment-runtime.test.ts"}, "properties": {"repobilityId": "9590eac1918ccd1b", "scanner": "scanner-primary", "fingerprint": "83031546d0ac8b40", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/environment-runtime.test.ts"}, "region": {"startLine": 619}}}]}, {"ruleId": "scanner-83031546d0ac8b40", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/environment-runtime.test.ts"}, "properties": {"repobilityId": "9590eac1918ccd1b", "scanner": "scanner-primary", "fingerprint": "83031546d0ac8b40", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/environment-runtime.test.ts"}, "region": {"startLine": 678}}}]}, {"ruleId": "scanner-83031546d0ac8b40", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/environment-runtime.test.ts"}, "properties": {"repobilityId": "9590eac1918ccd1b", "scanner": "scanner-primary", "fingerprint": "83031546d0ac8b40", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/environment-runtime.test.ts"}, "region": {"startLine": 683}}}]}, {"ruleId": "scanner-01e10789e2ea67a0", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/heartbeat-process-recovery.test.ts"}, "properties": {"repobilityId": "a994ccf9136f1eac", "scanner": "scanner-primary", "fingerprint": "01e10789e2ea67a0", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/heartbeat-process-recovery.test.ts"}, "region": {"startLine": 1663}}}]}, {"ruleId": "scanner-3a32d668381a8a01", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/src/__tests__/heartbeat-process-recovery.test.ts:2"}, "properties": {"repobilityId": "611fc76b52a561b1", "scanner": "scanner-primary", "fingerprint": "3a32d668381a8a01", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/heartbeat-process-recovery.test.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-9c092d688fc288b1", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/src/__tests__/workspace-runtime.test.ts:1"}, "properties": {"repobilityId": "324cee744be0c797", "scanner": "scanner-primary", "fingerprint": "9c092d688fc288b1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/workspace-runtime.test.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bde21ca79158a931", "level": "error", "message": {"text": "Possible secret in server/src/__tests__/heartbeat-active-run-output-watchdog.test.ts"}, "properties": {"repobilityId": "a4d848b6a46b4d50", "scanner": "scanner-primary", "fingerprint": "bde21ca79158a931", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/heartbeat-active-run-output-watchdog.test.ts"}, "region": {"startLine": 293}}}]}, {"ruleId": "scanner-322f2aa397820c16", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/src/__tests__/execution-workspaces-service.test.ts:1"}, "properties": {"repobilityId": "8a14088f5189df65", "scanner": "scanner-primary", "fingerprint": "322f2aa397820c16", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/__tests__/execution-workspaces-service.test.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b374b5b33fc4de61", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/src/routes/adapters.ts:16"}, "properties": {"repobilityId": "b6e057e28b41c123", "scanner": "scanner-primary", "fingerprint": "b374b5b33fc4de61", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/routes/adapters.ts"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-5d018de6aa7b0995", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in server/src/routes/plugin-ui-static.ts:475"}, "properties": {"repobilityId": "1d34947e4af0bff3", "scanner": "scanner-primary", "fingerprint": "5d018de6aa7b0995", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/routes/plugin-ui-static.ts"}, "region": {"startLine": 475}}}]}, {"ruleId": "scanner-dca6ecb238f726dd", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in pbn/scripts/pbn-writer-stub.mjs:16"}, "properties": {"repobilityId": "2990dccf2ba3175c", "scanner": "scanner-primary", "fingerprint": "dca6ecb238f726dd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pbn/scripts/pbn-writer-stub.mjs"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-48105ceb609d1b69", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in pbn/scripts/generate-post.mjs:12"}, "properties": {"repobilityId": "5f6aae4ae5d12743", "scanner": "scanner-primary", "fingerprint": "48105ceb609d1b69", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pbn/scripts/generate-post.mjs"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-7f6c2c4a608dc618", "level": "error", "message": {"text": "Possible secret in cli/src/commands/worktree.ts"}, "properties": {"repobilityId": "0f45acae6f4848af", "scanner": "scanner-primary", "fingerprint": "7f6c2c4a608dc618", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cli/src/commands/worktree.ts"}, "region": {"startLine": 1080}}}]}, {"ruleId": "scanner-5fecff02bf0c902c", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in cli/src/commands/worktree.ts:324"}, "properties": {"repobilityId": "714ac0cac6d5a9fc", "scanner": "scanner-primary", "fingerprint": "5fecff02bf0c902c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cli/src/commands/worktree.ts"}, "region": {"startLine": 324}}}]}, {"ruleId": "scanner-1eff18fa48477669", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in cli/src/commands/worktree.ts:17"}, "properties": {"repobilityId": "9adea89e8336e7ba", "scanner": "scanner-primary", "fingerprint": "1eff18fa48477669", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cli/src/commands/worktree.ts"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-48bd5b66d7126f1e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in cli/src/commands/run.ts:3"}, "properties": {"repobilityId": "e976b08ffc0d5627", "scanner": "scanner-primary", "fingerprint": "48bd5b66d7126f1e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cli/src/commands/run.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-ee012f7ff9ea4246", "level": "error", "message": {"text": "Possible secret in cli/src/commands/routines.ts"}, "properties": {"repobilityId": "4a66b8273a1aae4d", "scanner": "scanner-primary", "fingerprint": "ee012f7ff9ea4246", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cli/src/commands/routines.ts"}, "region": {"startLine": 137}}}]}, {"ruleId": "scanner-8a0ae01909d5a0fe", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in cli/src/client/board-auth.ts:1"}, "properties": {"repobilityId": "94ff39d5efc303d2", "scanner": "scanner-primary", "fingerprint": "8a0ae01909d5a0fe", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cli/src/client/board-auth.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f086587cf4276ccf", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in cli/src/config/server-bind.ts:1"}, "properties": {"repobilityId": "4de112f390c1d21c", "scanner": "scanner-primary", "fingerprint": "f086587cf4276ccf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cli/src/config/server-bind.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bc5851b986c116f4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in cli/src/__tests__/company-import-export-e2e.test.ts:1"}, "properties": {"repobilityId": "006f7334f31237d8", "scanner": "scanner-primary", "fingerprint": "bc5851b986c116f4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cli/src/__tests__/company-import-export-e2e.test.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-81a7fcf67ce81194", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in cli/src/__tests__/worktree.test.ts:4"}, "properties": {"repobilityId": "9aac99d1eba18648", "scanner": "scanner-primary", "fingerprint": "81a7fcf67ce81194", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cli/src/__tests__/worktree.test.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-e502d3b6022df81a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/App.test.tsx:97"}, "properties": {"repobilityId": "15df26eedc021bc8", "scanner": "scanner-primary", "fingerprint": "e502d3b6022df81a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/App.test.tsx"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-0a6766893e93644d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/context/ToastContext.test.tsx:20"}, "properties": {"repobilityId": "911d9c9fa69b6b3b", "scanner": "scanner-primary", "fingerprint": "0a6766893e93644d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/context/ToastContext.test.tsx"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-308743e2619bf2cb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/context/DialogContext.test.tsx:13"}, "properties": {"repobilityId": "4f33eb1f6b913d6c", "scanner": "scanner-primary", "fingerprint": "308743e2619bf2cb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/context/DialogContext.test.tsx"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-b8658ed4ba21b50f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/CompanySettingsSidebar.test.tsx:133"}, "properties": {"repobilityId": "bcfeea41644de82b", "scanner": "scanner-primary", "fingerprint": "b8658ed4ba21b50f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/CompanySettingsSidebar.test.tsx"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-33311f3e2f38b96e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/InlineEntitySelector.test.tsx:32"}, "properties": {"repobilityId": "3a70b58c09091ba6", "scanner": "scanner-primary", "fingerprint": "33311f3e2f38b96e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/InlineEntitySelector.test.tsx"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-ff88ef3b401f3dac", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/ActiveAgentsPanel.test.tsx:131"}, "properties": {"repobilityId": "bace40b08aad5815", "scanner": "scanner-primary", "fingerprint": "ff88ef3b401f3dac", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/ActiveAgentsPanel.test.tsx"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-aac4348362f1fe6f", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in ui/src/components/MarkdownBody.tsx:546"}, "properties": {"repobilityId": "89f0ff5e409f785f", "scanner": "scanner-primary", "fingerprint": "aac4348362f1fe6f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/MarkdownBody.tsx"}, "region": {"startLine": 546}}}]}, {"ruleId": "scanner-ed26bdf8071d170f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/IssueProperties.test.tsx:385"}, "properties": {"repobilityId": "2aab5085db5e2f38", "scanner": "scanner-primary", "fingerprint": "ed26bdf8071d170f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/IssueProperties.test.tsx"}, "region": {"startLine": 385}}}]}, {"ruleId": "scanner-12f792aa4413f411", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/InstanceSidebar.test.tsx:127"}, "properties": {"repobilityId": "7c4225a0a245bfc7", "scanner": "scanner-primary", "fingerprint": "12f792aa4413f411", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/InstanceSidebar.test.tsx"}, "region": {"startLine": 127}}}]}, {"ruleId": "scanner-8fd858417a468605", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/SidebarCompanyMenu.test.tsx:136"}, "properties": {"repobilityId": "e6c42b42f206ad76", "scanner": "scanner-primary", "fingerprint": "8fd858417a468605", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/SidebarCompanyMenu.test.tsx"}, "region": {"startLine": 136}}}]}, {"ruleId": "scanner-bd9a05cf4f695d21", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/SidebarAccountMenu.test.tsx:78"}, "properties": {"repobilityId": "2a288e6624c2781c", "scanner": "scanner-primary", "fingerprint": "bd9a05cf4f695d21", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/SidebarAccountMenu.test.tsx"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-9391230094c057c9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/NewIssueDialog.test.tsx:340"}, "properties": {"repobilityId": "f14b74089ce98da6", "scanner": "scanner-primary", "fingerprint": "9391230094c057c9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/NewIssueDialog.test.tsx"}, "region": {"startLine": 340}}}]}, {"ruleId": "scanner-42609278d4800d24", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/ProjectWorkspaceSummaryCard.test.tsx:105"}, "properties": {"repobilityId": "c48122b72811aea3", "scanner": "scanner-primary", "fingerprint": "42609278d4800d24", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/ProjectWorkspaceSummaryCard.test.tsx"}, "region": {"startLine": 105}}}]}, {"ruleId": "scanner-7e242313ef5c4ec7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/AgentActionButtons.test.tsx:123"}, "properties": {"repobilityId": "5ed7616fd44a8050", "scanner": "scanner-primary", "fingerprint": "7e242313ef5c4ec7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/AgentActionButtons.test.tsx"}, "region": {"startLine": 123}}}]}, {"ruleId": "scanner-5bfaa26b8b5f09b5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/MembershipAction.test.tsx:38"}, "properties": {"repobilityId": "5dcdeaafa8ae4300", "scanner": "scanner-primary", "fingerprint": "5bfaa26b8b5f09b5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/MembershipAction.test.tsx"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-484f1613d5a2c398", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/StandaloneBrowserControls.test.tsx:92"}, "properties": {"repobilityId": "b181a50583a6899f", "scanner": "scanner-primary", "fingerprint": "484f1613d5a2c398", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/StandaloneBrowserControls.test.tsx"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-dc1fe370ceaf9e67", "level": "error", "message": {"text": "Possible secret in ui/src/components/JsonSchemaForm.test.tsx"}, "properties": {"repobilityId": "cdd75173f0c9d573", "scanner": "scanner-primary", "fingerprint": "dc1fe370ceaf9e67", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/JsonSchemaForm.test.tsx"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-dc1fe370ceaf9e67", "level": "error", "message": {"text": "Possible secret in ui/src/components/JsonSchemaForm.test.tsx"}, "properties": {"repobilityId": "cdd75173f0c9d573", "scanner": "scanner-primary", "fingerprint": "dc1fe370ceaf9e67", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/JsonSchemaForm.test.tsx"}, "region": {"startLine": 158}}}]}, {"ruleId": "scanner-f54cf8b6421c142e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/JsonSchemaForm.test.tsx:49"}, "properties": {"repobilityId": "fcd05eb89ec2d5ca", "scanner": "scanner-primary", "fingerprint": "f54cf8b6421c142e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/JsonSchemaForm.test.tsx"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-ecd15f6bbfd9e36b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/KanbanBoard.test.tsx:101"}, "properties": {"repobilityId": "195caebaa38a87e5", "scanner": "scanner-primary", "fingerprint": "ecd15f6bbfd9e36b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/KanbanBoard.test.tsx"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-d9e6fc00abdc6365", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/SidebarSection.test.tsx:69"}, "properties": {"repobilityId": "3652710fdd2a3612", "scanner": "scanner-primary", "fingerprint": "d9e6fc00abdc6365", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/SidebarSection.test.tsx"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-037f06f3f6c8c69a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/Layout.test.tsx:243"}, "properties": {"repobilityId": "0e17177b1d085055", "scanner": "scanner-primary", "fingerprint": "037f06f3f6c8c69a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/Layout.test.tsx"}, "region": {"startLine": 243}}}]}, {"ruleId": "scanner-bcffeebcc342aaa6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/NewAgentDialog.test.tsx:132"}, "properties": {"repobilityId": "ea8da63fbb7cfbfa", "scanner": "scanner-primary", "fingerprint": "bcffeebcc342aaa6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/NewAgentDialog.test.tsx"}, "region": {"startLine": 132}}}]}, {"ruleId": "scanner-6f86b829d09c7206", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/RoutineRunVariablesDialog.test.tsx:183"}, "properties": {"repobilityId": "5bb3dd396a7edfa8", "scanner": "scanner-primary", "fingerprint": "6f86b829d09c7206", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/RoutineRunVariablesDialog.test.tsx"}, "region": {"startLine": 183}}}]}, {"ruleId": "scanner-5ae1d0acb1effee4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/Sidebar.test.tsx:132"}, "properties": {"repobilityId": "6817db716d928711", "scanner": "scanner-primary", "fingerprint": "5ae1d0acb1effee4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/Sidebar.test.tsx"}, "region": {"startLine": 132}}}]}, {"ruleId": "scanner-ba8e9bcec230edc2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/SidebarProjects.test.tsx:310"}, "properties": {"repobilityId": "d93b33e6122a937a", "scanner": "scanner-primary", "fingerprint": "ba8e9bcec230edc2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/SidebarProjects.test.tsx"}, "region": {"startLine": 310}}}]}, {"ruleId": "scanner-ab368afc32492e43", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/SidebarAgents.test.tsx:256"}, "properties": {"repobilityId": "80edd45e3aaf6c49", "scanner": "scanner-primary", "fingerprint": "ab368afc32492e43", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/SidebarAgents.test.tsx"}, "region": {"startLine": 256}}}]}, {"ruleId": "scanner-4938a8cc194ac080", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/WorkspaceRuntimeControls.test.tsx:261"}, "properties": {"repobilityId": "8b074bbdb5cf746e", "scanner": "scanner-primary", "fingerprint": "4938a8cc194ac080", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/WorkspaceRuntimeControls.test.tsx"}, "region": {"startLine": 261}}}]}, {"ruleId": "scanner-2409f49fb576de32", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/IssueFiltersPopover.test.tsx:52"}, "properties": {"repobilityId": "b9539429710238e5", "scanner": "scanner-primary", "fingerprint": "2409f49fb576de32", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/IssueFiltersPopover.test.tsx"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-0b296eeb0409104a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/components/access/CompanySettingsNav.test.tsx:62"}, "properties": {"repobilityId": "2071112fa26f4b4c", "scanner": "scanner-primary", "fingerprint": "0b296eeb0409104a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/components/access/CompanySettingsNav.test.tsx"}, "region": {"startLine": 62}}}]}, {"ruleId": "scanner-d62c3c741d2c825e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/Agents.test.tsx:196"}, "properties": {"repobilityId": "533c3963c827ed45", "scanner": "scanner-primary", "fingerprint": "d62c3c741d2c825e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/Agents.test.tsx"}, "region": {"startLine": 196}}}]}, {"ruleId": "scanner-e7539c74aceb5f1e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/CompanySettings.test.tsx:135"}, "properties": {"repobilityId": "c0bd88b625fffab1", "scanner": "scanner-primary", "fingerprint": "e7539c74aceb5f1e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/CompanySettings.test.tsx"}, "region": {"startLine": 135}}}]}, {"ruleId": "scanner-a3cb8d6b382b1c9a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/ProfileSettings.test.tsx:86"}, "properties": {"repobilityId": "26b0d3111b0cb7d9", "scanner": "scanner-primary", "fingerprint": "a3cb8d6b382b1c9a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/ProfileSettings.test.tsx"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-97e925d17e22b349", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/Auth.test.tsx:83"}, "properties": {"repobilityId": "9e06b56b12815eaf", "scanner": "scanner-primary", "fingerprint": "97e925d17e22b349", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/Auth.test.tsx"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-e952fa030d82aeaa", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/CloudUpstream.test.tsx:112"}, "properties": {"repobilityId": "f39369c762e70435", "scanner": "scanner-primary", "fingerprint": "e952fa030d82aeaa", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/CloudUpstream.test.tsx"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-cd7c710132dc9e04", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/TeamCatalog.test.tsx:236"}, "properties": {"repobilityId": "de7537d1981a5c37", "scanner": "scanner-primary", "fingerprint": "cd7c710132dc9e04", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/TeamCatalog.test.tsx"}, "region": {"startLine": 236}}}]}, {"ruleId": "scanner-bb4b1367c0cce340", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/OrgChart.test.tsx:188"}, "properties": {"repobilityId": "c443a966e8ecb1b5", "scanner": "scanner-primary", "fingerprint": "bb4b1367c0cce340", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/OrgChart.test.tsx"}, "region": {"startLine": 188}}}]}, {"ruleId": "scanner-9e6ade58f9922c09", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/PluginSettings.test.tsx:160"}, "properties": {"repobilityId": "cf8e2a4bceaa1a52", "scanner": "scanner-primary", "fingerprint": "9e6ade58f9922c09", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/PluginSettings.test.tsx"}, "region": {"startLine": 160}}}]}, {"ruleId": "scanner-07df5884d170625a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/PluginPage.test.tsx:122"}, "properties": {"repobilityId": "aca62647f70851c3", "scanner": "scanner-primary", "fingerprint": "07df5884d170625a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/PluginPage.test.tsx"}, "region": {"startLine": 122}}}]}, {"ruleId": "scanner-e3f2ad8209080cd9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/useInstallTeamCatalogEntry.test.tsx:83"}, "properties": {"repobilityId": "ab6f6b3d3a581f59", "scanner": "scanner-primary", "fingerprint": "e3f2ad8209080cd9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/useInstallTeamCatalogEntry.test.tsx"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-b82108412898ebab", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/IssueDetail.test.tsx:948"}, "properties": {"repobilityId": "f59ec6330df14ff2", "scanner": "scanner-primary", "fingerprint": "b82108412898ebab", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/IssueDetail.test.tsx"}, "region": {"startLine": 948}}}]}, {"ruleId": "scanner-41316e8e2d2082da", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/TeamCard.test.tsx:30"}, "properties": {"repobilityId": "24b3f923de47b0f6", "scanner": "scanner-primary", "fingerprint": "41316e8e2d2082da", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/TeamCard.test.tsx"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-70e20437f99dd86a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/Secrets.render.test.tsx:241"}, "properties": {"repobilityId": "ddf5ead7151ee616", "scanner": "scanner-primary", "fingerprint": "70e20437f99dd86a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/Secrets.render.test.tsx"}, "region": {"startLine": 241}}}]}, {"ruleId": "scanner-50ccd61e3a734156", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/ProjectWorkspaceDetail.test.tsx:332"}, "properties": {"repobilityId": "61245c4153d3ac18", "scanner": "scanner-primary", "fingerprint": "50ccd61e3a734156", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/ProjectWorkspaceDetail.test.tsx"}, "region": {"startLine": 332}}}]}, {"ruleId": "scanner-932b98fc7c133876", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/InviteUxLab.test.tsx:27"}, "properties": {"repobilityId": "f2f73852c392bb38", "scanner": "scanner-primary", "fingerprint": "932b98fc7c133876", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/InviteUxLab.test.tsx"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-670db9767a297ee3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/CompanyInvites.test.tsx:117"}, "properties": {"repobilityId": "8af59e1a0b7e4747", "scanner": "scanner-primary", "fingerprint": "670db9767a297ee3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/CompanyInvites.test.tsx"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-813397ac2ea0d526", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/Routines.test.tsx:343"}, "properties": {"repobilityId": "ef3b60e304986579", "scanner": "scanner-primary", "fingerprint": "813397ac2ea0d526", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/Routines.test.tsx"}, "region": {"startLine": 343}}}]}, {"ruleId": "scanner-d34cc93b030e5d51", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/InviteLanding.test.tsx:128"}, "properties": {"repobilityId": "e0fa8b0b02f8a1b6", "scanner": "scanner-primary", "fingerprint": "d34cc93b030e5d51", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/InviteLanding.test.tsx"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-a56fa7c4ce570dc4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/CompanyAccess.test.tsx:190"}, "properties": {"repobilityId": "49565a52a803fd99", "scanner": "scanner-primary", "fingerprint": "a56fa7c4ce570dc4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/CompanyAccess.test.tsx"}, "region": {"startLine": 190}}}]}, {"ruleId": "scanner-b28fa9218dac125d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/CompanySettingsPluginPage.test.tsx:106"}, "properties": {"repobilityId": "546d67ca3f1b2819", "scanner": "scanner-primary", "fingerprint": "b28fa9218dac125d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/CompanySettingsPluginPage.test.tsx"}, "region": {"startLine": 106}}}]}, {"ruleId": "scanner-60544b34fe96f605", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/Projects.test.tsx:167"}, "properties": {"repobilityId": "a1dad95d5818ce75", "scanner": "scanner-primary", "fingerprint": "60544b34fe96f605", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/Projects.test.tsx"}, "region": {"startLine": 167}}}]}, {"ruleId": "scanner-488ef5caaf431115", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/IssueDetail.tsx:3018"}, "properties": {"repobilityId": "8d004860fae0b937", "scanner": "scanner-primary", "fingerprint": "488ef5caaf431115", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/IssueDetail.tsx"}, "region": {"startLine": 3018}}}]}, {"ruleId": "scanner-a47b10a4c9ae941c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/pages/secrets/ImportFromVaultDialog.test.tsx:118"}, "properties": {"repobilityId": "c33eb76203344212", "scanner": "scanner-primary", "fingerprint": "a47b10a4c9ae941c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/pages/secrets/ImportFromVaultDialog.test.tsx"}, "region": {"startLine": 118}}}]}, {"ruleId": "scanner-38a9039f1330db46", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/lib/main-content-focus.test.ts:14"}, "properties": {"repobilityId": "61928202ce9b8a3f", "scanner": "scanner-primary", "fingerprint": "38a9039f1330db46", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/lib/main-content-focus.test.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-16f119f22b9d970c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/lib/keyboardShortcuts.test.ts:19"}, "properties": {"repobilityId": "023b9e7f6cbba87c", "scanner": "scanner-primary", "fingerprint": "16f119f22b9d970c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/lib/keyboardShortcuts.test.ts"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-e4442ba86879c392", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ui/src/lib/document-annotation-selection.test.ts:36"}, "properties": {"repobilityId": "f4856559270b63bf", "scanner": "scanner-primary", "fingerprint": "e4442ba86879c392", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/lib/document-annotation-selection.test.ts"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-7f0f9976570faa6d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "25f3dc5fa7946c3a", "scanner": "scanner-primary", "fingerprint": "7f0f9976570faa6d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-7f0f9976570faa6d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "144f516496668fb7", "scanner": "scanner-primary", "fingerprint": "7f0f9976570faa6d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-7f0f9976570faa6d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d1fcccb3da818454", "scanner": "scanner-primary", "fingerprint": "7f0f9976570faa6d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-7f0f9976570faa6d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ba2f9c341e13ca52", "scanner": "scanner-primary", "fingerprint": "7f0f9976570faa6d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-7f0f9976570faa6d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2d714eaacdb9a135", "scanner": "scanner-primary", "fingerprint": "7f0f9976570faa6d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-68a2b8f5c8cd6b53", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "0036b33690fe05ae", "scanner": "scanner-primary", "fingerprint": "68a2b8f5c8cd6b53", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-efed3422adddb107", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4282d3f78e35171c", "scanner": "scanner-primary", "fingerprint": "efed3422adddb107", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-smoke.yml"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-efed3422adddb107", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9918dee1c4ecfcdc", "scanner": "scanner-primary", "fingerprint": "efed3422adddb107", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-smoke.yml"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-efed3422adddb107", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "143c077e5edcdeae", "scanner": "scanner-primary", "fingerprint": "efed3422adddb107", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-smoke.yml"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-efed3422adddb107", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f5b29120ddcfb854", "scanner": "scanner-primary", "fingerprint": "efed3422adddb107", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-smoke.yml"}, "region": {"startLine": 106}}}]}, {"ruleId": "scanner-ad68512e70961fa7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae3287c4f6d0017d", "scanner": "scanner-primary", "fingerprint": "ad68512e70961fa7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/refresh-lockfile.yml"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-ad68512e70961fa7", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e1abf60cae4f61b6", "scanner": "scanner-primary", "fingerprint": "ad68512e70961fa7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/refresh-lockfile.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-ad68512e70961fa7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5d3a13e81d17cf7b", "scanner": "scanner-primary", "fingerprint": "ad68512e70961fa7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/refresh-lockfile.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-6c8b928d59fa733f", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b8d6bed315c17560", "scanner": "scanner-primary", "fingerprint": "6c8b928d59fa733f", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/refresh-lockfile.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f57bdd766cc7e40e", "level": "error", "message": {"text": "pull_request_target workflow appears to check out untrusted PR code"}, "properties": {"repobilityId": "87511b34d704b719", "scanner": "scanner-primary", "fingerprint": "f57bdd766cc7e40e", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pull-request-target"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/commitperclip-review.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "04f6c832d67a7838", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9dfacdabb01880ef", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b28f2eb9ce3eea56", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "04f6c832d67a7838", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9dfacdabb01880ef", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b28f2eb9ce3eea56", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "04f6c832d67a7838", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 132}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9dfacdabb01880ef", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 138}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b28f2eb9ce3eea56", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 143}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "04f6c832d67a7838", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 173}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9dfacdabb01880ef", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 179}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b28f2eb9ce3eea56", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 184}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "04f6c832d67a7838", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 217}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9dfacdabb01880ef", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 223}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b28f2eb9ce3eea56", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 228}}}]}, {"ruleId": "scanner-1838a141491ce38c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b8fd4f5048f96576", "scanner": "scanner-primary", "fingerprint": "1838a141491ce38c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3c97f690a47a6129", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fe2660a33cddbb95", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "998846cb520bceba", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ea94ab637fb20a99", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3c97f690a47a6129", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fe2660a33cddbb95", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 103}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7fce599f28e27068", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 108}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "998846cb520bceba", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3c97f690a47a6129", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 147}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fe2660a33cddbb95", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 150}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7fce599f28e27068", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 155}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "998846cb520bceba", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 162}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3c97f690a47a6129", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 200}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fe2660a33cddbb95", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 203}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7fce599f28e27068", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 208}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "998846cb520bceba", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 215}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3c97f690a47a6129", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 250}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fe2660a33cddbb95", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 253}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7fce599f28e27068", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 258}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "998846cb520bceba", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 265}}}]}, {"ruleId": "scanner-b5352a803cc6302e", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "98aaea82045d7ced", "scanner": "scanner-primary", "fingerprint": "b5352a803cc6302e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/sandbox-providers/e2b/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fc31c4952eb9d233", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "62dcb6a15f8b6638", "scanner": "scanner-primary", "fingerprint": "fc31c4952eb9d233", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/sandbox-providers/exe-dev/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c8d19776a46ce14b", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "3048acd93003637c", "scanner": "scanner-primary", "fingerprint": "c8d19776a46ce14b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/sandbox-providers/cloudflare/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-67aba4a33436e220", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "62fc2057d0522dee", "scanner": "scanner-primary", "fingerprint": "67aba4a33436e220", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/sandbox-providers/daytona/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d5fb6e4ce68a1283", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "a647e5d20fe071f5", "scanner": "scanner-primary", "fingerprint": "d5fb6e4ce68a1283", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/sandbox-providers/modal/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2401fef190a45de4", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "77cf8486f282168f", "scanner": "scanner-primary", "fingerprint": "2401fef190a45de4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/plugin-workspace-diff/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ab2a88c4a0c0c7b1", "level": "note", "message": {"text": "Very large file: packages/plugins/examples/plugin-kitchen-sink-example/src/ui/index.tsx (2475 lines)"}, "properties": {"repobilityId": "2b5a4883a97ea40e", "scanner": "scanner-primary", "fingerprint": "ab2a88c4a0c0c7b1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c3e8daf1e1645378", "level": "note", "message": {"text": "Very large file: packages/plugins/plugin-llm-wiki/tests/plugin.spec.ts (3747 lines)"}, "properties": {"repobilityId": "6dbd50d873070594", "scanner": "scanner-primary", "fingerprint": "c3e8daf1e1645378", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-37fa7997d5ea97b7", "level": "note", "message": {"text": "Very large file: packages/plugins/plugin-llm-wiki/src/wiki/core.ts (4980 lines)"}, "properties": {"repobilityId": "d93b4b1370ee989a", "scanner": "scanner-primary", "fingerprint": "37fa7997d5ea97b7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b8e0ffdaa609dc7d", "level": "note", "message": {"text": "Very large file: packages/plugins/plugin-llm-wiki/src/ui/app.tsx (7125 lines)"}, "properties": {"repobilityId": "fa278e215538774f", "scanner": "scanner-primary", "fingerprint": "b8e0ffdaa609dc7d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1311c35bde48c8cd", "level": "note", "message": {"text": "Very large file: packages/plugins/sdk/src/worker-rpc-host.ts (1858 lines)"}, "properties": {"repobilityId": "8f9c30bc1830b908", "scanner": "scanner-primary", "fingerprint": "1311c35bde48c8cd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-82c7d68e4ef26486", "level": "note", "message": {"text": "Very large file: packages/plugins/sdk/src/types.ts (1932 lines)"}, "properties": {"repobilityId": "7716c4f31fc5a4a0", "scanner": "scanner-primary", "fingerprint": "82c7d68e4ef26486", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5c3f122973bb8601", "level": "note", "message": {"text": "Very large file: packages/plugins/sdk/src/testing.ts (2493 lines)"}, "properties": {"repobilityId": "50fee897b074e3e7", "scanner": "scanner-primary", "fingerprint": "5c3f122973bb8601", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7b90a004f56f126e", "level": "note", "message": {"text": "Very large file: packages/adapters/acpx-local/src/server/execute.ts (1731 lines)"}, "properties": {"repobilityId": "9a202257077e40ef", "scanner": "scanner-primary", "fingerprint": "7b90a004f56f126e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2776d693452fb6a5", "level": "note", "message": {"text": "Very large file: packages/adapters/openclaw-gateway/src/server/execute.ts (1507 lines)"}, "properties": {"repobilityId": "1a930e748b395a25", "scanner": "scanner-primary", "fingerprint": "2776d693452fb6a5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bf8d01280fd429da", "level": "note", "message": {"text": "Very large file: packages/adapter-utils/src/server-utils.ts (2286 lines)"}, "properties": {"repobilityId": "8c70d18446e2e9dc", "scanner": "scanner-primary", "fingerprint": "bf8d01280fd429da", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a967bb4cadb4ed10", "level": "note", "message": {"text": "Very large file: server/src/services/secrets.ts (2332 lines)"}, "properties": {"repobilityId": "4cc9979f1c1cf24a", "scanner": "scanner-primary", "fingerprint": "a967bb4cadb4ed10", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-51006c8b225806fa", "level": "note", "message": {"text": "Very large file: server/src/services/feedback.ts (2117 lines)"}, "properties": {"repobilityId": "a4f1f57016cdd81c", "scanner": "scanner-primary", "fingerprint": "51006c8b225806fa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cdf508eb6bbaa9de", "level": "note", "message": {"text": "Very large file: server/src/services/workspace-runtime.ts (3132 lines)"}, "properties": {"repobilityId": "fa4d80765a4c6350", "scanner": "scanner-primary", "fingerprint": "cdf508eb6bbaa9de", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-60e5ceda43dd5f13", "level": "note", "message": {"text": "Very large file: server/src/services/issue-thread-interactions.ts (1453 lines)"}, "properties": {"repobilityId": "5ad3e83b065d3af3", "scanner": "scanner-primary", "fingerprint": "60e5ceda43dd5f13", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d87bc2db995f711e", "level": "note", "message": {"text": "Very large file: server/src/services/routines.ts (2478 lines)"}, "properties": {"repobilityId": "abbe3331908525b1", "scanner": "scanner-primary", "fingerprint": "d87bc2db995f711e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-25d85a74899acef7", "level": "note", "message": {"text": "Very large file: server/src/services/company-portability.ts (4992 lines)"}, "properties": {"repobilityId": "b832c3cdb8093af3", "scanner": "scanner-primary", "fingerprint": "25d85a74899acef7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5ba965f56b05987a", "level": "note", "message": {"text": "Very large file: server/src/services/issues.ts (6261 lines)"}, "properties": {"repobilityId": "18c0c569fd9925a5", "scanner": "scanner-primary", "fingerprint": "5ba965f56b05987a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-16dcc50b1c4523a1", "level": "note", "message": {"text": "Very large file: server/src/services/plugin-host-services.ts (2745 lines)"}, "properties": {"repobilityId": "03288ebfb52c3f36", "scanner": "scanner-primary", "fingerprint": "16dcc50b1c4523a1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a32bbc11da068483", "level": "note", "message": {"text": "Very large file: server/src/services/company-skills.ts (3524 lines)"}, "properties": {"repobilityId": "97082671f597e4d9", "scanner": "scanner-primary", "fingerprint": "a32bbc11da068483", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ba7c6765d73b2518", "level": "note", "message": {"text": "Very large file: server/src/services/heartbeat.ts (11151 lines)"}, "properties": {"repobilityId": "e92a241c2d4f3675", "scanner": "scanner-primary", "fingerprint": "ba7c6765d73b2518", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ad8a319147895e2a", "level": "note", "message": {"text": "Very large file: server/src/services/plugin-loader.ts (2094 lines)"}, "properties": {"repobilityId": "b6f7cd745265e3bf", "scanner": "scanner-primary", "fingerprint": "ad8a319147895e2a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c259710aa388b9b3", "level": "note", "message": {"text": "Very large file: server/src/services/recovery/service.ts (3618 lines)"}, "properties": {"repobilityId": "75decc2f9e3d64dc", "scanner": "scanner-primary", "fingerprint": "c259710aa388b9b3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6c28720d2ef71f02", "level": "note", "message": {"text": "Very large file: server/src/__tests__/issue-comment-reopen-routes.test.ts (1576 lines)"}, "properties": {"repobilityId": "b80f0a2cbadd086f", "scanner": "scanner-primary", "fingerprint": "6c28720d2ef71f02", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b46d24755a9daab0", "level": "note", "message": {"text": "Very large file: server/src/__tests__/company-portability.test.ts (3721 lines)"}, "properties": {"repobilityId": "8e1477f476fbef6b", "scanner": "scanner-primary", "fingerprint": "b46d24755a9daab0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-407cf0c10a40715f", "level": "note", "message": {"text": "Very large file: server/src/__tests__/heartbeat-comment-wake-batching.test.ts (1662 lines)"}, "properties": {"repobilityId": "bdee8391d83caeba", "scanner": "scanner-primary", "fingerprint": "407cf0c10a40715f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4d8ed042e4801b03", "level": "note", "message": {"text": "Very large file: server/src/__tests__/issues-service.test.ts (4537 lines)"}, "properties": {"repobilityId": "837cdb42cabcd365", "scanner": "scanner-primary", "fingerprint": "4d8ed042e4801b03", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e7ded54678ebb0aa", "level": "note", "message": {"text": "Very large file: server/src/__tests__/routines-service.test.ts (1674 lines)"}, "properties": {"repobilityId": "a2b22778527b660f", "scanner": "scanner-primary", "fingerprint": "e7ded54678ebb0aa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b84c65ef12b92caf", "level": "note", "message": {"text": "Very large file: server/src/__tests__/heartbeat-process-recovery.test.ts (3345 lines)"}, "properties": {"repobilityId": "118d631e7b80da9c", "scanner": "scanner-primary", "fingerprint": "b84c65ef12b92caf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-37823f1137f553a8", "level": "note", "message": {"text": "Very large file: server/src/__tests__/secrets-service.test.ts (1956 lines)"}, "properties": {"repobilityId": "d612bed7314ff77e", "scanner": "scanner-primary", "fingerprint": "37823f1137f553a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-228feda790eaa0f9", "level": "note", "message": {"text": "Very large file: server/src/__tests__/workspace-runtime.test.ts (3484 lines)"}, "properties": {"repobilityId": "b9e1369d1eb3f561", "scanner": "scanner-primary", "fingerprint": "228feda790eaa0f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-276d62e6e7459bd9", "level": "note", "message": {"text": "Very large file: server/src/routes/agents.ts (3646 lines)"}, "properties": {"repobilityId": "0338fb295785c1de", "scanner": "scanner-primary", "fingerprint": "276d62e6e7459bd9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ad89e69d8cdc45d1", "level": "note", "message": {"text": "Very large file: server/src/routes/openapi.ts (4401 lines)"}, "properties": {"repobilityId": "6d2ac1ed444b5ac9", "scanner": "scanner-primary", "fingerprint": "ad89e69d8cdc45d1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2ae1c44e18492640", "level": "note", "message": {"text": "Very large file: server/src/routes/issues.ts (7068 lines)"}, "properties": {"repobilityId": "04f33d33fc900e44", "scanner": "scanner-primary", "fingerprint": "2ae1c44e18492640", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a20cf17779ed89a2", "level": "note", "message": {"text": "Very large file: server/src/routes/access.ts (4625 lines)"}, "properties": {"repobilityId": "3c9c096858294f99", "scanner": "scanner-primary", "fingerprint": "a20cf17779ed89a2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fcc8d6662c3f535b", "level": "note", "message": {"text": "Very large file: server/src/routes/plugins.ts (2965 lines)"}, "properties": {"repobilityId": "5c9052d8e25b89c7", "scanner": "scanner-primary", "fingerprint": "fcc8d6662c3f535b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a21348a961c67189", "level": "note", "message": {"text": "Very large file: cli/src/commands/worktree.ts (3369 lines)"}, "properties": {"repobilityId": "ebaf2cb0c83d4e4f", "scanner": "scanner-primary", "fingerprint": "a21348a961c67189", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bb6fcf562b8e709a", "level": "note", "message": {"text": "Very large file: cli/src/commands/client/company.ts (1780 lines)"}, "properties": {"repobilityId": "997dd85bec5d6047", "scanner": "scanner-primary", "fingerprint": "bb6fcf562b8e709a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7c56b55f867d235b", "level": "note", "message": {"text": "Very large file: cli/src/commands/client/issue.ts (1450 lines)"}, "properties": {"repobilityId": "c9d6ad83bbaa1d80", "scanner": "scanner-primary", "fingerprint": "7c56b55f867d235b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4deb04e8c84ee452", "level": "note", "message": {"text": "Very large file: cli/src/__tests__/worktree.test.ts (1390 lines)"}, "properties": {"repobilityId": "47856c19224fac6f", "scanner": "scanner-primary", "fingerprint": "4deb04e8c84ee452", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f638a4dfd4b4c973", "level": "note", "message": {"text": "Very large file: doc/plans/2026-05-23-cli-api-parity-openapi-reference.ts (3585 lines)"}, "properties": {"repobilityId": "8f42d966a0bc5b19", "scanner": "scanner-primary", "fingerprint": "f638a4dfd4b4c973", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f2f5db2da162e0d3", "level": "note", "message": {"text": "Very large file: ui/src/components/IssueChatThread.tsx (4546 lines)"}, "properties": {"repobilityId": "9eaa06f6fd9bd320", "scanner": "scanner-primary", "fingerprint": "f2f5db2da162e0d3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9c78393cc1ea0bc1", "level": "note", "message": {"text": "Very large file: ui/src/components/IssueChatThread.test.tsx (2941 lines)"}, "properties": {"repobilityId": "093c7780d25399e4", "scanner": "scanner-primary", "fingerprint": "9c78393cc1ea0bc1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-442ca6d437c6b095", "level": "note", "message": {"text": "Very large file: ui/src/components/NewIssueDialog.tsx (2090 lines)"}, "properties": {"repobilityId": "4afa834addd9fd75", "scanner": "scanner-primary", "fingerprint": "442ca6d437c6b095", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b2307b6effb5d4c4", "level": "note", "message": {"text": "Very large file: ui/src/components/IssueThreadInteractionCard.tsx (1880 lines)"}, "properties": {"repobilityId": "b58658b6ad68b710", "scanner": "scanner-primary", "fingerprint": "b2307b6effb5d4c4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4e5dd922a70972ad", "level": "note", "message": {"text": "Very large file: ui/src/components/IssueProperties.tsx (2112 lines)"}, "properties": {"repobilityId": "3dcf38806ea7282c", "scanner": "scanner-primary", "fingerprint": "4e5dd922a70972ad", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5be71ef1dde80634", "level": "note", "message": {"text": "Very large file: ui/src/components/IssueDocumentsSection.tsx (1351 lines)"}, "properties": {"repobilityId": "9820526364375329", "scanner": "scanner-primary", "fingerprint": "5be71ef1dde80634", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b3aa97362636bf5b", "level": "note", "message": {"text": "Very large file: ui/src/components/OnboardingWizard.tsx (1327 lines)"}, "properties": {"repobilityId": "0714fd2da3bfc3be", "scanner": "scanner-primary", "fingerprint": "b3aa97362636bf5b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6059f4a2763aaf28", "level": "note", "message": {"text": "Very large file: ui/src/components/AgentConfigForm.tsx (1844 lines)"}, "properties": {"repobilityId": "3a71489d248c6632", "scanner": "scanner-primary", "fingerprint": "6059f4a2763aaf28", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5ce4fd551b698539", "level": "note", "message": {"text": "Very large file: ui/src/components/IssuesList.tsx (1973 lines)"}, "properties": {"repobilityId": "2fcdb76823fba3c1", "scanner": "scanner-primary", "fingerprint": "5ce4fd551b698539", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ed9cbfe88ef9f475", "level": "note", "message": {"text": "Very large file: ui/src/components/IssuesList.test.tsx (1753 lines)"}, "properties": {"repobilityId": "ecbf4e3bd2660286", "scanner": "scanner-primary", "fingerprint": "ed9cbfe88ef9f475", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-54e2217fc09a55d3", "level": "note", "message": {"text": "Very large file: ui/src/components/transcript/RunTranscriptView.tsx (1526 lines)"}, "properties": {"repobilityId": "3cc74aa0c26e283e", "scanner": "scanner-primary", "fingerprint": "54e2217fc09a55d3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8c93149dd16cba86", "level": "note", "message": {"text": "Very large file: ui/src/pages/IssueDetail.test.tsx (1962 lines)"}, "properties": {"repobilityId": "6ff2739dd99369e3", "scanner": "scanner-primary", "fingerprint": "8c93149dd16cba86", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ee24bfa547e95aa8", "level": "note", "message": {"text": "Very large file: ui/src/pages/RoutineDetail.tsx (1358 lines)"}, "properties": {"repobilityId": "d2e7f4975cc0f729", "scanner": "scanner-primary", "fingerprint": "ee24bfa547e95aa8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a35a05cb22b360fe", "level": "note", "message": {"text": "Very large file: ui/src/pages/AgentDetail.tsx (4333 lines)"}, "properties": {"repobilityId": "957e093e4735b897", "scanner": "scanner-primary", "fingerprint": "a35a05cb22b360fe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-10681d89f5bc9a81", "level": "note", "message": {"text": "Very large file: ui/src/pages/DesignGuide.tsx (1623 lines)"}, "properties": {"repobilityId": "62e2535b8d3af0f6", "scanner": "scanner-primary", "fingerprint": "10681d89f5bc9a81", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b1a59c97ddc67ed0", "level": "note", "message": {"text": "Very large file: ui/src/pages/Secrets.tsx (2444 lines)"}, "properties": {"repobilityId": "fcc5b3240eb6c8fe", "scanner": "scanner-primary", "fingerprint": "b1a59c97ddc67ed0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bd247b7a04d57fef", "level": "note", "message": {"text": "Very large file: ui/src/pages/Inbox.tsx (2769 lines)"}, "properties": {"repobilityId": "f2393304e1fe0492", "scanner": "scanner-primary", "fingerprint": "bd247b7a04d57fef", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7bb27a345bc75d54", "level": "note", "message": {"text": "Very large file: ui/src/pages/CompanyImport.tsx (1356 lines)"}, "properties": {"repobilityId": "076715ba8ef06b9b", "scanner": "scanner-primary", "fingerprint": "7bb27a345bc75d54", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6b0d7abf53937358", "level": "note", "message": {"text": "Very large file: ui/src/pages/CompanySkills.tsx (2620 lines)"}, "properties": {"repobilityId": "87e7b6534cd8cebc", "scanner": "scanner-primary", "fingerprint": "6b0d7abf53937358", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-50c1c7a36618a742", "level": "note", "message": {"text": "Very large file: ui/src/pages/ExecutionWorkspaceDetail.tsx (1253 lines)"}, "properties": {"repobilityId": "a2da16e83cee97b7", "scanner": "scanner-primary", "fingerprint": "50c1c7a36618a742", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b800fdaa45b3da7d", "level": "note", "message": {"text": "Very large file: ui/src/pages/TeamCatalog.tsx (2536 lines)"}, "properties": {"repobilityId": "89be06e5337b28cc", "scanner": "scanner-primary", "fingerprint": "b800fdaa45b3da7d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0fa9adb66c3974c1", "level": "note", "message": {"text": "Very large file: ui/src/pages/IssueDetail.tsx (4320 lines)"}, "properties": {"repobilityId": "8bc7fdf2e6498839", "scanner": "scanner-primary", "fingerprint": "0fa9adb66c3974c1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-49b22dc66a0101c1", "level": "note", "message": {"text": "Very large file: ui/src/pages/secrets/ImportFromVaultDialog.tsx (1477 lines)"}, "properties": {"repobilityId": "d371970a8db28432", "scanner": "scanner-primary", "fingerprint": "49b22dc66a0101c1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6a8e9937e2e7e04e", "level": "note", "message": {"text": "Very large file: ui/storybook/fixtures/paperclipData.ts (1639 lines)"}, "properties": {"repobilityId": "7492bf0bff1e9228", "scanner": "scanner-primary", "fingerprint": "6a8e9937e2e7e04e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c1c50b392d6630c3", "level": "note", "message": {"text": "46 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "c1c50b392d6630c3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-c23c5652bd37b6de", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/create-paperclip-plugin/package.json"}, "properties": {"repobilityId": "1f87ef65f9750ff0", "scanner": "scanner-primary", "fingerprint": "c23c5652bd37b6de", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/create-paperclip-plugin/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cf5f6d9b94d66d94", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/sandbox-providers/e2b/package.json"}, "properties": {"repobilityId": "dd3b5c55d9834097", "scanner": "scanner-primary", "fingerprint": "cf5f6d9b94d66d94", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/sandbox-providers/e2b/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d9460afac01373f7", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/sandbox-providers/exe-dev/package.json"}, "properties": {"repobilityId": "7298b0f5a7480af8", "scanner": "scanner-primary", "fingerprint": "d9460afac01373f7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/sandbox-providers/exe-dev/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-77f139406166ddd6", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/sandbox-providers/cloudflare/package.json"}, "properties": {"repobilityId": "502f82eec39f8a09", "scanner": "scanner-primary", "fingerprint": "77f139406166ddd6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/sandbox-providers/cloudflare/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b6d51f04fde91b9a", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/sandbox-providers/cloudflare/bridge-template/package.json"}, "properties": {"repobilityId": "14c2b0dfaaa2913a", "scanner": "scanner-primary", "fingerprint": "b6d51f04fde91b9a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/sandbox-providers/cloudflare/bridge-template/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a82bd1da6a333aaf", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/sandbox-providers/daytona/package.json"}, "properties": {"repobilityId": "b19bb10a6fedc6cb", "scanner": "scanner-primary", "fingerprint": "a82bd1da6a333aaf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/sandbox-providers/daytona/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ee800c1173c0d684", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/sandbox-providers/modal/package.json"}, "properties": {"repobilityId": "5dcfb0d3ac823c0e", "scanner": "scanner-primary", "fingerprint": "ee800c1173c0d684", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/sandbox-providers/modal/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a33ebf2456fd9aee", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/examples/plugin-hello-world-example/package.json"}, "properties": {"repobilityId": "cc7c9e71c9a10f75", "scanner": "scanner-primary", "fingerprint": "a33ebf2456fd9aee", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/examples/plugin-hello-world-example/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-89e7e93a9c5e799d", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/examples/plugin-kitchen-sink-example/package.json"}, "properties": {"repobilityId": "808d02dc247b7f6b", "scanner": "scanner-primary", "fingerprint": "89e7e93a9c5e799d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/examples/plugin-kitchen-sink-example/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b3c1406325b1134f", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/examples/plugin-file-browser-example/package.json"}, "properties": {"repobilityId": "7cb84d23bf001ecf", "scanner": "scanner-primary", "fingerprint": "b3c1406325b1134f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/examples/plugin-file-browser-example/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5761eb1f4d55dc21", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/examples/plugin-orchestration-smoke-example/package.json"}, "properties": {"repobilityId": "4515af0c9a30de42", "scanner": "scanner-primary", "fingerprint": "5761eb1f4d55dc21", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/examples/plugin-orchestration-smoke-example/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d4f3b289a4cc0bef", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/examples/plugin-authoring-smoke-example/package.json"}, "properties": {"repobilityId": "043b9d30368b4c86", "scanner": "scanner-primary", "fingerprint": "d4f3b289a4cc0bef", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/examples/plugin-authoring-smoke-example/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b9d852e4db53cf6d", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/plugin-llm-wiki/package.json"}, "properties": {"repobilityId": "b808bc1df6ad43fa", "scanner": "scanner-primary", "fingerprint": "b9d852e4db53cf6d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/plugin-llm-wiki/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7011a40665334182", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/paperclip-plugin-fake-sandbox/package.json"}, "properties": {"repobilityId": "7dcc0c42e6d9cd29", "scanner": "scanner-primary", "fingerprint": "7011a40665334182", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/paperclip-plugin-fake-sandbox/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5f5be5e5080ce69a", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/plugin-workspace-diff/package.json"}, "properties": {"repobilityId": "b93957f44fef1fc8", "scanner": "scanner-primary", "fingerprint": "5f5be5e5080ce69a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/plugin-workspace-diff/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7f86d6cfb48f8aad", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/plugins/sdk/package.json"}, "properties": {"repobilityId": "a4a66e2834b99b83", "scanner": "scanner-primary", "fingerprint": "7f86d6cfb48f8aad", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/plugins/sdk/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b348fdb5854fe1e2", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/adapters/cursor-local/package.json"}, "properties": {"repobilityId": "6528163cf21ecef2", "scanner": "scanner-primary", "fingerprint": "b348fdb5854fe1e2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapters/cursor-local/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d839c442d06448dd", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/adapters/claude-local/package.json"}, "properties": {"repobilityId": "e8ac7f3b58cc0f07", "scanner": "scanner-primary", "fingerprint": "d839c442d06448dd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapters/claude-local/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3e2ad63680d8c5f8", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/adapters/gemini-local/package.json"}, "properties": {"repobilityId": "9985f5a92b041969", "scanner": "scanner-primary", "fingerprint": "3e2ad63680d8c5f8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapters/gemini-local/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7371ef72e2acdc41", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/adapters/cursor-cloud/package.json"}, "properties": {"repobilityId": "61fbfd8b37e87335", "scanner": "scanner-primary", "fingerprint": "7371ef72e2acdc41", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapters/cursor-cloud/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0a74dc5a94e1de28", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/adapters/grok-local/package.json"}, "properties": {"repobilityId": "8745610223cd659b", "scanner": "scanner-primary", "fingerprint": "0a74dc5a94e1de28", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapters/grok-local/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a8a5b5df41e22858", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/adapters/pi-local/package.json"}, "properties": {"repobilityId": "79d57d5f5504b14e", "scanner": "scanner-primary", "fingerprint": "a8a5b5df41e22858", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapters/pi-local/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-be0658149fde12ab", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/adapters/codex-local/package.json"}, "properties": {"repobilityId": "19493718313ee306", "scanner": "scanner-primary", "fingerprint": "be0658149fde12ab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapters/codex-local/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8ac04a97e650d782", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/adapters/opencode-local/package.json"}, "properties": {"repobilityId": "216869abc297fadf", "scanner": "scanner-primary", "fingerprint": "8ac04a97e650d782", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapters/opencode-local/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dcf089bbea56d3c6", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/adapters/acpx-local/package.json"}, "properties": {"repobilityId": "c8b566ae17ae411c", "scanner": "scanner-primary", "fingerprint": "dcf089bbea56d3c6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapters/acpx-local/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0237f9c8a095a24b", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/adapters/openclaw-gateway/package.json"}, "properties": {"repobilityId": "a80ba827b4509ca1", "scanner": "scanner-primary", "fingerprint": "0237f9c8a095a24b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapters/openclaw-gateway/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7635d21ff1769683", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/teams-catalog/package.json"}, "properties": {"repobilityId": "7a5aba241c62ce28", "scanner": "scanner-primary", "fingerprint": "7635d21ff1769683", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/teams-catalog/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3f187671ee4d3cce", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/skills-catalog/package.json"}, "properties": {"repobilityId": "d543125309b31174", "scanner": "scanner-primary", "fingerprint": "3f187671ee4d3cce", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/skills-catalog/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7b16ae2bd0fca524", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/db/package.json"}, "properties": {"repobilityId": "2bddd295d559a9b6", "scanner": "scanner-primary", "fingerprint": "7b16ae2bd0fca524", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/db/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f74e6dafbdb9c766", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/adapter-utils/package.json"}, "properties": {"repobilityId": "0f3c6b242ea2736d", "scanner": "scanner-primary", "fingerprint": "f74e6dafbdb9c766", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/adapter-utils/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2699d5f16ae11282", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/shared/package.json"}, "properties": {"repobilityId": "37ac218a4ef9b430", "scanner": "scanner-primary", "fingerprint": "2699d5f16ae11282", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/shared/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6cf7d86f806aee43", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/mcp-server/package.json"}, "properties": {"repobilityId": "a25c45fd100dcd3e", "scanner": "scanner-primary", "fingerprint": "6cf7d86f806aee43", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/mcp-server/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d7101ca1926e3342", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: server/package.json"}, "properties": {"repobilityId": "bbcd0a89809ced91", "scanner": "scanner-primary", "fingerprint": "d7101ca1926e3342", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4c3728641a0d9039", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: cli/package.json"}, "properties": {"repobilityId": "58fe435f7c288c56", "scanner": "scanner-primary", "fingerprint": "4c3728641a0d9039", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cli/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-eb52245e50d88e17", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: ui/package.json"}, "properties": {"repobilityId": "4c4927d3d3a88150", "scanner": "scanner-primary", "fingerprint": "eb52245e50d88e17", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "80e97e123244b566", "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": "17340ece0ad77305", "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": "8fec03b55c7ee60e", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "7d74e39c81eab0b8", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2679282aa1c484b5", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: AGENTS.md"}, "properties": {"repobilityId": "27d579812e6be614", "scanner": "scanner-primary", "fingerprint": "2679282aa1c484b5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "agents_md"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "AGENTS.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5a39855eff292e82", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/bundled/software-development/github-pr-workflow/SKILL.md"}, "properties": {"repobilityId": "5d71995d488a7335", "scanner": "scanner-primary", "fingerprint": "5a39855eff292e82", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/skills-catalog/catalog/bundled/software-development/github-pr-workflow/SKILL.md"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-8c082989684e633f", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/bundled/paperclip-operations/issue-triage/SKILL.md"}, "properties": {"repobilityId": "9a865eb04a5bc0af", "scanner": "scanner-primary", "fingerprint": "8c082989684e633f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/skills-catalog/catalog/bundled/paperclip-operations/issue-triage/SKILL.md"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-3c94e2ddd694fa21", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/bundled/paperclip-operations/task-planning/SKILL.md"}, "properties": {"repobilityId": "01c46091ce7d4542", "scanner": "scanner-primary", "fingerprint": "3c94e2ddd694fa21", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/skills-catalog/catalog/bundled/paperclip-operations/task-planning/SKILL.md"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-7d0860b4f4f16b43", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: packages/skills-catalog/catalog/bundled/paperclip-operations/task-planning/SKILL.md"}, "properties": {"repobilityId": "b321e227f913eb43", "scanner": "scanner-primary", "fingerprint": "7d0860b4f4f16b43", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/skills-catalog/catalog/bundled/paperclip-operations/task-planning/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-302d3cc72e63c0d3", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/bundled/docs/doc-maintenance/SKILL.md"}, "properties": {"repobilityId": "bdcb7fd4d66474ce", "scanner": "scanner-primary", "fingerprint": "302d3cc72e63c0d3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/skills-catalog/catalog/bundled/docs/doc-maintenance/SKILL.md"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-5cf524c8bb3b415c", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: packages/skills-catalog/catalog/bundled/docs/doc-maintenance/SKILL.md"}, "properties": {"repobilityId": "8101ad5c3aae6050", "scanner": "scanner-primary", "fingerprint": "5cf524c8bb3b415c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/skills-catalog/catalog/bundled/docs/doc-maintenance/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0b50b18d4cc3c97a", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/bundled/quality/qa-acceptance/SKILL.md"}, "properties": {"repobilityId": "6763231681269e24", "scanner": "scanner-primary", "fingerprint": "0b50b18d4cc3c97a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/skills-catalog/catalog/bundled/quality/qa-acceptance/SKILL.md"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-5b35bb4de6ba4a49", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/bundled/product/wireframe/SKILL.md"}, "properties": {"repobilityId": "0817599fbfb8fc62", "scanner": "scanner-primary", "fingerprint": "5b35bb4de6ba4a49", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/skills-catalog/catalog/bundled/product/wireframe/SKILL.md"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-c36e73a72d8ec1c8", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/optional/browser/agent-browser/SKILL.md"}, "properties": {"repobilityId": "4e6050f2a1f1660e", "scanner": "scanner-primary", "fingerprint": "c36e73a72d8ec1c8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/skills-catalog/catalog/optional/browser/agent-browser/SKILL.md"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-c78b7229d092c644", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/optional/content/release-announcement/SKILL.md"}, "properties": {"repobilityId": "3db14901cdc95d63", "scanner": "scanner-primary", "fingerprint": "c78b7229d092c644", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/skills-catalog/catalog/optional/content/release-announcement/SKILL.md"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-cdc3f233e1dc153e", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: packages/skills-catalog/catalog/optional/product/design-critique/SKILL.md"}, "properties": {"repobilityId": "1b93d9696cd35408", "scanner": "scanner-primary", "fingerprint": "cdc3f233e1dc153e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/skills-catalog/catalog/optional/product/design-critique/SKILL.md"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-2e1315ac1814d40f", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: server/src/onboarding-assets/default/AGENTS.md"}, "properties": {"repobilityId": "8fcd429103a5b9f9", "scanner": "scanner-primary", "fingerprint": "2e1315ac1814d40f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "agents_md"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/onboarding-assets/default/AGENTS.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2d12bc8b7bf7486a", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/api/agents.md"}, "properties": {"repobilityId": "0ac9a3175b9a47b3", "scanner": "scanner-primary", "fingerprint": "2d12bc8b7bf7486a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "agents_md"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/api/agents.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ec1ec671557905f7", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/para-memory-files/SKILL.md"}, "properties": {"repobilityId": "eedf0e8f6fe4d62b", "scanner": "scanner-primary", "fingerprint": "ec1ec671557905f7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/para-memory-files/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5d854c58be614fb1", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/paperclip-create-agent/SKILL.md"}, "properties": {"repobilityId": "8b7250d5a429787a", "scanner": "scanner-primary", "fingerprint": "5d854c58be614fb1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/paperclip-create-agent/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6eeea7f3f0064297", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/design-guide/references/component-index.md"}, "properties": {"repobilityId": "26d6ed9c5a25d416", "scanner": "scanner-primary", "fingerprint": "6eeea7f3f0064297", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/design-guide/references/component-index.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-01e431cc15ef3f74", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/plugins/sandbox-providers/e2b/src/plugin.ts:155"}, "properties": {"repobilityId": "9939507f3966692b", "scanner": "scanner-primary", "fingerprint": "01e431cc15ef3f74", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f50e7d035360b92", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/plugins/sandbox-providers/exe-dev/src/plugin.ts:932"}, "properties": {"repobilityId": "8f50ee996375bdf0", "scanner": "scanner-primary", "fingerprint": "1f50e7d035360b92", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9d33cc0809eb1fb4", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/plugins/sandbox-providers/cloudflare/src/plugin.test.ts:282"}, "properties": {"repobilityId": "f6e1a0fd97f1c84c", "scanner": "scanner-primary", "fingerprint": "9d33cc0809eb1fb4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-751588135f341c65", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/plugins/sandbox-providers/cloudflare/src/plugin.ts:320"}, "properties": {"repobilityId": "3442de7f35c6a564", "scanner": "scanner-primary", "fingerprint": "751588135f341c65", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc4222dd1df39df0", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/plugins/sandbox-providers/cloudflare/bridge-template/src/auth.ts:8"}, "properties": {"repobilityId": "97442dc6f664cbd3", "scanner": "scanner-primary", "fingerprint": "bc4222dd1df39df0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52951800c2e61963", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/plugins/sandbox-providers/cloudflare/bridge-template/src/sessions.ts:34"}, "properties": {"repobilityId": "7ec846104343b373", "scanner": "scanner-primary", "fingerprint": "52951800c2e61963", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5f2e1980f077bd1", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/plugins/sandbox-providers/cloudflare/bridge-template/src/routes.ts:284"}, "properties": {"repobilityId": "cdc403a26a5bcdf9", "scanner": "scanner-primary", "fingerprint": "d5f2e1980f077bd1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5a97b3ffca68ce0", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/plugins/sandbox-providers/daytona/src/plugin.ts:244"}, "properties": {"repobilityId": "94b1eada13d21e4e", "scanner": "scanner-primary", "fingerprint": "c5a97b3ffca68ce0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bdaf8f9974ccb0bc", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/plugins/sandbox-providers/modal/src/plugin.ts:214"}, "properties": {"repobilityId": "ce474f60bdd10fa4", "scanner": "scanner-primary", "fingerprint": "bdaf8f9974ccb0bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-537efbec106954e9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/examples/plugin-kitchen-sink-example/src/worker.ts:591"}, "properties": {"repobilityId": "658dc8e3470c4104", "scanner": "scanner-primary", "fingerprint": "537efbec106954e9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-277d2e5bc31dbd40", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/examples/plugin-kitchen-sink-example/src/ui/index.tsx:409"}, "properties": {"repobilityId": "ee4644121267a00c", "scanner": "scanner-primary", "fingerprint": "277d2e5bc31dbd40", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7d1c82d4247c93c0", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/plugins/plugin-llm-wiki/tests/screenshots/harness.tsx:10"}, "properties": {"repobilityId": "220fad251a17c3a1", "scanner": "scanner-primary", "fingerprint": "7d1c82d4247c93c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ba30bb516dcbdaf", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/plugins/plugin-llm-wiki/src/ui/app.tsx:5426"}, "properties": {"repobilityId": "34c5e603e672b8d4", "scanner": "scanner-primary", "fingerprint": "1ba30bb516dcbdaf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-13dcec6abaac745e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/sdk/src/host-client-factory.ts:145"}, "properties": {"repobilityId": "edd6885091d4b765", "scanner": "scanner-primary", "fingerprint": "13dcec6abaac745e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fd2e0484f995bd21", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/sdk/src/worker-rpc-host.ts:528"}, "properties": {"repobilityId": "bfaa04891579aac0", "scanner": "scanner-primary", "fingerprint": "fd2e0484f995bd21", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7a8e654a7d453ad8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/sdk/src/types.ts:634"}, "properties": {"repobilityId": "b9ced75d5a0b5acb", "scanner": "scanner-primary", "fingerprint": "7a8e654a7d453ad8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-10aed2c3c24cd17d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/sdk/src/testing.ts:843"}, "properties": {"repobilityId": "bd59b582bbadb93c", "scanner": "scanner-primary", "fingerprint": "10aed2c3c24cd17d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4ad06260a39970e0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/plugins/sdk/src/define-plugin.ts:23"}, "properties": {"repobilityId": "8439731b3f56c1f1", "scanner": "scanner-primary", "fingerprint": "4ad06260a39970e0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cfbe30e59fc1c119", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/adapters/cursor-local/src/index.ts:6"}, "properties": {"repobilityId": "01aa16463adfa186", "scanner": "scanner-primary", "fingerprint": "cfbe30e59fc1c119", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a158e8a9ab65c748", "level": "note", "message": {"text": "Legacy-named symbol `queue_v1` in packages/adapters/cursor-local/src/server/execute.remote.test.ts:43"}, "properties": {"repobilityId": "97ecf8aea03dafcc", "scanner": "scanner-primary", "fingerprint": "a158e8a9ab65c748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6ab8b63f4bf56add", "level": "note", "message": {"text": "Legacy-named symbol `queue_v1` in packages/adapters/claude-local/src/server/execute.remote.test.ts:37"}, "properties": {"repobilityId": "178052b5d059208f", "scanner": "scanner-primary", "fingerprint": "6ab8b63f4bf56add", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c94f488adf06cd09", "level": "note", "message": {"text": "Legacy-named symbol `queue_v1` in packages/adapters/gemini-local/src/server/execute.remote.test.ts:48"}, "properties": {"repobilityId": "9ac5575c18db5334", "scanner": "scanner-primary", "fingerprint": "c94f488adf06cd09", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4a37fa40ffea664b", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/adapters/gemini-local/src/server/parse.ts:127"}, "properties": {"repobilityId": "e880b15c15b17a8a", "scanner": "scanner-primary", "fingerprint": "4a37fa40ffea664b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6271bc10e263bdb8", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/adapters/grok-local/src/shared/turn-boundary.ts:1"}, "properties": {"repobilityId": "12efb8f4374355ea", "scanner": "scanner-primary", "fingerprint": "6271bc10e263bdb8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d7947a25ae79239", "level": "note", "message": {"text": "Legacy-named symbol `queue_v1` in packages/adapters/pi-local/src/server/execute.remote.test.ts:52"}, "properties": {"repobilityId": "f76a863ca803dce6", "scanner": "scanner-primary", "fingerprint": "2d7947a25ae79239", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5e2c5aa38d2798e1", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/adapters/pi-local/src/server/execute.ts:321"}, "properties": {"repobilityId": "f67caea1fa52d136", "scanner": "scanner-primary", "fingerprint": "5e2c5aa38d2798e1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c8c22b6fd854ec6", "level": "note", "message": {"text": "Legacy-named symbol `queue_v1` in packages/adapters/codex-local/src/server/execute.remote.test.ts:33"}, "properties": {"repobilityId": "8fc8119679c2a29d", "scanner": "scanner-primary", "fingerprint": "2c8c22b6fd854ec6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-50383ccf202977b0", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/adapters/codex-local/src/server/test.ts:297"}, "properties": {"repobilityId": "31c3abacc1427045", "scanner": "scanner-primary", "fingerprint": "50383ccf202977b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9da4406b891e7df", "level": "none", "message": {"text": "Commented-code block (14 lines) in packages/adapters/opencode-local/src/index.ts:6"}, "properties": {"repobilityId": "abab4470d4928b6b", "scanner": "scanner-primary", "fingerprint": "f9da4406b891e7df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7dd2c35b411869a1", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/adapters/opencode-local/src/server/runtime-config.ts:48"}, "properties": {"repobilityId": "5fdf22f2dc4f29b7", "scanner": "scanner-primary", "fingerprint": "7dd2c35b411869a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e03b2b2126e08c0", "level": "note", "message": {"text": "Legacy-named symbol `queue_v1` in packages/adapters/opencode-local/src/server/execute.remote.test.ts:60"}, "properties": {"repobilityId": "1efaed1342f4beae", "scanner": "scanner-primary", "fingerprint": "1e03b2b2126e08c0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ff8ffe187703a6b6", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/adapters/opencode-local/src/server/test.ts:219"}, "properties": {"repobilityId": "c03d34eb76de79ad", "scanner": "scanner-primary", "fingerprint": "ff8ffe187703a6b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e6495230cd3b317e", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/adapters/acpx-local/src/server/execute.ts:581"}, "properties": {"repobilityId": "1318838132c93744", "scanner": "scanner-primary", "fingerprint": "e6495230cd3b317e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1aebbb2209217717", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/adapter-utils/src/server-utils.ts:1022"}, "properties": {"repobilityId": "e75fac29fda95437", "scanner": "scanner-primary", "fingerprint": "1aebbb2209217717", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4a477453e748e2b3", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/adapter-utils/src/command-managed-runtime.ts:205"}, "properties": {"repobilityId": "4cfeb5ac2dd246a7", "scanner": "scanner-primary", "fingerprint": "4a477453e748e2b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-27df8acdcfe4d9e4", "level": "note", "message": {"text": "Legacy-named symbol `queue_v1` in packages/adapter-utils/src/execution-target.ts:1184"}, "properties": {"repobilityId": "c37a524bfc0759e8", "scanner": "scanner-primary", "fingerprint": "27df8acdcfe4d9e4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-74436217029bcd5e", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/adapter-utils/src/execution-target.ts:327"}, "properties": {"repobilityId": "84c76fda126e3c26", "scanner": "scanner-primary", "fingerprint": "74436217029bcd5e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95141a8710252fbf", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/adapter-utils/src/sandbox-install-command.ts:5"}, "properties": {"repobilityId": "6ae95e555665eb74", "scanner": "scanner-primary", "fingerprint": "95141a8710252fbf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52c6c5fb8b45f550", "level": "note", "message": {"text": "Legacy-named symbol `queue_v1` in packages/adapter-utils/src/sandbox-callback-bridge.ts:319"}, "properties": {"repobilityId": "4a66eaa9cd1f0fc6", "scanner": "scanner-primary", "fingerprint": "52c6c5fb8b45f550", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-10aac498ec7b2e95", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/adapter-utils/src/sandbox-callback-bridge.ts:28"}, "properties": {"repobilityId": "3f6bd3d8d7d406cc", "scanner": "scanner-primary", "fingerprint": "10aac498ec7b2e95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a51a8c404f964cd", "level": "note", "message": {"text": "Legacy-named symbol `queue_v1` in packages/adapter-utils/src/execution-target-sandbox.test.ts:429"}, "properties": {"repobilityId": "fa495b9832b4e851", "scanner": "scanner-primary", "fingerprint": "9a51a8c404f964cd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4a88ff55d5ea5df8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/adapter-utils/src/execution-target-sandbox.test.ts:431"}, "properties": {"repobilityId": "1632acbf481e9cb4", "scanner": "scanner-primary", "fingerprint": "4a88ff55d5ea5df8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a4f62ad545ca1a30", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/adapter-utils/src/sandbox-managed-runtime.ts:141"}, "properties": {"repobilityId": "fff3f8186bca73ed", "scanner": "scanner-primary", "fingerprint": "a4f62ad545ca1a30", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67f32e263a4058d7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/adapter-utils/src/sandbox-callback-bridge.test.ts:203"}, "properties": {"repobilityId": "34680b49cfba8d04", "scanner": "scanner-primary", "fingerprint": "67f32e263a4058d7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-41a1596677eacf99", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/mcp-server/src/client.ts:95"}, "properties": {"repobilityId": "f0591c8c79a495f3", "scanner": "scanner-primary", "fingerprint": "41a1596677eacf99", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-358487ebcdcd2fce", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dev-runner.ts:517"}, "properties": {"repobilityId": "8b48011ad0774609", "scanner": "scanner-primary", "fingerprint": "358487ebcdcd2fce", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8c10dc58cbcf0d1c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/paperclip-commit-metrics.ts:837"}, "properties": {"repobilityId": "2c194310e71a3d39", "scanner": "scanner-primary", "fingerprint": "8c10dc58cbcf0d1c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-442be5a9928fa427", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dev-runner.mjs:435"}, "properties": {"repobilityId": "9ca76c9f44e8954d", "scanner": "scanner-primary", "fingerprint": "442be5a9928fa427", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6b31982a28ef1a6d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/smoke/terminal-bench-loop-skill-smoke.mjs:116"}, "properties": {"repobilityId": "4ecc52e070ad8296", "scanner": "scanner-primary", "fingerprint": "6b31982a28ef1a6d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0eb1f85c30566d07", "level": "none", "message": {"text": "Commented-code block (5 lines) in .github/scripts/check-pr-dedup-search.mjs:15"}, "properties": {"repobilityId": "5469f5d4d64a75ed", "scanner": "scanner-primary", "fingerprint": "0eb1f85c30566d07", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8217054e11150d3a", "level": "none", "message": {"text": "Commented-code block (5 lines) in .github/scripts/check-pr-security.mjs:273"}, "properties": {"repobilityId": "fef93ed6b0d40586", "scanner": "scanner-primary", "fingerprint": "8217054e11150d3a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-77a00d277e2ef949", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .github/scripts/get-bot-token.mjs:29"}, "properties": {"repobilityId": "bb1c095be29a476c", "scanner": "scanner-primary", "fingerprint": "77a00d277e2ef949", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e439c27927743250", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/app.ts:348"}, "properties": {"repobilityId": "5907c80f9b84b394", "scanner": "scanner-primary", "fingerprint": "e439c27927743250", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ddb6a181a420e787", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/src/adapters/registry.ts:538"}, "properties": {"repobilityId": "cb718211ff4528ff", "scanner": "scanner-primary", "fingerprint": "ddb6a181a420e787", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cbe314af91c848a8", "level": "note", "message": {"text": "Legacy-named symbol `aws_secrets_manager_v1` in server/src/secrets/aws-secrets-manager-provider.ts:18"}, "properties": {"repobilityId": "33fbc2440717381b", "scanner": "scanner-primary", "fingerprint": "cbe314af91c848a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d6a53156cde5e127", "level": "note", "message": {"text": "Legacy-named symbol `local_encrypted_v1` in server/src/secrets/local-encrypted-provider.ts:15"}, "properties": {"repobilityId": "0dc0ae32943b2680", "scanner": "scanner-primary", "fingerprint": "d6a53156cde5e127", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f95767768e21774b", "level": "note", "message": {"text": "Legacy-named symbol `external_reference_v1` in server/src/secrets/external-stub-providers.ts:24"}, "properties": {"repobilityId": "a7970d508cfa6114", "scanner": "scanner-primary", "fingerprint": "f95767768e21774b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8905ad83071de512", "level": "note", "message": {"text": "Legacy-named symbol `paperclip_labs_feedback_v1` in server/src/services/feedback.ts:53"}, "properties": {"repobilityId": "8279849005b73698", "scanner": "scanner-primary", "fingerprint": "8905ad83071de512", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-916f78d13e84fa29", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/services/plugin-worker-manager.ts:638"}, "properties": {"repobilityId": "d4035f0eb734cca0", "scanner": "scanner-primary", "fingerprint": "916f78d13e84fa29", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0539f046e8cef623", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/src/services/environment-runtime.ts:442"}, "properties": {"repobilityId": "a34dbfb08e6bbe9c", "scanner": "scanner-primary", "fingerprint": "0539f046e8cef623", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-daf71900b791e86d", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/src/services/plugin-event-bus.ts:181"}, "properties": {"repobilityId": "ed152c347811a578", "scanner": "scanner-primary", "fingerprint": "daf71900b791e86d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0cdd30c5489121b", "level": "note", "message": {"text": "Legacy-named symbol `canCreateAgentsLegacy` in server/src/services/authorization.ts:124"}, "properties": {"repobilityId": "70f3c956d6eec464", "scanner": "scanner-primary", "fingerprint": "d0cdd30c5489121b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-659d8c9cfec5a70e", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/src/services/execution-workspace-policy.ts:154"}, "properties": {"repobilityId": "0545becc8d069c06", "scanner": "scanner-primary", "fingerprint": "659d8c9cfec5a70e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12d94d7aa19ffe1e", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/services/plugin-runtime-sandbox.ts:141"}, "properties": {"repobilityId": "659c3805425e1951", "scanner": "scanner-primary", "fingerprint": "12d94d7aa19ffe1e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-459a45e8d1eb2f81", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/src/services/issues.ts:716"}, "properties": {"repobilityId": "a64384c13fb28820", "scanner": "scanner-primary", "fingerprint": "459a45e8d1eb2f81", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e387589f48b0ba55", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/src/services/company-search.ts:438"}, "properties": {"repobilityId": "6230e37345b2f36e", "scanner": "scanner-primary", "fingerprint": "e387589f48b0ba55", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f02ee4400b6457cc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/services/feedback-share-client.ts:34"}, "properties": {"repobilityId": "4da9d70ccbec4d27", "scanner": "scanner-primary", "fingerprint": "f02ee4400b6457cc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-22a89c3182c1f197", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/services/plugin-host-services.ts:135"}, "properties": {"repobilityId": "239cf3c0b30f1029", "scanner": "scanner-primary", "fingerprint": "22a89c3182c1f197", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9273068876df0347", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/src/services/plugin-lifecycle.ts:791"}, "properties": {"repobilityId": "ea8d0a4014b0d83e", "scanner": "scanner-primary", "fingerprint": "9273068876df0347", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18def304ad77190e", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/src/services/heartbeat.ts:7953"}, "properties": {"repobilityId": "71bdc8f68309efe5", "scanner": "scanner-primary", "fingerprint": "18def304ad77190e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64814a08850fdaf2", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/services/plugin-loader.ts:1647"}, "properties": {"repobilityId": "79924f595b93a439", "scanner": "scanner-primary", "fingerprint": "64814a08850fdaf2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16ba600f6dadc4de", "level": "note", "message": {"text": "Legacy-named symbol `deterministic_feedback_v2` in server/src/services/feedback-redaction.ts:168"}, "properties": {"repobilityId": "3ef590bf04f760b0", "scanner": "scanner-primary", "fingerprint": "16ba600f6dadc4de", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-35939ef4bfb2da80", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/__tests__/agent-live-run-routes.test.ts:565"}, "properties": {"repobilityId": "dfbebea94dba421d", "scanner": "scanner-primary", "fingerprint": "35939ef4bfb2da80", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb159d745115682f", "level": "note", "message": {"text": "Legacy-named symbol `paperclip_labs_feedback_v1` in server/src/__tests__/feedback-service.test.ts:998"}, "properties": {"repobilityId": "b9c8f37fff8e70ef", "scanner": "scanner-primary", "fingerprint": "fb159d745115682f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-77eedf23a3d3a919", "level": "note", "message": {"text": "Legacy-named symbol `queue_v1` in server/src/__tests__/codex-local-execute.test.ts:378"}, "properties": {"repobilityId": "de8eca74e0b35d36", "scanner": "scanner-primary", "fingerprint": "77eedf23a3d3a919", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7020463a42a8ffe5", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/__tests__/plugin-tool-dispatcher-pluginDbId.test.ts:100"}, "properties": {"repobilityId": "143a58a2438acf69", "scanner": "scanner-primary", "fingerprint": "7020463a42a8ffe5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f7f55acc4573a92", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/src/__tests__/qa-routine-secrets-e2e.test.ts:4"}, "properties": {"repobilityId": "7ac89a3a88bf64b3", "scanner": "scanner-primary", "fingerprint": "5f7f55acc4573a92", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3e48b029a860f92", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/__tests__/issue-thread-interactions-service.test.ts:1526"}, "properties": {"repobilityId": "08d39693f76f7f46", "scanner": "scanner-primary", "fingerprint": "b3e48b029a860f92", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-afc529895aa34e46", "level": "note", "message": {"text": "Legacy-named symbol `aws_secrets_manager_v1` in server/src/__tests__/secrets-service.test.ts:805"}, "properties": {"repobilityId": "28016e418e2d38e9", "scanner": "scanner-primary", "fingerprint": "afc529895aa34e46", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ad4c8126c4871e97", "level": "note", "message": {"text": "Legacy-named symbol `aws_secrets_manager_v1` in server/src/__tests__/aws-secrets-manager-provider.test.ts:637"}, "properties": {"repobilityId": "b5c5604e036642f4", "scanner": "scanner-primary", "fingerprint": "ad4c8126c4871e97", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3075d2d462fea21f", "level": "note", "message": {"text": "Legacy-named symbol `queue_v1` in server/src/__tests__/claude-local-execute.test.ts:658"}, "properties": {"repobilityId": "c6cfdd6e1361909c", "scanner": "scanner-primary", "fingerprint": "3075d2d462fea21f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bf7086a3139eebdd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/src/__tests__/workspace-runtime.test.ts:2256"}, "properties": {"repobilityId": "f218dfd432cb4981", "scanner": "scanner-primary", "fingerprint": "bf7086a3139eebdd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0bf201237f75f9c2", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/routes/agents.ts:353"}, "properties": {"repobilityId": "b42a79b0a1dd33df", "scanner": "scanner-primary", "fingerprint": "0bf201237f75f9c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df6c4c9ccaec0ea7", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/src/routes/plugin-ui-static.ts:300"}, "properties": {"repobilityId": "f70a0ed7edea6334", "scanner": "scanner-primary", "fingerprint": "df6c4c9ccaec0ea7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6316884949370c4", "level": "none", "message": {"text": "Commented-code block (5 lines) in pbn/scripts/pbn-writer-stub.mjs:4"}, "properties": {"repobilityId": "04a54a6030aebfd3", "scanner": "scanner-primary", "fingerprint": "f6316884949370c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0f9866159b6f683", "level": "none", "message": {"text": "Commented-code block (10 lines) in pbn/scripts/onboard-openclaw.mjs:12"}, "properties": {"repobilityId": "e0039525ba64ca5a", "scanner": "scanner-primary", "fingerprint": "d0f9866159b6f683", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b0a372b03406fdf", "level": "none", "message": {"text": "Commented-code block (6 lines) in pbn/wp/publish.mjs:16"}, "properties": {"repobilityId": "50bf07393470aede", "scanner": "scanner-primary", "fingerprint": "6b0a372b03406fdf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7a22fad94dd4074", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/commands/onboard.ts:533"}, "properties": {"repobilityId": "f27fc2a6322c82d6", "scanner": "scanner-primary", "fingerprint": "e7a22fad94dd4074", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f1b2a1a9a01be805", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/commands/client/cloud.ts:532"}, "properties": {"repobilityId": "74d37136ab95f2bd", "scanner": "scanner-primary", "fingerprint": "f1b2a1a9a01be805", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7409123512510050", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/commands/client/asset.ts:104"}, "properties": {"repobilityId": "187aaeeffbc2a2d2", "scanner": "scanner-primary", "fingerprint": "7409123512510050", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9ae3c76f37042e92", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/commands/client/cloud-transfer.ts:174"}, "properties": {"repobilityId": "0b0826d3e614132e", "scanner": "scanner-primary", "fingerprint": "9ae3c76f37042e92", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7dc140a507808ff0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/commands/client/issue.ts:1409"}, "properties": {"repobilityId": "7a9064d26d976469", "scanner": "scanner-primary", "fingerprint": "7dc140a507808ff0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ca4cf61c5cc6d054", "level": "none", "message": {"text": "Commented-code block (5 lines) in cli/src/commands/client/common.ts:138"}, "properties": {"repobilityId": "74eb4bba58582c3e", "scanner": "scanner-primary", "fingerprint": "ca4cf61c5cc6d054", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-070596a6a1a0c381", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/checks/llm-check.ts:54"}, "properties": {"repobilityId": "6a8c796cda12a5f9", "scanner": "scanner-primary", "fingerprint": "070596a6a1a0c381", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-646bfed507574b57", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/__tests__/issue-subresources.test.ts:226"}, "properties": {"repobilityId": "de147bf16ed2fb4d", "scanner": "scanner-primary", "fingerprint": "646bfed507574b57", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-033c228f29190e3c", "level": "note", "message": {"text": "Legacy-named symbol `paperclip_labs_feedback_v1` in cli/src/__tests__/feedback.test.ts:30"}, "properties": {"repobilityId": "5c546dbf75051010", "scanner": "scanner-primary", "fingerprint": "033c228f29190e3c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3c7efb80d92767a8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cli/src/__tests__/company-import-export-e2e.test.ts:203"}, "properties": {"repobilityId": "c9f0e280ce8b8d6d", "scanner": "scanner-primary", "fingerprint": "3c7efb80d92767a8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-98e9f75447b52939", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 ui/src/plugins/slots.tsx:424"}, "properties": {"repobilityId": "2883308d6c57959d", "scanner": "scanner-primary", "fingerprint": "98e9f75447b52939", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-692a970a83dff7c5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 ui/src/api/assets.ts:9"}, "properties": {"repobilityId": "d707b4a48717b3c5", "scanner": "scanner-primary", "fingerprint": "692a970a83dff7c5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6972617c09654a8e", "level": "note", "message": {"text": "Legacy-named symbol `inOld` in ui/src/components/RoutineHistoryTab.tsx:1192"}, "properties": {"repobilityId": "7b1ea16b00aa6c79", "scanner": "scanner-primary", "fingerprint": "6972617c09654a8e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fbeb714ba9fc4bde", "level": "none", "message": {"text": "Commented-code block (6 lines) in ui/src/components/IssueChatThread.tsx:2936"}, "properties": {"repobilityId": "494f07ed5c4ab074", "scanner": "scanner-primary", "fingerprint": "fbeb714ba9fc4bde", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-910dd97dc3b3b683", "level": "none", "message": {"text": "Commented-code block (5 lines) in ui/src/components/IssueChatThread.test.tsx:682"}, "properties": {"repobilityId": "a0ece7cb177f2fd0", "scanner": "scanner-primary", "fingerprint": "910dd97dc3b3b683", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d498765122b03ea", "level": "none", "message": {"text": "Commented-code block (6 lines) in ui/src/components/NewIssueDialog.tsx:1227"}, "properties": {"repobilityId": "45b9d6c17e915fc2", "scanner": "scanner-primary", "fingerprint": "8d498765122b03ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c3318f916f3ee27c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 ui/src/components/IssueAttachmentsSection.tsx:37"}, "properties": {"repobilityId": "33b067cb1c01e784", "scanner": "scanner-primary", "fingerprint": "c3318f916f3ee27c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3925b02d6094997e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 ui/src/components/MarkdownBody.test.tsx:143"}, "properties": {"repobilityId": "6a0c4dd5e44f79e2", "scanner": "scanner-primary", "fingerprint": "3925b02d6094997e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2a41ca7f75ceefea", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 ui/src/components/MarkdownEditor.test.tsx:308"}, "properties": {"repobilityId": "fa3aa02f3506a119", "scanner": "scanner-primary", "fingerprint": "2a41ca7f75ceefea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2effde93412dc3f2", "level": "note", "message": {"text": "Legacy-named symbol `shouldClearLegacy` in ui/src/pages/AgentDetail.tsx:1998"}, "properties": {"repobilityId": "42c8a0f4b593db18", "scanner": "scanner-primary", "fingerprint": "2effde93412dc3f2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f7c2d472f10d43d6", "level": "none", "message": {"text": "Commented-code block (5 lines) in ui/src/pages/TeamCatalog.tsx:457"}, "properties": {"repobilityId": "ea9f0c8bd020f34f", "scanner": "scanner-primary", "fingerprint": "f7c2d472f10d43d6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bec9204540e01764", "level": "none", "message": {"text": "Commented-code block (5 lines) in ui/src/lib/issue-reference.ts:51"}, "properties": {"repobilityId": "c0819106dcf7b422", "scanner": "scanner-primary", "fingerprint": "bec9204540e01764", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f0f6d79825095e9", "level": "none", "message": {"text": "Commented-code block (5 lines) in ui/src/lib/company-routes.test.ts:39"}, "properties": {"repobilityId": "d4fec659964a7481", "scanner": "scanner-primary", "fingerprint": "5f0f6d79825095e9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7fd46ddea10d9c43", "level": "none", "message": {"text": "Commented-code block (7 lines) in ui/src/lib/status-colors.ts:88"}, "properties": {"repobilityId": "e5cff6bfcea6756a", "scanner": "scanner-primary", "fingerprint": "7fd46ddea10d9c43", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25ad2281f494cf59", "level": "none", "message": {"text": "Commented-code block (5 lines) in ui/src/lib/taskTemplates.ts:5"}, "properties": {"repobilityId": "3f82b5aa02f151e9", "scanner": "scanner-primary", "fingerprint": "25ad2281f494cf59", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53dc6708c23ca815", "level": "none", "message": {"text": "Commented-code block (8 lines) in ui/storybook/stories/sub-issues-workflow.stories.tsx:49"}, "properties": {"repobilityId": "41ebf59df4459b01", "scanner": "scanner-primary", "fingerprint": "53dc6708c23ca815", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0db3e4cf4b3b9879", "level": "note", "message": {"text": "Legacy-named symbol `stripe_legacy` in ui/storybook/fixtures/paperclipData.ts:1489"}, "properties": {"repobilityId": "3bd0d90484c21a42", "scanner": "scanner-primary", "fingerprint": "0db3e4cf4b3b9879", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-957f249714e75313", "level": "note", "message": {"text": "210 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "d4f3d5ad4044cc18", "scanner": "scanner-primary", "fingerprint": "957f249714e75313", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-edd26b85efd19a4c", "level": "warning", "message": {"text": "Frontend route `dashboard/live` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "fa39eebd356229a8", "scanner": "scanner-primary", "fingerprint": "edd26b85efd19a4c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-33e54ed01677d35f", "level": "warning", "message": {"text": "Frontend route `onboarding` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "62a52e3161111f19", "scanner": "scanner-primary", "fingerprint": "33e54ed01677d35f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-db980bfa79323a04", "level": "warning", "message": {"text": "Frontend route `companies` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "c5fd1bd35870ecaa", "scanner": "scanner-primary", "fingerprint": "db980bfa79323a04", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-23fb1383ce00affa", "level": "warning", "message": {"text": "Frontend route `company/settings` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "87ff74ca609b631e", "scanner": "scanner-primary", "fingerprint": "23fb1383ce00affa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-85fef5f4afc71eb1", "level": "warning", "message": {"text": "Frontend route `company/settings/environments` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "77e3e782ddc182f4", "scanner": "scanner-primary", "fingerprint": "85fef5f4afc71eb1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f214ab03c1eaec9f", "level": "warning", "message": {"text": "Frontend route `company/settings/cloud-upstream` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "84d3dd5d39ba6b09", "scanner": "scanner-primary", "fingerprint": "f214ab03c1eaec9f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9a4dee91c29c8c97", "level": "warning", "message": {"text": "Frontend route `company/settings/members` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "d8e9e9ae85be5609", "scanner": "scanner-primary", "fingerprint": "9a4dee91c29c8c97", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-946613a1dc9fd222", "level": "warning", "message": {"text": "Frontend route `company/settings/access` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "1f9b427c58fa45a6", "scanner": "scanner-primary", "fingerprint": "946613a1dc9fd222", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1d0074df34ce014b", "level": "warning", "message": {"text": "Frontend route `company/settings/invites` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "74f3227276ec17c7", "scanner": "scanner-primary", "fingerprint": "1d0074df34ce014b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-bfdf0f77a513c180", "level": "warning", "message": {"text": "Frontend route `company/export/*` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "ef0e1c94d96b6793", "scanner": "scanner-primary", "fingerprint": "bfdf0f77a513c180", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9958b6542c5c7828", "level": "warning", "message": {"text": "Frontend route `company/import` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "bc9e8699def12678", "scanner": "scanner-primary", "fingerprint": "9958b6542c5c7828", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-107db8b8cac5b83a", "level": "warning", "message": {"text": "Frontend route `company/settings/secrets` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "bc4fcb7845fb194a", "scanner": "scanner-primary", "fingerprint": "107db8b8cac5b83a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b0914d4d53f8be65", "level": "warning", "message": {"text": "Frontend route `company/settings/instance` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "5f15610934f7fdf5", "scanner": "scanner-primary", "fingerprint": "b0914d4d53f8be65", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7a83689ba8ec5401", "level": "warning", "message": {"text": "Frontend route `company/settings/instance/profile` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "88a5964815cc9ba8", "scanner": "scanner-primary", "fingerprint": "7a83689ba8ec5401", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-8dccec451eaa71f5", "level": "warning", "message": {"text": "Frontend route `company/settings/instance/general` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "3366ee54de74886c", "scanner": "scanner-primary", "fingerprint": "8dccec451eaa71f5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-86dcee19dd80d2ff", "level": "warning", "message": {"text": "Frontend route `company/settings/instance/access` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "6086da2146921a9c", "scanner": "scanner-primary", "fingerprint": "86dcee19dd80d2ff", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-de28127e9a0e2b09", "level": "warning", "message": {"text": "Frontend route `company/settings/instance/heartbeats` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "ee304ee2bc1362df", "scanner": "scanner-primary", "fingerprint": "de28127e9a0e2b09", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6db975b7cb27af4d", "level": "warning", "message": {"text": "Frontend route `company/settings/instance/experimental` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "cc856cd93738c6a6", "scanner": "scanner-primary", "fingerprint": "6db975b7cb27af4d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0904e7a502c73fb9", "level": "warning", "message": {"text": "Frontend route `company/settings/instance/plugins` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "571341937bae477f", "scanner": "scanner-primary", "fingerprint": "0904e7a502c73fb9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-cf4b6b5ec2dd0956", "level": "warning", "message": {"text": "Frontend route `company/settings/instance/plugins/:pluginId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "d3fbdde5e650dfd2", "scanner": "scanner-primary", "fingerprint": "cf4b6b5ec2dd0956", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-5b5af0217a6a5b28", "level": "warning", "message": {"text": "Frontend route `company/settings/instance/adapters` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "7ac7df08584b617f", "scanner": "scanner-primary", "fingerprint": "5b5af0217a6a5b28", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-47d0795128ec976c", "level": "warning", "message": {"text": "Frontend route `company/settings/:settingsRoutePath/*` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "1c7ab3afe54399ca", "scanner": "scanner-primary", "fingerprint": "47d0795128ec976c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c2c93ca5a8a39fdf", "level": "warning", "message": {"text": "Frontend route `skills/*` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "24b445d44c0ed635", "scanner": "scanner-primary", "fingerprint": "c2c93ca5a8a39fdf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c5adca2b1799bb02", "level": "warning", "message": {"text": "Frontend route `settings` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "e6ac73354deb8024", "scanner": "scanner-primary", "fingerprint": "c5adca2b1799bb02", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-541195d859905ee1", "level": "warning", "message": {"text": "Frontend route `settings/*` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "f7253e395cfd8952", "scanner": "scanner-primary", "fingerprint": "541195d859905ee1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1f5d37819b9f5134", "level": "warning", "message": {"text": "Frontend route `plugins/:pluginId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "68bcb665175a8486", "scanner": "scanner-primary", "fingerprint": "1f5d37819b9f5134", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-64b0f6e4cd6b3f71", "level": "warning", "message": {"text": "Frontend route `org` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "3366aaa3aaecc40f", "scanner": "scanner-primary", "fingerprint": "64b0f6e4cd6b3f71", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0ff3153270f243a4", "level": "warning", "message": {"text": "Frontend route `agents` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "4c599c34e1266be9", "scanner": "scanner-primary", "fingerprint": "0ff3153270f243a4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ca17e91a0a2c8db0", "level": "warning", "message": {"text": "Frontend route `agents/all` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "c35d5a317b333aee", "scanner": "scanner-primary", "fingerprint": "ca17e91a0a2c8db0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-335b8d6a8fc1f28b", "level": "warning", "message": {"text": "Frontend route `agents/active` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "2b422a1cd67ff60a", "scanner": "scanner-primary", "fingerprint": "335b8d6a8fc1f28b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-353fe1b1276a339f", "level": "warning", "message": {"text": "Frontend route `agents/paused` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "f2c3bf0898685c92", "scanner": "scanner-primary", "fingerprint": "353fe1b1276a339f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f80350200fc6ba09", "level": "warning", "message": {"text": "Frontend route `agents/error` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "e0e5a1b261c1798a", "scanner": "scanner-primary", "fingerprint": "f80350200fc6ba09", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-4dc1a19d564e7fda", "level": "warning", "message": {"text": "Frontend route `agents/new` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "908b26b0b4eb3f41", "scanner": "scanner-primary", "fingerprint": "4dc1a19d564e7fda", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9dd7b6e37f4472f8", "level": "warning", "message": {"text": "Frontend route `agents/:agentId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "0f14f75b1a338304", "scanner": "scanner-primary", "fingerprint": "9dd7b6e37f4472f8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-aee7891478433de0", "level": "warning", "message": {"text": "Frontend route `agents/:agentId/:tab` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "9b1fb27dd3e4076b", "scanner": "scanner-primary", "fingerprint": "aee7891478433de0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c57ff3fa0a195611", "level": "warning", "message": {"text": "Frontend route `agents/:agentId/runs/:runId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "5e87335a0439cb32", "scanner": "scanner-primary", "fingerprint": "c57ff3fa0a195611", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-903942ee59f52b2f", "level": "warning", "message": {"text": "Frontend route `projects` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "d2a749fd2ba2c03d", "scanner": "scanner-primary", "fingerprint": "903942ee59f52b2f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-88ae3e61b7bf942c", "level": "warning", "message": {"text": "Frontend route `projects/:projectId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "99c75465d69e31e2", "scanner": "scanner-primary", "fingerprint": "88ae3e61b7bf942c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2f19b097bbb05df5", "level": "warning", "message": {"text": "Frontend route `projects/:projectId/overview` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "6c0c792999143f49", "scanner": "scanner-primary", "fingerprint": "2f19b097bbb05df5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c3caffe23c4f6752", "level": "warning", "message": {"text": "Frontend route `projects/:projectId/issues` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "2359320b35df667e", "scanner": "scanner-primary", "fingerprint": "c3caffe23c4f6752", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-fa37457a01a0cf90", "level": "warning", "message": {"text": "Frontend route `projects/:projectId/issues/:filter` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "4fff7be66c2b80a5", "scanner": "scanner-primary", "fingerprint": "fa37457a01a0cf90", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ce712c761f2bc37b", "level": "warning", "message": {"text": "Frontend route `projects/:projectId/workspaces/:workspaceId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "37ca991a6c0a9908", "scanner": "scanner-primary", "fingerprint": "ce712c761f2bc37b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2fe981588148e413", "level": "warning", "message": {"text": "Frontend route `projects/:projectId/workspaces` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "33c0be59cd71525e", "scanner": "scanner-primary", "fingerprint": "2fe981588148e413", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0a3683ef5d85ae57", "level": "warning", "message": {"text": "Frontend route `projects/:projectId/configuration` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "cb9d8f9c131e899d", "scanner": "scanner-primary", "fingerprint": "0a3683ef5d85ae57", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-48aa1c5f23ad671a", "level": "warning", "message": {"text": "Frontend route `projects/:projectId/budget` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "4d0e563d1793a68d", "scanner": "scanner-primary", "fingerprint": "48aa1c5f23ad671a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6a95e5f1b6f9cba8", "level": "warning", "message": {"text": "Frontend route `workspaces` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "75ac846b4fd37c1e", "scanner": "scanner-primary", "fingerprint": "6a95e5f1b6f9cba8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-5a1441683b7f85b1", "level": "warning", "message": {"text": "Frontend route `search` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "9e116bd5a41bb8b9", "scanner": "scanner-primary", "fingerprint": "5a1441683b7f85b1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-82f39ce846ffaa50", "level": "warning", "message": {"text": "Frontend route `issues/all` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "e5bd4f1177622a86", "scanner": "scanner-primary", "fingerprint": "82f39ce846ffaa50", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0befae566b5416f5", "level": "warning", "message": {"text": "Frontend route `issues/active` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "a1e1dd283e9ad3f2", "scanner": "scanner-primary", "fingerprint": "0befae566b5416f5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-fcc7d6ea1822b596", "level": "warning", "message": {"text": "Frontend route `issues/backlog` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "17133f8f0c70ba8e", "scanner": "scanner-primary", "fingerprint": "fcc7d6ea1822b596", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-64d992fe0e599da5", "level": "warning", "message": {"text": "Frontend route `issues/done` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "d509c13044375fe7", "scanner": "scanner-primary", "fingerprint": "64d992fe0e599da5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-366161c82ec5e7aa", "level": "warning", "message": {"text": "Frontend route `issues/recent` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "d59f9147fd2b84d9", "scanner": "scanner-primary", "fingerprint": "366161c82ec5e7aa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e45cb0a2c282c9f3", "level": "warning", "message": {"text": "Frontend route `issues/:issueId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "ba2ab83396b5b91b", "scanner": "scanner-primary", "fingerprint": "e45cb0a2c282c9f3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e37fdd10b3265d68", "level": "warning", "message": {"text": "Frontend route `tests/perf/long-thread` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "370a829cbb2b38e1", "scanner": "scanner-primary", "fingerprint": "e37fdd10b3265d68", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-89a00b29ca08c5c0", "level": "warning", "message": {"text": "Frontend route `tasks` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "d5d8382fcfc9e7db", "scanner": "scanner-primary", "fingerprint": "89a00b29ca08c5c0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-d6d00f47a619ce77", "level": "warning", "message": {"text": "Frontend route `routines` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "2d40db8893744492", "scanner": "scanner-primary", "fingerprint": "d6d00f47a619ce77", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-131d7f16baac9d32", "level": "warning", "message": {"text": "Frontend route `routines/:routineId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "5c44df0859b57b75", "scanner": "scanner-primary", "fingerprint": "131d7f16baac9d32", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-28222a8a1e847256", "level": "warning", "message": {"text": "Frontend route `execution-workspaces/:workspaceId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "30605ce7dd0e8510", "scanner": "scanner-primary", "fingerprint": "28222a8a1e847256", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b2c0e4621d9f3af5", "level": "warning", "message": {"text": "Frontend route `execution-workspaces/:workspaceId/services` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "fb5a0525479d6b3c", "scanner": "scanner-primary", "fingerprint": "b2c0e4621d9f3af5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b943beecc17413f3", "level": "warning", "message": {"text": "Frontend route `execution-workspaces/:workspaceId/configuration` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "c88a17509c4f76fd", "scanner": "scanner-primary", "fingerprint": "b943beecc17413f3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-03cfaa8752f3b52c", "level": "warning", "message": {"text": "Frontend route `execution-workspaces/:workspaceId/runtime-logs` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "5e1244665141daf9", "scanner": "scanner-primary", "fingerprint": "03cfaa8752f3b52c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6a2513e09e0a74a0", "level": "warning", "message": {"text": "Frontend route `execution-workspaces/:workspaceId/issues` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "824ebb80001a9029", "scanner": "scanner-primary", "fingerprint": "6a2513e09e0a74a0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ee633b171c5343c1", "level": "warning", "message": {"text": "Frontend route `execution-workspaces/:workspaceId/routines` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "750bd3ae6e97845f", "scanner": "scanner-primary", "fingerprint": "ee633b171c5343c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b59721286366a908", "level": "warning", "message": {"text": "Frontend route `goals` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "719b769efbd282ff", "scanner": "scanner-primary", "fingerprint": "b59721286366a908", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-271baec363c39689", "level": "warning", "message": {"text": "Frontend route `goals/:goalId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "2d1160ab0828e2dc", "scanner": "scanner-primary", "fingerprint": "271baec363c39689", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0d1fb5094172e677", "level": "warning", "message": {"text": "Frontend route `artifacts` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "911154186f2b850a", "scanner": "scanner-primary", "fingerprint": "0d1fb5094172e677", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a882251932ec772c", "level": "warning", "message": {"text": "Frontend route `approvals` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "2f167675e21faf66", "scanner": "scanner-primary", "fingerprint": "a882251932ec772c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7d5f487541805003", "level": "warning", "message": {"text": "Frontend route `approvals/pending` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "21922453ce585392", "scanner": "scanner-primary", "fingerprint": "7d5f487541805003", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0fa6060bb5f0d348", "level": "warning", "message": {"text": "Frontend route `approvals/all` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "4252c97865b6eaba", "scanner": "scanner-primary", "fingerprint": "0fa6060bb5f0d348", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-268715a7577a5aee", "level": "warning", "message": {"text": "Frontend route `approvals/:approvalId` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "33d34304a0b5abb0", "scanner": "scanner-primary", "fingerprint": "268715a7577a5aee", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-75aea038a9c4b16c", "level": "warning", "message": {"text": "Frontend route `costs` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "ce3b039a03dfdf13", "scanner": "scanner-primary", "fingerprint": "75aea038a9c4b16c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-fa130e1f9b1bf37b", "level": "warning", "message": {"text": "Frontend route `activity` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "4f335f2d1d15bde4", "scanner": "scanner-primary", "fingerprint": "fa130e1f9b1bf37b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-27984fc2f77b4a82", "level": "warning", "message": {"text": "Frontend route `inbox` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "70f3c080825917ae", "scanner": "scanner-primary", "fingerprint": "27984fc2f77b4a82", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-768abbef5dbf1869", "level": "warning", "message": {"text": "Frontend route `inbox/mine` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "4b7f112ca98b073a", "scanner": "scanner-primary", "fingerprint": "768abbef5dbf1869", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e3c3f1fb78b1ea6d", "level": "warning", "message": {"text": "Frontend route `inbox/recent` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "ef38d2f160753d30", "scanner": "scanner-primary", "fingerprint": "e3c3f1fb78b1ea6d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2492574ebed3a47f", "level": "warning", "message": {"text": "Frontend route `inbox/unread` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "701d72bea0316a58", "scanner": "scanner-primary", "fingerprint": "2492574ebed3a47f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e4b41541d21782fd", "level": "warning", "message": {"text": "Frontend route `inbox/blocked` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "873f5c75410eb0f6", "scanner": "scanner-primary", "fingerprint": "e4b41541d21782fd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-665277341bcbdeba", "level": "warning", "message": {"text": "Frontend route `inbox/all` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "43b24fd83705efeb", "scanner": "scanner-primary", "fingerprint": "665277341bcbdeba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-39c2228d8d0b0601", "level": "warning", "message": {"text": "Frontend route `inbox/requests` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "29404a581dd35cd4", "scanner": "scanner-primary", "fingerprint": "39c2228d8d0b0601", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-75722be26f4c221a", "level": "warning", "message": {"text": "Frontend route `inbox/new` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "631ed67455e71986", "scanner": "scanner-primary", "fingerprint": "75722be26f4c221a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7df02fce47ac956b", "level": "warning", "message": {"text": "Frontend route `u/:userSlug` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "ee717ce829db79f2", "scanner": "scanner-primary", "fingerprint": "7df02fce47ac956b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-47ec4b718c57f108", "level": "warning", "message": {"text": "Frontend route `design-guide` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "9f1c3901e2e83e15", "scanner": "scanner-primary", "fingerprint": "47ec4b718c57f108", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-af1737ca8c5b4817", "level": "warning", "message": {"text": "Frontend route `instance/settings/adapters` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "a16fdde0c634d228", "scanner": "scanner-primary", "fingerprint": "af1737ca8c5b4817", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-434f843f736e4bcc", "level": "warning", "message": {"text": "Frontend route `:pluginRoutePath/*` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "125f26cf77e72d8b", "scanner": "scanner-primary", "fingerprint": "434f843f736e4bcc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-208064284f239f57", "level": "warning", "message": {"text": "Frontend route `auth` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "e31935b20a358895", "scanner": "scanner-primary", "fingerprint": "208064284f239f57", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-39072c41b89e4653", "level": "warning", "message": {"text": "Frontend route `board-claim/:token` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "ab29a10831383d4a", "scanner": "scanner-primary", "fingerprint": "39072c41b89e4653", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f69ec2a8d88bf8cd", "level": "warning", "message": {"text": "Frontend route `cli-auth/:id` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "c8820a2769c5d332", "scanner": "scanner-primary", "fingerprint": "f69ec2a8d88bf8cd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-d27d2467de6ca15a", "level": "warning", "message": {"text": "Frontend route `invite/:token` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "44fff5f7d9e044c4", "scanner": "scanner-primary", "fingerprint": "d27d2467de6ca15a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b2e9be206129d05f", "level": "warning", "message": {"text": "Frontend route `ux-lab/cloud-upstream` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "71c01b12df494988", "scanner": "scanner-primary", "fingerprint": "b2e9be206129d05f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b7bfb2d2aef6f0a2", "level": "warning", "message": {"text": "Frontend route `ux-lab/bootstrap-setup` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "7e7cf256c7bb46ff", "scanner": "scanner-primary", "fingerprint": "b7bfb2d2aef6f0a2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-4794a82b7dd06339", "level": "warning", "message": {"text": "Frontend route `instance` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "0c24725e377f2143", "scanner": "scanner-primary", "fingerprint": "4794a82b7dd06339", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-89253a23608fc0d1", "level": "warning", "message": {"text": "Frontend route `instance/settings` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "f56714a49b0b757f", "scanner": "scanner-primary", "fingerprint": "89253a23608fc0d1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c0f2438ea40992d4", "level": "warning", "message": {"text": "Frontend route `instance/settings/*` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "71a260dec7ae26c0", "scanner": "scanner-primary", "fingerprint": "c0f2438ea40992d4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-26698ba754d2eeae", "level": "warning", "message": {"text": "Frontend route `:companyPrefix` has no Link/navigate to it \u2014 ui/src/App.tsx"}, "properties": {"repobilityId": "fe46778e681eb6a6", "scanner": "scanner-primary", "fingerprint": "26698ba754d2eeae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c6ec81b3135826d5", "level": "warning", "message": {"text": "Frontend route `/auth` has no Link/navigate to it \u2014 ui/src/pages/Auth.test.tsx"}, "properties": {"repobilityId": "320ae24b5418d7ee", "scanner": "scanner-primary", "fingerprint": "c6ec81b3135826d5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-bd24133e07c9217a", "level": "warning", "message": {"text": "Frontend route `/invite/:token` has no Link/navigate to it \u2014 ui/src/pages/InviteLanding.test.tsx"}, "properties": {"repobilityId": "bcfe6f769625da55", "scanner": "scanner-primary", "fingerprint": "bd24133e07c9217a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-8051a698d7ec969c", "level": "error", "message": {"text": "JS POST `/admin/users/${userId}/demote-instance-admin` admin endpoint without auth \u2014 ui/src/api/access.ts:409"}, "properties": {"repobilityId": "a2d19bb3359b067f", "scanner": "scanner-primary", "fingerprint": "8051a698d7ec969c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.js.admin_unauth"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ui/src/api/access.ts"}, "region": {"startLine": 409}}}]}, {"ruleId": "scanner-b78bbb5245a0a508", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:${serverPort}/api/health (scripts/dev-runner.mjs:435)"}, "properties": {"repobilityId": "6295eb19c31a1f8e", "scanner": "scanner-primary", "fingerprint": "b78bbb5245a0a508", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bc16fb92e207f3ab", "level": "error", "message": {"text": "Dangling fetch: GET https://api.github.com${path} (.github/scripts/get-bot-token.mjs:29)"}, "properties": {"repobilityId": "925c4815750b0c3c", "scanner": "scanner-primary", "fingerprint": "bc16fb92e207f3ab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5ccbedc76d5f1cfa", "level": "error", "message": {"text": "Dangling fetch: GET https://attacker.com/collect (.github/scripts/tests/check-pr-security.test.mjs:266)"}, "properties": {"repobilityId": "fa73046ffc3e443e", "scanner": "scanner-primary", "fingerprint": "5ccbedc76d5f1cfa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dc2f9a1567b2eb58", "level": "error", "message": {"text": "Dangling fetch: GET https://api.example.com (.github/scripts/tests/check-pr-security.test.mjs:282)"}, "properties": {"repobilityId": "cfe7453c0cef5632", "scanner": "scanner-primary", "fingerprint": "dc2f9a1567b2eb58", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a793a6aee9246938", "level": "error", "message": {"text": "Dangling fetch: POST https://api.linear.app/... (packages/plugins/sdk/src/define-plugin.ts:23)"}, "properties": {"repobilityId": "53404e8265191081", "scanner": "scanner-primary", "fingerprint": "a793a6aee9246938", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-303c6ff798197453", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:${serverPort}/api/health (scripts/dev-runner.ts:517)"}, "properties": {"repobilityId": "92c077eec3084af8", "scanner": "scanner-primary", "fingerprint": "303c6ff798197453", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4ac11793dc305001", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (cli/src/commands/onboard.ts:512)"}, "properties": {"repobilityId": "b0cb1ac5c6fdfe44", "scanner": "scanner-primary", "fingerprint": "4ac11793dc305001", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3a9f2e56c9ec4967", "level": "error", "message": {"text": "Dangling fetch: GET https://api.openai.com/v1/models (cli/src/commands/onboard.ts:533)"}, "properties": {"repobilityId": "4be3e30a5d6fe41d", "scanner": "scanner-primary", "fingerprint": "3a9f2e56c9ec4967", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bee6c3d7d070c717", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (cli/src/checks/llm-check.ts:23)"}, "properties": {"repobilityId": "711e07174180a7ac", "scanner": "scanner-primary", "fingerprint": "bee6c3d7d070c717", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-62c26c199235f299", "level": "error", "message": {"text": "Dangling fetch: GET https://api.openai.com/v1/models (cli/src/checks/llm-check.ts:54)"}, "properties": {"repobilityId": "1b7f832141fb56db", "scanner": "scanner-primary", "fingerprint": "62c26c199235f299", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-52b3b10b0c4b7260", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth${path} (ui/src/api/auth.ts:64)"}, "properties": {"repobilityId": "623902c7178c508b", "scanner": "scanner-primary", "fingerprint": "52b3b10b0c4b7260", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bea8ea2bcfad10f2", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/auth${path} (ui/src/api/auth.ts:78)"}, "properties": {"repobilityId": "e1bc7f6d461957fa", "scanner": "scanner-primary", "fingerprint": "bea8ea2bcfad10f2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-187f0ab45d3d79e1", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/get-session (ui/src/api/auth.ts:93)"}, "properties": {"repobilityId": "3e68bdafe531e8f0", "scanner": "scanner-primary", "fingerprint": "187f0ab45d3d79e1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ffa3aaf172872664", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/profile (ui/src/api/auth.ts:117)"}, "properties": {"repobilityId": "a1fe4a218f12eab7", "scanner": "scanner-primary", "fingerprint": "ffa3aaf172872664", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-36cfebc4eb6e1815", "level": "error", "message": {"text": "Dangling fetch: POST /api/health/dev-server/restart (ui/src/api/health.ts:42)"}, "properties": {"repobilityId": "7bb16db413271541", "scanner": "scanner-primary", "fingerprint": "36cfebc4eb6e1815", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fde4c08eb253fd07", "level": "error", "message": {"text": "Dangling fetch: GET /api/secrets (ui/src/components/MarkdownBody.test.tsx:143)"}, "properties": {"repobilityId": "18690d54a9c63b66", "scanner": "scanner-primary", "fingerprint": "fde4c08eb253fd07", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ee95b9a174a94bc6", "level": "error", "message": {"text": "Dangling fetch: GET /api/secrets (ui/src/components/MarkdownEditor.test.tsx:308)"}, "properties": {"repobilityId": "948c4c2d3311ff69", "scanner": "scanner-primary", "fingerprint": "ee95b9a174a94bc6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-213db461165aa6a8", "level": "error", "message": {"text": "Dangling fetch: GET /api/secrets (ui/src/components/MarkdownEditor.test.tsx:319)"}, "properties": {"repobilityId": "833d649cf46e7e20", "scanner": "scanner-primary", "fingerprint": "213db461165aa6a8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fce382c99e5b80d0", "level": "error", "message": {"text": "Dangling fetch: GET https://registry.npmjs.org/${encodeURIComponent(packageName)}/latest (ui/src/pages/AdapterManager.tsx:167)"}, "properties": {"repobilityId": "0bef2ec4b1e899db", "scanner": "scanner-primary", "fingerprint": "fce382c99e5b80d0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6eb452fbfb454d20", "level": "note", "message": {"text": "Unused endpoint: USE /api/auth"}, "properties": {"repobilityId": "4c21c6bc22d52f1c", "scanner": "scanner-primary", "fingerprint": "6eb452fbfb454d20", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a58e0f87cdbe627c", "level": "note", "message": {"text": "Unused endpoint: ALL /api/auth/{*authPath}"}, "properties": {"repobilityId": "cf350fcab5d78713", "scanner": "scanner-primary", "fingerprint": "a58e0f87cdbe627c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-374a37cda7ad9705", "level": "note", "message": {"text": "Unused endpoint: USE /companies"}, "properties": {"repobilityId": "18c62f324a60f748", "scanner": "scanner-primary", "fingerprint": "374a37cda7ad9705", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dde3adb27bf7eebe", "level": "note", "message": {"text": "Unused endpoint: USE /api"}, "properties": {"repobilityId": "b6c02166ba88fa20", "scanner": "scanner-primary", "fingerprint": "dde3adb27bf7eebe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3b59435b3211a9df", "level": "note", "message": {"text": "Unused endpoint: USE /assets"}, "properties": {"repobilityId": "179b720c1d209bc1", "scanner": "scanner-primary", "fingerprint": "3b59435b3211a9df", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5c85586f25e3eaaa", "level": "note", "message": {"text": "Unused endpoint: GET /cloud-upstreams"}, "properties": {"repobilityId": "2a38bac7b36e05db", "scanner": "scanner-primary", "fingerprint": "5c85586f25e3eaaa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-16880f67b39e9976", "level": "note", "message": {"text": "Unused endpoint: POST /cloud-upstreams/connect/start"}, "properties": {"repobilityId": "0edd1388a05978e8", "scanner": "scanner-primary", "fingerprint": "16880f67b39e9976", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c876827e18ce6253", "level": "note", "message": {"text": "Unused endpoint: POST /cloud-upstreams/connect/finish"}, "properties": {"repobilityId": "4008366d91612e89", "scanner": "scanner-primary", "fingerprint": "c876827e18ce6253", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-68d67a90a324d04f", "level": "note", "message": {"text": "Unused endpoint: POST /cloud-upstreams/:connectionId/push-runs/preview"}, "properties": {"repobilityId": "36cd4d5585163ee3", "scanner": "scanner-primary", "fingerprint": "68d67a90a324d04f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2c19f3c1f6dfad65", "level": "note", "message": {"text": "Unused endpoint: POST /cloud-upstreams/:connectionId/push-runs"}, "properties": {"repobilityId": "ca261c14646101ac", "scanner": "scanner-primary", "fingerprint": "2c19f3c1f6dfad65", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-00d8d401005cac0c", "level": "note", "message": {"text": "Unused endpoint: GET /cloud-upstreams/:connectionId/push-runs/:runId"}, "properties": {"repobilityId": "ae9c287b8f884a14", "scanner": "scanner-primary", "fingerprint": "00d8d401005cac0c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d04dc63c75395018", "level": "note", "message": {"text": "Unused endpoint: POST /cloud-upstreams/:connectionId/push-runs/:runId/cancel"}, "properties": {"repobilityId": "9795ef72f301bda5", "scanner": "scanner-primary", "fingerprint": "d04dc63c75395018", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dc66dc1546c5f49e", "level": "note", "message": {"text": "Unused endpoint: POST /cloud-upstreams/:connectionId/push-runs/:runId/activation"}, "properties": {"repobilityId": "b580645b23b1e07b", "scanner": "scanner-primary", "fingerprint": "dc66dc1546c5f49e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9a62dd20edf92579", "level": "note", "message": {"text": "Unused endpoint: GET /llms/agent-configuration.txt"}, "properties": {"repobilityId": "a8574553d0cd970f", "scanner": "scanner-primary", "fingerprint": "9a62dd20edf92579", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a03b289a13c8e749", "level": "note", "message": {"text": "Unused endpoint: GET /llms/agent-icons.txt"}, "properties": {"repobilityId": "4119446e64f82aba", "scanner": "scanner-primary", "fingerprint": "a03b289a13c8e749", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-36517128f8d98883", "level": "note", "message": {"text": "Unused endpoint: GET /llms/agent-configuration/:adapterType.txt"}, "properties": {"repobilityId": "14b4cfbc3130753b", "scanner": "scanner-primary", "fingerprint": "36517128f8d98883", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1f4df8a7dd600aec", "level": "note", "message": {"text": "Unused endpoint: GET /companies/:companyId/execution-workspaces"}, "properties": {"repobilityId": "bed603981f2c5a7b", "scanner": "scanner-primary", "fingerprint": "1f4df8a7dd600aec", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0145a62448b9b080", "level": "note", "message": {"text": "Unused endpoint: GET /execution-workspaces/:id"}, "properties": {"repobilityId": "af280af7b3384447", "scanner": "scanner-primary", "fingerprint": "0145a62448b9b080", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4fbd6f2d1161647e", "level": "note", "message": {"text": "Unused endpoint: GET /execution-workspaces/:id/close-readiness"}, "properties": {"repobilityId": "c1bd1a96e7ca8c70", "scanner": "scanner-primary", "fingerprint": "4fbd6f2d1161647e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e0c1d9fe35ced43a", "level": "note", "message": {"text": "Unused endpoint: GET /execution-workspaces/:id/workspace-operations"}, "properties": {"repobilityId": "48a0cde30166b28c", "scanner": "scanner-primary", "fingerprint": "e0c1d9fe35ced43a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-69645fc2deb1865d", "level": "note", "message": {"text": "Unused endpoint: POST /execution-workspaces/:id/runtime-services/:action"}, "properties": {"repobilityId": "550750da0f1cb093", "scanner": "scanner-primary", "fingerprint": "69645fc2deb1865d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cb8d112595019845", "level": "note", "message": {"text": "Unused endpoint: POST /execution-workspaces/:id/runtime-commands/:action"}, "properties": {"repobilityId": "88fb4d3e19348e9e", "scanner": "scanner-primary", "fingerprint": "cb8d112595019845", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-941c2db50bfd4587", "level": "note", "message": {"text": "Unused endpoint: PATCH /execution-workspaces/:id"}, "properties": {"repobilityId": "000c00cbc57eab48", "scanner": "scanner-primary", "fingerprint": "941c2db50bfd4587", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-17020e2f2b339d80", "level": "note", "message": {"text": "Unused endpoint: GET /companies/:companyId/secret-providers"}, "properties": {"repobilityId": "ac07d4ef4e8fc396", "scanner": "scanner-primary", "fingerprint": "17020e2f2b339d80", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a047b7b5c7859c0d", "level": "note", "message": {"text": "Unused endpoint: GET /companies/:companyId/secret-providers/health"}, "properties": {"repobilityId": "1c9276ee48e95295", "scanner": "scanner-primary", "fingerprint": "a047b7b5c7859c0d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-185968e08da4e213", "level": "note", "message": {"text": "Unused endpoint: GET /companies/:companyId/secret-provider-configs"}, "properties": {"repobilityId": "63ba1d320fea1674", "scanner": "scanner-primary", "fingerprint": "185968e08da4e213", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-48ad7e215f20425a", "level": "note", "message": {"text": "Unused endpoint: POST /companies/:companyId/secret-provider-configs/discovery/preview"}, "properties": {"repobilityId": "16b75feaa204f9c8", "scanner": "scanner-primary", "fingerprint": "48ad7e215f20425a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d54e24d275513921", "level": "note", "message": {"text": "Unused endpoint: POST /companies/:companyId/secret-provider-configs"}, "properties": {"repobilityId": "8735b1287ce8b356", "scanner": "scanner-primary", "fingerprint": "d54e24d275513921", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1891d5343b00abd0", "level": "note", "message": {"text": "Unused endpoint: GET /secret-provider-configs/:id"}, "properties": {"repobilityId": "94d64b1c9beaf77e", "scanner": "scanner-primary", "fingerprint": "1891d5343b00abd0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c89b26a21c6fe3b6", "level": "note", "message": {"text": "Unused endpoint: PATCH /secret-provider-configs/:id"}, "properties": {"repobilityId": "679176f66b117fbd", "scanner": "scanner-primary", "fingerprint": "c89b26a21c6fe3b6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c6fcee81dfc8c8f5", "level": "note", "message": {"text": "Unused endpoint: DELETE /secret-provider-configs/:id"}, "properties": {"repobilityId": "fdd99c699cd0f116", "scanner": "scanner-primary", "fingerprint": "c6fcee81dfc8c8f5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7fd18396e89cbc24", "level": "note", "message": {"text": "Unused endpoint: POST /secret-provider-configs/:id/default"}, "properties": {"repobilityId": "75226f1c721e9226", "scanner": "scanner-primary", "fingerprint": "7fd18396e89cbc24", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a4a52fb6a9221f66", "level": "note", "message": {"text": "Unused endpoint: POST /secret-provider-configs/:id/health"}, "properties": {"repobilityId": "cf2bb0b74c58cc54", "scanner": "scanner-primary", "fingerprint": "a4a52fb6a9221f66", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5ad3ff549aa01ccc", "level": "note", "message": {"text": "Unused endpoint: GET /companies/:companyId/secrets"}, "properties": {"repobilityId": "87f49c7b7bca28d9", "scanner": "scanner-primary", "fingerprint": "5ad3ff549aa01ccc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-60c52a0cdc66bcfd", "level": "note", "message": {"text": "Unused endpoint: POST /companies/:companyId/secrets"}, "properties": {"repobilityId": "f2d6e2575f5ac80e", "scanner": "scanner-primary", "fingerprint": "60c52a0cdc66bcfd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-69c7541b17642d8d", "level": "note", "message": {"text": "Unused endpoint: POST /companies/:companyId/secrets/remote-import/preview"}, "properties": {"repobilityId": "a4bef6accd9af13f", "scanner": "scanner-primary", "fingerprint": "69c7541b17642d8d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7974ced1a9a61fd4", "level": "note", "message": {"text": "Unused endpoint: POST /companies/:companyId/secrets/remote-import"}, "properties": {"repobilityId": "8d16c2494cc5b712", "scanner": "scanner-primary", "fingerprint": "7974ced1a9a61fd4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1ba1c032b8bbd574", "level": "note", "message": {"text": "Unused endpoint: POST /secrets/:id/rotate"}, "properties": {"repobilityId": "9a9541cc73844aad", "scanner": "scanner-primary", "fingerprint": "1ba1c032b8bbd574", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-02acc2e09c3b64f9", "level": "note", "message": {"text": "Unused endpoint: PATCH /secrets/:id"}, "properties": {"repobilityId": "264b51906577262e", "scanner": "scanner-primary", "fingerprint": "02acc2e09c3b64f9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d6219fe194f33aa0", "level": "note", "message": {"text": "Unused endpoint: GET /secrets/:id/usage"}, "properties": {"repobilityId": "ec0f939cbeb5c8ef", "scanner": "scanner-primary", "fingerprint": "d6219fe194f33aa0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ac2fda574401735d", "level": "note", "message": {"text": "Unused endpoint: GET /secrets/:id/access-events"}, "properties": {"repobilityId": "7e2169850221e7e8", "scanner": "scanner-primary", "fingerprint": "ac2fda574401735d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1ea4ce911b268d01", "level": "note", "message": {"text": "Unused endpoint: DELETE /secrets/:id"}, "properties": {"repobilityId": "732cba917e8f8442", "scanner": "scanner-primary", "fingerprint": "1ea4ce911b268d01", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-163278158f636ae9", "level": "note", "message": {"text": "Unused endpoint: GET /companies/:companyId/projects"}, "properties": {"repobilityId": "13b9ebfecc0fa337", "scanner": "scanner-primary", "fingerprint": "163278158f636ae9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cdcec0c7af38dbaa", "level": "note", "message": {"text": "Unused endpoint: GET /projects/:id"}, "properties": {"repobilityId": "5d98ef57fbb2cfc7", "scanner": "scanner-primary", "fingerprint": "cdcec0c7af38dbaa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d21c60a040cc1d66", "level": "note", "message": {"text": "Unused endpoint: POST /companies/:companyId/projects"}, "properties": {"repobilityId": "f680b2b55642a309", "scanner": "scanner-primary", "fingerprint": "d21c60a040cc1d66", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6984a16bee78bd37", "level": "note", "message": {"text": "Unused endpoint: PATCH /projects/:id"}, "properties": {"repobilityId": "9799a2154f2961d2", "scanner": "scanner-primary", "fingerprint": "6984a16bee78bd37", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-32cfc600e800f72e", "level": "note", "message": {"text": "Unused endpoint: GET /projects/:id/workspaces"}, "properties": {"repobilityId": "63781c4138e1576b", "scanner": "scanner-primary", "fingerprint": "32cfc600e800f72e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5388b49a5b253c4a", "level": "note", "message": {"text": "Unused endpoint: POST /projects/:id/workspaces"}, "properties": {"repobilityId": "ca1c76bfa1f3150c", "scanner": "scanner-primary", "fingerprint": "5388b49a5b253c4a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7669ae6438bf44ac", "level": "note", "message": {"text": "Unused endpoint: PATCH /projects/:id/workspaces/:workspaceId"}, "properties": {"repobilityId": "24f5568be80603f5", "scanner": "scanner-primary", "fingerprint": "7669ae6438bf44ac", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bbe73d2d35e40f33", "level": "note", "message": {"text": "Unused endpoint: POST /projects/:id/workspaces/:workspaceId/runtime-services/:action"}, "properties": {"repobilityId": "088d44f0aa58b006", "scanner": "scanner-primary", "fingerprint": "bbe73d2d35e40f33", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}