{"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-a0ee01f1337ae555", "name": "Stray `console.log` in TS/JS \u2014 temp-trigger.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 temp-trigger.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-72cfe0a5f75f31ce", "name": "Stray `console.log` in TS/JS \u2014 test-persistence.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-persistence.js:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9434b83afbc9146c", "name": "Icon-only button without accessible name \u2014 apps/web/src/multitable/components/MetaFormView.vue:234", "shortDescription": {"text": "Icon-only button without accessible name \u2014 apps/web/src/multitable/components/MetaFormView.vue:234"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f1fde4f47f8f0b88", "name": "Icon-only button without accessible name \u2014 apps/web/src/multitable/components/MetaViewTabBar.vue:11", "shortDescription": {"text": "Icon-only button without accessible name \u2014 apps/web/src/multitable/components/MetaViewTabBar.vue:11"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e53428e8d05e395a", "name": "Icon-only button without accessible name \u2014 apps/web/src/multitable/components/MetaBasePicker.vue:55", "shortDescription": {"text": "Icon-only button without accessible name \u2014 apps/web/src/multitable/components/MetaBasePicker.vue:55"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9cf8c19283731367", "name": "Icon-only button without accessible name \u2014 apps/web/src/multitable/components/cells/MetaCellEditor.vue:197", "shortDescription": {"text": "Icon-only button without accessible name \u2014 apps/web/src/multitable/components/cells/MetaCellEditor.vue:197"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ccf22e509707bf8", "name": "Icon-only button without accessible name \u2014 apps/web/src/views/AfterSalesView.vue:2099", "shortDescription": {"text": "Icon-only button without accessible name \u2014 apps/web/src/views/AfterSalesView.vue:2099"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1e6f2119a396c176", "name": "TODO/FIXME marker in shipping code \u2014 apps/web/src/views/KanbanView.vue:195", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/views/KanbanView.vue:195"}, "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-2f8a8e3304cff478", "name": "Stray `console.log` in TS/JS \u2014 apps/web/src/views/KanbanView.vue:196", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/views/KanbanView.vue:196"}, "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-2f5a890be7959ca6", "name": "Icon-only button without accessible name \u2014 apps/web/src/views/FormView.vue:326", "shortDescription": {"text": "Icon-only button without accessible name \u2014 apps/web/src/views/FormView.vue:326"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4bde0fbb4488b396", "name": "Icon-only button without accessible name \u2014 apps/web/src/views/GalleryView.vue:56", "shortDescription": {"text": "Icon-only button without accessible name \u2014 apps/web/src/views/GalleryView.vue:56"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fe78b89918b42db1", "name": "Icon-only button without accessible name \u2014 apps/web/src/views/CalendarView.vue:249", "shortDescription": {"text": "Icon-only button without accessible name \u2014 apps/web/src/views/CalendarView.vue:249"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-86b37a0b0d6ba7a7", "name": "Stray `console.log` in TS/JS \u2014 apps/web/src/views/CalendarView.vue:850", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/views/CalendarView.vue:850"}, "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-1633c5b946437b11", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-plugin-manifests.ts:173", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-plugin-manifests.ts:173"}, "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-a166bd02ae2e0054", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-db-schema.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-db-schema.js:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-60a3bdd1595acb98", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-demo-data.ts:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-demo-data.ts:76"}, "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-0f3b49e6cb72d4c7", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-cache-simulation.ts:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-cache-simulation.ts:60"}, "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-c2cc1f3dee948743", "name": "Stray `console.log` in TS/JS \u2014 scripts/gen-staging-token.js:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-staging-token.js:44"}, "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-2b5d459859384195", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-plugin-manifests.ts:273", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-plugin-manifests.ts:273"}, "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-3cbdefbe60643e9a", "name": "Stray `console.log` in TS/JS \u2014 scripts/dev-pattern-expiry-check.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-pattern-expiry-check.js: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-5b916967fbb77a40", "name": "Stray `console.log` in TS/JS \u2014 scripts/gen-dev-token.js:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-dev-token.js: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-e26db1eb041bff23", "name": "Stray `console.log` in TS/JS \u2014 scripts/phase5-metrics-percentiles.ts:341", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/phase5-metrics-percentiles.ts:341"}, "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-373ed7ce6cb6625b", "name": "Stray `console.log` in TS/JS \u2014 scripts/ops/staging-attendance-c5-delivery-smoke.ts:132", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ops/staging-attendance-c5-delivery-smoke.ts:132"}, "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-d89d1a828982bd93", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/test-persistence.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/test-persistence.js:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-78b2004478b114d8", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/test-kanban-integration.js:3", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/test-kanban-integration.js: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-7ffc258efb341928", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/types/cache.d.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/types/cache.d.ts:31"}, "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-af695f933d09986d", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/types/cache.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/types/cache.ts:29"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cad3cb1b6ff0bc5f", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/tests/utils/test-db.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/tests/utils/test-db.ts:41"}, "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-d42417348c4d3355", "name": "TODO/FIXME marker in shipping code \u2014 packages/core-backend/tests/e2e/multitable-perf-baseline.spec.ts:349", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core-backend/tests/e2e/multitable-perf-baseline.spec.ts:349"}, "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-a5e95df40a786ac9", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/tests/e2e/multitable-perf-baseline.spec.ts:283", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/tests/e2e/multitable-perf-baseline.spec.ts:283"}, "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-1202287fcd40449c", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/smoke-no-db.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/smoke-no-db.ts:44"}, "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-d36e87627017c470", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/pre-merge-check.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/pre-merge-check.ts:43"}, "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-c312d1e3f7d2f46b", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/test-plm-connection.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/test-plm-connection.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-f2540caab2da2045", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/smoke-sqlserver.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/smoke-sqlserver.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-d1d135a83e6fcda7", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/seed-rbac.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/seed-rbac.ts:57"}, "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-d59fb9c245d15303", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/gen-dev-token.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/gen-dev-token.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-8a711174dda788d3", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/run-snapshot-migration.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/run-snapshot-migration.ts:17"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c07b6d562abc771e", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/init-default-views.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/init-default-views.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ec83808e36d300e4", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/encrypt-dingtalk-integration-secrets.ts:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/encrypt-dingtalk-integration-secrets.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-1b9e32f0ba3dd018", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/phase5-snapshot-migrate-and-restore.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/phase5-snapshot-migrate-and-restore.ts:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c7f5a9d1fe64aefe", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/benchmark-messaging.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/benchmark-messaging.ts:5"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-67cb7d3eb4c15631", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/smoke-plugins.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/smoke-plugins.ts:63"}, "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-c94a0279f1e98705", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/smoke-sqlserver-seed.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/smoke-sqlserver-seed.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-49906228f410ed3e", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/config-reload.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/config-reload.ts:12"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-407eb25b12774500", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/kv-inspect.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/kv-inspect.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-91a8aeab3dde2257", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/benchmark/pattern-matching.ts:326", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/benchmark/pattern-matching.ts:326"}, "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-d61425cc49d6f6a7", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/core/cache/CacheRegistry.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/core/cache/CacheRegistry.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-aef91e350cb59816", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/core/cache/CacheRegistry.d.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/core/cache/CacheRegistry.d.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-68fe90dc846b8b52", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/core/cache/CacheRegistry.js:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/core/cache/CacheRegistry.js:44"}, "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-729a73ea4338db82", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/server.js:425", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/server.js:425"}, "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-239af8f589390e1d", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/seeds/seed-approvals.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/seeds/seed-approvals.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-f5dfdc171c570e16", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/scripts/seed-kanban-demo.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/scripts/seed-kanban-demo.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7e7f149ff43afc50", "name": "React Flow <MiniMap> without dark background \u2014 packages/core-backend/src/components/workflow-designer/WorkflowDesigner.v", "shortDescription": {"text": "React Flow <MiniMap> without dark background \u2014 packages/core-backend/src/components/workflow-designer/WorkflowDesigner.vue:69"}, "fullDescription": {"text": "A bare <MiniMap> renders with the vendor's white default in dark themes. Wrap the canvas in a class that overrides `.react-flow__minimap` background, or pass an explicit `style`/`maskColor`/`bgColor`.\n\nWhy: P1 in CHECKLIST.md \u2014 vendor defaults bleed light through.\nRule id: fq.minimap.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7ba18c9b34394779", "name": "React Flow <Controls> without dark theming \u2014 packages/core-backend/src/components/workflow-designer/WorkflowDesigner.vue", "shortDescription": {"text": "React Flow <Controls> without dark theming \u2014 packages/core-backend/src/components/workflow-designer/WorkflowDesigner.vue:74"}, "fullDescription": {"text": "`<Controls>` ships with white buttons. Override `.react-flow__controls` and `.react-flow__controls-button` in your stylesheet or pass a styled wrapper.\n\nWhy: P1 in CHECKLIST.md \u2014 vendor defaults bleed light through.\nRule id: fq.controls.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7bf94429d86f60bf", "name": "Icon-only button without accessible name \u2014 packages/core-backend/src/components/workflow-designer/PropertyPanel.vue:5", "shortDescription": {"text": "Icon-only button without accessible name \u2014 packages/core-backend/src/components/workflow-designer/PropertyPanel.vue:5"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aba9ac78d2f9cbb8", "name": "TODO/FIXME marker in shipping code \u2014 packages/core-backend/src/multitable/record-write-service.ts:1216", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core-backend/src/multitable/record-write-service.ts:1216"}, "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-8b498e175123c9f3", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/services/TelemetryService.ts:244", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/services/TelemetryService.ts:244"}, "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-d4297230375c42c7", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrate.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrate.ts:44"}, "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-6465acd6174a4329", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/_template.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/_template.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-6ecb099097eb4fa6", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/20251206000001_create_data_sources_table.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/20251206000001_create_data_sources_table.ts:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-78d8409e5704db9f", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/zzzz20260611090000_create_multitable_ai_usage_led", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/zzzz20260611090000_create_multitable_ai_usage_ledger.ts:29"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-32033142fbc2c8bb", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/20251116120000_create_snapshot_tables.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/20251116120000_create_snapshot_tables.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-2d0d5b88c27fb375", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/zzzz20260413120000_create_automation_rules.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/zzzz20260413120000_create_automation_rules.ts:17"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8c48ddaaffb99426", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/zzzz20260414100001_create_automation_executions_a", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/zzzz20260414100001_create_automation_executions_and_dashboard_charts.ts:17"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a50ab19a6e4aca21", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/zzzz20260414100000_extend_automation_rules.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/zzzz20260414100000_extend_automation_rules.ts:17"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bb5d3d48caeb257c", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/_patterns.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/_patterns.ts:45"}, "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-3c534abd4e73dba8", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/20250924200000_create_event_bus_tables.ts:280", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/20250924200000_create_event_bus_tables.ts:280"}, "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-6ae1b149650c89d0", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/20251117000001_add_snapshot_labels.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/20251117000001_add_snapshot_labels.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-8e6f07774344e283", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/20251117000002_create_protection_rules.ts:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/20251117000002_create_protection_rules.ts:80"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dea58cb6451e1b4a", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/20250924120000_create_views_view_states.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/20250924120000_create_views_view_states.ts:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7c0351c7041172c6", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/core/view-data-registry.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/core/view-data-registry.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-e9c5e259af47f4c0", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/core/view-config-registry.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/core/view-config-registry.ts:41"}, "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-a478283bf281cd6b", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/core/plugin-rpc.example.ts:634", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/core/plugin-rpc.example.ts:634"}, "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-8e4503f564d8d665", "name": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/data-adapters/DataSourceManager.ts:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/data-adapters/DataSourceManager.ts:119"}, "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-55495c93dee0b87b", "name": "Stray `console.log` in TS/JS \u2014 packages/openapi/tools/diff.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/openapi/tools/diff.ts:45"}, "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-e869b66b711dfeeb", "name": "Stray `console.log` in TS/JS \u2014 packages/openapi/tools/build.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/openapi/tools/build.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-0c16dd37a3b38541", "name": "Stray `console.log` in TS/JS \u2014 packages/openapi/tools/validate.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/openapi/tools/validate.ts:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5d46bd02c6b7a662", "name": "TODO/FIXME marker in shipping code \u2014 tools/cli/src/commands/create.ts:272", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 tools/cli/src/commands/create.ts:272"}, "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-1239ed55310a1d35", "name": "Stray `console.log` in TS/JS \u2014 tools/cli/src/commands/create.ts:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/cli/src/commands/create.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-ced3f0b0aa22ebe1", "name": "Stray `console.log` in TS/JS \u2014 plugins/plugin-intelligent-restore/src/index.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 plugins/plugin-intelligent-restore/src/index.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-ea6578c56d33a337", "name": "Stray `console.log` in TS/JS \u2014 plugins/plugin-intelligent-restore/src/IntelligentRestoreView.vue:189", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 plugins/plugin-intelligent-restore/src/IntelligentRestoreView.vue:189"}, "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-84394382d29f511e", "name": "Stray `console.log` in TS/JS \u2014 plugins/plugin-audit-logger/src/index.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 plugins/plugin-audit-logger/src/index.ts:45"}, "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-e0faf171e807b356", "name": "Stray `console.log` in TS/JS \u2014 plugins/plugin-telemetry-otel/tests/smoke.test.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 plugins/plugin-telemetry-otel/tests/smoke.test.ts:17"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-773a2ccaf5168813", "name": "Stray `console.log` in TS/JS \u2014 plugins/plugin-telemetry-otel/scripts/local-smoke.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 plugins/plugin-telemetry-otel/scripts/local-smoke.js: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-21e3330573c26981", "name": "Stray `console.log` in TS/JS \u2014 plugins/hello-world/src/index.js:3", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 plugins/hello-world/src/index.js: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-ad8de1cd268862af", "name": "Stray `console.log` in TS/JS \u2014 plugins/example-plugin/index.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 plugins/example-plugin/index.js:5"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b4b2b6ebab81e7a0", "name": "Privileged port 95 in use", "shortDescription": {"text": "Privileged port 95 in use"}, "fullDescription": {"text": "Port 95 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c414bb93b5ab67f5", "name": "Privileged port 30 in use", "shortDescription": {"text": "Privileged port 30 in use"}, "fullDescription": {"text": "Port 30 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1dcbd18dc6ae8621", "name": "Privileged port 10 in use", "shortDescription": {"text": "Privileged port 10 in use"}, "fullDescription": {"text": "Port 10 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e29bbc220b58696e", "name": "Privileged port 15 in use", "shortDescription": {"text": "Privileged port 15 in use"}, "fullDescription": {"text": "Port 15 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f1b5066932c8cdac", "name": "Privileged port 24 in use", "shortDescription": {"text": "Privileged port 24 in use"}, "fullDescription": {"text": "Port 24 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ee73d391e0da07ce", "name": "Privileged port 12 in use", "shortDescription": {"text": "Privileged port 12 in use"}, "fullDescription": {"text": "Port 12 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8ac8952f11db06be", "name": "Privileged port 23 in use", "shortDescription": {"text": "Privileged port 23 in use"}, "fullDescription": {"text": "Port 23 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-24ba6dc28e83df1f", "name": "Privileged port 9 in use", "shortDescription": {"text": "Privileged port 9 in use"}, "fullDescription": {"text": "Port 9 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b39afd0a96c0bcca", "name": "Privileged port 11 in use", "shortDescription": {"text": "Privileged port 11 in use"}, "fullDescription": {"text": "Port 11 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5600dd40874a31a9", "name": "Privileged port 3 in use", "shortDescription": {"text": "Privileged port 3 in use"}, "fullDescription": {"text": "Port 3 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2e35a39f303501c9", "name": "Privileged port 35 in use", "shortDescription": {"text": "Privileged port 35 in use"}, "fullDescription": {"text": "Port 35 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-59ccfcd7753b4d2b", "name": "Privileged port 18 in use", "shortDescription": {"text": "Privileged port 18 in use"}, "fullDescription": {"text": "Port 18 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-537ebb66ed38f637", "name": "Privileged port 21 in use", "shortDescription": {"text": "Privileged port 21 in use"}, "fullDescription": {"text": "Port 21 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-04f7063ff666f260", "name": "Privileged port 50 in use", "shortDescription": {"text": "Privileged port 50 in use"}, "fullDescription": {"text": "Port 50 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1865bd1d75e67e12", "name": "Privileged port 28 in use", "shortDescription": {"text": "Privileged port 28 in use"}, "fullDescription": {"text": "Port 28 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8b891a5d8d819691", "name": "Privileged port 587 in use", "shortDescription": {"text": "Privileged port 587 in use"}, "fullDescription": {"text": "Port 587 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7345a6be970fc560", "name": "Privileged port 16 in use", "shortDescription": {"text": "Privileged port 16 in use"}, "fullDescription": {"text": "Port 16 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-57fcc20af123ffd0", "name": "Privileged port 20 in use", "shortDescription": {"text": "Privileged port 20 in use"}, "fullDescription": {"text": "Port 20 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb87d3b90f678c59", "name": "Privileged port 19 in use", "shortDescription": {"text": "Privileged port 19 in use"}, "fullDescription": {"text": "Port 19 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-775c7576a4a8a9d7", "name": "Privileged port 17 in use", "shortDescription": {"text": "Privileged port 17 in use"}, "fullDescription": {"text": "Port 17 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d472097f6d43a7a7", "name": "Privileged port 55 in use", "shortDescription": {"text": "Privileged port 55 in use"}, "fullDescription": {"text": "Port 55 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3b580dc538990db6", "name": "Privileged port 42 in use", "shortDescription": {"text": "Privileged port 42 in use"}, "fullDescription": {"text": "Port 42 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e9c20412b8b4adb8", "name": "Privileged port 38 in use", "shortDescription": {"text": "Privileged port 38 in use"}, "fullDescription": {"text": "Port 38 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7475801e6d1c618b", "name": "Privileged port 58 in use", "shortDescription": {"text": "Privileged port 58 in use"}, "fullDescription": {"text": "Port 58 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dc057db0e8636fea", "name": "Privileged port 57 in use", "shortDescription": {"text": "Privileged port 57 in use"}, "fullDescription": {"text": "Port 57 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-16a84e4c1329f968", "name": "Privileged port 43 in use", "shortDescription": {"text": "Privileged port 43 in use"}, "fullDescription": {"text": "Port 43 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7b9d8ca60c9d56ba", "name": "Privileged port 54 in use", "shortDescription": {"text": "Privileged port 54 in use"}, "fullDescription": {"text": "Port 54 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-db3112c01782350f", "name": "Privileged port 48 in use", "shortDescription": {"text": "Privileged port 48 in use"}, "fullDescription": {"text": "Port 48 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-17561be739315237", "name": "Privileged port 51 in use", "shortDescription": {"text": "Privileged port 51 in use"}, "fullDescription": {"text": "Port 51 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f3e338db9d2d1af5", "name": "Privileged port 4 in use", "shortDescription": {"text": "Privileged port 4 in use"}, "fullDescription": {"text": "Port 4 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9523b2c371cd4d65", "name": "Privileged port 6 in use", "shortDescription": {"text": "Privileged port 6 in use"}, "fullDescription": {"text": "Port 6 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-572547e29ada117a", "name": "Runtime dotenv file present in repo: packages/core-backend/.env", "shortDescription": {"text": "Runtime dotenv file present in repo: packages/core-backend/.env"}, "fullDescription": {"text": "`packages/core-backend/.env` looks like a runtime dotenv file. It contains secret-looking assignments for JWT_SECRET. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-3585d0c692834018", "name": "Possible secret in apps/web/src/router/types.ts", "shortDescription": {"text": "Possible secret in apps/web/src/router/types.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-be5e27f672001208", "name": "Insecure pattern 'local_storage_auth_token' in apps/web/src/composables/useAuth.ts:179", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in apps/web/src/composables/useAuth.ts:179"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-14033193042837ff", "name": "Insecure pattern 'vue_v_html' in apps/web/src/multitable/components/MetaRecordDrawer.vue:262", "shortDescription": {"text": "Insecure pattern 'vue_v_html' in apps/web/src/multitable/components/MetaRecordDrawer.vue:262"}, "fullDescription": {"text": "Found a known-risky pattern (vue_v_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-efff6e7bb02c9b9c", "name": "Insecure pattern 'exec_used' in apps/web/src/multitable/components/cells/MetaRichLongTextEditor.vue:12", "shortDescription": {"text": "Insecure pattern 'exec_used' in apps/web/src/multitable/components/cells/MetaRichLongTextEditor.vue:12"}, "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-f61060e1f478d0d4", "name": "Insecure pattern 'direct_innerhtml_assignment' in apps/web/src/multitable/components/cells/MetaRichLongTextEditor.vue:23", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in apps/web/src/multitable/components/cells/MetaRichLongTextEditor.vue:239"}, "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-d1fa73a01e9e3ba2", "name": "Insecure pattern 'vue_v_html' in apps/web/src/multitable/components/cells/MetaRichLongTextRender.vue:14", "shortDescription": {"text": "Insecure pattern 'vue_v_html' in apps/web/src/multitable/components/cells/MetaRichLongTextRender.vue:14"}, "fullDescription": {"text": "Found a known-risky pattern (vue_v_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5fbb30222eb67583", "name": "Insecure pattern 'vue_v_html' in apps/web/src/multitable/components/cells/MetaCellRenderer.vue:38", "shortDescription": {"text": "Insecure pattern 'vue_v_html' in apps/web/src/multitable/components/cells/MetaCellRenderer.vue:38"}, "fullDescription": {"text": "Found a known-risky pattern (vue_v_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-98896d5c74aa1f09", "name": "Possible secret in apps/web/src/views/LoginView.vue", "shortDescription": {"text": "Possible secret in apps/web/src/views/LoginView.vue"}, "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-51ebf990bac2dc8f", "name": "Insecure pattern 'node_child_process' in scripts/verify-univer-ui-smoke.mjs:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/verify-univer-ui-smoke.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-f17a4d3fbc6cca91", "name": "Insecure pattern 'local_storage_auth_token' in scripts/verify-univer-ui-smoke.mjs:185", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/verify-univer-ui-smoke.mjs:185"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-86e167c942f7fa69", "name": "Possible secret in scripts/verify-multitable-live-smoke.mjs", "shortDescription": {"text": "Possible secret in scripts/verify-multitable-live-smoke.mjs"}, "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-2ed31bb4603b01ec", "name": "Insecure pattern 'local_storage_auth_token' in scripts/verify-multitable-live-smoke.mjs:4263", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/verify-multitable-live-smoke.mjs:4263"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-790fb40031a68b26", "name": "Insecure pattern 'local_storage_auth_token' in scripts/verify-attendance-full-flow.mjs:181", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/verify-attendance-full-flow.mjs:181"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ce5ce1586a8c41b5", "name": "Insecure pattern 'local_storage_auth_token' in scripts/verify-attendance-ui-regression.mjs:65", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/verify-attendance-ui-regression.mjs:65"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-97308b3f13836129", "name": "Insecure pattern 'local_storage_auth_token' in scripts/verify-attendance-import-ui.mjs:73", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/verify-attendance-import-ui.mjs:73"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dfe1232340c9d8d7", "name": "Insecure pattern 'local_storage_auth_token' in scripts/verify-attendance-locale-zh-smoke.mjs:568", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/verify-attendance-locale-zh-smoke.mjs:568"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-da2d713f3d967f42", "name": "Insecure pattern 'local_storage_auth_token' in scripts/verify-attendance-ui.mjs:375", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/verify-attendance-ui.mjs:375"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3d5c9cbcb4955c50", "name": "Insecure pattern 'local_storage_auth_token' in scripts/profile-multitable-grid.mjs:281", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/profile-multitable-grid.mjs:281"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c4321fef7f064a2d", "name": "Insecure pattern 'local_storage_auth_token' in scripts/verify-attendance-production-flow.mjs:204", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/verify-attendance-production-flow.mjs:204"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f191f1ceb9f8adca", "name": "Insecure pattern 'local_storage_auth_token' in scripts/verify-plm-ui-regression.sh:593", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/verify-plm-ui-regression.sh:593"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8938f6cac259bcec", "name": "Insecure pattern 'local_storage_auth_token' in scripts/attendance-ui-verify.mjs:20", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/attendance-ui-verify.mjs:20"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-55cf98297c28d76b", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-screenshot-archive.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-screenshot-archive.test.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-34e610af11f4f35e", "name": "Insecure pattern 'node_child_process' in scripts/ops/attendance-run-perf-highscale.test.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-run-perf-highscale.test.mjs: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-9e305b80711da902", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-regression-gate.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-regression-gate.test.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-bfca3d7cf925cc27", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-public-form-mobile-signoff.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-public-form-mobile-signoff.test.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-67bb2bf58a8c3b08", "name": "Insecure pattern 'node_child_process' in scripts/ops/attendance-fast-parallel-regression.test.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-fast-parallel-regression.test.mjs: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-4a5fd9a7f9d67e2e", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-evidence-record.mjs:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-evidence-record.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-13836cd962958fd8", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-work-notification-agent-id-apply.mjs:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-work-notification-agent-id-apply.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-9322bc38d7e32026", "name": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-gate-contract-check.test.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-gate-contract-check.test.mjs: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-545aad14f5ca3d45", "name": "Insecure pattern 'node_child_process' in scripts/ops/multitable-email-transport-readiness.test.mjs:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-email-transport-readiness.test.mjs:6"}, "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-1aa34e89ffe150fd", "name": "Insecure pattern 'node_child_process' in scripts/ops/attendance-classify-perf-runtime-failure.test.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-classify-perf-runtime-failure.test.mjs: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-7118aa4bab46c2b5", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-env-bootstrap.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-env-bootstrap.test.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-392c00e39c301e50", "name": "Insecure pattern 'node_child_process' in scripts/ops/attendance-auth-scripts.test.mjs:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-auth-scripts.test.mjs:6"}, "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-88adef75b23d0204", "name": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-ready-staging.test.mjs:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-ready-staging.test.mjs:7"}, "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-17bb452b110482b2", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-work-notification-release-gate.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-work-notification-release-gate.test.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-99a644d64777c1a5", "name": "Insecure pattern 'node_child_process' in scripts/ops/multitable-automation-soak.test.mjs:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-automation-soak.test.mjs:6"}, "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-cd8a7be11d10d11d", "name": "Insecure pattern 'node_child_process' in scripts/ops/attendance-run-workflow-dispatch.test.mjs:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-run-workflow-dispatch.test.mjs:6"}, "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-443c312ec1fecdb7", "name": "Insecure pattern 'node_child_process' in scripts/ops/attendance-onprem-publish-web-dist.test.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-onprem-publish-web-dist.test.mjs: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-966d83d8602ec9c0", "name": "Insecure pattern 'node_child_process' in scripts/ops/ecosystem-env-loader.test.mjs:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/ecosystem-env-loader.test.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-93ab2cf8e068b5ae", "name": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-postdeploy-smoke.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-postdeploy-smoke.test.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-85a62551f47dc11e", "name": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-onprem-preflight.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-onprem-preflight.test.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-7d0a6a31e0f60784", "name": "Insecure pattern 'node_child_process' in scripts/ops/check-pr-mainline-readiness.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/check-pr-mainline-readiness.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-386da454913b4bcd", "name": "Insecure pattern 'node_child_process' in scripts/ops/resolve-attendance-smoke-token.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/resolve-attendance-smoke-token.test.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-3275a396d600e07a", "name": "Insecure pattern 'node_child_process' in scripts/ops/capture-yjs-rollout-report.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/capture-yjs-rollout-report.mjs: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-f1a08b6d57958420", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-regression-gate.mjs:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-regression-gate.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-931446f44892cfad", "name": "Insecure pattern 'node_child_process' in scripts/ops/multitable-dangling-link-sweep.mjs:26", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-dangling-link-sweep.mjs:26"}, "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-058f74d29b80bd11", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-alertmanager-closeout.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-alertmanager-closeout.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-5f2ca29e5e1cc37e", "name": "Insecure pattern 'node_child_process' in scripts/ops/attendance-reconcile-csv-cap.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-reconcile-csv-cap.test.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-ba95ec2a09b8587e", "name": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-postdeploy-env-check.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-postdeploy-env-check.test.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-e78f23bdebef522d", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-remote-smoke.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-remote-smoke.test.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-9674f6332d15ba2e", "name": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-staging.test.mjs:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-staging.test.mjs:7"}, "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-3abf87af1de5f883", "name": "Insecure pattern 'node_child_process' in scripts/ops/multitable-phase3-release-gate.mjs:28", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-phase3-release-gate.mjs:28"}, "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-fe6cc6567dd74a80", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-evidence-record.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-evidence-record.test.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-e3dc63726865f9b8", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-smoke-status.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-smoke-status.test.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-c973f5a7f3152b95", "name": "Insecure pattern 'node_child_process' in scripts/ops/multitable-ai-readiness-gate.test.mjs:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-ai-readiness-gate.test.mjs:6"}, "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-b059649cc4f6520c", "name": "Insecure pattern 'node_child_process' in scripts/ops/multitable-onprem-release-gate.test.mjs:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-onprem-release-gate.test.mjs:7"}, "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-8f1273ed00f18294", "name": "Insecure pattern 'node_child_process' in scripts/ops/staging-migration-alignment-report.test.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/staging-migration-alignment-report.test.mjs: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-f655500529104650", "name": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-onprem-preflight.mjs:25", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-onprem-preflight.mjs:25"}, "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-1f8a9ebf9b78d4fd", "name": "Insecure pattern 'node_child_process' in scripts/ops/multitable-email-real-send-smoke.test.mjs:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-email-real-send-smoke.test.mjs:6"}, "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-7c6e7a5084e8c995", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-work-notification-agent-id-apply.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-work-notification-agent-id-apply.test.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-590e015cbd4cc4ab", "name": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-release-bound.test.mjs:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-release-bound.test.mjs:7"}, "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-5ed188dc9331e05b", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-offline-handoff.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-offline-handoff.test.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-6c32d83f767b0b40", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-release-readiness.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-release-readiness.test.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-e2d368f423b4e491", "name": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-release-gate.test.mjs:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-release-gate.test.mjs:7"}, "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-9f0afe18d848e149", "name": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-local.test.mjs:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-local.test.mjs:7"}, "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-8807f2989b36405f", "name": "Insecure pattern 'node_child_process' in scripts/ops/validate-dingtalk-staging-evidence-packet.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/validate-dingtalk-staging-evidence-packet.test.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-d5338453b19284fb", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-final-handoff.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-final-handoff.test.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-b03692772336387d", "name": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-readiness.test.mjs:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-readiness.test.mjs:7"}, "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-0f8044bec35553c7", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-final-docs.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-final-docs.test.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-5e83f230a5d2f648", "name": "Insecure pattern 'node_child_process' in scripts/ops/prefill-yjs-rollout-signoff.test.mjs:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/prefill-yjs-rollout-signoff.test.mjs:6"}, "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-08fcb2148cc763f5", "name": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-release-bound-wrapper.test.mjs:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-release-bound-wrapper.test.mjs:7"}, "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-73005c1907378f1f", "name": "Insecure pattern 'node_child_process' in scripts/ops/resolve-metrics-scrape-token.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/resolve-metrics-scrape-token.test.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-7efd047b4605a332", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-final-closeout.mjs:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-final-closeout.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-563e2726314b1cec", "name": "Insecure pattern 'node_child_process' in scripts/ops/advance-yjs-rollout-stack.mjs:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/advance-yjs-rollout-stack.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-30738466b8df4efe", "name": "Insecure pattern 'node_child_process' in scripts/ops/staging-migration-schema-probe-summary.test.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/staging-migration-schema-probe-summary.test.mjs: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-b66f1d656659aa2c", "name": "Insecure pattern 'node_child_process' in scripts/ops/integration-erp-plm-deploy-readiness.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/integration-erp-plm-deploy-readiness.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-b617bcd8241376cd", "name": "Insecure pattern 'exec_used' in scripts/ops/attendance-check-storage.sh:278", "shortDescription": {"text": "Insecure pattern 'exec_used' in scripts/ops/attendance-check-storage.sh:278"}, "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-12bdac2c28a546f9", "name": "Insecure pattern 'node_child_process' in scripts/ops/capture-yjs-rollout-report.test.mjs:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/capture-yjs-rollout-report.test.mjs:6"}, "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-c07e4c17d55bce7d", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-work-notification-admin-agent-id.test.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-work-notification-admin-agent-id.test.mjs: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-4aaf905a548b1b28", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-final-handoff.mjs:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-final-handoff.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-5f744fc2b0688e95", "name": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-release-bound-wrappers.test.mjs:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-release-bound-wrappers.test.mjs:7"}, "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-25975f08cb53ec23", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-alertmanager-closeout.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-alertmanager-closeout.test.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-bddc265bfadad641", "name": "Insecure pattern 'node_child_process' in scripts/ops/github-actions-runtime-readiness.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/github-actions-runtime-readiness.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-cd53291c4492c455", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-smoke-preflight.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-smoke-preflight.test.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-4a5b7679f463f44a", "name": "Insecure pattern 'node_child_process' in scripts/ops/attendance-c5-real-dingtalk-preflight.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-c5-real-dingtalk-preflight.test.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-a0a363d7fdc8a1f6", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-smoke-session.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-smoke-session.test.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-4d8597002ec4d10a", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-release-readiness.mjs:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-release-readiness.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-35b9070cb517c088", "name": "Insecure pattern 'node_child_process' in scripts/ops/check-yjs-retention-health.mjs:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/check-yjs-retention-health.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-7a39bdce3b211d71", "name": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-ready-local.test.mjs:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-ready-local.test.mjs:7"}, "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-b56d79870aa57f17", "name": "Possible secret in scripts/ops/multitable-onprem-preflight.sh", "shortDescription": {"text": "Possible secret in scripts/ops/multitable-onprem-preflight.sh"}, "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-21b51d19d0fd91b2", "name": "Insecure pattern 'node_child_process' in scripts/ops/attendance-daily-gate-report.mjs:16", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-daily-gate-report.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-aa5015e8f8ea31ff", "name": "Insecure pattern 'node_child_process' in scripts/ops/integration-issue1542-seed-workbench-systems.test.mjs:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/integration-issue1542-seed-workbench-systems.test.mjs:6"}, "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-e8cd0dcd08ecfa95", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-final-closeout.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-final-closeout.test.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-05dd5daf2f3a8779", "name": "Insecure pattern 'node_child_process' in scripts/ops/attendance-fast-parallel-summary-report.test.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-fast-parallel-summary-report.test.mjs: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-c3b79a0385f07b8a", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-work-notification-release-gate.mjs:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-work-notification-release-gate.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-c1a707915a13e18d", "name": "Insecure pattern 'node_child_process' in scripts/ops/attendance-classify-perf-capacity-mismatch.test.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-classify-perf-capacity-mismatch.test.mjs: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-6aa0275cf1381a5f", "name": "Insecure pattern 'node_child_process' in scripts/ops/set-dingtalk-alertmanager-webhook-secret.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/set-dingtalk-alertmanager-webhook-secret.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-20c896bb9c05ec37", "name": "Insecure pattern 'node_child_process' in scripts/ops/resolve-k3wise-smoke-token.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/resolve-k3wise-smoke-token.test.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-ccb8bb6d03e7ae11", "name": "Insecure pattern 'node_child_process' in scripts/ops/github-dingtalk-oauth-stability-summary.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/github-dingtalk-oauth-stability-summary.test.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-84bd893fed6d660c", "name": "Insecure pattern 'node_child_process' in scripts/ops/staging-migration-alignment-report.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/staging-migration-alignment-report.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-8a3804f0a54af888", "name": "Insecure pattern 'node_child_process' in scripts/ops/export-dingtalk-staging-evidence-packet.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/export-dingtalk-staging-evidence-packet.test.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-fcfbcb7901413421", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-final-input-status.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-final-input-status.test.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-4ce9f37e98d6c90f", "name": "Insecure pattern 'node_child_process' in scripts/ops/set-dingtalk-alertmanager-webhook-secret.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/set-dingtalk-alertmanager-webhook-secret.test.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-388985fa3fe6a98a", "name": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-postdeploy-summary.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-postdeploy-summary.test.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-3965d9e08001ec67", "name": "Insecure pattern 'node_child_process' in scripts/ops/compile-dingtalk-p4-smoke-evidence.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/compile-dingtalk-p4-smoke-evidence.test.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-00931de68568c843", "name": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-handoff.test.mjs:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-handoff.test.mjs:7"}, "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-ae2f2461afceedbb", "name": "Insecure pattern 'node_child_process' in scripts/ops/attendance-onprem-package-verify-migrations.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-onprem-package-verify-migrations.test.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-0a95f20c2e908dd1", "name": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-signoff-gate.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-signoff-gate.test.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-ee7bf7dd24510121", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-smoke-session.mjs:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-smoke-session.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-373f1118a441bcb2", "name": "Insecure pattern 'node_child_process' in scripts/ops/attendance-check-metrics.test.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-check-metrics.test.mjs: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-426b9319eda8d092", "name": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-work-notification-env-status.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-work-notification-env-status.test.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-0c7f7a3abe57742d", "name": "Insecure pattern 'node_child_process' in scripts/ops/multitable-phase3-release-gate.test.mjs:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-phase3-release-gate.test.mjs:6"}, "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-b2331beeaf61a120", "name": "Insecure pattern 'node_child_process' in scripts/ops/phase5-cache-hit-rate-contract.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/phase5-cache-hit-rate-contract.test.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-b6df861a18dc7121", "name": "Insecure pattern 'node_child_process' in scripts/ops/github-actions-runtime-readiness.test.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/github-actions-runtime-readiness.test.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-b7ab6c7a5f412ffa", "name": "Insecure pattern 'node_child_process' in scripts/ops/check-pr-stack-readiness.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/check-pr-stack-readiness.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-7b26eecc42ebeeb1", "name": "Insecure pattern 'node_child_process' in scripts/ops/run-yjs-rollout-gate.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ops/run-yjs-rollout-gate.mjs: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-ac0717e9d5ff26f8", "name": "Insecure pattern 'direct_innerhtml_assignment' in packages/core-backend/test-error-banner.html:27", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in packages/core-backend/test-error-banner.html: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-c7bda3adff1d1288", "name": "Insecure pattern 'direct_innerhtml_assignment' in packages/core-backend/test-frontend.html:22", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in packages/core-backend/test-frontend.html:22"}, "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-b871e693abc6c64c", "name": "Insecure pattern 'cors_wildcard' in packages/core-backend/src/server.js:91", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in packages/core-backend/src/server.js:91"}, "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-6da7612aac84ff03", "name": "Insecure pattern 'eval_used' in packages/core-backend/src/integration/rate-limiting/redis-token-bucket-store.ts:160", "shortDescription": {"text": "Insecure pattern 'eval_used' in packages/core-backend/src/integration/rate-limiting/redis-token-bucket-store.ts:160"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-52df59bae42f6373", "name": "Insecure pattern 'eval_used' in packages/core-backend/src/multitable/redis-leader-lock.ts:38", "shortDescription": {"text": "Insecure pattern 'eval_used' in packages/core-backend/src/multitable/redis-leader-lock.ts:38"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-737b1bdaea4ed45d", "name": "Insecure pattern 'exec_used' in packages/core-backend/src/multitable/automation-service.ts:611", "shortDescription": {"text": "Insecure pattern 'exec_used' in packages/core-backend/src/multitable/automation-service.ts:611"}, "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-8c1d869a5b42ab17", "name": "Insecure pattern 'node_child_process' in packages/core-backend/src/sandbox/ScriptSandbox.ts:332", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/core-backend/src/sandbox/ScriptSandbox.ts:332"}, "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-0f0d4b88a1219747", "name": "Insecure pattern 'cors_wildcard' in packages/core-backend/src/services/MetricsStreamService.ts:107", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in packages/core-backend/src/services/MetricsStreamService.ts:107"}, "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-d7ccdb78df34559b", "name": "Insecure pattern 'cors_wildcard' in packages/core-backend/src/services/CollabService.ts:245", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in packages/core-backend/src/services/CollabService.ts:245"}, "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-5e7e9ba78e383271", "name": "Insecure pattern 'exec_used' in packages/core-backend/src/services/CacheService.ts:41", "shortDescription": {"text": "Insecure pattern 'exec_used' in packages/core-backend/src/services/CacheService.ts:41"}, "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-0d9f8c618e30a83c", "name": "Insecure pattern 'exec_used' in packages/core-backend/src/gateway/RateLimiter.ts:18", "shortDescription": {"text": "Insecure pattern 'exec_used' in packages/core-backend/src/gateway/RateLimiter.ts:18"}, "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-55409e7ec6aa6f5c", "name": "Insecure pattern 'eval_used' in packages/core-backend/src/gateway/redis-circuit-breaker-store.ts:372", "shortDescription": {"text": "Insecure pattern 'eval_used' in packages/core-backend/src/gateway/redis-circuit-breaker-store.ts:372"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-160bed30ede9182d", "name": "Insecure pattern 'cors_wildcard' in packages/core-backend/src/gateway/APIGateway.ts:195", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in packages/core-backend/src/gateway/APIGateway.ts:195"}, "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-3c0976a893db9c90", "name": "Insecure pattern 'node_child_process' in packages/openapi/dist-sdk/scripts/build.mjs:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/openapi/dist-sdk/scripts/build.mjs:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-625904ebb606ef2b", "name": "Possible secret in .github/workflows/sqlserver-smoke.yml", "shortDescription": {"text": "Possible secret in .github/workflows/sqlserver-smoke.yml"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-815d3a6755e5de3e", "name": "Insecure pattern 'node_child_process' in plugins/plugin-integration-core/__tests__/k3-sqlserver-smoke-script.test.cjs:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in plugins/plugin-integration-core/__tests__/k3-sqlserver-smoke-script.test.cjs: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-96d88dedacf454c7", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6e93b17e19af7da8", "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-2bf3621b608d138a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a44f99e8acccfc33", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-07124fc19ab90c05", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-91aa58942f4261a0", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-086d71400c5b7cd1", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-56a1311090c642e6", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d2c4f33a9580cb25", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9c71a605bf6db03c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7c13306dba367b57", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eafdcf6fb7603074", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5319f2a5fd59acc0", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/github-script@v7 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-80cb7f683dc88c48", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7f433de8703fcfbf", "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-5b7b9cc5a31896f2", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c8c8f9d8d77fd15f", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a3d6cb3a9a6b7455", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a0bbb49826d60b39", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0bec28e256bf2e11", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bb51d54555a60cb8", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-79e4017e6ff786ab", "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-b9fc63716b246690", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee15c11661c13166", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6e95cc5b6ff363c5", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c42c66403e5c84b3", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-83fa80d2b6b08e00", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8e2a3670dc7abe81", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-45e25ba999641d64", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e83bc557681368a6", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-92b26845c8cec445", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-25360b24b7b70c9b", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fcb785dbc4d4308c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ccef11abb997e305", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-346f356ff3e376c8", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b44d1f4a08bb991b", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-393535c7ca9756b9", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d3c9b397935226c8", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-120242dc2437bece", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cf3f42660eea640d", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a6b7758b94b81a60", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f54d0d3a389cb4de", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "docker/login-action@v3 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": "medium", "confidence": 1.0}}, {"id": "scanner-4724e05098b6722d", "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-0bd0bbb5ecc986d5", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-97a357ebb5ff386b", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6ac22df5a2741a58", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-42f82336e128a5ca", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a2161e775ec878fc", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-adcf950293d573dd", "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-b62138f365bedabd", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-85d24a8b2e9142e0", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a45e0d42329e8468", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-861be82047ba8ff8", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-969cc8ac38051cbe", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ad05a5ae604775b7", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-12744f8892f3d219", "name": "Very large file: apps/web/tests/multitable-workbench-view.spec.ts (2587 lines)", "shortDescription": {"text": "Very large file: apps/web/tests/multitable-workbench-view.spec.ts (2587 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-c3e51df0d074fd1f", "name": "Very large file: apps/web/tests/multitable-automation-manager.spec.ts (3104 lines)", "shortDescription": {"text": "Very large file: apps/web/tests/multitable-automation-manager.spec.ts (3104 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-204d20e434155e54", "name": "Very large file: apps/web/tests/multitable-automation-rule-editor.spec.ts (3644 lines)", "shortDescription": {"text": "Very large file: apps/web/tests/multitable-automation-rule-editor.spec.ts (3644 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-73b35fd42489898a", "name": "Very large file: apps/web/tests/attendance-admin-regressions.spec.ts (6301 lines)", "shortDescription": {"text": "Very large file: apps/web/tests/attendance-admin-regressions.spec.ts (6301 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-d7e83df5214eba91", "name": "Very large file: apps/web/tests/usePlmTeamViews.spec.ts (3929 lines)", "shortDescription": {"text": "Very large file: apps/web/tests/usePlmTeamViews.spec.ts (3929 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-f853313bb5f6ec14", "name": "Very large file: apps/web/tests/k3WiseSetup.spec.ts (1367 lines)", "shortDescription": {"text": "Very large file: apps/web/tests/k3WiseSetup.spec.ts (1367 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-8bdecdbee38ac129", "name": "Very large file: apps/web/tests/multitable-dashboard-view.spec.ts (1183 lines)", "shortDescription": {"text": "Very large file: apps/web/tests/multitable-dashboard-view.spec.ts (1183 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-17524d70aa1cf68b", "name": "Very large file: apps/web/tests/userManagementView.spec.ts (1826 lines)", "shortDescription": {"text": "Very large file: apps/web/tests/userManagementView.spec.ts (1826 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-5b03282b8c3c7a42", "name": "Very large file: apps/web/tests/plmAuditTeamViewCollaboration.spec.ts (1774 lines)", "shortDescription": {"text": "Very large file: apps/web/tests/plmAuditTeamViewCollaboration.spec.ts (1774 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-d8b2a396ddf2c474", "name": "Very large file: apps/web/tests/usePlmTeamFilterPresets.spec.ts (2964 lines)", "shortDescription": {"text": "Very large file: apps/web/tests/usePlmTeamFilterPresets.spec.ts (2964 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-e72933c98f560fa2", "name": "Very large file: apps/web/tests/AfterSalesView.spec.ts (3196 lines)", "shortDescription": {"text": "Very large file: apps/web/tests/AfterSalesView.spec.ts (3196 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-a1ccf06c47f0729d", "name": "Very large file: apps/web/tests/directoryManagementView.spec.ts (6033 lines)", "shortDescription": {"text": "Very large file: apps/web/tests/directoryManagementView.spec.ts (6033 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-9955312a61edb3cb", "name": "Very large file: apps/web/tests/AfterSalesView.service-records.spec.ts (2095 lines)", "shortDescription": {"text": "Very large file: apps/web/tests/AfterSalesView.service-records.spec.ts (2095 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-40a2d88f397f11cd", "name": "Very large file: apps/web/tests/plmWorkbenchClient.spec.ts (1870 lines)", "shortDescription": {"text": "Very large file: apps/web/tests/plmWorkbenchClient.spec.ts (1870 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-cc8a7c0880b9d8ee", "name": "Very large file: apps/web/tests/AttendanceReportFieldsSection.spec.ts (1400 lines)", "shortDescription": {"text": "Very large file: apps/web/tests/AttendanceReportFieldsSection.spec.ts (1400 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-cf24ecf060baf5ad", "name": "Very large file: apps/web/tests/attendance-admin-anchor-nav.spec.ts (1288 lines)", "shortDescription": {"text": "Very large file: apps/web/tests/attendance-admin-anchor-nav.spec.ts (1288 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-ec90cfac09cbaeab", "name": "Very large file: apps/web/tests/IntegrationWorkbenchView.spec.ts (4075 lines)", "shortDescription": {"text": "Very large file: apps/web/tests/IntegrationWorkbenchView.spec.ts (4075 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-fe901016efadf644", "name": "Very large file: apps/web/src/multitable/api/client.ts (1911 lines)", "shortDescription": {"text": "Very large file: apps/web/src/multitable/api/client.ts (1911 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-45bcd04080638e94", "name": "Very large file: apps/web/src/multitable/utils/meta-automation-labels.ts (1131 lines)", "shortDescription": {"text": "Very large file: apps/web/src/multitable/utils/meta-automation-labels.ts (1131 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-0d8f8155e784da41", "name": "Very large file: apps/web/src/services/integration/k3WiseSetup.ts (2322 lines)", "shortDescription": {"text": "Very large file: apps/web/src/services/integration/k3WiseSetup.ts (2322 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-8428fff514f463c5", "name": "Very large file: apps/web/src/views/attendance/useAttendanceAdminImportWorkflow.ts (2323 lines)", "shortDescription": {"text": "Very large file: apps/web/src/views/attendance/useAttendanceAdminImportWorkflow.ts (2323 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-db6d699ea0c5ec8b", "name": "Very large file: apps/web/src/views/plm/plmPanelModels.ts (1495 lines)", "shortDescription": {"text": "Very large file: apps/web/src/views/plm/plmPanelModels.ts (1495 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-4ca3ae0956a9173a", "name": "Very large file: scripts/verify-multitable-live-smoke.mjs (5020 lines)", "shortDescription": {"text": "Very large file: scripts/verify-multitable-live-smoke.mjs (5020 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-4725e24244c57038", "name": "Very large file: scripts/verify-plm-ui-regression.sh (1875 lines)", "shortDescription": {"text": "Very large file: scripts/verify-plm-ui-regression.sh (1875 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-55b675effbba4948", "name": "Very large file: scripts/ops/attendance-import-perf.mjs (1415 lines)", "shortDescription": {"text": "Very large file: scripts/ops/attendance-import-perf.mjs (1415 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-8bcfe0935a2d504e", "name": "Very large file: scripts/ops/integration-k3wise-postdeploy-smoke.test.mjs (1771 lines)", "shortDescription": {"text": "Very large file: scripts/ops/integration-k3wise-postdeploy-smoke.test.mjs (1771 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-f4b9ab1f8a085ad2", "name": "Very large file: scripts/ops/integration-k3wise-postdeploy-smoke.mjs (1953 lines)", "shortDescription": {"text": "Very large file: scripts/ops/integration-k3wise-postdeploy-smoke.mjs (1953 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-93012401db82b423", "name": "Very large file: scripts/ops/attendance-daily-gate-report.mjs (2361 lines)", "shortDescription": {"text": "Very large file: scripts/ops/attendance-daily-gate-report.mjs (2361 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-37f6932219e6e153", "name": "Very large file: scripts/ops/multitable-onprem-package-verify.sh (852 lines)", "shortDescription": {"text": "Very large file: scripts/ops/multitable-onprem-package-verify.sh (852 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-e67db5cfe867304f", "name": "Very large file: packages/core-backend/tests/integration/attendance-plugin.test.ts (14036 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/tests/integration/attendance-plugin.test.ts (14036 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-2959e391299be6f2", "name": "Very large file: packages/core-backend/tests/integration/multitable-sheet-permissions.api.test.ts (3147 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/tests/integration/multitable-sheet-permissions.api.test.ts (3147 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-ac76207f76b28d52", "name": "Very large file: packages/core-backend/tests/integration/attendance-schedule-dispatch.test.ts (1340 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/tests/integration/attendance-schedule-dispatch.test.ts (1340 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-5dc21bb7146f2299", "name": "Very large file: packages/core-backend/tests/integration/after-sales-plugin.install.test.ts (3607 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/tests/integration/after-sales-plugin.install.test.ts (3607 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-1dbfaa0e9330f223", "name": "Very large file: packages/core-backend/tests/integration/multitable-record-form.api.test.ts (1646 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/tests/integration/multitable-record-form.api.test.ts (1646 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-7bbbd5e8316424cb", "name": "Very large file: packages/core-backend/tests/integration/dingtalk-automation-link-routes.api.test.ts (1583 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/tests/integration/dingtalk-automation-link-routes.api.test.ts (1583 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-93c5064daefdf4b4", "name": "Very large file: packages/core-backend/tests/integration/multitable-context.api.test.ts (1605 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/tests/integration/multitable-context.api.test.ts (1605 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-bb39524782ee4166", "name": "Very large file: packages/core-backend/tests/unit/attendance-report-field-formula-engine.test.ts (1471 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/tests/unit/attendance-report-field-formula-engine.test.ts (1471 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-95df281df8848189", "name": "Very large file: packages/core-backend/tests/unit/after-sales-plugin-routes.test.ts (6266 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/tests/unit/after-sales-plugin-routes.test.ts (6266 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-0d62d13033de505f", "name": "Very large file: packages/core-backend/tests/unit/admin-users-routes.test.ts (3469 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/tests/unit/admin-users-routes.test.ts (3469 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-7f824a2e13427ca2", "name": "Very large file: packages/core-backend/tests/unit/attendance-report-field-catalog.test.ts (2333 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/tests/unit/attendance-report-field-catalog.test.ts (2333 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-1ce4ae72aa22f417", "name": "Very large file: packages/core-backend/tests/unit/attendance-uuid-validation-routes.test.ts (2690 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/tests/unit/attendance-uuid-validation-routes.test.ts (2690 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-7d2d0090f309b974", "name": "Very large file: packages/core-backend/tests/unit/approval-product-service.test.ts (3897 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/tests/unit/approval-product-service.test.ts (3897 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-2467e1674e266741", "name": "Very large file: packages/core-backend/tests/unit/plm-workbench-routes.test.ts (1930 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/tests/unit/plm-workbench-routes.test.ts (1930 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-bd2f7698d41a3bdd", "name": "Very large file: packages/core-backend/tests/unit/automation-v1.test.ts (4070 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/tests/unit/automation-v1.test.ts (4070 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-efe4890c718a1aa2", "name": "Very large file: packages/core-backend/src/index.ts (2576 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/src/index.ts (2576 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-bd8dcdb9e8a8eba1", "name": "Very large file: packages/core-backend/src/types/plugin.ts (1948 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/src/types/plugin.ts (1948 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-8c2fdce7b7f7610b", "name": "Very large file: packages/core-backend/src/directory/directory-sync.ts (4060 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/src/directory/directory-sync.ts (4060 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-5210db608ee1ebae", "name": "Very large file: packages/core-backend/src/multitable/automation-service.ts (1803 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/src/multitable/automation-service.ts (1803 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-630e3092f08cda36", "name": "Very large file: packages/core-backend/src/multitable/record-write-service.ts (1221 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/src/multitable/record-write-service.ts (1221 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-bcc2f72acac26b86", "name": "Very large file: packages/core-backend/src/multitable/automation-executor.ts (3241 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/src/multitable/automation-executor.ts (3241 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-db5f4be84342d2f2", "name": "Very large file: packages/core-backend/src/multitable/permission-service.ts (1347 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/src/multitable/permission-service.ts (1347 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-03bfbf69ab9f1a62", "name": "Very large file: packages/core-backend/src/routes/admin-users.ts (4385 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/src/routes/admin-users.ts (4385 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-74d3d267b70ca42d", "name": "Very large file: packages/core-backend/src/routes/plm-workbench.ts (3228 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/src/routes/plm-workbench.ts (3228 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-da845fc42b388806", "name": "Very large file: packages/core-backend/src/routes/admin-routes.ts (2059 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/src/routes/admin-routes.ts (2059 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-9df0d6dbd71cfa7e", "name": "Very large file: packages/core-backend/src/routes/approvals.ts (1651 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/src/routes/approvals.ts (1651 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-49acd1d7ee16b667", "name": "Very large file: packages/core-backend/src/routes/univer-meta.ts (10750 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/src/routes/univer-meta.ts (10750 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-cca3f2ac7e4e2b82", "name": "Very large file: packages/core-backend/src/routes/federation.ts (3267 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/src/routes/federation.ts (3267 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-2c96d660584d36bb", "name": "Very large file: packages/core-backend/src/workflow/BPMNWorkflowEngine.ts (1852 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/src/workflow/BPMNWorkflowEngine.ts (1852 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-3b5c50ea5634f130", "name": "Very large file: packages/core-backend/src/services/ApprovalProductService.ts (3891 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/src/services/ApprovalProductService.ts (3891 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-eda4b09fe94c96ea", "name": "Very large file: packages/core-backend/src/data-adapters/PLMAdapter.ts (2775 lines)", "shortDescription": {"text": "Very large file: packages/core-backend/src/data-adapters/PLMAdapter.ts (2775 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-2c9eee475d869a8c", "name": "Very large file: packages/openapi/dist-sdk/index.d.ts (16699 lines)", "shortDescription": {"text": "Very large file: packages/openapi/dist-sdk/index.d.ts (16699 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-5bb9b3debb0e5c93", "name": "Very large file: plugins/plugin-integration-core/__tests__/pipeline-runner.test.cjs (1942 lines)", "shortDescription": {"text": "Very large file: plugins/plugin-integration-core/__tests__/pipeline-runner.test.cjs (1942 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-15ea69463c9adeb5", "name": "Very large file: plugins/plugin-integration-core/__tests__/k3-wise-adapters.test.cjs (1552 lines)", "shortDescription": {"text": "Very large file: plugins/plugin-integration-core/__tests__/k3-wise-adapters.test.cjs (1552 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-b52ee38409f03caa", "name": "Very large file: plugins/plugin-integration-core/__tests__/http-routes.test.cjs (3621 lines)", "shortDescription": {"text": "Very large file: plugins/plugin-integration-core/__tests__/http-routes.test.cjs (3621 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-f39ca62e515568b1", "name": "Very large file: plugins/plugin-integration-core/lib/http-routes.cjs (1897 lines)", "shortDescription": {"text": "Very large file: plugins/plugin-integration-core/lib/http-routes.cjs (1897 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-218b3fb7d4d9df48", "name": "Very large file: plugins/plugin-integration-core/lib/adapters/k3-wise-webapi-adapter.cjs (1385 lines)", "shortDescription": {"text": "Very large file: plugins/plugin-integration-core/lib/adapters/k3-wise-webapi-adapter.cjs (1385 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-18e451dd8ac8561b", "name": "Very large file: plugins/plugin-after-sales/index.cjs (4540 lines)", "shortDescription": {"text": "Very large file: plugins/plugin-after-sales/index.cjs (4540 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-097f397fee304667", "name": "65 TODO/FIXME markers", "shortDescription": {"text": "65 TODO/FIXME markers"}, "fullDescription": {"text": "High count of TODO/FIXME/HACK markers \u2014 track them as issues so they're not forgotten."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a9eb7dc7c6e3880", "name": "Node manifest has dependencies but no lockfile: apps/web/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/web/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3b3a11c92517dd3e", "name": "Node manifest has dependencies but no lockfile: packages/core-backend/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/core-backend/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-87b3a3cc134c1379", "name": "Node manifest has dependencies but no lockfile: packages/mssql-readonly-utils/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/mssql-readonly-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-cd346190611dafdd", "name": "Node manifest has dependencies but no lockfile: packages/openapi/dist-sdk/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/openapi/dist-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-148ccfc698a9378f", "name": "Node manifest has dependencies but no lockfile: tools/cli/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: tools/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-c355c09b8df31723", "name": "Node manifest has dependencies but no lockfile: plugins/plugin-view-gantt/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: plugins/plugin-view-gantt/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-47375ebb884f49a8", "name": "Node manifest has dependencies but no lockfile: plugins/plugin-attendance/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: plugins/plugin-attendance/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-e24e814ad7b38c65", "name": "Node manifest has dependencies but no lockfile: plugins/plugin-intelligent-restore/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: plugins/plugin-intelligent-restore/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-d45fb9a041479d62", "name": "Node manifest has dependencies but no lockfile: plugins/plugin-audit-logger/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: plugins/plugin-audit-logger/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-b51ccbda3e7a714c", "name": "Node manifest has dependencies but no lockfile: plugins/plugin-telemetry-otel/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: plugins/plugin-telemetry-otel/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-90253ed622db9511", "name": "Node manifest has dependencies but no lockfile: plugins/plugin-integration-core/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: plugins/plugin-integration-core/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 1044 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 443 placeholder/mock markers across 90 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, lockfile. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6ca9ba3ee4116916", "name": "Commented-code block (9 lines) in ecosystem.config.cjs:16", "shortDescription": {"text": "Commented-code block (9 lines) in ecosystem.config.cjs: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-5bbfdc0e6ea0d887", "name": "Legacy-named symbol `metasheet_v2` in test-persistence.js:94", "shortDescription": {"text": "Legacy-named symbol `metasheet_v2` in test-persistence.js:94"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0c66338aaa451a4d", "name": "Commented-code block (7 lines) in apps/web/tests/multitable-gantt-view.spec.ts:314", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/tests/multitable-gantt-view.spec.ts:314"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d2667420f152e309", "name": "Commented-code block (5 lines) in apps/web/tests/multitable-workbench-view.spec.ts:2561", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/tests/multitable-workbench-view.spec.ts:2561"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6be25de8720b97ce", "name": "Commented-code block (7 lines) in apps/web/tests/multitable-yjs-cell-binding.spec.ts:161", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/tests/multitable-yjs-cell-binding.spec.ts:161"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6f6c21f6c215a411", "name": "Commented-code block (6 lines) in apps/web/tests/multitable-calendar-drag-reschedule.spec.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/tests/multitable-calendar-drag-reschedule.spec.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-b11a9ee866b3c365", "name": "Legacy-named symbol `workflow_job_v1` in apps/web/tests/multitable-automation-rule-editor.spec.ts:561", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in apps/web/tests/multitable-automation-rule-editor.spec.ts:561"}, "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-40347c96342090a4", "name": "Commented-code block (6 lines) in apps/web/tests/attendance-admin-regressions.spec.ts:810", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/tests/attendance-admin-regressions.spec.ts:810"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3338a1112f4bac49", "name": "Legacy-named symbol `req_old` in apps/web/tests/multitable-embed-host.spec.ts:499", "shortDescription": {"text": "Legacy-named symbol `req_old` in apps/web/tests/multitable-embed-host.spec.ts:499"}, "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-1470bc57ed292f36", "name": "Legacy-named symbol `statusLegacy` in apps/web/tests/conditionBranchRunsView.spec.ts:17", "shortDescription": {"text": "Legacy-named symbol `statusLegacy` in apps/web/tests/conditionBranchRunsView.spec.ts:17"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-20b7a6d907786d73", "name": "Commented-code block (8 lines) in apps/web/tests/effectiveCalendar.spec.ts:1", "shortDescription": {"text": "Commented-code block (8 lines) in apps/web/tests/effectiveCalendar.spec.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-def9fada77bb8f2c", "name": "Legacy-named symbol `workflow_job_v1` in apps/web/tests/workflowDesignerCompilePreview.spec.ts:33", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in apps/web/tests/workflowDesignerCompilePreview.spec.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-f8e242c1d229554f", "name": "Legacy-named symbol `plmAuthLegacy` in apps/web/tests/usePlmAuthStatus.spec.ts:36", "shortDescription": {"text": "Legacy-named symbol `plmAuthLegacy` in apps/web/tests/usePlmAuthStatus.spec.ts:36"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7c4277537d77b139", "name": "Legacy-named symbol `statusLegacy` in apps/web/tests/AutomationExecutionsView.spec.ts:17", "shortDescription": {"text": "Legacy-named symbol `statusLegacy` in apps/web/tests/AutomationExecutionsView.spec.ts:17"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9ac88fe487970df1", "name": "Commented-code block (6 lines) in apps/web/tests/multitable-crossbase-link-normalizer.spec.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/tests/multitable-crossbase-link-normalizer.spec.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-0f157811d5355329", "name": "Legacy-named symbol `mt_col_widths_s1_v1` in apps/web/tests/multitable-phase3.spec.ts:38", "shortDescription": {"text": "Legacy-named symbol `mt_col_widths_s1_v1` in apps/web/tests/multitable-phase3.spec.ts:38"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0643300a42901071", "name": "Legacy-named symbol `workflow_job_v1` in apps/web/tests/parallelBranchEditor.spec.ts:47", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in apps/web/tests/parallelBranchEditor.spec.ts:47"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d4684d74f1e4a292", "name": "Commented-code block (9 lines) in apps/web/tests/multitable-crossbase-workbench-wiring.spec.ts:4", "shortDescription": {"text": "Commented-code block (9 lines) in apps/web/tests/multitable-crossbase-workbench-wiring.spec.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-7a9214951df2ce57", "name": "Commented-code block (9 lines) in apps/web/tests/multitable-calendar-view.spec.ts:221", "shortDescription": {"text": "Commented-code block (9 lines) in apps/web/tests/multitable-calendar-view.spec.ts:221"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-39d04a8c74e50207", "name": "Legacy-named symbol `workflow_job_v1` in apps/web/tests/multitable-client.spec.ts:233", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in apps/web/tests/multitable-client.spec.ts:233"}, "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-3460a8ec7f29225a", "name": "Legacy-named symbol `plmAuthLegacy` in apps/web/tests/usePlmProductPanel.spec.ts:56", "shortDescription": {"text": "Legacy-named symbol `plmAuthLegacy` in apps/web/tests/usePlmProductPanel.spec.ts:56"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a0bf9f1bbc7292fb", "name": "Legacy-named symbol `att_old` in apps/web/tests/multitable-record-drawer.spec.ts:534", "shortDescription": {"text": "Legacy-named symbol `att_old` in apps/web/tests/multitable-record-drawer.spec.ts:534"}, "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-911c930ccd619b96", "name": "Commented-code block (5 lines) in apps/web/tests/approvalTemplateCenterCategory.spec.ts:125", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/tests/approvalTemplateCenterCategory.spec.ts:125"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc4af968c853fdea", "name": "Legacy-named symbol `statusLegacy` in apps/web/tests/parallelBranchRunsView.spec.ts:17", "shortDescription": {"text": "Legacy-named symbol `statusLegacy` in apps/web/tests/parallelBranchRunsView.spec.ts:17"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ab59148b7f4d7a38", "name": "Legacy-named symbol `workflow_job_v1` in apps/web/tests/conditionBranchEditor.spec.ts:38", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in apps/web/tests/conditionBranchEditor.spec.ts:38"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ff3303f6e338e0b3", "name": "Legacy-named symbol `att_old` in apps/web/tests/multitable-attachment-editor.spec.ts:177", "shortDescription": {"text": "Legacy-named symbol `att_old` in apps/web/tests/multitable-attachment-editor.spec.ts:177"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-08d086095fb3eb78", "name": "Commented-code block (8 lines) in apps/web/tests/calendarChipDisplay.spec.ts:1", "shortDescription": {"text": "Commented-code block (8 lines) in apps/web/tests/calendarChipDisplay.spec.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-ce7442e2350a89be", "name": "Commented-code block (5 lines) in apps/web/tests/yjs-document-stale-guard.spec.ts:113", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/tests/yjs-document-stale-guard.spec.ts:113"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-16aa3a7d67df7fd1", "name": "Legacy-named symbol `att_old` in apps/web/tests/multitable-form-view.spec.ts:312", "shortDescription": {"text": "Legacy-named symbol `att_old` in apps/web/tests/multitable-form-view.spec.ts:312"}, "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-1925082709bcaa42", "name": "Commented-code block (6 lines) in apps/web/tests/attendance-selfservice-dashboard.spec.ts:933", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/tests/attendance-selfservice-dashboard.spec.ts:933"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e8103bbab6fee7af", "name": "Legacy-named symbol `base_legacy` in apps/web/tests/multitable-grid.spec.ts:215", "shortDescription": {"text": "Legacy-named symbol `base_legacy` in apps/web/tests/multitable-grid.spec.ts:215"}, "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-a9c3a594129cb65a", "name": "Legacy-named symbol `k3_target_copy` in apps/web/tests/IntegrationWorkbenchView.spec.ts:921", "shortDescription": {"text": "Legacy-named symbol `k3_target_copy` in apps/web/tests/IntegrationWorkbenchView.spec.ts:921"}, "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-2773573a0e22b3b5", "name": "Commented-code block (5 lines) in apps/web/tests/multitable-richtext-longtext.spec.ts:13", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/tests/multitable-richtext-longtext.spec.ts:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-55559c14d3840a7b", "name": "Commented-code block (5 lines) in apps/web/tests/multitable-crossbase-link-picker.spec.ts:265", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/tests/multitable-crossbase-link-picker.spec.ts:265"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b26cdc93b58487e6", "name": "Commented-code block (6 lines) in apps/web/tests/setup/localstorage.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/tests/setup/localstorage.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eeb634594f2a6bc3", "name": "Legacy-named symbol `workflow_job_v1` in apps/web/src/multitable/types.ts:896", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in apps/web/src/multitable/types.ts:896"}, "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-9fa2e6e2f0f7dfbf", "name": "Commented-code block (6 lines) in apps/web/src/multitable/types.ts:152", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/multitable/types.ts:152"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-07f6c3f8422430be", "name": "Commented-code block (5 lines) in apps/web/src/multitable/api/client.ts:822", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/multitable/api/client.ts:822"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-80b125de82ec5b2c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/multitable/api/client.ts:907", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/multitable/api/client.ts:907"}, "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-43f6684e998bb480", "name": "Commented-code block (5 lines) in apps/web/src/multitable/composables/useYjsTextField.ts:103", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/multitable/composables/useYjsTextField.ts:103"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-789276ba199f382b", "name": "Commented-code block (7 lines) in apps/web/src/multitable/composables/useYjsCellBinding.ts:256", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/src/multitable/composables/useYjsCellBinding.ts:256"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a62288e2329b80b7", "name": "Commented-code block (6 lines) in apps/web/src/multitable/composables/useAiShortcut.ts:330", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/multitable/composables/useAiShortcut.ts:330"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2f08d305a3ec11bd", "name": "Commented-code block (5 lines) in apps/web/src/multitable/composables/useTemplateInstall.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/multitable/composables/useTemplateInstall.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-62eb98a916181c07", "name": "Commented-code block (5 lines) in apps/web/src/multitable/utils/rich-longtext.ts:9", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/multitable/utils/rich-longtext.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-958075ee16653c93", "name": "Commented-code block (7 lines) in apps/web/src/multitable/utils/automation-log-redact.ts:50", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/src/multitable/utils/automation-log-redact.ts:50"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8401fb4cbadb5d22", "name": "Commented-code block (7 lines) in apps/web/src/multitable/utils/meta-record-labels.ts:11", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/src/multitable/utils/meta-record-labels.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-274df14f654a38c4", "name": "Commented-code block (6 lines) in apps/web/src/multitable/utils/field-config.ts:10", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/multitable/utils/field-config.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-49141cd753de8787", "name": "Commented-code block (5 lines) in apps/web/src/multitable/utils/conditional-formatting.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/multitable/utils/conditional-formatting.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-60722c174b36880c", "name": "Commented-code block (8 lines) in apps/web/src/multitable/utils/conditionBranchAuthoring.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in apps/web/src/multitable/utils/conditionBranchAuthoring.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7f028d07dff4048b", "name": "Commented-code block (5 lines) in apps/web/src/multitable/utils/meta-core-labels.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/multitable/utils/meta-core-labels.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-b9dfd683f40069f3", "name": "Commented-code block (5 lines) in apps/web/src/multitable/utils/link-fields.ts:18", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/multitable/utils/link-fields.ts:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6242c10db184527f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/services/ViewManager.ts:287", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/services/ViewManager.ts:287"}, "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-bb76221209933958", "name": "Commented-code block (7 lines) in apps/web/src/services/integration/workbench.ts:432", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/src/services/integration/workbench.ts:432"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b16981a4a8cfdef7", "name": "Commented-code block (8 lines) in apps/web/src/services/integration/plmEmbed.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in apps/web/src/services/integration/plmEmbed.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7a11cea674869a96", "name": "Commented-code block (9 lines) in apps/web/src/services/integration/k3WiseSetup.ts:789", "shortDescription": {"text": "Commented-code block (9 lines) in apps/web/src/services/integration/k3WiseSetup.ts:789"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c30709ef25680886", "name": "Commented-code block (6 lines) in apps/web/src/services/attendance/effectiveCalendar.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/services/attendance/effectiveCalendar.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-ca24ce22e57f7109", "name": "Commented-code block (5 lines) in apps/web/src/services/attendance/calendarChipDisplay.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/services/attendance/calendarChipDisplay.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-20014ab02de4b3e4", "name": "Legacy-named symbol `workflow_job_v1` in apps/web/src/views/workflowDesignerPersistence.ts:738", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in apps/web/src/views/workflowDesignerPersistence.ts:738"}, "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-397ed8e9c81f5651", "name": "Commented-code block (5 lines) in apps/web/src/views/workflowDesignerPersistence.ts:654", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/views/workflowDesignerPersistence.ts:654"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-249b93d179c26b21", "name": "Commented-code block (6 lines) in apps/web/src/views/attendance/useAttendanceAdminScheduling.ts:60", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/views/attendance/useAttendanceAdminScheduling.ts:60"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-106e2a1df6c2d9a6", "name": "Legacy-named symbol `plmAuthLegacy` in apps/web/src/views/plm/usePlmProductPanel.ts:25", "shortDescription": {"text": "Legacy-named symbol `plmAuthLegacy` in apps/web/src/views/plm/usePlmProductPanel.ts:25"}, "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-c8011b0839d3bcac", "name": "Legacy-named symbol `plmAuthLegacy` in apps/web/src/views/plm/usePlmAuthStatus.ts:55", "shortDescription": {"text": "Legacy-named symbol `plmAuthLegacy` in apps/web/src/views/plm/usePlmAuthStatus.ts:55"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-86803e5806cfacd5", "name": "Commented-code block (5 lines) in scripts/sanitize-smoke-report.mjs:2", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/sanitize-smoke-report.mjs:2"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-59b089751a1fef36", "name": "Legacy-named symbol `base_legacy` in scripts/verify-multitable-live-smoke.mjs:4172", "shortDescription": {"text": "Legacy-named symbol `base_legacy` in scripts/verify-multitable-live-smoke.mjs:4172"}, "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-ade0c9a828ed76b0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seed-demo-data.ts:24", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seed-demo-data.ts:24"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9be7877ba5e90355", "name": "Legacy-named symbol `base_legacy` in scripts/profile-multitable-grid.mjs:314", "shortDescription": {"text": "Legacy-named symbol `base_legacy` in scripts/profile-multitable-grid.mjs:314"}, "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-5a2a4b8475c02a95", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/attendance-ui-verify.mjs:10", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/attendance-ui-verify.mjs:10"}, "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-2a372032cc2f1f38", "name": "Commented-code block (5 lines) in scripts/ops/integration-k3wise-live-poc-evidence.mjs:34", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ops/integration-k3wise-live-poc-evidence.mjs: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-86db978e01ef087e", "name": "Commented-code block (5 lines) in scripts/ops/integration-k3wise-onprem-preflight.test.mjs:397", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ops/integration-k3wise-onprem-preflight.test.mjs:397"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-962da218f18fd055", "name": "Commented-code block (5 lines) in scripts/ops/multitable-perf-baseline.mjs:35", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ops/multitable-perf-baseline.mjs:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-267f63d0fe0aa812", "name": "Commented-code block (6 lines) in scripts/ops/integration-k3wise-onprem-preflight.mjs:4", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/ops/integration-k3wise-onprem-preflight.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-62bbcc77cbcf6fc7", "name": "Commented-code block (7 lines) in scripts/ops/staging-attendance-auto-shift-a2-smoke.mjs:8", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/ops/staging-attendance-auto-shift-a2-smoke.mjs:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0eba74bf74fb522e", "name": "Legacy-named symbol `attendance_overtime_segmentation_v1` in scripts/ops/staging-attendance-overtime-segmentation-o6-smo", "shortDescription": {"text": "Legacy-named symbol `attendance_overtime_segmentation_v1` in scripts/ops/staging-attendance-overtime-segmentation-o6-smoke.mjs:187"}, "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-983f7878fa743c3f", "name": "Commented-code block (5 lines) in scripts/ops/staging-attendance-dispatch-d5-smoke.mjs:8", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ops/staging-attendance-dispatch-d5-smoke.mjs:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-06666722bce31c5d", "name": "Commented-code block (6 lines) in scripts/ops/staging-attendance-inout-merge-s2-3-smoke.mjs:8", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/ops/staging-attendance-inout-merge-s2-3-smoke.mjs:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1a8ca45909917448", "name": "Legacy-named symbol `rbac_permission_cache_legacy` in scripts/ops/phase5-cache-hit-rate-contract.test.mjs:66", "shortDescription": {"text": "Legacy-named symbol `rbac_permission_cache_legacy` in scripts/ops/phase5-cache-hit-rate-contract.test.mjs:66"}, "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-a6c7a8000bcb986d", "name": "Commented-code block (10 lines) in scripts/ops/fixtures/integration-k3wise/run-mock-poc-demo.mjs:6", "shortDescription": {"text": "Commented-code block (10 lines) in scripts/ops/fixtures/integration-k3wise/run-mock-poc-demo.mjs: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-56118375ec2c8d73", "name": "Commented-code block (8 lines) in scripts/ops/fixtures/integration-k3wise/mock-k3-webapi-server.mjs:2", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/ops/fixtures/integration-k3wise/mock-k3-webapi-server.mjs:2"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d40b027003f06943", "name": "Commented-code block (5 lines) in scripts/ops/fixtures/integration-k3wise/mock-sqlserver-executor.mjs:2", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ops/fixtures/integration-k3wise/mock-sqlserver-executor.mjs:2"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4da554560c8694a7", "name": "Legacy-named symbol `metasheet_v2` in packages/core-backend/test-persistence.js:10", "shortDescription": {"text": "Legacy-named symbol `metasheet_v2` in packages/core-backend/test-persistence.js:10"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0198184b7c25242d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-backend/test-kanban-integration.js:6", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-backend/test-kanban-integration.js:6"}, "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-05daec20d082c089", "name": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/tests/integration/multitable-cross-base-automation-write-", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/tests/integration/multitable-cross-base-automation-write-rule.test.ts:100"}, "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-f6ff086cc5fbfd00", "name": "Commented-code block (7 lines) in packages/core-backend/tests/integration/multitable-ai-shortcut-run.test.ts:189", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core-backend/tests/integration/multitable-ai-shortcut-run.test.ts:189"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-265d9e523fe38948", "name": "Commented-code block (7 lines) in packages/core-backend/tests/integration/multitable-cross-base-link-optin.test.ts:231", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core-backend/tests/integration/multitable-cross-base-link-optin.test.ts:231"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f065ec08e61489b9", "name": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/tests/integration/multitable-automation-jobs.test.ts:93", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/tests/integration/multitable-automation-jobs.test.ts:93"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-92327b9f89c7bc20", "name": "Commented-code block (7 lines) in packages/core-backend/tests/integration/multitable-automation-jobs.test.ts:110", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core-backend/tests/integration/multitable-automation-jobs.test.ts:110"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7f78c6b5dd816758", "name": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-ai-suggest-formula.test.ts:128", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-ai-suggest-formula.test.ts:128"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cdbfc41d1a1f46b8", "name": "Legacy-named symbol `sec_old` in packages/core-backend/tests/integration/multitable-record-restore.test.ts:240", "shortDescription": {"text": "Legacy-named symbol `sec_old` in packages/core-backend/tests/integration/multitable-record-restore.test.ts:240"}, "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-33bdb0c6f91bd11f", "name": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/tests/integration/multitable-automation-branch-local-wait", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/tests/integration/multitable-automation-branch-local-wait.test.ts:119"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-85f4f5cf9bc7a5a7", "name": "Legacy-named symbol `attendance_overtime_segmentation_v1` in packages/core-backend/tests/integration/attendance-plugin.t", "shortDescription": {"text": "Legacy-named symbol `attendance_overtime_segmentation_v1` in packages/core-backend/tests/integration/attendance-plugin.test.ts:5069"}, "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-078e2248ce66b7cd", "name": "Commented-code block (6 lines) in packages/core-backend/tests/integration/attendance-plugin.test.ts:238", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/tests/integration/attendance-plugin.test.ts:238"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3b55b913a7be693b", "name": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-cross-sheet-related-echo-mask.test.", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-cross-sheet-related-echo-mask.test.ts:180"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e73e1e90e516b8b5", "name": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/tests/integration/multitable-automation-suspend-resume.te", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/tests/integration/multitable-automation-suspend-resume.test.ts:47"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e46166c171fae2e0", "name": "Commented-code block (8 lines) in packages/core-backend/tests/integration/multitable-cross-base-write-quota.test.ts:183", "shortDescription": {"text": "Commented-code block (8 lines) in packages/core-backend/tests/integration/multitable-cross-base-write-quota.test.ts:183"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-082bb21bf772953e", "name": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-bidirectional-mirror-links.test.ts:", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-bidirectional-mirror-links.test.ts:235"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d37e98c97b0818f5", "name": "Commented-code block (5 lines) in packages/core-backend/tests/integration/approval-template-authoring-uat.api.test.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/approval-template-authoring-uat.api.test.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-369f06a737e7cf25", "name": "Commented-code block (7 lines) in packages/core-backend/tests/integration/multitable-permission-golden-d3d2.test.ts:164", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core-backend/tests/integration/multitable-permission-golden-d3d2.test.ts:164"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a2cf04a6381c35d2", "name": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/integration/multitable-cross-base-seed-view-toctou.test", "shortDescription": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/integration/multitable-cross-base-seed-view-toctou.test.ts:9"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d3524ad6e1eff67c", "name": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-cross-base-link-wall.test.ts:195", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-cross-base-link-wall.test.ts:195"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-502e6020e51e41f2", "name": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/integration/multitable-cross-base-sheet-create-toctou.t", "shortDescription": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/integration/multitable-cross-base-sheet-create-toctou.test.ts:221"}, "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-ede6267b33254b43", "name": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-cross-base-sheet-create-toctou.test", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-cross-base-sheet-create-toctou.test.ts:172"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-abac8ae8c37a9df4", "name": "Commented-code block (6 lines) in packages/core-backend/tests/integration/multitable-formula-dryrun.test.ts:295", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/tests/integration/multitable-formula-dryrun.test.ts:295"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-53d110e1ab06441f", "name": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-permission-golden-d3d1.test.ts:51", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-permission-golden-d3d1.test.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-4a7f39a6348178b8", "name": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-base-writable-resolver.test.ts:143", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-base-writable-resolver.test.ts:143"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-940d5b5287fb4ef4", "name": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/integration/after-sales-registry-backfill.test.ts:134", "shortDescription": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/integration/after-sales-registry-backfill.test.ts:134"}, "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-ea7d4764133f03d6", "name": "Legacy-named symbol `fld_status_old` in packages/core-backend/tests/integration/multitable-view-config.api.test.ts:219", "shortDescription": {"text": "Legacy-named symbol `fld_status_old` in packages/core-backend/tests/integration/multitable-view-config.api.test.ts:219"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eca5697de8a78510", "name": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-view-config.api.test.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-view-config.api.test.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-76f62c9664a76a46", "name": "Commented-code block (6 lines) in packages/core-backend/tests/integration/multitable-cross-base-automation-write.test.ts", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/tests/integration/multitable-cross-base-automation-write.test.ts:315"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d782d1520b2e7dfc", "name": "Commented-code block (6 lines) in packages/core-backend/tests/integration/multitable-base-readable-resolver.test.ts:94", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/tests/integration/multitable-base-readable-resolver.test.ts:94"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0111f8f2a3f487f5", "name": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/integration/multitable-context.api.test.ts:530", "shortDescription": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/integration/multitable-context.api.test.ts:530"}, "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-36bed9bffbf4e3d5", "name": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-context.api.test.ts:26", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-context.api.test.ts:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-95a4c36e3bbbe1ad", "name": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-formula-over-lookup-view.test.ts:10", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-formula-over-lookup-view.test.ts:104"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-468ad8699cdaf400", "name": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/tests/integration/multitable-automation-start-approval.te", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/tests/integration/multitable-automation-start-approval.test.ts:175"}, "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-f3deabc7d66a880f", "name": "Commented-code block (6 lines) in packages/core-backend/tests/integration/multitable-cross-base-automation-delete-lock.t", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/tests/integration/multitable-cross-base-automation-delete-lock.test.ts:254"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-de7e449062478e35", "name": "Commented-code block (5 lines) in packages/core-backend/tests/integration/collab-ux-flow.test.ts:81", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/collab-ux-flow.test.ts:81"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bd6f9c37306da44a", "name": "Commented-code block (7 lines) in packages/core-backend/tests/integration/approval-wp4-template-categories.api.test.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core-backend/tests/integration/approval-wp4-template-categories.api.test.ts:105"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d0ff2f51ed5866ac", "name": "Commented-code block (5 lines) in packages/core-backend/tests/integration/attendance-outdoor-punch.test.ts:9", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/attendance-outdoor-punch.test.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2f17f27dea21ebf2", "name": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/multitable-provisioning.test.ts:201", "shortDescription": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/multitable-provisioning.test.ts:201"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d1ca61bdbff42c46", "name": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/multitable-record-create-context.test.ts:7", "shortDescription": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/multitable-record-create-context.test.ts:7"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2337ac452ee61033", "name": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/after-sales-installer.test.ts:465", "shortDescription": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/after-sales-installer.test.ts:465"}, "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-e434e8d5145eb93a", "name": "Legacy-named symbol `wf_copy` in packages/core-backend/tests/unit/workflow-designer-compile-preview-route.test.ts:222", "shortDescription": {"text": "Legacy-named symbol `wf_copy` in packages/core-backend/tests/unit/workflow-designer-compile-preview-route.test.ts:222"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-15ab811449d9b831", "name": "Commented-code block (7 lines) in packages/core-backend/tests/unit/automation-routes-wiring.test.ts:206", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core-backend/tests/unit/automation-routes-wiring.test.ts:206"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-47d76cb558a0aef0", "name": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/after-sales-plugin-routes.test.ts:286", "shortDescription": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/after-sales-plugin-routes.test.ts:286"}, "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-28d697b6d955cb59", "name": "Commented-code block (7 lines) in packages/core-backend/tests/unit/multitable-template-dryrun-routes.test.ts:494", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core-backend/tests/unit/multitable-template-dryrun-routes.test.ts:494"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bded507938255c34", "name": "Commented-code block (5 lines) in packages/core-backend/tests/unit/multitable-egress-coverage-guard.test.ts:80", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/unit/multitable-egress-coverage-guard.test.ts:80"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3c1baf4fee199164", "name": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/multitable-plugin-scope.test.ts:83", "shortDescription": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/multitable-plugin-scope.test.ts:83"}, "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-25adeaf1fd8c4f0f", "name": "Legacy-named symbol `rule_legacy` in packages/core-backend/tests/unit/automation-scheduler-leader.test.ts:125", "shortDescription": {"text": "Legacy-named symbol `rule_legacy` in packages/core-backend/tests/unit/automation-scheduler-leader.test.ts:125"}, "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-00de9f70d2fa559b", "name": "Commented-code block (6 lines) in packages/core-backend/tests/unit/multitable-record-lock-guard.guard.test.ts:123", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/tests/unit/multitable-record-lock-guard.guard.test.ts:123"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0bc0ea419308ee37", "name": "Commented-code block (5 lines) in packages/core-backend/tests/unit/metrics-stream.test.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/unit/metrics-stream.test.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9496530b80a9f69b", "name": "Commented-code block (5 lines) in packages/core-backend/tests/unit/richtext-longtext-sanitizer.test.ts:237", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/unit/richtext-longtext-sanitizer.test.ts:237"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7629312113847056", "name": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/attendance-report-field-catalog.test.ts:855", "shortDescription": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/attendance-report-field-catalog.test.ts:855"}, "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-1298a155b47eb3f0", "name": "Commented-code block (7 lines) in packages/core-backend/tests/unit/plm-adapter-effective-tenant.test.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core-backend/tests/unit/plm-adapter-effective-tenant.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-fa989dbd621b18c7", "name": "Legacy-named symbol `tenant_legacy` in packages/core-backend/tests/unit/jwt-middleware.test.ts:123", "shortDescription": {"text": "Legacy-named symbol `tenant_legacy` in packages/core-backend/tests/unit/jwt-middleware.test.ts:123"}, "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-3bafc93c21345551", "name": "Commented-code block (5 lines) in packages/core-backend/tests/unit/multitable-field-visibility-rule.test.ts:12", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/unit/multitable-field-visibility-rule.test.ts: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-939488f853001da4", "name": "Legacy-named symbol `statusLegacy` in packages/core-backend/tests/unit/automation-runs-api.test.ts:80", "shortDescription": {"text": "Legacy-named symbol `statusLegacy` in packages/core-backend/tests/unit/automation-runs-api.test.ts:80"}, "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-0380cbdfc1225c71", "name": "Commented-code block (6 lines) in packages/core-backend/tests/unit/multitable-cross-base-write-guard.guard.test.ts:176", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/tests/unit/multitable-cross-base-write-guard.guard.test.ts:176"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7c9e5742257fd10e", "name": "Commented-code block (7 lines) in packages/core-backend/tests/unit/yjs-poc.test.ts:689", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core-backend/tests/unit/yjs-poc.test.ts:689"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d1cf52b17b560118", "name": "Commented-code block (6 lines) in packages/core-backend/tests/unit/field-validation-wiring.test.ts:288", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/tests/unit/field-validation-wiring.test.ts:288"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c0de20a4b0352af3", "name": "Legacy-named symbol `lead_legacy` in packages/core-backend/tests/unit/after-sales-workflow-adapter.test.ts:672", "shortDescription": {"text": "Legacy-named symbol `lead_legacy` in packages/core-backend/tests/unit/after-sales-workflow-adapter.test.ts:672"}, "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-f6e62c2b9a01035b", "name": "Commented-code block (10 lines) in packages/core-backend/tests/unit/formula-engine.test.ts:542", "shortDescription": {"text": "Commented-code block (10 lines) in packages/core-backend/tests/unit/formula-engine.test.ts:542"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3a9754ce99d995d0", "name": "Commented-code block (7 lines) in packages/core-backend/tests/unit/yjs-rest-invalidation.test.ts:248", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core-backend/tests/unit/yjs-rest-invalidation.test.ts:248"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5a8cba1619a31da3", "name": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/tests/unit/multitable-automation-service.test.ts:426", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/tests/unit/multitable-automation-service.test.ts:426"}, "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-7d4d3a2804c65f7a", "name": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/multitable-records.test.ts:54", "shortDescription": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/multitable-records.test.ts:54"}, "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-728a9528e163d49e", "name": "Legacy-named symbol `fld_legacy` in packages/core-backend/tests/unit/multitable-formula-engine.test.ts:343", "shortDescription": {"text": "Legacy-named symbol `fld_legacy` in packages/core-backend/tests/unit/multitable-formula-engine.test.ts:343"}, "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-85378a7a9f38ca82", "name": "Commented-code block (6 lines) in packages/core-backend/tests/unit/record-write-service.test.ts:807", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/tests/unit/record-write-service.test.ts:807"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-026099801ab6906f", "name": "Legacy-named symbol `dt_legacy` in packages/core-backend/tests/unit/automation-v1.test.ts:763", "shortDescription": {"text": "Legacy-named symbol `dt_legacy` in packages/core-backend/tests/unit/automation-v1.test.ts:763"}, "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-8d6220f0d2f8bb8f", "name": "Commented-code block (5 lines) in packages/core-backend/tests/unit/automation-v1.test.ts:80", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/unit/automation-v1.test.ts:80"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2f428fcd1ee145c7", "name": "Commented-code block (5 lines) in packages/core-backend/tests/unit/comment-contracts.test.ts:132", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/unit/comment-contracts.test.ts:132"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0feea60ea93f089f", "name": "Legacy-named symbol `unregisterOld` in packages/core-backend/tests/unit/attendance-scheduler.test.ts:120", "shortDescription": {"text": "Legacy-named symbol `unregisterOld` in packages/core-backend/tests/unit/attendance-scheduler.test.ts:120"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-75a3e1f2c81e11b9", "name": "Legacy-named symbol `asyncsend_v2` in packages/core-backend/tests/unit/dingtalk-work-notification.test.ts:102", "shortDescription": {"text": "Legacy-named symbol `asyncsend_v2` in packages/core-backend/tests/unit/dingtalk-work-notification.test.ts:102"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a9501d0070310bc2", "name": "Commented-code block (5 lines) in packages/core-backend/tests/unit/multitable-raw-record-data-projection.guard.test.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/unit/multitable-raw-record-data-projection.guard.test.ts:151"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4eca8572bf7a58d9", "name": "Legacy-named symbol `dt_legacy` in packages/core-backend/tests/unit/dingtalk-group-destination-service.test.ts:129", "shortDescription": {"text": "Legacy-named symbol `dt_legacy` in packages/core-backend/tests/unit/dingtalk-group-destination-service.test.ts:129"}, "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-639406d27c7d24c6", "name": "Commented-code block (6 lines) in packages/core-backend/tests/e2e/multitable-perf-baseline.spec.ts:411", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/tests/e2e/multitable-perf-baseline.spec.ts:411"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2879b53b200b0ac1", "name": "Commented-code block (5 lines) in packages/core-backend/scripts/smoke-sqlserver.ts:95", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/scripts/smoke-sqlserver.ts:95"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f6bc08871aa6c8ad", "name": "Commented-code block (5 lines) in packages/core-backend/scripts/smoke-sqlserver-seed.ts:38", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/scripts/smoke-sqlserver-seed.ts:38"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a7bd88d881221315", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-backend/scripts/ops/yjs-node-client.mjs:36", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-backend/scripts/ops/yjs-node-client.mjs:36"}, "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-ef166924be5a34f7", "name": "Commented-code block (5 lines) in packages/core-backend/benchmark/pattern-matching.ts:26", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/benchmark/pattern-matching.ts:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7dcfc1679cfacd96", "name": "Commented-code block (5 lines) in packages/core-backend/src/index.ts:1111", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/src/index.ts:1111"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-40d8103e84386c05", "name": "Legacy-named symbol `asyncsend_v2` in packages/core-backend/src/integrations/dingtalk/client.ts:628", "shortDescription": {"text": "Legacy-named symbol `asyncsend_v2` in packages/core-backend/src/integrations/dingtalk/client.ts:628"}, "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-b669d4fe49425ae9", "name": "Commented-code block (5 lines) in packages/core-backend/src/integration/events/event-bus.ts:63", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/src/integration/events/event-bus.ts:63"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-85ac3a8c9f796842", "name": "Legacy-named symbol `subscribePatternLegacy` in packages/core-backend/src/integration/messaging/message-bus.ts:306", "shortDescription": {"text": "Legacy-named symbol `subscribePatternLegacy` in packages/core-backend/src/integration/messaging/message-bus.ts:306"}, "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-00743fdc4db0b263", "name": "Commented-code block (6 lines) in packages/core-backend/src/integration/rate-limiting/redis-token-bucket-store.ts:24", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/src/integration/rate-limiting/redis-token-bucket-store.ts:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b211b28959a4e4c4", "name": "Commented-code block (5 lines) in packages/core-backend/src/auth/dingtalk-oauth.ts:790", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/src/auth/dingtalk-oauth.ts:790"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e0d80b32b4396c33", "name": "Commented-code block (6 lines) in packages/core-backend/src/multitable/charts.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/src/multitable/charts.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-aac29663bd6da73e", "name": "Commented-code block (14 lines) in packages/core-backend/src/multitable/conditional-formatting-service.ts:383", "shortDescription": {"text": "Commented-code block (14 lines) in packages/core-backend/src/multitable/conditional-formatting-service.ts:383"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a9fdff223706f478", "name": "Commented-code block (6 lines) in packages/core-backend/src/multitable/webhook-service.ts:432", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/src/multitable/webhook-service.ts:432"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cedb306c8e7e1ba9", "name": "Commented-code block (6 lines) in packages/core-backend/src/multitable/field-visibility-rule.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/src/multitable/field-visibility-rule.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-bc78f0a7b5d53a74", "name": "Commented-code block (6 lines) in packages/core-backend/src/multitable/auto-number-service.ts:85", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/src/multitable/auto-number-service.ts:85"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-593002fa7c2d5e31", "name": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/multitable/automation-service.ts:77", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/multitable/automation-service.ts:77"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-da3f83fc9a816f53", "name": "Commented-code block (5 lines) in packages/core-backend/src/multitable/automation-service.ts:1190", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/src/multitable/automation-service.ts:1190"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d48a1768f9a23764", "name": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/multitable/automation-actions.ts:155", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/multitable/automation-actions.ts:155"}, "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-64aef8a90d10bd34", "name": "Commented-code block (5 lines) in packages/core-backend/src/multitable/record-service.ts:66", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/src/multitable/record-service.ts:66"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ad1686755523a364", "name": "Commented-code block (5 lines) in packages/core-backend/src/multitable/automation-suspension-service.ts:83", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/src/multitable/automation-suspension-service.ts:83"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8848656aae820d73", "name": "Commented-code block (8 lines) in packages/core-backend/src/multitable/chart-aggregation-service.ts:174", "shortDescription": {"text": "Commented-code block (8 lines) in packages/core-backend/src/multitable/chart-aggregation-service.ts:174"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e9910e5d6c23b872", "name": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/multitable/automation-job-service.ts:5", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/multitable/automation-job-service.ts:5"}, "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-7b558ae04fb088e4", "name": "Commented-code block (9 lines) in packages/core-backend/src/multitable/automation-job-service.ts:247", "shortDescription": {"text": "Commented-code block (9 lines) in packages/core-backend/src/multitable/automation-job-service.ts:247"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-247c8278c486274d", "name": "Commented-code block (5 lines) in packages/core-backend/src/multitable/formula-engine.ts:301", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/src/multitable/formula-engine.ts:301"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-44a8a8efbbbb0da5", "name": "Commented-code block (6 lines) in packages/core-backend/src/multitable/automation-log-service.ts:185", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/src/multitable/automation-log-service.ts:185"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5346f4b2711c9afb", "name": "Commented-code block (6 lines) in packages/core-backend/src/multitable/record-write-service.ts:447", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/src/multitable/record-write-service.ts:447"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-25607dd074899249", "name": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/multitable/automation-executor.ts:581", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/multitable/automation-executor.ts:581"}, "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-8788aab344c80e5a", "name": "Commented-code block (6 lines) in packages/core-backend/src/multitable/automation-executor.ts:708", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/src/multitable/automation-executor.ts:708"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cd994b5be5a3fe69", "name": "Legacy-named symbol `base_legacy` in packages/core-backend/src/multitable/provisioning.ts:107", "shortDescription": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/src/multitable/provisioning.ts:107"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bef4c21e8449b338", "name": "Commented-code block (5 lines) in packages/core-backend/src/multitable/permission-service.ts:110", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/src/multitable/permission-service.ts:110"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d6bdf7cf8d8da3d0", "name": "Commented-code block (6 lines) in packages/core-backend/src/multitable/query-service.ts:280", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/src/multitable/query-service.ts:280"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d5d0a0faa009d7ef", "name": "Commented-code block (5 lines) in packages/core-backend/src/multitable/automation-resume-cursor.ts:92", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/src/multitable/automation-resume-cursor.ts:92"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2f0129878ff18dcc", "name": "Commented-code block (6 lines) in packages/core-backend/src/multitable/field-codecs.ts:423", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/src/multitable/field-codecs.ts:423"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0aa73586a1ee44b4", "name": "Commented-code block (7 lines) in packages/core-backend/src/routes/plm-workbench.ts:783", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core-backend/src/routes/plm-workbench.ts:783"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-302830d0dda7d2b9", "name": "Commented-code block (5 lines) in packages/core-backend/src/routes/admin-routes.ts:1126", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/src/routes/admin-routes.ts:1126"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5be1e95ab513a8cf", "name": "Commented-code block (5 lines) in packages/core-backend/src/routes/approvals.ts:409", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/src/routes/approvals.ts:409"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1954f79c52301a6b", "name": "Commented-code block (5 lines) in packages/core-backend/src/routes/approval-metrics.ts:127", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/src/routes/approval-metrics.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-8b4e9d57c7ba1e1f", "name": "Commented-code block (5 lines) in packages/core-backend/src/routes/plm-embed.ts:93", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/src/routes/plm-embed.ts:93"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-026dddb787c0d9d2", "name": "Commented-code block (5 lines) in packages/core-backend/src/routes/cache-test.ts:83", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/src/routes/cache-test.ts:83"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5b5b5b5857015e41", "name": "Commented-code block (5 lines) in packages/core-backend/src/routes/data-sources.ts:373", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/src/routes/data-sources.ts:373"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5e9f65fb3f6fd429", "name": "Commented-code block (6 lines) in packages/core-backend/src/routes/multitable-ai.ts:295", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/src/routes/multitable-ai.ts:295"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6f9c799cc8d84134", "name": "Legacy-named symbol `base_legacy` in packages/core-backend/src/routes/univer-meta.ts:354", "shortDescription": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/src/routes/univer-meta.ts:354"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-91276efebeb753b7", "name": "Commented-code block (7 lines) in packages/core-backend/src/routes/univer-meta.ts:195", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core-backend/src/routes/univer-meta.ts:195"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e2e686ee4d9a1c04", "name": "Legacy-named symbol `statusLegacy` in packages/core-backend/src/routes/automation.ts:86", "shortDescription": {"text": "Legacy-named symbol `statusLegacy` in packages/core-backend/src/routes/automation.ts:86"}, "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-efbb1c0d6c33ddc6", "name": "Commented-code block (6 lines) in packages/core-backend/src/routes/automation.ts:182", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/src/routes/automation.ts:182"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-97da7b0171da1e45", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-backend/src/routes/automation.ts:296", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-backend/src/routes/automation.ts:296"}, "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-6b9b347749d1b893", "name": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/workflow/bpmnCompilePreview.ts:47", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/workflow/bpmnCompilePreview.ts:47"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dbe0688b40290ee1", "name": "Commented-code block (5 lines) in packages/core-backend/src/collab/yjs-sync-service.ts:92", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/src/collab/yjs-sync-service.ts:92"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f9093478016fe047", "name": "Commented-code block (5 lines) in packages/core-backend/src/services/ApprovalProductService.ts:933", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/src/services/ApprovalProductService.ts:933"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ea11d617c62fd61e", "name": "Commented-code block (5 lines) in packages/core-backend/src/services/ApprovalGraphExecutor.ts:495", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/src/services/ApprovalGraphExecutor.ts:495"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-47b4627a780509f5", "name": "Commented-code block (7 lines) in packages/core-backend/src/services/ai-provider-readiness.ts:140", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core-backend/src/services/ai-provider-readiness.ts:140"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a2e26b4964890ce6", "name": "Commented-code block (5 lines) in packages/core-backend/src/services/AttendanceExpiryService.ts:25", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/src/services/AttendanceExpiryService.ts:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fd2ec9fc1ac2e5a9", "name": "Commented-code block (8 lines) in packages/core-backend/src/services/ApprovalAssigneeResolver.ts:53", "shortDescription": {"text": "Commented-code block (8 lines) in packages/core-backend/src/services/ApprovalAssigneeResolver.ts:53"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dfcb4a55b61ef547", "name": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/db/types.ts:1340", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/db/types.ts:1340"}, "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-c9970b4da8f72617", "name": "Commented-code block (11 lines) in packages/core-backend/src/db/migrations/zzzz20260603120000_create_attendance_leave_ba", "shortDescription": {"text": "Commented-code block (11 lines) in packages/core-backend/src/db/migrations/zzzz20260603120000_create_attendance_leave_balances.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3f2642707c77608b", "name": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/db/migrations/zzzz20260603130000_create_automation_su", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/db/migrations/zzzz20260603130000_create_automation_suspensions.ts:5"}, "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-469a6d0c9b71b4d7", "name": "Commented-code block (12 lines) in packages/core-backend/src/db/migrations/zzzz20260615170000_add_annual_leave_accrual_s", "shortDescription": {"text": "Commented-code block (12 lines) in packages/core-backend/src/db/migrations/zzzz20260615170000_add_annual_leave_accrual_schema.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7f33750bcd30e8ab", "name": "Commented-code block (6 lines) in packages/core-backend/src/db/migrations/zzzz20260605120000_add_outdoor_punch_request_t", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/src/db/migrations/zzzz20260605120000_add_outdoor_punch_request_type.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-286ea6c4b27a37db", "name": "Legacy-named symbol `base_legacy` in packages/core-backend/src/db/migrations/zzzz20260318110000_add_multitable_bases_and", "shortDescription": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/src/db/migrations/zzzz20260318110000_add_multitable_bases_and_permissions.ts:4"}, "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-c5fd18bc58d20a72", "name": "Commented-code block (8 lines) in packages/core-backend/src/db/migrations/zzzz20260615190000_create_meta_comment_reactio", "shortDescription": {"text": "Commented-code block (8 lines) in packages/core-backend/src/db/migrations/zzzz20260615190000_create_meta_comment_reactions.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-9486e600e1cf1de2", "name": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/db/migrations/zzzz20260530120000_create_automation_jo", "shortDescription": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/db/migrations/zzzz20260530120000_create_automation_jobs_and_execution_mode.ts:5"}, "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-5b54cea3e4d73892", "name": "Commented-code block (7 lines) in packages/core-backend/src/db/migrations/zzzz20260604120000_create_attendance_unschedul", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core-backend/src/db/migrations/zzzz20260604120000_create_attendance_unscheduled_reminder_dispatch.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-bde5eeb9605fcc8a", "name": "Commented-code block (6 lines) in packages/core-backend/src/data-adapters/PLMAdapter.ts:1142", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-backend/src/data-adapters/PLMAdapter.ts:1142"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f910b5eb5fd3baf1", "name": "Commented-code block (5 lines) in packages/core-backend/src/data-adapters/data-source-plugin-facade.ts:149", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-backend/src/data-adapters/data-source-plugin-facade.ts:149"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c954a26d34234922", "name": "Commented-code block (8 lines) in packages/core-backend/src/data-adapters/MSSQLAdapter.ts:1", "shortDescription": {"text": "Commented-code block (8 lines) in packages/core-backend/src/data-adapters/MSSQLAdapter.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-84d264638ec3d74b", "name": "Legacy-named symbol `listPendingApprovalsLegacy` in packages/openapi/dist-sdk/index.d.ts:431", "shortDescription": {"text": "Legacy-named symbol `listPendingApprovalsLegacy` in packages/openapi/dist-sdk/index.d.ts:431"}, "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-250a8f685bf524ae", "name": "Commented-code block (6 lines) in plugins/plugin-integration-core/__tests__/data-source-sql-readonly-source-adapter.test", "shortDescription": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/__tests__/data-source-sql-readonly-source-adapter.test.cjs:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e6c475ca34dc32a8", "name": "Commented-code block (5 lines) in plugins/plugin-integration-core/__tests__/pipeline-runner.test.cjs:1903", "shortDescription": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/__tests__/pipeline-runner.test.cjs:1903"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5ec0c3d8704c5930", "name": "Commented-code block (11 lines) in plugins/plugin-integration-core/__tests__/staging-installer.test.cjs:6", "shortDescription": {"text": "Commented-code block (11 lines) in plugins/plugin-integration-core/__tests__/staging-installer.test.cjs: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-db4e7dde345417f3", "name": "Commented-code block (5 lines) in plugins/plugin-integration-core/__tests__/k3-df-t1-target-payload-preview.test.cjs:3", "shortDescription": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/__tests__/k3-df-t1-target-payload-preview.test.cjs:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-34fd0004e9d2f3bd", "name": "Commented-code block (5 lines) in plugins/plugin-integration-core/__tests__/k3-save-body-composer.parity.test.cjs:180", "shortDescription": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/__tests__/k3-save-body-composer.parity.test.cjs:180"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-028890fef1cedd28", "name": "Commented-code block (6 lines) in plugins/plugin-integration-core/__tests__/df-n2-2c-provenance-read.test.cjs:3", "shortDescription": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/__tests__/df-n2-2c-provenance-read.test.cjs:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6daa2afad28d913a", "name": "Legacy-named symbol `dbLegacy` in plugins/plugin-integration-core/__tests__/db.test.cjs:247", "shortDescription": {"text": "Legacy-named symbol `dbLegacy` in plugins/plugin-integration-core/__tests__/db.test.cjs:247"}, "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-882c693163a51565", "name": "Commented-code block (13 lines) in plugins/plugin-integration-core/__tests__/db.test.cjs:6", "shortDescription": {"text": "Commented-code block (13 lines) in plugins/plugin-integration-core/__tests__/db.test.cjs: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-47a9f72cfb598e7e", "name": "Commented-code block (5 lines) in plugins/plugin-integration-core/__tests__/k3-wise-material-presets.test.cjs:55", "shortDescription": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/__tests__/k3-wise-material-presets.test.cjs:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f77e64e24fb42dfb", "name": "Legacy-named symbol `audit_copy` in plugins/plugin-integration-core/__tests__/metasheet-multitable-target-adapter.test.c", "shortDescription": {"text": "Legacy-named symbol `audit_copy` in plugins/plugin-integration-core/__tests__/metasheet-multitable-target-adapter.test.cjs:161"}, "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-8c70e5d158d5ac5e", "name": "Commented-code block (11 lines) in plugins/plugin-integration-core/__tests__/credential-store.test.cjs:6", "shortDescription": {"text": "Commented-code block (11 lines) in plugins/plugin-integration-core/__tests__/credential-store.test.cjs: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-d420a2e49e9770d3", "name": "Commented-code block (6 lines) in plugins/plugin-integration-core/__tests__/http-routes.test.cjs:1133", "shortDescription": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/__tests__/http-routes.test.cjs:1133"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b866ed1668919489", "name": "Commented-code block (7 lines) in plugins/plugin-integration-core/__tests__/plugin-runtime-smoke.test.cjs:6", "shortDescription": {"text": "Commented-code block (7 lines) in plugins/plugin-integration-core/__tests__/plugin-runtime-smoke.test.cjs: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-bfba25e7f780ab96", "name": "Commented-code block (5 lines) in plugins/plugin-integration-core/__tests__/external-systems.test.cjs:425", "shortDescription": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/__tests__/external-systems.test.cjs:425"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9e2e62a4bd0ed33f", "name": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/reference-mapping-templates.cjs:3", "shortDescription": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/reference-mapping-templates.cjs:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-691ce466408af378", "name": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/http-routes.cjs:55", "shortDescription": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/http-routes.cjs:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5303e20a81f3ab3e", "name": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/staging-installer.cjs:10", "shortDescription": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/staging-installer.cjs: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-4c840c3313eb21dc", "name": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/contracts.cjs:6", "shortDescription": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/contracts.cjs: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-f6982f5e4e4f307f", "name": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/db.cjs:13", "shortDescription": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/db.cjs:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9a73cf7dbe40c14f", "name": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/reference-mapping-resolver.cjs:61", "shortDescription": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/reference-mapping-resolver.cjs:61"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eea7aa090e30c9ba", "name": "Commented-code block (7 lines) in plugins/plugin-integration-core/lib/pipelines.cjs:714", "shortDescription": {"text": "Commented-code block (7 lines) in plugins/plugin-integration-core/lib/pipelines.cjs:714"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-08be3e88f2eac071", "name": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/payload-redaction.cjs:54", "shortDescription": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/payload-redaction.cjs:54"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-acadceab702ff8a6", "name": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/run-log.cjs:89", "shortDescription": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/run-log.cjs:89"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4c35fdbb2d01be76", "name": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/reference-mapping-source.cjs:3", "shortDescription": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/reference-mapping-source.cjs:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e40594be92180af1", "name": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/credential-store.cjs:9", "shortDescription": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/credential-store.cjs:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2520af68ffb8ab90", "name": "Legacy-named symbol `plm_stock_preparation_decision_v1` in plugins/plugin-integration-core/lib/stock-preparation-templat", "shortDescription": {"text": "Legacy-named symbol `plm_stock_preparation_decision_v1` in plugins/plugin-integration-core/lib/stock-preparation-templates.cjs:469"}, "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-17550e44b1fe680d", "name": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/connector-action-contracts.cjs:3", "shortDescription": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/connector-action-contracts.cjs:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-457397342e78dee9", "name": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/connector-template-derive.cjs:8", "shortDescription": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/connector-template-derive.cjs: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-5eeacc06d55a4f5f", "name": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/pipeline-runner.cjs:17", "shortDescription": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/pipeline-runner.cjs:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d579790b63684ff0", "name": "Legacy-named symbol `plm_stock_preparation_decision_v1` in plugins/plugin-integration-core/lib/stock-preparation-option-", "shortDescription": {"text": "Legacy-named symbol `plm_stock_preparation_decision_v1` in plugins/plugin-integration-core/lib/stock-preparation-option-sync.cjs:39"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5ea7a76bc294a217", "name": "Commented-code block (8 lines) in plugins/plugin-integration-core/lib/adapters/k3-wise-document-templates.cjs:169", "shortDescription": {"text": "Commented-code block (8 lines) in plugins/plugin-integration-core/lib/adapters/k3-wise-document-templates.cjs:169"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ad3ab5e4ba70d09b", "name": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/adapters/k3-save-body-composer.cjs:5", "shortDescription": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/adapters/k3-save-body-composer.cjs: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-10eddf6670ea4d31", "name": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/adapters/k3-wise-webapi-adapter.cjs:232", "shortDescription": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/adapters/k3-wise-webapi-adapter.cjs:232"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d712985136d3434", "name": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/adapters/data-source-sql-readonly-source-adapter.c", "shortDescription": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/adapters/data-source-sql-readonly-source-adapter.cjs:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c4f08b16b82a0cc7", "name": "497 env vars used in code but missing from .env.example", "shortDescription": {"text": "497 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ADMIN_READY_TIMEOUT`, `ADMIN_TOKEN`, `ADMIN_USER_ID`, `ALLOW_C5_SMOKE_CUSTOM_ORG_CLEANUP`, `ALLOW_C5_SMOKE_EXISTING_DUE_DELIVERIES`, `ALLOW_DB_RESET`, `ALLOW_EMPTY_RECORDS`, `ALLOW_EXISTING_A2_SYSTEM_SCOPE` + 489 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-fc0faa3f651be66c", "name": "Dangling fetch: GET http://localhost:8900/api/plugins (packages/core-backend/test-kanban-integration.js:6)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:8900/api/plugins (packages/core-backend/test-kanban-integration.js:6)"}, "fullDescription": {"text": "`packages/core-backend/test-kanban-integration.js:6` calls `GET http://localhost:8900/api/plugins` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:8900/api/plugins`\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-3bff24aa8f2881a2", "name": "Dangling fetch: GET http://localhost:8900/metrics/prom (plugins/hello-world/src/index.js:87)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:8900/metrics/prom (plugins/hello-world/src/index.js:87)"}, "fullDescription": {"text": "`plugins/hello-world/src/index.js:87` calls `GET http://localhost:8900/metrics/prom` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:8900/metrics/prom`\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-0178fc5beb5978f9", "name": "Dangling fetch: GET /api/multitable/bases (apps/web/src/multitable/api/client.ts:907)", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/bases (apps/web/src/multitable/api/client.ts:907)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:907` calls `GET /api/multitable/bases` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/bases`\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-40a4266849f14854", "name": "Dangling fetch: POST /api/multitable/bases (apps/web/src/multitable/api/client.ts:912)", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/bases (apps/web/src/multitable/api/client.ts:912)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:912` calls `POST /api/multitable/bases` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/bases`\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-042128595b83ef7c", "name": "Dangling fetch: GET /api/multitable/templates (apps/web/src/multitable/api/client.ts:921)", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/templates (apps/web/src/multitable/api/client.ts:921)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:921` calls `GET /api/multitable/templates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/templates`\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-b5ec8ed3f664c2f0", "name": "Dangling fetch: POST /api/multitable/templates/${encodeURIComponent(templateId)}/install (apps/web/src/multitable/api/cl", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/templates/${encodeURIComponent(templateId)}/install (apps/web/src/multitable/api/client.ts:926)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:926` calls `POST /api/multitable/templates/${encodeURIComponent(templateId)}/install` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/templates/<p>/install`\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-9cd6e24469535d2e", "name": "Dangling fetch: POST /api/multitable/templates/${encodeURIComponent(templateId)}/dry-run (apps/web/src/multitable/api/cl", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/templates/${encodeURIComponent(templateId)}/dry-run (apps/web/src/multitable/api/client.ts:937)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:937` calls `POST /api/multitable/templates/${encodeURIComponent(templateId)}/dry-run` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/templates/<p>/dry-run`\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-4d8ebd3c59608a33", "name": "Dangling fetch: GET /api/multitable/context${qs(params)} (apps/web/src/multitable/api/client.ts:947)", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/context${qs(params)} (apps/web/src/multitable/api/client.ts:947)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:947` calls `GET /api/multitable/context${qs(params)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/context/<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-87daba0b452b4071", "name": "Dangling fetch: GET /api/multitable/sheets (apps/web/src/multitable/api/client.ts:953)", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/sheets (apps/web/src/multitable/api/client.ts:953)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:953` calls `GET /api/multitable/sheets` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets`\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-7e02e28ef459c157", "name": "Dangling fetch: POST /api/multitable/sheets (apps/web/src/multitable/api/client.ts:958)", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/sheets (apps/web/src/multitable/api/client.ts:958)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:958` calls `POST /api/multitable/sheets` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets`\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-a1d341c522e8e9f2", "name": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/permissions (apps/web/src/multitable/api/clien", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/permissions (apps/web/src/multitable/api/client.ts:967)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:967` calls `GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/permissions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/permissions`\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-23691cf85c0c43bd", "name": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/permission-candidates${qs(params ?? {})} (apps", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/permission-candidates${qs(params ?? {})} (apps/web/src/multitable/api/client.ts:976)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:976` calls `GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/permission-candidates${qs(params ?? {})}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/permission-candidates${qs(params `\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-2c88f511da39b294", "name": "Dangling fetch: PUT /api/multitable/sheets/${encodeURIComponent(sheetId)}/permissions/${encodeURIComponent(subjectType)}", "shortDescription": {"text": "Dangling fetch: PUT /api/multitable/sheets/${encodeURIComponent(sheetId)}/permissions/${encodeURIComponent(subjectType)}/${encodeURIComponent(subjectId)} (apps/web/src/multitable/api/client.ts:987)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:987` calls `PUT /api/multitable/sheets/${encodeURIComponent(sheetId)}/permissions/${encodeURIComponent(subjectType)}/${encodeURIComponent(subjectId)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/permissions/<p>/<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-7dc18c3482fd91a4", "name": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/field-permissions (apps/web/src/multitable/api", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/field-permissions (apps/web/src/multitable/api/client.ts:1013)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1013` calls `GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/field-permissions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/field-permissions`\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-d8eb9ec8a8c28ea4", "name": "Dangling fetch: PUT /api/multitable/sheets/${encodeURIComponent(sheetId)}/field-permissions/${encodeURIComponent(fieldId", "shortDescription": {"text": "Dangling fetch: PUT /api/multitable/sheets/${encodeURIComponent(sheetId)}/field-permissions/${encodeURIComponent(fieldId)}/${encodeURIComponent(subjectType)}/${encodeURIComponent(subjectId)} (apps/web/src/multitable/api/client.ts:1043)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1043` calls `PUT /api/multitable/sheets/${encodeURIComponent(sheetId)}/field-permissions/${encodeURIComponent(fieldId)}/${encodeURIComponent(subjectType)}/${encodeURIComponent(subjectId)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/field-permissions/<p>/<p>/<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-72ba5fb882f4a932", "name": "Dangling fetch: PUT /api/multitable/views/${encodeURIComponent(viewId)}/permissions/${encodeURIComponent(subjectType)}/$", "shortDescription": {"text": "Dangling fetch: PUT /api/multitable/views/${encodeURIComponent(viewId)}/permissions/${encodeURIComponent(subjectType)}/${encodeURIComponent(subjectId)} (apps/web/src/multitable/api/client.ts:1085)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1085` calls `PUT /api/multitable/views/${encodeURIComponent(viewId)}/permissions/${encodeURIComponent(subjectType)}/${encodeURIComponent(subjectId)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/views/<p>/permissions/<p>/<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-a2560197b35d951d", "name": "Dangling fetch: GET /api/multitable/fields${qs({ sheetId })} (apps/web/src/multitable/api/client.ts:1098)", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/fields${qs({ sheetId })} (apps/web/src/multitable/api/client.ts:1098)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1098` calls `GET /api/multitable/fields${qs({ sheetId })}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/fields/<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-3b67286ac8f53fb7", "name": "Dangling fetch: POST /api/multitable/fields (apps/web/src/multitable/api/client.ts:1103)", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/fields (apps/web/src/multitable/api/client.ts:1103)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1103` calls `POST /api/multitable/fields` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/fields`\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-2415626d108e61e2", "name": "Dangling fetch: POST /api/multitable/person-fields/prepare (apps/web/src/multitable/api/client.ts:1112)", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/person-fields/prepare (apps/web/src/multitable/api/client.ts:1112)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1112` calls `POST /api/multitable/person-fields/prepare` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/person-fields/prepare`\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-f4681dbf5a123b6a", "name": "Dangling fetch: PATCH /api/multitable/fields/${fieldId} (apps/web/src/multitable/api/client.ts:1121)", "shortDescription": {"text": "Dangling fetch: PATCH /api/multitable/fields/${fieldId} (apps/web/src/multitable/api/client.ts:1121)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1121` calls `PATCH /api/multitable/fields/${fieldId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/fields/<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-dcf56d46d6358f72", "name": "Dangling fetch: DELETE /api/multitable/fields/${fieldId} (apps/web/src/multitable/api/client.ts:1130)", "shortDescription": {"text": "Dangling fetch: DELETE /api/multitable/fields/${fieldId} (apps/web/src/multitable/api/client.ts:1130)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1130` calls `DELETE /api/multitable/fields/${fieldId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/fields/<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-1542f5175283935a", "name": "Dangling fetch: GET /api/multitable/views${qs({ sheetId })} (apps/web/src/multitable/api/client.ts:1136)", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/views${qs({ sheetId })} (apps/web/src/multitable/api/client.ts:1136)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1136` calls `GET /api/multitable/views${qs({ sheetId })}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/views/<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-63aacb0a6926a2e9", "name": "Dangling fetch: POST /api/multitable/views (apps/web/src/multitable/api/client.ts:1141)", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/views (apps/web/src/multitable/api/client.ts:1141)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1141` calls `POST /api/multitable/views` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/views`\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-6c5e2aea4cbee0e4", "name": "Dangling fetch: PATCH /api/multitable/views/${viewId} (apps/web/src/multitable/api/client.ts:1150)", "shortDescription": {"text": "Dangling fetch: PATCH /api/multitable/views/${viewId} (apps/web/src/multitable/api/client.ts:1150)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1150` calls `PATCH /api/multitable/views/${viewId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/views/<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-2e5c97069b2f7b82", "name": "Dangling fetch: DELETE /api/multitable/views/${viewId} (apps/web/src/multitable/api/client.ts:1159)", "shortDescription": {"text": "Dangling fetch: DELETE /api/multitable/views/${viewId} (apps/web/src/multitable/api/client.ts:1159)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1159` calls `DELETE /api/multitable/views/${viewId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/views/<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-b48b8e9dcd7d1d28", "name": "Dangling fetch: GET /api/multitable/view${qs(params as Record<string, string | number | boolean | undefined>)} (apps/web", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/view${qs(params as Record<string, string | number | boolean | undefined>)} (apps/web/src/multitable/api/client.ts:1173)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1173` calls `GET /api/multitable/view${qs(params as Record<string, string | number | boolean | undefined>)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/view/<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-3fbaf79706a32f8e", "name": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/view-aggregate${qs(rest as Record<string, stri", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/view-aggregate${qs(rest as Record<string, string | undefined>)} (apps/web/src/multitable/api/client.ts:1182)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1182` calls `GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/view-aggregate${qs(rest as Record<string, string | undefined>)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/view-aggregate/<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-d0fb3bd5e7b92627", "name": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/formula/dry-run (apps/web/src/multitable/api/", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/formula/dry-run (apps/web/src/multitable/api/client.ts:1193)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1193` calls `POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/formula/dry-run` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/formula/dry-run`\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-32112f33190e3f4e", "name": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/ai/shortcut/preview (apps/web/src/multitable/", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/ai/shortcut/preview (apps/web/src/multitable/api/client.ts:1210)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1210` calls `POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/ai/shortcut/preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/ai/shortcut/preview`\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-1067a9eabfc497c4", "name": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/ai/shortcut/run (apps/web/src/multitable/api/", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/ai/shortcut/run (apps/web/src/multitable/api/client.ts:1226)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1226` calls `POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/ai/shortcut/run` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/ai/shortcut/run`\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-744c8d469aff5e55", "name": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/ai/suggest-formula (apps/web/src/multitable/a", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/ai/suggest-formula (apps/web/src/multitable/api/client.ts:1239)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1239` calls `POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/ai/suggest-formula` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/ai/suggest-formula`\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-2d2c633348d3fcb6", "name": "Dangling fetch: GET /api/multitable/ai/usage-summary (apps/web/src/multitable/api/client.ts:1250)", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/ai/usage-summary (apps/web/src/multitable/api/client.ts:1250)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1250` calls `GET /api/multitable/ai/usage-summary` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/ai/usage-summary`\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-4b2020f31ab55556", "name": "Dangling fetch: GET /api/multitable/records/${recordId}${qs(params ?? {})} (apps/web/src/multitable/api/client.ts:1265)", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/records/${recordId}${qs(params ?? {})} (apps/web/src/multitable/api/client.ts:1265)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1265` calls `GET /api/multitable/records/${recordId}${qs(params ?? {})}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/records/<p>${qs(params `\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-735d3dec7de5798d", "name": "Dangling fetch: PUT /api/multitable/sheets/${encodeURIComponent(sheetId)}/records/${encodeURIComponent(recordId)}/subscr", "shortDescription": {"text": "Dangling fetch: PUT /api/multitable/sheets/${encodeURIComponent(sheetId)}/records/${encodeURIComponent(recordId)}/subscriptions/me (apps/web/src/multitable/api/client.ts:1286)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1286` calls `PUT /api/multitable/sheets/${encodeURIComponent(sheetId)}/records/${encodeURIComponent(recordId)}/subscriptions/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/records/<p>/subscriptions/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1f2e57d6d58ee74e", "name": "Dangling fetch: GET /api/multitable/record-subscription-notifications${qs(params ?? {})} (apps/web/src/multitable/api/cl", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/record-subscription-notifications${qs(params ?? {})} (apps/web/src/multitable/api/client.ts:1304)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1304` calls `GET /api/multitable/record-subscription-notifications${qs(params ?? {})}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/record-subscription-notifications${qs(params `\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-799a2d80faaccf6d", "name": "Dangling fetch: POST /api/multitable/records (apps/web/src/multitable/api/client.ts:1310)", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/records (apps/web/src/multitable/api/client.ts:1310)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1310` calls `POST /api/multitable/records` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/records`\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-e79b6b4b7292bd23", "name": "Dangling fetch: DELETE /api/multitable/records/${recordId}${qs({ expectedVersion })} (apps/web/src/multitable/api/client", "shortDescription": {"text": "Dangling fetch: DELETE /api/multitable/records/${recordId}${qs({ expectedVersion })} (apps/web/src/multitable/api/client.ts:1320)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1320` calls `DELETE /api/multitable/records/${recordId}${qs({ expectedVersion })}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/records/<p>/<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-b34055336598a3eb", "name": "Dangling fetch: POST /api/multitable/records/${recordId}/lock (apps/web/src/multitable/api/client.ts:1330)", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/records/${recordId}/lock (apps/web/src/multitable/api/client.ts:1330)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1330` calls `POST /api/multitable/records/${recordId}/lock` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/records/<p>/lock`\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-1cb9fb033afa04ec", "name": "Dangling fetch: POST /api/multitable/patch (apps/web/src/multitable/api/client.ts:1339)", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/patch (apps/web/src/multitable/api/client.ts:1339)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1339` calls `POST /api/multitable/patch` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/patch`\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-fd5761b7a527be55", "name": "Dangling fetch: GET /api/multitable/fields/${fieldId}/link-options${qs(params ?? {})} (apps/web/src/multitable/api/clien", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/fields/${fieldId}/link-options${qs(params ?? {})} (apps/web/src/multitable/api/client.ts:1365)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1365` calls `GET /api/multitable/fields/${fieldId}/link-options${qs(params ?? {})}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/fields/<p>/link-options${qs(params `\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-0174ab2ba54d5d52", "name": "Dangling fetch: GET /api/multitable/records-summary${qs(params as Record<string, string | number | boolean | undefined>)", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/records-summary${qs(params as Record<string, string | number | boolean | undefined>)} (apps/web/src/multitable/api/client.ts:1373)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1373` calls `GET /api/multitable/records-summary${qs(params as Record<string, string | number | boolean | undefined>)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/records-summary/<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-48d8eb62bccfba48", "name": "Dangling fetch: POST /api/multitable/attachments (apps/web/src/multitable/api/client.ts:1384)", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/attachments (apps/web/src/multitable/api/client.ts:1384)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1384` calls `POST /api/multitable/attachments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/attachments`\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-777845e097b1414e", "name": "Dangling fetch: DELETE /api/multitable/attachments/${attachmentId} (apps/web/src/multitable/api/client.ts:1393)", "shortDescription": {"text": "Dangling fetch: DELETE /api/multitable/attachments/${attachmentId} (apps/web/src/multitable/api/client.ts:1393)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1393` calls `DELETE /api/multitable/attachments/${attachmentId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/attachments/<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-11823398129942d8", "name": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/records/${encodeURIComponent(recordId)}/permis", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/records/${encodeURIComponent(recordId)}/permissions (apps/web/src/multitable/api/client.ts:1399)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1399` calls `GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/records/${encodeURIComponent(recordId)}/permissions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/records/<p>/permissions`\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-99f53c5d6e6fd5f1", "name": "Dangling fetch: PUT /api/multitable/sheets/${encodeURIComponent(sheetId)}/records/${encodeURIComponent(recordId)}/permis", "shortDescription": {"text": "Dangling fetch: PUT /api/multitable/sheets/${encodeURIComponent(sheetId)}/records/${encodeURIComponent(recordId)}/permissions (apps/web/src/multitable/api/client.ts:1411)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1411` calls `PUT /api/multitable/sheets/${encodeURIComponent(sheetId)}/records/${encodeURIComponent(recordId)}/permissions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/records/<p>/permissions`\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-9f3188b19ae5e42a", "name": "Dangling fetch: DELETE /api/multitable/sheets/${encodeURIComponent(sheetId)}/records/${encodeURIComponent(recordId)}/per", "shortDescription": {"text": "Dangling fetch: DELETE /api/multitable/sheets/${encodeURIComponent(sheetId)}/records/${encodeURIComponent(recordId)}/permissions/${encodeURIComponent(permissionId)} (apps/web/src/multitable/api/client.ts:1423)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1423` calls `DELETE /api/multitable/sheets/${encodeURIComponent(sheetId)}/records/${encodeURIComponent(recordId)}/permissions/${encodeURIComponent(permissionId)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/records/<p>/permissions/<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-27c6455eb082019b", "name": "Dangling fetch: PATCH /api/multitable/sheets/${encodeURIComponent(sheetId)}/automations/${encodeURIComponent(ruleId)} (a", "shortDescription": {"text": "Dangling fetch: PATCH /api/multitable/sheets/${encodeURIComponent(sheetId)}/automations/${encodeURIComponent(ruleId)} (apps/web/src/multitable/api/client.ts:1456)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1456` calls `PATCH /api/multitable/sheets/${encodeURIComponent(sheetId)}/automations/${encodeURIComponent(ruleId)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/automations/<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-e935796038e5ef42", "name": "Dangling fetch: GET /api/comments/mention-candidates${qs(params)} (apps/web/src/multitable/api/client.ts:1523)", "shortDescription": {"text": "Dangling fetch: GET /api/comments/mention-candidates${qs(params)} (apps/web/src/multitable/api/client.ts:1523)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1523` calls `GET /api/comments/mention-candidates${qs(params)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/comments/mention-candidates/<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-7fb4ff8da3892ec5", "name": "Dangling fetch: GET /api/comments/mention-summary${qs(params)} (apps/web/src/multitable/api/client.ts:1567)", "shortDescription": {"text": "Dangling fetch: GET /api/comments/mention-summary${qs(params)} (apps/web/src/multitable/api/client.ts:1567)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1567` calls `GET /api/comments/mention-summary${qs(params)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/comments/mention-summary/<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-72d31bdd6328ca04", "name": "Dangling fetch: GET /api/comments/inbox${qs(params ?? {})} (apps/web/src/multitable/api/client.ts:1582)", "shortDescription": {"text": "Dangling fetch: GET /api/comments/inbox${qs(params ?? {})} (apps/web/src/multitable/api/client.ts:1582)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1582` calls `GET /api/comments/inbox${qs(params ?? {})}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/comments/inbox${qs(params `\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-3115d4ba7008f1f9", "name": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/views/${encodeURIComponent(viewId)}/form-share", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/views/${encodeURIComponent(viewId)}/form-share (apps/web/src/multitable/api/client.ts:1600)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1600` calls `GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/views/${encodeURIComponent(viewId)}/form-share` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/views/<p>/form-share`\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-415ed1ed87470fde", "name": "Dangling fetch: PATCH /api/multitable/sheets/${encodeURIComponent(sheetId)}/views/${encodeURIComponent(viewId)}/form-sha", "shortDescription": {"text": "Dangling fetch: PATCH /api/multitable/sheets/${encodeURIComponent(sheetId)}/views/${encodeURIComponent(viewId)}/form-share (apps/web/src/multitable/api/client.ts:1606)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1606` calls `PATCH /api/multitable/sheets/${encodeURIComponent(sheetId)}/views/${encodeURIComponent(viewId)}/form-share` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/views/<p>/form-share`\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-5ece80b8ee64506b", "name": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/views/${encodeURIComponent(viewId)}/form-shar", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/views/${encodeURIComponent(viewId)}/form-share/regenerate (apps/web/src/multitable/api/client.ts:1616)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1616` calls `POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/views/${encodeURIComponent(viewId)}/form-share/regenerate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/views/<p>/form-share/regenerate`\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-966dae78f3b69f8c", "name": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/form-share-candidates${qs(params ?? {})} (apps", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/form-share-candidates${qs(params ?? {})} (apps/web/src/multitable/api/client.ts:1626)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1626` calls `GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/form-share-candidates${qs(params ?? {})}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/form-share-candidates${qs(params `\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-d0312a1d1e98ed0e", "name": "Dangling fetch: GET /api/multitable/tokens (apps/web/src/multitable/api/client.ts:1633)", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/tokens (apps/web/src/multitable/api/client.ts:1633)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1633` calls `GET /api/multitable/tokens` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/tokens`\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-90d05b7b972d56ce", "name": "Dangling fetch: POST /api/multitable/tokens (apps/web/src/multitable/api/client.ts:1639)", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/tokens (apps/web/src/multitable/api/client.ts:1639)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1639` calls `POST /api/multitable/tokens` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/tokens`\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-cf275646eaa787f1", "name": "Dangling fetch: DELETE /api/multitable/tokens/${encodeURIComponent(tokenId)} (apps/web/src/multitable/api/client.ts:1648", "shortDescription": {"text": "Dangling fetch: DELETE /api/multitable/tokens/${encodeURIComponent(tokenId)} (apps/web/src/multitable/api/client.ts:1648)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1648` calls `DELETE /api/multitable/tokens/${encodeURIComponent(tokenId)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/tokens/<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-c1a3f2ad136dd04b", "name": "Dangling fetch: POST /api/multitable/tokens/${encodeURIComponent(tokenId)}/rotate (apps/web/src/multitable/api/client.ts", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/tokens/${encodeURIComponent(tokenId)}/rotate (apps/web/src/multitable/api/client.ts:1655)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1655` calls `POST /api/multitable/tokens/${encodeURIComponent(tokenId)}/rotate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/tokens/<p>/rotate`\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-24100e2cff07f8d4", "name": "Dangling fetch: GET /api/multitable/dingtalk-groups${qs(sheetId ? { sheetId } : {})} (apps/web/src/multitable/api/client", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/dingtalk-groups${qs(sheetId ? { sheetId } : {})} (apps/web/src/multitable/api/client.ts:1701)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1701` calls `GET /api/multitable/dingtalk-groups${qs(sheetId ? { sheetId } : {})}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/dingtalk-groups${qs(sheetid `\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-ef6d3996600a870c", "name": "Dangling fetch: PATCH /api/multitable/dingtalk-groups/${encodeURIComponent(id)}${qs(sheetId ? { sheetId } : {})} (apps/w", "shortDescription": {"text": "Dangling fetch: PATCH /api/multitable/dingtalk-groups/${encodeURIComponent(id)}${qs(sheetId ? { sheetId } : {})} (apps/web/src/multitable/api/client.ts:1716)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1716` calls `PATCH /api/multitable/dingtalk-groups/${encodeURIComponent(id)}${qs(sheetId ? { sheetId } : {})}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/dingtalk-groups/<p>${qs(sheetid `\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-2fdd369b4e1b56a2", "name": "Dangling fetch: DELETE /api/multitable/dingtalk-groups/${encodeURIComponent(id)}${qs(sheetId ? { sheetId } : {})} (apps/", "shortDescription": {"text": "Dangling fetch: DELETE /api/multitable/dingtalk-groups/${encodeURIComponent(id)}${qs(sheetId ? { sheetId } : {})} (apps/web/src/multitable/api/client.ts:1725)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1725` calls `DELETE /api/multitable/dingtalk-groups/${encodeURIComponent(id)}${qs(sheetId ? { sheetId } : {})}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/dingtalk-groups/<p>${qs(sheetid `\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-bed123421544966c", "name": "Dangling fetch: POST /api/multitable/dingtalk-groups/${encodeURIComponent(id)}/test-send${qs(sheetId ? { sheetId } : {})", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/dingtalk-groups/${encodeURIComponent(id)}/test-send${qs(sheetId ? { sheetId } : {})} (apps/web/src/multitable/api/client.ts:1732)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1732` calls `POST /api/multitable/dingtalk-groups/${encodeURIComponent(id)}/test-send${qs(sheetId ? { sheetId } : {})}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/dingtalk-groups/<p>/test-send${qs(sheetid `\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-5b1f1e0524748513", "name": "Dangling fetch: GET /api/multitable/dingtalk-groups/${encodeURIComponent(id)}/deliveries${qs(sheetId ? { sheetId } : {})", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/dingtalk-groups/${encodeURIComponent(id)}/deliveries${qs(sheetId ? { sheetId } : {})} (apps/web/src/multitable/api/client.ts:1741)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1741` calls `GET /api/multitable/dingtalk-groups/${encodeURIComponent(id)}/deliveries${qs(sheetId ? { sheetId } : {})}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/dingtalk-groups/<p>/deliveries${qs(sheetid `\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-9acc67bcd3ba24de", "name": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/automations/${encodeURIComponent(ruleId)}/tes", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/automations/${encodeURIComponent(ruleId)}/test (apps/web/src/multitable/api/client.ts:1748)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1748` calls `POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/automations/${encodeURIComponent(ruleId)}/test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/automations/<p>/test`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d42f2c58332a49c7", "name": "Dangling fetch: GET /api/multitable/automation-executions${qs({ ...filters })} (apps/web/src/multitable/api/client.ts:17", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/automation-executions${qs({ ...filters })} (apps/web/src/multitable/api/client.ts:1777)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1777` calls `GET /api/multitable/automation-executions${qs({ ...filters })}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/automation-executions/<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-fe42775df7d11439", "name": "Dangling fetch: POST /api/multitable/automation/resume (apps/web/src/multitable/api/client.ts:1797)", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/automation/resume (apps/web/src/multitable/api/client.ts:1797)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1797` calls `POST /api/multitable/automation/resume` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/automation/resume`\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-8c69757727e3aeb2", "name": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/charts (apps/web/src/multitable/api/client.ts:", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/charts (apps/web/src/multitable/api/client.ts:1823)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1823` calls `GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/charts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/charts`\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-90a8e71f2254ffe0", "name": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/charts (apps/web/src/multitable/api/client.ts", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/charts (apps/web/src/multitable/api/client.ts:1829)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1829` calls `POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/charts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/charts`\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-188fa25213f303f8", "name": "Dangling fetch: PATCH /api/multitable/sheets/${encodeURIComponent(sheetId)}/charts/${encodeURIComponent(chartId)} (apps/", "shortDescription": {"text": "Dangling fetch: PATCH /api/multitable/sheets/${encodeURIComponent(sheetId)}/charts/${encodeURIComponent(chartId)} (apps/web/src/multitable/api/client.ts:1838)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1838` calls `PATCH /api/multitable/sheets/${encodeURIComponent(sheetId)}/charts/${encodeURIComponent(chartId)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/charts/<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-b26d069a84d4d50d", "name": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/dashboards (apps/web/src/multitable/api/client", "shortDescription": {"text": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/dashboards (apps/web/src/multitable/api/client.ts:1875)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1875` calls `GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/dashboards` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/dashboards`\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-31755df9af645583", "name": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/dashboards (apps/web/src/multitable/api/clien", "shortDescription": {"text": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/dashboards (apps/web/src/multitable/api/client.ts:1881)"}, "fullDescription": {"text": "`apps/web/src/multitable/api/client.ts:1881` calls `POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/dashboards` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/multitable/sheets/<p>/dashboards`\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-4c9c680b81d00882", "name": "Dangling fetch: GET http://${addr.address}:${addr.port}/api/plugins (packages/core-backend/tests/unit/server-lifecycle.t", "shortDescription": {"text": "Dangling fetch: GET http://${addr.address}:${addr.port}/api/plugins (packages/core-backend/tests/unit/server-lifecycle.test.ts:31)"}, "fullDescription": {"text": "`packages/core-backend/tests/unit/server-lifecycle.test.ts:31` calls `GET http://${addr.address}:${addr.port}/api/plugins` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http:/<p>:/<p>/api/plugins`\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-92182603cfed82bf", "name": "Dangling fetch: GET http://localhost:8900/api/admin/users (packages/core-backend/src/routes/metrics-demo.ts:172)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:8900/api/admin/users (packages/core-backend/src/routes/metrics-demo.ts:172)"}, "fullDescription": {"text": "`packages/core-backend/src/routes/metrics-demo.ts:172` calls `GET http://localhost:8900/api/admin/users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:8900/api/admin/users`\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-c073144bd0b8db7f", "name": "Dangling fetch: GET http://localhost:8900/api/user/profile (packages/core-backend/src/routes/metrics-demo.ts:177)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:8900/api/user/profile (packages/core-backend/src/routes/metrics-demo.ts:177)"}, "fullDescription": {"text": "`packages/core-backend/src/routes/metrics-demo.ts:177` calls `GET http://localhost:8900/api/user/profile` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:8900/api/user/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-b77664e8ee28d5e9", "name": "Dangling fetch: GET http://localhost:8900/api/admin/users (packages/core-backend/src/routes/metrics-demo.ts:184)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:8900/api/admin/users (packages/core-backend/src/routes/metrics-demo.ts:184)"}, "fullDescription": {"text": "`packages/core-backend/src/routes/metrics-demo.ts:184` calls `GET http://localhost:8900/api/admin/users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:8900/api/admin/users`\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-6f1895f99f815b88", "name": "Dangling fetch: GET http://localhost:8900/api/hr/employees (packages/core-backend/src/routes/metrics-demo.ts:191)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:8900/api/hr/employees (packages/core-backend/src/routes/metrics-demo.ts:191)"}, "fullDescription": {"text": "`packages/core-backend/src/routes/metrics-demo.ts:191` calls `GET http://localhost:8900/api/hr/employees` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:8900/api/hr/employees`\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-684f0e83ba7e1558", "name": "Unused endpoint: GET ", "shortDescription": {"text": "Unused endpoint: GET "}, "fullDescription": {"text": "`apps/web/src/views/plm/usePlmBomState.ts` declares `GET ` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dde3adb27bf7eebe", "name": "Unused endpoint: USE /api", "shortDescription": {"text": "Unused endpoint: USE /api"}, "fullDescription": {"text": "`packages/core-backend/src/index.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-fbd66d11171d3c03", "name": "Unused endpoint: USE /api/attendance/import", "shortDescription": {"text": "Unused endpoint: USE /api/attendance/import"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `USE /api/attendance/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-4756b4c4da7d2088", "name": "Unused endpoint: GET /api/health", "shortDescription": {"text": "Unused endpoint: GET /api/health"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `GET /api/health` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6eb452fbfb454d20", "name": "Unused endpoint: USE /api/auth", "shortDescription": {"text": "Unused endpoint: USE /api/auth"}, "fullDescription": {"text": "`packages/core-backend/src/index.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-9e25fe4b55b16f13", "name": "Unused endpoint: USE /api/kanban", "shortDescription": {"text": "Unused endpoint: USE /api/kanban"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `USE /api/kanban` 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-327ee581f298a180", "name": "Unused endpoint: USE /api/workflow", "shortDescription": {"text": "Unused endpoint: USE /api/workflow"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `USE /api/workflow` 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-6901ef493a961e94", "name": "Unused endpoint: USE /api/workflow-designer", "shortDescription": {"text": "Unused endpoint: USE /api/workflow-designer"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `USE /api/workflow-designer` 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-136b1fe70d2c3619", "name": "Unused endpoint: USE /api/plm-workbench", "shortDescription": {"text": "Unused endpoint: USE /api/plm-workbench"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `USE /api/plm-workbench` 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-0ca8ba0e94aa43d4", "name": "Unused endpoint: USE /api/plm-embed", "shortDescription": {"text": "Unused endpoint: USE /api/plm-embed"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `USE /api/plm-embed` 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-af26eb6b0f2839c6", "name": "Unused endpoint: USE /api/federation/plm", "shortDescription": {"text": "Unused endpoint: USE /api/federation/plm"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `USE /api/federation/plm` 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-8571ee09bc3db67a", "name": "Unused endpoint: USE /api/federation/import/plm", "shortDescription": {"text": "Unused endpoint: USE /api/federation/import/plm"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `USE /api/federation/import/plm` 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-8f53a97327fcad4a", "name": "Unused endpoint: POST /api/workflow-mock/echo", "shortDescription": {"text": "Unused endpoint: POST /api/workflow-mock/echo"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `POST /api/workflow-mock/echo` 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-9e903021f9fa348d", "name": "Unused endpoint: GET /api/workflow-mock/status", "shortDescription": {"text": "Unused endpoint: GET /api/workflow-mock/status"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `GET /api/workflow-mock/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b7aed31b642f495c", "name": "Unused endpoint: USE /api/univer-mock", "shortDescription": {"text": "Unused endpoint: USE /api/univer-mock"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `USE /api/univer-mock` 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-7e389f934842c879", "name": "Unused endpoint: USE /api/multitable", "shortDescription": {"text": "Unused endpoint: USE /api/multitable"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `USE /api/multitable` 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-891768534cc943a5", "name": "Unused endpoint: USE /api/univer-meta", "shortDescription": {"text": "Unused endpoint: USE /api/univer-meta"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `USE /api/univer-meta` 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-631c43d5fd71eb12", "name": "Unused endpoint: USE /internal", "shortDescription": {"text": "Unused endpoint: USE /internal"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `USE /internal` 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-47221992508715c8", "name": "Unused endpoint: USE /internal/test", "shortDescription": {"text": "Unused endpoint: USE /internal/test"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `USE /internal/test` 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-64fae58db3632fb7", "name": "Unused endpoint: USE /api/cache-test", "shortDescription": {"text": "Unused endpoint: USE /api/cache-test"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `USE /api/cache-test` 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-69c5f715415cb464", "name": "Unused endpoint: GET /api/sim-error", "shortDescription": {"text": "Unused endpoint: GET /api/sim-error"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `GET /api/sim-error` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ad3e75eeeb3debdf", "name": "Unused endpoint: USE /api/views", "shortDescription": {"text": "Unused endpoint: USE /api/views"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `USE /api/views` 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-d93a530ce10d47d9", "name": "Unused endpoint: USE /api/admin", "shortDescription": {"text": "Unused endpoint: USE /api/admin"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `USE /api/admin` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0198bb20f630b0e2", "name": "Unused endpoint: USE /api/admin/directory", "shortDescription": {"text": "Unused endpoint: USE /api/admin/directory"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `USE /api/admin/directory` 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-84549350ff5406d8", "name": "Unused endpoint: USE /api/admin/canary", "shortDescription": {"text": "Unused endpoint: USE /api/admin/canary"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `USE /api/admin/canary` 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-60011473f1352052", "name": "Unused endpoint: GET /api/v2/hello", "shortDescription": {"text": "Unused endpoint: GET /api/v2/hello"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `GET /api/v2/hello` 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-e07100320599f7e2", "name": "Unused endpoint: GET /api/v2/rpc-test", "shortDescription": {"text": "Unused endpoint: GET /api/v2/rpc-test"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `GET /api/v2/rpc-test` 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-3e91f42808613291", "name": "Unused endpoint: GET /api/plugins", "shortDescription": {"text": "Unused endpoint: GET /api/plugins"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `GET /api/plugins` 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-40bd61272c1fc6dc", "name": "Unused endpoint: USE /api/platform/apps", "shortDescription": {"text": "Unused endpoint: USE /api/platform/apps"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `USE /api/platform/apps` 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-66de898ab16de2ca", "name": "Unused endpoint: GET /internal/metrics", "shortDescription": {"text": "Unused endpoint: GET /internal/metrics"}, "fullDescription": {"text": "`packages/core-backend/src/index.ts` declares `GET /internal/metrics` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8f65a71db250415f", "name": "Unused endpoint: POST /safety/confirm", "shortDescription": {"text": "Unused endpoint: POST /safety/confirm"}, "fullDescription": {"text": "`packages/core-backend/src/guards/idempotency.ts` declares `POST /safety/confirm` 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-6cbef3132fd29e0d", "name": "Unused endpoint: DELETE /api/tables/:id", "shortDescription": {"text": "Unused endpoint: DELETE /api/tables/:id"}, "fullDescription": {"text": "`packages/core-backend/src/guards/middleware.ts` declares `DELETE /api/tables/: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-a4b62202fb1c6d67", "name": "Unused endpoint: GET /api/admin/role-delegation/summary", "shortDescription": {"text": "Unused endpoint: GET /api/admin/role-delegation/summary"}, "fullDescription": {"text": "`packages/core-backend/src/routes/admin-users.ts` declares `GET /api/admin/role-delegation/summary` 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-97de7b6f4ace1aca", "name": "Unused endpoint: GET /api/admin/role-delegation/departments", "shortDescription": {"text": "Unused endpoint: GET /api/admin/role-delegation/departments"}, "fullDescription": {"text": "`packages/core-backend/src/routes/admin-users.ts` declares `GET /api/admin/role-delegation/departments` 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-0fd43892c9a375eb", "name": "Unused endpoint: GET /api/admin/role-delegation/member-groups", "shortDescription": {"text": "Unused endpoint: GET /api/admin/role-delegation/member-groups"}, "fullDescription": {"text": "`packages/core-backend/src/routes/admin-users.ts` declares `GET /api/admin/role-delegation/member-groups` 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-b43bcb4e09e229b4", "name": "Unused endpoint: POST /api/admin/role-delegation/member-groups", "shortDescription": {"text": "Unused endpoint: POST /api/admin/role-delegation/member-groups"}, "fullDescription": {"text": "`packages/core-backend/src/routes/admin-users.ts` declares `POST /api/admin/role-delegation/member-groups` 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-be936c1d670b4c68", "name": "Unused endpoint: GET /api/admin/role-delegation/member-groups/:groupId", "shortDescription": {"text": "Unused endpoint: GET /api/admin/role-delegation/member-groups/:groupId"}, "fullDescription": {"text": "`packages/core-backend/src/routes/admin-users.ts` declares `GET /api/admin/role-delegation/member-groups/:groupId` 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-6dd2b97bfe027604", "name": "Unused endpoint: GET /api/admin/role-delegation/scope-templates", "shortDescription": {"text": "Unused endpoint: GET /api/admin/role-delegation/scope-templates"}, "fullDescription": {"text": "`packages/core-backend/src/routes/admin-users.ts` declares `GET /api/admin/role-delegation/scope-templates` 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-019b497ab549fd78", "name": "Unused endpoint: POST /api/admin/role-delegation/scope-templates", "shortDescription": {"text": "Unused endpoint: POST /api/admin/role-delegation/scope-templates"}, "fullDescription": {"text": "`packages/core-backend/src/routes/admin-users.ts` declares `POST /api/admin/role-delegation/scope-templates` 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-434308bf9f9b84bf", "name": "Unused endpoint: GET /api/admin/role-delegation/scope-templates/:templateId", "shortDescription": {"text": "Unused endpoint: GET /api/admin/role-delegation/scope-templates/:templateId"}, "fullDescription": {"text": "`packages/core-backend/src/routes/admin-users.ts` declares `GET /api/admin/role-delegation/scope-templates/:templateId` 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-c4fb620197bea109", "name": "Unused endpoint: POST /api/admin/role-delegation/scope-templates/:templateId/departments/:action(assign|unassign)", "shortDescription": {"text": "Unused endpoint: POST /api/admin/role-delegation/scope-templates/:templateId/departments/:action(assign|unassign)"}, "fullDescription": {"text": "`packages/core-backend/src/routes/admin-users.ts` declares `POST /api/admin/role-delegation/scope-templates/:templateId/departments/:action(assign|unassign)` 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-a1540f32632d9f3b", "name": "Unused endpoint: POST /api/admin/role-delegation/scope-templates/:templateId/member-groups/:action(assign|unassign)", "shortDescription": {"text": "Unused endpoint: POST /api/admin/role-delegation/scope-templates/:templateId/member-groups/:action(assign|unassign)"}, "fullDescription": {"text": "`packages/core-backend/src/routes/admin-users.ts` declares `POST /api/admin/role-delegation/scope-templates/:templateId/member-groups/:action(assign|unassign)` 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-db5241e1af860719", "name": "Unused endpoint: GET /api/admin/role-delegation/users/:userId/scopes", "shortDescription": {"text": "Unused endpoint: GET /api/admin/role-delegation/users/:userId/scopes"}, "fullDescription": {"text": "`packages/core-backend/src/routes/admin-users.ts` declares `GET /api/admin/role-delegation/users/:userId/scopes` 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-72a5210d113a8704", "name": "Unused endpoint: POST /api/admin/role-delegation/users/:userId/scopes/:action(assign|unassign)", "shortDescription": {"text": "Unused endpoint: POST /api/admin/role-delegation/users/:userId/scopes/:action(assign|unassign)"}, "fullDescription": {"text": "`packages/core-backend/src/routes/admin-users.ts` declares `POST /api/admin/role-delegation/users/:userId/scopes/:action(assign|unassign)` 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-fc5757afba388aa0", "name": "Unused endpoint: POST /api/admin/role-delegation/users/:userId/scope-groups/:action(assign|unassign)", "shortDescription": {"text": "Unused endpoint: POST /api/admin/role-delegation/users/:userId/scope-groups/:action(assign|unassign)"}, "fullDescription": {"text": "`packages/core-backend/src/routes/admin-users.ts` declares `POST /api/admin/role-delegation/users/:userId/scope-groups/:action(assign|unassign)` 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-75cbd4dc364a41a8", "name": "Unused endpoint: POST /api/admin/role-delegation/users/:userId/member-groups/:action(assign|unassign)", "shortDescription": {"text": "Unused endpoint: POST /api/admin/role-delegation/users/:userId/member-groups/:action(assign|unassign)"}, "fullDescription": {"text": "`packages/core-backend/src/routes/admin-users.ts` declares `POST /api/admin/role-delegation/users/:userId/member-groups/:action(assign|unassign)` 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-a51107d700dc43aa", "name": "Unused endpoint: POST /api/admin/role-delegation/users/:userId/scope-templates/apply", "shortDescription": {"text": "Unused endpoint: POST /api/admin/role-delegation/users/:userId/scope-templates/apply"}, "fullDescription": {"text": "`packages/core-backend/src/routes/admin-users.ts` declares `POST /api/admin/role-delegation/users/:userId/scope-templates/apply` 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-fff808a02157aa00", "name": "Unused endpoint: GET /api/admin/role-delegation/users", "shortDescription": {"text": "Unused endpoint: GET /api/admin/role-delegation/users"}, "fullDescription": {"text": "`packages/core-backend/src/routes/admin-users.ts` declares `GET /api/admin/role-delegation/users` 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-0ae020aa1ca6f883", "name": "Unused endpoint: GET /api/admin/role-delegation/users/:userId/access", "shortDescription": {"text": "Unused endpoint: GET /api/admin/role-delegation/users/:userId/access"}, "fullDescription": {"text": "`packages/core-backend/src/routes/admin-users.ts` declares `GET /api/admin/role-delegation/users/:userId/access` 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-f508a59ef3ad2ee4", "name": "Unused endpoint: PATCH /api/admin/role-delegation/users/:userId/namespaces/:namespace/admission", "shortDescription": {"text": "Unused endpoint: PATCH /api/admin/role-delegation/users/:userId/namespaces/:namespace/admission"}, "fullDescription": {"text": "`packages/core-backend/src/routes/admin-users.ts` declares `PATCH /api/admin/role-delegation/users/:userId/namespaces/:namespace/admission` 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/23633"}, "properties": {"repository": "zensgit/metasheet2", "repoUrl": "https://github.com/zensgit/metasheet2", "branch": "main"}, "results": [{"ruleId": "scanner-a0ee01f1337ae555", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 temp-trigger.ts:15"}, "properties": {"repobilityId": "68cae48e4ab513ea", "scanner": "scanner-primary", "fingerprint": "a0ee01f1337ae555", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-72cfe0a5f75f31ce", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-persistence.js:25"}, "properties": {"repobilityId": "ff3bdbd404830983", "scanner": "scanner-primary", "fingerprint": "72cfe0a5f75f31ce", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9434b83afbc9146c", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 apps/web/src/multitable/components/MetaFormView.vue:234"}, "properties": {"repobilityId": "fc3ee758fdfd0068", "scanner": "scanner-primary", "fingerprint": "9434b83afbc9146c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-f1fde4f47f8f0b88", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 apps/web/src/multitable/components/MetaViewTabBar.vue:11"}, "properties": {"repobilityId": "cb1d0ff367bad777", "scanner": "scanner-primary", "fingerprint": "f1fde4f47f8f0b88", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-e53428e8d05e395a", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 apps/web/src/multitable/components/MetaBasePicker.vue:55"}, "properties": {"repobilityId": "6d4f0af71861c463", "scanner": "scanner-primary", "fingerprint": "e53428e8d05e395a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-9cf8c19283731367", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 apps/web/src/multitable/components/cells/MetaCellEditor.vue:197"}, "properties": {"repobilityId": "3cd6bcd036332e96", "scanner": "scanner-primary", "fingerprint": "9cf8c19283731367", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-3ccf22e509707bf8", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 apps/web/src/views/AfterSalesView.vue:2099"}, "properties": {"repobilityId": "884c4a47957abda9", "scanner": "scanner-primary", "fingerprint": "3ccf22e509707bf8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-1e6f2119a396c176", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/views/KanbanView.vue:195"}, "properties": {"repobilityId": "4f5a4cf1755e65c5", "scanner": "scanner-primary", "fingerprint": "1e6f2119a396c176", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-2f8a8e3304cff478", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/views/KanbanView.vue:196"}, "properties": {"repobilityId": "6022daab7188d41f", "scanner": "scanner-primary", "fingerprint": "2f8a8e3304cff478", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f5a890be7959ca6", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 apps/web/src/views/FormView.vue:326"}, "properties": {"repobilityId": "b58a8e80770ec4ed", "scanner": "scanner-primary", "fingerprint": "2f5a890be7959ca6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-4bde0fbb4488b396", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 apps/web/src/views/GalleryView.vue:56"}, "properties": {"repobilityId": "b7b4f4b8f0e8ad9e", "scanner": "scanner-primary", "fingerprint": "4bde0fbb4488b396", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-fe78b89918b42db1", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 apps/web/src/views/CalendarView.vue:249"}, "properties": {"repobilityId": "a95bf26441744628", "scanner": "scanner-primary", "fingerprint": "fe78b89918b42db1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-86b37a0b0d6ba7a7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/views/CalendarView.vue:850"}, "properties": {"repobilityId": "d540ce0e5670a827", "scanner": "scanner-primary", "fingerprint": "86b37a0b0d6ba7a7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1633c5b946437b11", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-plugin-manifests.ts:173"}, "properties": {"repobilityId": "a313cde8486e0241", "scanner": "scanner-primary", "fingerprint": "1633c5b946437b11", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a166bd02ae2e0054", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-db-schema.js:36"}, "properties": {"repobilityId": "0a2841ef72572519", "scanner": "scanner-primary", "fingerprint": "a166bd02ae2e0054", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-60a3bdd1595acb98", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-demo-data.ts:76"}, "properties": {"repobilityId": "72bc7b37a1b19a82", "scanner": "scanner-primary", "fingerprint": "60a3bdd1595acb98", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f3b49e6cb72d4c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-cache-simulation.ts:60"}, "properties": {"repobilityId": "7286ad7e4ee947cd", "scanner": "scanner-primary", "fingerprint": "0f3b49e6cb72d4c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c2cc1f3dee948743", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-staging-token.js:44"}, "properties": {"repobilityId": "304c509f7bd2847c", "scanner": "scanner-primary", "fingerprint": "c2cc1f3dee948743", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2b5d459859384195", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-plugin-manifests.ts:273"}, "properties": {"repobilityId": "9c6a5c7eb7b60d34", "scanner": "scanner-primary", "fingerprint": "2b5d459859384195", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3cbdefbe60643e9a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-pattern-expiry-check.js:8"}, "properties": {"repobilityId": "d4a5196e025a9bd6", "scanner": "scanner-primary", "fingerprint": "3cbdefbe60643e9a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5b916967fbb77a40", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-dev-token.js:74"}, "properties": {"repobilityId": "59aff934a0451e72", "scanner": "scanner-primary", "fingerprint": "5b916967fbb77a40", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e26db1eb041bff23", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/phase5-metrics-percentiles.ts:341"}, "properties": {"repobilityId": "58900a00a08ac308", "scanner": "scanner-primary", "fingerprint": "e26db1eb041bff23", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-373ed7ce6cb6625b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ops/staging-attendance-c5-delivery-smoke.ts:132"}, "properties": {"repobilityId": "d49eaf9b26bfcdfa", "scanner": "scanner-primary", "fingerprint": "373ed7ce6cb6625b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d89d1a828982bd93", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/test-persistence.js:25"}, "properties": {"repobilityId": "a0708c04b2850ceb", "scanner": "scanner-primary", "fingerprint": "d89d1a828982bd93", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-78b2004478b114d8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/test-kanban-integration.js:3"}, "properties": {"repobilityId": "26768a6ef251a909", "scanner": "scanner-primary", "fingerprint": "78b2004478b114d8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ffc258efb341928", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/types/cache.d.ts:31"}, "properties": {"repobilityId": "abb38a261234aae0", "scanner": "scanner-primary", "fingerprint": "7ffc258efb341928", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-af695f933d09986d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/types/cache.ts:29"}, "properties": {"repobilityId": "d7c496487d292f1a", "scanner": "scanner-primary", "fingerprint": "af695f933d09986d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cad3cb1b6ff0bc5f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/tests/utils/test-db.ts:41"}, "properties": {"repobilityId": "9bbf912348e9ef37", "scanner": "scanner-primary", "fingerprint": "cad3cb1b6ff0bc5f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d42417348c4d3355", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core-backend/tests/e2e/multitable-perf-baseline.spec.ts:349"}, "properties": {"repobilityId": "62842e9d57fbad43", "scanner": "scanner-primary", "fingerprint": "d42417348c4d3355", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a5e95df40a786ac9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/tests/e2e/multitable-perf-baseline.spec.ts:283"}, "properties": {"repobilityId": "9fe975a4214812ca", "scanner": "scanner-primary", "fingerprint": "a5e95df40a786ac9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1202287fcd40449c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/smoke-no-db.ts:44"}, "properties": {"repobilityId": "81a8ce6de920244f", "scanner": "scanner-primary", "fingerprint": "1202287fcd40449c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d36e87627017c470", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/pre-merge-check.ts:43"}, "properties": {"repobilityId": "e8de023d4a79f195", "scanner": "scanner-primary", "fingerprint": "d36e87627017c470", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c312d1e3f7d2f46b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/test-plm-connection.ts:55"}, "properties": {"repobilityId": "55122dab416c5a81", "scanner": "scanner-primary", "fingerprint": "c312d1e3f7d2f46b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f2540caab2da2045", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/smoke-sqlserver.ts:9"}, "properties": {"repobilityId": "899e00282f94cd10", "scanner": "scanner-primary", "fingerprint": "f2540caab2da2045", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d1d135a83e6fcda7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/seed-rbac.ts:57"}, "properties": {"repobilityId": "137fad1f564b1d32", "scanner": "scanner-primary", "fingerprint": "d1d135a83e6fcda7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d59fb9c245d15303", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/gen-dev-token.ts:40"}, "properties": {"repobilityId": "4d064b5d6c11d012", "scanner": "scanner-primary", "fingerprint": "d59fb9c245d15303", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8a711174dda788d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/run-snapshot-migration.ts:17"}, "properties": {"repobilityId": "53d973814c0f2471", "scanner": "scanner-primary", "fingerprint": "8a711174dda788d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c07b6d562abc771e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/init-default-views.ts:33"}, "properties": {"repobilityId": "423fce706bf652a9", "scanner": "scanner-primary", "fingerprint": "c07b6d562abc771e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ec83808e36d300e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/encrypt-dingtalk-integration-secrets.ts:83"}, "properties": {"repobilityId": "f45fc7f7fa55e612", "scanner": "scanner-primary", "fingerprint": "ec83808e36d300e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1b9e32f0ba3dd018", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/phase5-snapshot-migrate-and-restore.ts:39"}, "properties": {"repobilityId": "dc98287213d88b21", "scanner": "scanner-primary", "fingerprint": "1b9e32f0ba3dd018", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c7f5a9d1fe64aefe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/benchmark-messaging.ts:5"}, "properties": {"repobilityId": "5e7b75698182e259", "scanner": "scanner-primary", "fingerprint": "c7f5a9d1fe64aefe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-67cb7d3eb4c15631", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/smoke-plugins.ts:63"}, "properties": {"repobilityId": "e45ed8c94e7c84b9", "scanner": "scanner-primary", "fingerprint": "67cb7d3eb4c15631", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c94a0279f1e98705", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/smoke-sqlserver-seed.ts:35"}, "properties": {"repobilityId": "dc0eb0d5e68b3040", "scanner": "scanner-primary", "fingerprint": "c94a0279f1e98705", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-49906228f410ed3e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/config-reload.ts:12"}, "properties": {"repobilityId": "3e698b158370e827", "scanner": "scanner-primary", "fingerprint": "49906228f410ed3e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-407eb25b12774500", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/scripts/kv-inspect.ts:55"}, "properties": {"repobilityId": "dc3be1f8d5f175ff", "scanner": "scanner-primary", "fingerprint": "407eb25b12774500", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-91a8aeab3dde2257", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/benchmark/pattern-matching.ts:326"}, "properties": {"repobilityId": "dfe0ec2d64062751", "scanner": "scanner-primary", "fingerprint": "91a8aeab3dde2257", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d61425cc49d6f6a7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/core/cache/CacheRegistry.ts:46"}, "properties": {"repobilityId": "054dd14a81ca5e95", "scanner": "scanner-primary", "fingerprint": "d61425cc49d6f6a7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aef91e350cb59816", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/core/cache/CacheRegistry.d.ts:42"}, "properties": {"repobilityId": "17526ad83c0e5a5b", "scanner": "scanner-primary", "fingerprint": "aef91e350cb59816", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-68fe90dc846b8b52", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/core/cache/CacheRegistry.js:44"}, "properties": {"repobilityId": "1d4399a8afdbaa01", "scanner": "scanner-primary", "fingerprint": "68fe90dc846b8b52", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-729a73ea4338db82", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/server.js:425"}, "properties": {"repobilityId": "8f8f9db887689b9e", "scanner": "scanner-primary", "fingerprint": "729a73ea4338db82", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-239af8f589390e1d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/seeds/seed-approvals.ts:9"}, "properties": {"repobilityId": "b9861291ae12776f", "scanner": "scanner-primary", "fingerprint": "239af8f589390e1d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f5dfdc171c570e16", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/scripts/seed-kanban-demo.ts:19"}, "properties": {"repobilityId": "81b61ea62b8b95ff", "scanner": "scanner-primary", "fingerprint": "f5dfdc171c570e16", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7e7f149ff43afc50", "level": "note", "message": {"text": "React Flow <MiniMap> without dark background \u2014 packages/core-backend/src/components/workflow-designer/WorkflowDesigner.vue:69"}, "properties": {"repobilityId": "db2a574ba548c93a", "scanner": "scanner-primary", "fingerprint": "7e7f149ff43afc50", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.minimap.no-bg"]}}, {"ruleId": "scanner-7ba18c9b34394779", "level": "note", "message": {"text": "React Flow <Controls> without dark theming \u2014 packages/core-backend/src/components/workflow-designer/WorkflowDesigner.vue:74"}, "properties": {"repobilityId": "1666becccac32c29", "scanner": "scanner-primary", "fingerprint": "7ba18c9b34394779", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.controls.no-bg"]}}, {"ruleId": "scanner-7bf94429d86f60bf", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 packages/core-backend/src/components/workflow-designer/PropertyPanel.vue:5"}, "properties": {"repobilityId": "b522b55ba0beaa0d", "scanner": "scanner-primary", "fingerprint": "7bf94429d86f60bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-aba9ac78d2f9cbb8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core-backend/src/multitable/record-write-service.ts:1216"}, "properties": {"repobilityId": "06f71393aaeef280", "scanner": "scanner-primary", "fingerprint": "aba9ac78d2f9cbb8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-8b498e175123c9f3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/services/TelemetryService.ts:244"}, "properties": {"repobilityId": "67b34ec9d89aa453", "scanner": "scanner-primary", "fingerprint": "8b498e175123c9f3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d4297230375c42c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrate.ts:44"}, "properties": {"repobilityId": "181e420c634f2b77", "scanner": "scanner-primary", "fingerprint": "d4297230375c42c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6465acd6174a4329", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/_template.ts:37"}, "properties": {"repobilityId": "4d1b0e911e616e45", "scanner": "scanner-primary", "fingerprint": "6465acd6174a4329", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ecb099097eb4fa6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/20251206000001_create_data_sources_table.ts:18"}, "properties": {"repobilityId": "9065e6f2b94781d4", "scanner": "scanner-primary", "fingerprint": "6ecb099097eb4fa6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-78d8409e5704db9f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/zzzz20260611090000_create_multitable_ai_usage_ledger.ts:29"}, "properties": {"repobilityId": "233f2ff92407742d", "scanner": "scanner-primary", "fingerprint": "78d8409e5704db9f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-32033142fbc2c8bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/20251116120000_create_snapshot_tables.ts:20"}, "properties": {"repobilityId": "a1ea4b24cfb53e6d", "scanner": "scanner-primary", "fingerprint": "32033142fbc2c8bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2d0d5b88c27fb375", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/zzzz20260413120000_create_automation_rules.ts:17"}, "properties": {"repobilityId": "d61dc4505848dee4", "scanner": "scanner-primary", "fingerprint": "2d0d5b88c27fb375", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8c48ddaaffb99426", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/zzzz20260414100001_create_automation_executions_and_dashboard_charts.ts:17"}, "properties": {"repobilityId": "13326654466668f6", "scanner": "scanner-primary", "fingerprint": "8c48ddaaffb99426", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a50ab19a6e4aca21", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/zzzz20260414100000_extend_automation_rules.ts:17"}, "properties": {"repobilityId": "84373f3f700d2394", "scanner": "scanner-primary", "fingerprint": "a50ab19a6e4aca21", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bb5d3d48caeb257c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/_patterns.ts:45"}, "properties": {"repobilityId": "be796289466b8134", "scanner": "scanner-primary", "fingerprint": "bb5d3d48caeb257c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c534abd4e73dba8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/20250924200000_create_event_bus_tables.ts:280"}, "properties": {"repobilityId": "87aa6f858526e7b2", "scanner": "scanner-primary", "fingerprint": "3c534abd4e73dba8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ae1b149650c89d0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/20251117000001_add_snapshot_labels.ts:35"}, "properties": {"repobilityId": "c0a64e408015cbbe", "scanner": "scanner-primary", "fingerprint": "6ae1b149650c89d0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e6f07774344e283", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/20251117000002_create_protection_rules.ts:80"}, "properties": {"repobilityId": "7f4af663d3e7e314", "scanner": "scanner-primary", "fingerprint": "8e6f07774344e283", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dea58cb6451e1b4a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/db/migrations/20250924120000_create_views_view_states.ts:25"}, "properties": {"repobilityId": "49a76415d031b96a", "scanner": "scanner-primary", "fingerprint": "dea58cb6451e1b4a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7c0351c7041172c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/core/view-data-registry.ts:40"}, "properties": {"repobilityId": "a92bc096f9260cdc", "scanner": "scanner-primary", "fingerprint": "7c0351c7041172c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e9c5e259af47f4c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/core/view-config-registry.ts:41"}, "properties": {"repobilityId": "8e354a254373d907", "scanner": "scanner-primary", "fingerprint": "e9c5e259af47f4c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a478283bf281cd6b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/core/plugin-rpc.example.ts:634"}, "properties": {"repobilityId": "95dec241f6adc28f", "scanner": "scanner-primary", "fingerprint": "a478283bf281cd6b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e4503f564d8d665", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core-backend/src/data-adapters/DataSourceManager.ts:119"}, "properties": {"repobilityId": "7f779a2b971d5b77", "scanner": "scanner-primary", "fingerprint": "8e4503f564d8d665", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-55495c93dee0b87b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/openapi/tools/diff.ts:45"}, "properties": {"repobilityId": "b5dd7e7294307cc7", "scanner": "scanner-primary", "fingerprint": "55495c93dee0b87b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e869b66b711dfeeb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/openapi/tools/build.ts:27"}, "properties": {"repobilityId": "a75be1fcce447e85", "scanner": "scanner-primary", "fingerprint": "e869b66b711dfeeb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0c16dd37a3b38541", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/openapi/tools/validate.ts:39"}, "properties": {"repobilityId": "dde2f50212ffe008", "scanner": "scanner-primary", "fingerprint": "0c16dd37a3b38541", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5d46bd02c6b7a662", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 tools/cli/src/commands/create.ts:272"}, "properties": {"repobilityId": "fe51522deaea91f8", "scanner": "scanner-primary", "fingerprint": "5d46bd02c6b7a662", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-1239ed55310a1d35", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/cli/src/commands/create.ts:77"}, "properties": {"repobilityId": "6aed67ea1a152b43", "scanner": "scanner-primary", "fingerprint": "1239ed55310a1d35", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ced3f0b0aa22ebe1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 plugins/plugin-intelligent-restore/src/index.ts:14"}, "properties": {"repobilityId": "fb51c9ec9c91ddb0", "scanner": "scanner-primary", "fingerprint": "ced3f0b0aa22ebe1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ea6578c56d33a337", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 plugins/plugin-intelligent-restore/src/IntelligentRestoreView.vue:189"}, "properties": {"repobilityId": "fdc902c0c16878e2", "scanner": "scanner-primary", "fingerprint": "ea6578c56d33a337", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-84394382d29f511e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 plugins/plugin-audit-logger/src/index.ts:45"}, "properties": {"repobilityId": "088afc87e6d4ffc8", "scanner": "scanner-primary", "fingerprint": "84394382d29f511e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e0faf171e807b356", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 plugins/plugin-telemetry-otel/tests/smoke.test.ts:17"}, "properties": {"repobilityId": "8ea4e0a2551b3fad", "scanner": "scanner-primary", "fingerprint": "e0faf171e807b356", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-773a2ccaf5168813", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 plugins/plugin-telemetry-otel/scripts/local-smoke.js:14"}, "properties": {"repobilityId": "ab47b782c3995479", "scanner": "scanner-primary", "fingerprint": "773a2ccaf5168813", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-21e3330573c26981", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 plugins/hello-world/src/index.js:3"}, "properties": {"repobilityId": "52ee454394712d2d", "scanner": "scanner-primary", "fingerprint": "21e3330573c26981", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ad8de1cd268862af", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 plugins/example-plugin/index.js:5"}, "properties": {"repobilityId": "21a267a5ed949d23", "scanner": "scanner-primary", "fingerprint": "ad8de1cd268862af", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b4b2b6ebab81e7a0", "level": "warning", "message": {"text": "Privileged port 95 in use"}, "properties": {"repobilityId": "860dd1b02ecc695b", "scanner": "scanner-primary", "fingerprint": "b4b2b6ebab81e7a0", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ops/prometheus/phase5-alerts.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c414bb93b5ab67f5", "level": "warning", "message": {"text": "Privileged port 30 in use"}, "properties": {"repobilityId": "54f172e7d16fc662", "scanner": "scanner-primary", "fingerprint": "c414bb93b5ab67f5", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ops/prometheus/phase5-alerts.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1dcbd18dc6ae8621", "level": "warning", "message": {"text": "Privileged port 10 in use"}, "properties": {"repobilityId": "735372d6b5594915", "scanner": "scanner-primary", "fingerprint": "1dcbd18dc6ae8621", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify-plm-bom-tools.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e29bbc220b58696e", "level": "warning", "message": {"text": "Privileged port 15 in use"}, "properties": {"repobilityId": "3340f9a170f285cd", "scanner": "scanner-primary", "fingerprint": "e29bbc220b58696e", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify-plm-bom-tools.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f1b5066932c8cdac", "level": "warning", "message": {"text": "Privileged port 24 in use"}, "properties": {"repobilityId": "a6356ba91a17fcb8", "scanner": "scanner-primary", "fingerprint": "f1b5066932c8cdac", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify-plm-bom-tools.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ee73d391e0da07ce", "level": "warning", "message": {"text": "Privileged port 12 in use"}, "properties": {"repobilityId": "65e7eefa33f2def4", "scanner": "scanner-primary", "fingerprint": "ee73d391e0da07ce", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify-plm-bom-tools.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8ac8952f11db06be", "level": "warning", "message": {"text": "Privileged port 23 in use"}, "properties": {"repobilityId": "a1230e3dfc4becfa", "scanner": "scanner-primary", "fingerprint": "8ac8952f11db06be", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify-plm-bom-tools.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-24ba6dc28e83df1f", "level": "warning", "message": {"text": "Privileged port 9 in use"}, "properties": {"repobilityId": "31590a6ba3409390", "scanner": "scanner-primary", "fingerprint": "24ba6dc28e83df1f", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/phase5-demo-conclusion.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b39afd0a96c0bcca", "level": "warning", "message": {"text": "Privileged port 11 in use"}, "properties": {"repobilityId": "5b3038c67fabb4c8", "scanner": "scanner-primary", "fingerprint": "b39afd0a96c0bcca", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/phase5-demo-conclusion.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5600dd40874a31a9", "level": "warning", "message": {"text": "Privileged port 3 in use"}, "properties": {"repobilityId": "261b7b1c6a18d412", "scanner": "scanner-primary", "fingerprint": "5600dd40874a31a9", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/phase4-preflight-check.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2e35a39f303501c9", "level": "warning", "message": {"text": "Privileged port 35 in use"}, "properties": {"repobilityId": "e997ec9811d79c6d", "scanner": "scanner-primary", "fingerprint": "2e35a39f303501c9", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/phase4-preflight-check.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-59ccfcd7753b4d2b", "level": "warning", "message": {"text": "Privileged port 18 in use"}, "properties": {"repobilityId": "2d7b5e7d9c158e43", "scanner": "scanner-primary", "fingerprint": "59ccfcd7753b4d2b", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/auto-checkpoints-scheduler.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-537ebb66ed38f637", "level": "warning", "message": {"text": "Privileged port 21 in use"}, "properties": {"repobilityId": "d920b7cd1b1a16dc", "scanner": "scanner-primary", "fingerprint": "537ebb66ed38f637", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/auto-checkpoints-scheduler.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-04f7063ff666f260", "level": "warning", "message": {"text": "Privileged port 50 in use"}, "properties": {"repobilityId": "da61f654c07ea7a9", "scanner": "scanner-primary", "fingerprint": "04f7063ff666f260", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/auto-checkpoints-scheduler.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1865bd1d75e67e12", "level": "warning", "message": {"text": "Privileged port 28 in use"}, "properties": {"repobilityId": "5c3f00b3e839840d", "scanner": "scanner-primary", "fingerprint": "1865bd1d75e67e12", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/48h-checkpoint.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8b891a5d8d819691", "level": "warning", "message": {"text": "Privileged port 587 in use"}, "properties": {"repobilityId": "a87a96c3b2e62c08", "scanner": "scanner-primary", "fingerprint": "8b891a5d8d819691", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/multitable-phase3-release-gate-redact.test.mjs"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7345a6be970fc560", "level": "warning", "message": {"text": "Privileged port 16 in use"}, "properties": {"repobilityId": "d31009168c502ace", "scanner": "scanner-primary", "fingerprint": "7345a6be970fc560", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "output/playwright/attendance-rule-templates-snapshot.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-57fcc20af123ffd0", "level": "warning", "message": {"text": "Privileged port 20 in use"}, "properties": {"repobilityId": "a59f3e53d617e0f8", "scanner": "scanner-primary", "fingerprint": "57fcc20af123ffd0", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "output/playwright/attendance-rule-templates-snapshot.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cb87d3b90f678c59", "level": "warning", "message": {"text": "Privileged port 19 in use"}, "properties": {"repobilityId": "a6b5b06deac36eac", "scanner": "scanner-primary", "fingerprint": "cb87d3b90f678c59", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "output/playwright/attendance-rule-templates-snapshot.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-775c7576a4a8a9d7", "level": "warning", "message": {"text": "Privileged port 17 in use"}, "properties": {"repobilityId": "0bf38fb8f89ec589", "scanner": "scanner-primary", "fingerprint": "775c7576a4a8a9d7", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "output/playwright/attendance-rule-templates-snapshot.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d472097f6d43a7a7", "level": "warning", "message": {"text": "Privileged port 55 in use"}, "properties": {"repobilityId": "51a768b3e1831ac0", "scanner": "scanner-primary", "fingerprint": "d472097f6d43a7a7", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "output/playwright/attendance-rule-templates-snapshot.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3b580dc538990db6", "level": "warning", "message": {"text": "Privileged port 42 in use"}, "properties": {"repobilityId": "16d9608735f9e01a", "scanner": "scanner-primary", "fingerprint": "3b580dc538990db6", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "output/playwright/attendance-rule-templates-snapshot.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e9c20412b8b4adb8", "level": "warning", "message": {"text": "Privileged port 38 in use"}, "properties": {"repobilityId": "b7214bb254c5881d", "scanner": "scanner-primary", "fingerprint": "e9c20412b8b4adb8", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "output/playwright/attendance-rule-templates-snapshot.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7475801e6d1c618b", "level": "warning", "message": {"text": "Privileged port 58 in use"}, "properties": {"repobilityId": "6d9ae83ac6aad676", "scanner": "scanner-primary", "fingerprint": "7475801e6d1c618b", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "output/playwright/attendance-rule-templates-snapshot.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dc057db0e8636fea", "level": "warning", "message": {"text": "Privileged port 57 in use"}, "properties": {"repobilityId": "7f473bea32892301", "scanner": "scanner-primary", "fingerprint": "dc057db0e8636fea", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "output/playwright/attendance-rule-templates-snapshot.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-16a84e4c1329f968", "level": "warning", "message": {"text": "Privileged port 43 in use"}, "properties": {"repobilityId": "af1bc8881542418e", "scanner": "scanner-primary", "fingerprint": "16a84e4c1329f968", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "output/playwright/attendance-rule-templates-snapshot.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7b9d8ca60c9d56ba", "level": "warning", "message": {"text": "Privileged port 54 in use"}, "properties": {"repobilityId": "cfa860c24fdc3eef", "scanner": "scanner-primary", "fingerprint": "7b9d8ca60c9d56ba", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "output/playwright/attendance-rule-templates-snapshot.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-db3112c01782350f", "level": "warning", "message": {"text": "Privileged port 48 in use"}, "properties": {"repobilityId": "6a483602fa277896", "scanner": "scanner-primary", "fingerprint": "db3112c01782350f", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "output/playwright/attendance-rule-templates-snapshot.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-17561be739315237", "level": "warning", "message": {"text": "Privileged port 51 in use"}, "properties": {"repobilityId": "22e13070198289ad", "scanner": "scanner-primary", "fingerprint": "17561be739315237", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "output/playwright/attendance-rule-templates-snapshot.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f3e338db9d2d1af5", "level": "warning", "message": {"text": "Privileged port 4 in use"}, "properties": {"repobilityId": "1594bfeff919296e", "scanner": "scanner-primary", "fingerprint": "f3e338db9d2d1af5", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-threshold-update.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9523b2c371cd4d65", "level": "warning", "message": {"text": "Privileged port 6 in use"}, "properties": {"repobilityId": "888a3c205ea7334c", "scanner": "scanner-primary", "fingerprint": "9523b2c371cd4d65", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-import-perf-highscale.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-572547e29ada117a", "level": "error", "message": {"text": "Runtime dotenv file present in repo: packages/core-backend/.env"}, "properties": {"repobilityId": "aeff6500b7cc0b1a", "scanner": "scanner-primary", "fingerprint": "572547e29ada117a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env", "env_file_with_secret"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core-backend/.env"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3585d0c692834018", "level": "error", "message": {"text": "Possible secret in apps/web/src/router/types.ts"}, "properties": {"repobilityId": "215c9e7f951243bd", "scanner": "scanner-primary", "fingerprint": "3585d0c692834018", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/router/types.ts"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-3585d0c692834018", "level": "error", "message": {"text": "Possible secret in apps/web/src/router/types.ts"}, "properties": {"repobilityId": "215c9e7f951243bd", "scanner": "scanner-primary", "fingerprint": "3585d0c692834018", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/router/types.ts"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-3585d0c692834018", "level": "error", "message": {"text": "Possible secret in apps/web/src/router/types.ts"}, "properties": {"repobilityId": "215c9e7f951243bd", "scanner": "scanner-primary", "fingerprint": "3585d0c692834018", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/router/types.ts"}, "region": {"startLine": 420}}}]}, {"ruleId": "scanner-3585d0c692834018", "level": "error", "message": {"text": "Possible secret in apps/web/src/router/types.ts"}, "properties": {"repobilityId": "215c9e7f951243bd", "scanner": "scanner-primary", "fingerprint": "3585d0c692834018", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/router/types.ts"}, "region": {"startLine": 421}}}]}, {"ruleId": "scanner-be5e27f672001208", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in apps/web/src/composables/useAuth.ts:179"}, "properties": {"repobilityId": "a726b5e11357f7ca", "scanner": "scanner-primary", "fingerprint": "be5e27f672001208", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/composables/useAuth.ts"}, "region": {"startLine": 179}}}]}, {"ruleId": "scanner-14033193042837ff", "level": "warning", "message": {"text": "Insecure pattern 'vue_v_html' in apps/web/src/multitable/components/MetaRecordDrawer.vue:262"}, "properties": {"repobilityId": "1c46a273e62b361f", "scanner": "scanner-primary", "fingerprint": "14033193042837ff", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "vue_v_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/multitable/components/MetaRecordDrawer.vue"}, "region": {"startLine": 262}}}]}, {"ruleId": "scanner-efff6e7bb02c9b9c", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in apps/web/src/multitable/components/cells/MetaRichLongTextEditor.vue:12"}, "properties": {"repobilityId": "b525b201f8a5dad7", "scanner": "scanner-primary", "fingerprint": "efff6e7bb02c9b9c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/multitable/components/cells/MetaRichLongTextEditor.vue"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-f61060e1f478d0d4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in apps/web/src/multitable/components/cells/MetaRichLongTextEditor.vue:239"}, "properties": {"repobilityId": "1ea7d50c9e31b98a", "scanner": "scanner-primary", "fingerprint": "f61060e1f478d0d4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/multitable/components/cells/MetaRichLongTextEditor.vue"}, "region": {"startLine": 239}}}]}, {"ruleId": "scanner-d1fa73a01e9e3ba2", "level": "warning", "message": {"text": "Insecure pattern 'vue_v_html' in apps/web/src/multitable/components/cells/MetaRichLongTextRender.vue:14"}, "properties": {"repobilityId": "9f3c8d7f46e0b700", "scanner": "scanner-primary", "fingerprint": "d1fa73a01e9e3ba2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "vue_v_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/multitable/components/cells/MetaRichLongTextRender.vue"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-5fbb30222eb67583", "level": "warning", "message": {"text": "Insecure pattern 'vue_v_html' in apps/web/src/multitable/components/cells/MetaCellRenderer.vue:38"}, "properties": {"repobilityId": "d9554a52e9a9ec65", "scanner": "scanner-primary", "fingerprint": "5fbb30222eb67583", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "vue_v_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/multitable/components/cells/MetaCellRenderer.vue"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-98896d5c74aa1f09", "level": "error", "message": {"text": "Possible secret in apps/web/src/views/LoginView.vue"}, "properties": {"repobilityId": "36ee98883d9f397f", "scanner": "scanner-primary", "fingerprint": "98896d5c74aa1f09", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/src/views/LoginView.vue"}, "region": {"startLine": 154}}}]}, {"ruleId": "scanner-51ebf990bac2dc8f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/verify-univer-ui-smoke.mjs:3"}, "properties": {"repobilityId": "5d71aeea4733e71b", "scanner": "scanner-primary", "fingerprint": "51ebf990bac2dc8f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify-univer-ui-smoke.mjs"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-f17a4d3fbc6cca91", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/verify-univer-ui-smoke.mjs:185"}, "properties": {"repobilityId": "00669973db49f286", "scanner": "scanner-primary", "fingerprint": "f17a4d3fbc6cca91", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify-univer-ui-smoke.mjs"}, "region": {"startLine": 185}}}]}, {"ruleId": "scanner-86e167c942f7fa69", "level": "error", "message": {"text": "Possible secret in scripts/verify-multitable-live-smoke.mjs"}, "properties": {"repobilityId": "daa4695a7d4e87ff", "scanner": "scanner-primary", "fingerprint": "86e167c942f7fa69", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify-multitable-live-smoke.mjs"}, "region": {"startLine": 1014}}}]}, {"ruleId": "scanner-2ed31bb4603b01ec", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/verify-multitable-live-smoke.mjs:4263"}, "properties": {"repobilityId": "9c4be48aaeaba3e5", "scanner": "scanner-primary", "fingerprint": "2ed31bb4603b01ec", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify-multitable-live-smoke.mjs"}, "region": {"startLine": 4263}}}]}, {"ruleId": "scanner-790fb40031a68b26", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/verify-attendance-full-flow.mjs:181"}, "properties": {"repobilityId": "7d6d141dd5cae9e6", "scanner": "scanner-primary", "fingerprint": "790fb40031a68b26", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify-attendance-full-flow.mjs"}, "region": {"startLine": 181}}}]}, {"ruleId": "scanner-ce5ce1586a8c41b5", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/verify-attendance-ui-regression.mjs:65"}, "properties": {"repobilityId": "a93751912bb6df17", "scanner": "scanner-primary", "fingerprint": "ce5ce1586a8c41b5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify-attendance-ui-regression.mjs"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-97308b3f13836129", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/verify-attendance-import-ui.mjs:73"}, "properties": {"repobilityId": "0711a0e63ed0fa4c", "scanner": "scanner-primary", "fingerprint": "97308b3f13836129", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify-attendance-import-ui.mjs"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-dfe1232340c9d8d7", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/verify-attendance-locale-zh-smoke.mjs:568"}, "properties": {"repobilityId": "10d7d0e94cf58a05", "scanner": "scanner-primary", "fingerprint": "dfe1232340c9d8d7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify-attendance-locale-zh-smoke.mjs"}, "region": {"startLine": 568}}}]}, {"ruleId": "scanner-da2d713f3d967f42", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/verify-attendance-ui.mjs:375"}, "properties": {"repobilityId": "dd7baea6cc3297f1", "scanner": "scanner-primary", "fingerprint": "da2d713f3d967f42", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify-attendance-ui.mjs"}, "region": {"startLine": 375}}}]}, {"ruleId": "scanner-3d5c9cbcb4955c50", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/profile-multitable-grid.mjs:281"}, "properties": {"repobilityId": "263c69fb252575f0", "scanner": "scanner-primary", "fingerprint": "3d5c9cbcb4955c50", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/profile-multitable-grid.mjs"}, "region": {"startLine": 281}}}]}, {"ruleId": "scanner-c4321fef7f064a2d", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/verify-attendance-production-flow.mjs:204"}, "properties": {"repobilityId": "560f114201fcb08a", "scanner": "scanner-primary", "fingerprint": "c4321fef7f064a2d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify-attendance-production-flow.mjs"}, "region": {"startLine": 204}}}]}, {"ruleId": "scanner-f191f1ceb9f8adca", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/verify-plm-ui-regression.sh:593"}, "properties": {"repobilityId": "a59676d0572cf504", "scanner": "scanner-primary", "fingerprint": "f191f1ceb9f8adca", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify-plm-ui-regression.sh"}, "region": {"startLine": 593}}}]}, {"ruleId": "scanner-8938f6cac259bcec", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/attendance-ui-verify.mjs:20"}, "properties": {"repobilityId": "b266a3530079ba29", "scanner": "scanner-primary", "fingerprint": "8938f6cac259bcec", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/attendance-ui-verify.mjs"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-55cf98297c28d76b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-screenshot-archive.test.mjs:2"}, "properties": {"repobilityId": "e71dc54aaefefec0", "scanner": "scanner-primary", "fingerprint": "55cf98297c28d76b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-screenshot-archive.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-34e610af11f4f35e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-run-perf-highscale.test.mjs:5"}, "properties": {"repobilityId": "c90928906a2a803d", "scanner": "scanner-primary", "fingerprint": "34e610af11f4f35e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/attendance-run-perf-highscale.test.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-9e305b80711da902", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-regression-gate.test.mjs:2"}, "properties": {"repobilityId": "e743134878305baf", "scanner": "scanner-primary", "fingerprint": "9e305b80711da902", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-p4-regression-gate.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-bfca3d7cf925cc27", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-public-form-mobile-signoff.test.mjs:2"}, "properties": {"repobilityId": "f92f0865aaf0c61d", "scanner": "scanner-primary", "fingerprint": "bfca3d7cf925cc27", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-public-form-mobile-signoff.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-67bb2bf58a8c3b08", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-fast-parallel-regression.test.mjs:5"}, "properties": {"repobilityId": "6279063b9f72aefc", "scanner": "scanner-primary", "fingerprint": "67bb2bf58a8c3b08", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/attendance-fast-parallel-regression.test.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-4a5fd9a7f9d67e2e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-evidence-record.mjs:4"}, "properties": {"repobilityId": "64025dd7bb75f161", "scanner": "scanner-primary", "fingerprint": "4a5fd9a7f9d67e2e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-p4-evidence-record.mjs"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-13836cd962958fd8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-work-notification-agent-id-apply.mjs:4"}, "properties": {"repobilityId": "3e6b74edbfb36a54", "scanner": "scanner-primary", "fingerprint": "13836cd962958fd8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-work-notification-agent-id-apply.mjs"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-9322bc38d7e32026", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-gate-contract-check.test.mjs:5"}, "properties": {"repobilityId": "4df0eed111c3e25a", "scanner": "scanner-primary", "fingerprint": "9322bc38d7e32026", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/integration-k3wise-gate-contract-check.test.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-545aad14f5ca3d45", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-email-transport-readiness.test.mjs:6"}, "properties": {"repobilityId": "76fb511c9f115f9b", "scanner": "scanner-primary", "fingerprint": "545aad14f5ca3d45", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/multitable-email-transport-readiness.test.mjs"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-1aa34e89ffe150fd", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-classify-perf-runtime-failure.test.mjs:5"}, "properties": {"repobilityId": "82e7b5f2f971feb5", "scanner": "scanner-primary", "fingerprint": "1aa34e89ffe150fd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/attendance-classify-perf-runtime-failure.test.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-7118aa4bab46c2b5", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-env-bootstrap.test.mjs:2"}, "properties": {"repobilityId": "00eba420d8e2b01c", "scanner": "scanner-primary", "fingerprint": "7118aa4bab46c2b5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-p4-env-bootstrap.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-392c00e39c301e50", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-auth-scripts.test.mjs:6"}, "properties": {"repobilityId": "77b3ee9fadec142f", "scanner": "scanner-primary", "fingerprint": "392c00e39c301e50", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/attendance-auth-scripts.test.mjs"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-88adef75b23d0204", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-ready-staging.test.mjs:7"}, "properties": {"repobilityId": "859aa9a2d62f3d4c", "scanner": "scanner-primary", "fingerprint": "88adef75b23d0204", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/multitable-pilot-ready-staging.test.mjs"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-17bb452b110482b2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-work-notification-release-gate.test.mjs:2"}, "properties": {"repobilityId": "f835ffbb7d2f6e84", "scanner": "scanner-primary", "fingerprint": "17bb452b110482b2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-work-notification-release-gate.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-99a644d64777c1a5", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-automation-soak.test.mjs:6"}, "properties": {"repobilityId": "03dfe71f8ec51ff8", "scanner": "scanner-primary", "fingerprint": "99a644d64777c1a5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/multitable-automation-soak.test.mjs"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-cd8a7be11d10d11d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-run-workflow-dispatch.test.mjs:6"}, "properties": {"repobilityId": "4a0b02fb9449c92e", "scanner": "scanner-primary", "fingerprint": "cd8a7be11d10d11d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/attendance-run-workflow-dispatch.test.mjs"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-443c312ec1fecdb7", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-onprem-publish-web-dist.test.mjs:5"}, "properties": {"repobilityId": "67f8a288ed13a488", "scanner": "scanner-primary", "fingerprint": "443c312ec1fecdb7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/attendance-onprem-publish-web-dist.test.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-966d83d8602ec9c0", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/ecosystem-env-loader.test.mjs:14"}, "properties": {"repobilityId": "9975a34395e1b163", "scanner": "scanner-primary", "fingerprint": "966d83d8602ec9c0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/ecosystem-env-loader.test.mjs"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-93ab2cf8e068b5ae", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-postdeploy-smoke.test.mjs:2"}, "properties": {"repobilityId": "29f444ebb4cbe04d", "scanner": "scanner-primary", "fingerprint": "93ab2cf8e068b5ae", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/integration-k3wise-postdeploy-smoke.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-85a62551f47dc11e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-onprem-preflight.test.mjs:2"}, "properties": {"repobilityId": "821de38b7c646ca5", "scanner": "scanner-primary", "fingerprint": "85a62551f47dc11e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/integration-k3wise-onprem-preflight.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-7d0a6a31e0f60784", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/check-pr-mainline-readiness.mjs:2"}, "properties": {"repobilityId": "2c92cf132c24572b", "scanner": "scanner-primary", "fingerprint": "7d0a6a31e0f60784", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/check-pr-mainline-readiness.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-386da454913b4bcd", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/resolve-attendance-smoke-token.test.mjs:2"}, "properties": {"repobilityId": "c64ac5ce16d8e83b", "scanner": "scanner-primary", "fingerprint": "386da454913b4bcd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/resolve-attendance-smoke-token.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-3275a396d600e07a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/capture-yjs-rollout-report.mjs:5"}, "properties": {"repobilityId": "0833056cf15f1e4f", "scanner": "scanner-primary", "fingerprint": "3275a396d600e07a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/capture-yjs-rollout-report.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-f1a08b6d57958420", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-regression-gate.mjs:4"}, "properties": {"repobilityId": "d1be8f0af6fac444", "scanner": "scanner-primary", "fingerprint": "f1a08b6d57958420", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-p4-regression-gate.mjs"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-931446f44892cfad", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-dangling-link-sweep.mjs:26"}, "properties": {"repobilityId": "0ac454437abc7896", "scanner": "scanner-primary", "fingerprint": "931446f44892cfad", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/multitable-dangling-link-sweep.mjs"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-058f74d29b80bd11", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-alertmanager-closeout.mjs:2"}, "properties": {"repobilityId": "254d907dfb4bc785", "scanner": "scanner-primary", "fingerprint": "058f74d29b80bd11", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-alertmanager-closeout.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-5f2ca29e5e1cc37e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-reconcile-csv-cap.test.mjs:2"}, "properties": {"repobilityId": "29dac6817082cd15", "scanner": "scanner-primary", "fingerprint": "5f2ca29e5e1cc37e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/attendance-reconcile-csv-cap.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-ba95ec2a09b8587e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-postdeploy-env-check.test.mjs:2"}, "properties": {"repobilityId": "da86de424b2d3d98", "scanner": "scanner-primary", "fingerprint": "ba95ec2a09b8587e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/integration-k3wise-postdeploy-env-check.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-e78f23bdebef522d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-remote-smoke.test.mjs:2"}, "properties": {"repobilityId": "ba87220fd9b886a9", "scanner": "scanner-primary", "fingerprint": "e78f23bdebef522d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-p4-remote-smoke.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-9674f6332d15ba2e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-staging.test.mjs:7"}, "properties": {"repobilityId": "174af9e4a9408e49", "scanner": "scanner-primary", "fingerprint": "9674f6332d15ba2e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/multitable-pilot-staging.test.mjs"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-3abf87af1de5f883", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-phase3-release-gate.mjs:28"}, "properties": {"repobilityId": "bbab02e632d9681a", "scanner": "scanner-primary", "fingerprint": "3abf87af1de5f883", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/multitable-phase3-release-gate.mjs"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-fe6cc6567dd74a80", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-evidence-record.test.mjs:2"}, "properties": {"repobilityId": "83f8a0e7c7fdd350", "scanner": "scanner-primary", "fingerprint": "fe6cc6567dd74a80", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-p4-evidence-record.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-e3dc63726865f9b8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-smoke-status.test.mjs:2"}, "properties": {"repobilityId": "04a36076b113f755", "scanner": "scanner-primary", "fingerprint": "e3dc63726865f9b8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-p4-smoke-status.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-c973f5a7f3152b95", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-ai-readiness-gate.test.mjs:6"}, "properties": {"repobilityId": "494bf70fa7c09317", "scanner": "scanner-primary", "fingerprint": "c973f5a7f3152b95", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/multitable-ai-readiness-gate.test.mjs"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-b059649cc4f6520c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-onprem-release-gate.test.mjs:7"}, "properties": {"repobilityId": "03ccbbeb1e1156a1", "scanner": "scanner-primary", "fingerprint": "b059649cc4f6520c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/multitable-onprem-release-gate.test.mjs"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-8f1273ed00f18294", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/staging-migration-alignment-report.test.mjs:5"}, "properties": {"repobilityId": "24b8c9cf64913cb8", "scanner": "scanner-primary", "fingerprint": "8f1273ed00f18294", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/staging-migration-alignment-report.test.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-f655500529104650", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-onprem-preflight.mjs:25"}, "properties": {"repobilityId": "f42ee42e6994830e", "scanner": "scanner-primary", "fingerprint": "f655500529104650", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/integration-k3wise-onprem-preflight.mjs"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-1f8a9ebf9b78d4fd", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-email-real-send-smoke.test.mjs:6"}, "properties": {"repobilityId": "309ae3aa10881594", "scanner": "scanner-primary", "fingerprint": "1f8a9ebf9b78d4fd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/multitable-email-real-send-smoke.test.mjs"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-7c6e7a5084e8c995", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-work-notification-agent-id-apply.test.mjs:2"}, "properties": {"repobilityId": "6b193eb3c5ef91a6", "scanner": "scanner-primary", "fingerprint": "7c6e7a5084e8c995", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-work-notification-agent-id-apply.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-590e015cbd4cc4ab", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-release-bound.test.mjs:7"}, "properties": {"repobilityId": "0b313f557a8790cb", "scanner": "scanner-primary", "fingerprint": "590e015cbd4cc4ab", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/multitable-pilot-release-bound.test.mjs"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-5ed188dc9331e05b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-offline-handoff.test.mjs:2"}, "properties": {"repobilityId": "c5b2f12a4fa393c6", "scanner": "scanner-primary", "fingerprint": "5ed188dc9331e05b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-p4-offline-handoff.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-6c32d83f767b0b40", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-release-readiness.test.mjs:2"}, "properties": {"repobilityId": "28e2500339684ccd", "scanner": "scanner-primary", "fingerprint": "6c32d83f767b0b40", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-p4-release-readiness.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-e2d368f423b4e491", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-release-gate.test.mjs:7"}, "properties": {"repobilityId": "ff2561adc7abe07a", "scanner": "scanner-primary", "fingerprint": "e2d368f423b4e491", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/multitable-pilot-release-gate.test.mjs"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-9f0afe18d848e149", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-local.test.mjs:7"}, "properties": {"repobilityId": "b88c72dae7cc6bb7", "scanner": "scanner-primary", "fingerprint": "9f0afe18d848e149", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/multitable-pilot-local.test.mjs"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-8807f2989b36405f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/validate-dingtalk-staging-evidence-packet.test.mjs:2"}, "properties": {"repobilityId": "5460ad7fff6c9fbb", "scanner": "scanner-primary", "fingerprint": "8807f2989b36405f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/validate-dingtalk-staging-evidence-packet.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-d5338453b19284fb", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-final-handoff.test.mjs:2"}, "properties": {"repobilityId": "449d5927ef9b6faf", "scanner": "scanner-primary", "fingerprint": "d5338453b19284fb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-p4-final-handoff.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-b03692772336387d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-readiness.test.mjs:7"}, "properties": {"repobilityId": "f74c423826afc3ef", "scanner": "scanner-primary", "fingerprint": "b03692772336387d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/multitable-pilot-readiness.test.mjs"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-0f8044bec35553c7", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-final-docs.test.mjs:2"}, "properties": {"repobilityId": "37063445024c62a3", "scanner": "scanner-primary", "fingerprint": "0f8044bec35553c7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-p4-final-docs.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-5e83f230a5d2f648", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/prefill-yjs-rollout-signoff.test.mjs:6"}, "properties": {"repobilityId": "76384157f8ea113b", "scanner": "scanner-primary", "fingerprint": "5e83f230a5d2f648", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/prefill-yjs-rollout-signoff.test.mjs"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-08fcb2148cc763f5", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-release-bound-wrapper.test.mjs:7"}, "properties": {"repobilityId": "dc4c791fe51d7d81", "scanner": "scanner-primary", "fingerprint": "08fcb2148cc763f5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/multitable-pilot-release-bound-wrapper.test.mjs"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-73005c1907378f1f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/resolve-metrics-scrape-token.test.mjs:2"}, "properties": {"repobilityId": "bbacb558e9424029", "scanner": "scanner-primary", "fingerprint": "73005c1907378f1f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/resolve-metrics-scrape-token.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-7efd047b4605a332", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-final-closeout.mjs:4"}, "properties": {"repobilityId": "5e46ea4f58a72cec", "scanner": "scanner-primary", "fingerprint": "7efd047b4605a332", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-p4-final-closeout.mjs"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-563e2726314b1cec", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/advance-yjs-rollout-stack.mjs:3"}, "properties": {"repobilityId": "83627d00cd989c05", "scanner": "scanner-primary", "fingerprint": "563e2726314b1cec", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/advance-yjs-rollout-stack.mjs"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-30738466b8df4efe", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/staging-migration-schema-probe-summary.test.mjs:5"}, "properties": {"repobilityId": "1b14f35ab825e29b", "scanner": "scanner-primary", "fingerprint": "30738466b8df4efe", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/staging-migration-schema-probe-summary.test.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-b66f1d656659aa2c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/integration-erp-plm-deploy-readiness.mjs:2"}, "properties": {"repobilityId": "32585988fdb9036e", "scanner": "scanner-primary", "fingerprint": "b66f1d656659aa2c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/integration-erp-plm-deploy-readiness.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-b617bcd8241376cd", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in scripts/ops/attendance-check-storage.sh:278"}, "properties": {"repobilityId": "6b580dfb80298307", "scanner": "scanner-primary", "fingerprint": "b617bcd8241376cd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/attendance-check-storage.sh"}, "region": {"startLine": 278}}}]}, {"ruleId": "scanner-12bdac2c28a546f9", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/capture-yjs-rollout-report.test.mjs:6"}, "properties": {"repobilityId": "364ed6dfbb31612a", "scanner": "scanner-primary", "fingerprint": "12bdac2c28a546f9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/capture-yjs-rollout-report.test.mjs"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-c07e4c17d55bce7d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-work-notification-admin-agent-id.test.mjs:5"}, "properties": {"repobilityId": "6cc72b1dac7967b1", "scanner": "scanner-primary", "fingerprint": "c07e4c17d55bce7d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-work-notification-admin-agent-id.test.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-4aaf905a548b1b28", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-final-handoff.mjs:4"}, "properties": {"repobilityId": "5750b4e00c1ad8b2", "scanner": "scanner-primary", "fingerprint": "4aaf905a548b1b28", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-p4-final-handoff.mjs"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-5f744fc2b0688e95", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-release-bound-wrappers.test.mjs:7"}, "properties": {"repobilityId": "b5db1c5b76bc869f", "scanner": "scanner-primary", "fingerprint": "5f744fc2b0688e95", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/multitable-pilot-release-bound-wrappers.test.mjs"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-25975f08cb53ec23", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-alertmanager-closeout.test.mjs:2"}, "properties": {"repobilityId": "b55af8d551cc8e38", "scanner": "scanner-primary", "fingerprint": "25975f08cb53ec23", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-alertmanager-closeout.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-bddc265bfadad641", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/github-actions-runtime-readiness.mjs:2"}, "properties": {"repobilityId": "b041f7a39d395a32", "scanner": "scanner-primary", "fingerprint": "bddc265bfadad641", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/github-actions-runtime-readiness.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-cd53291c4492c455", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-smoke-preflight.test.mjs:2"}, "properties": {"repobilityId": "040284868d4e4380", "scanner": "scanner-primary", "fingerprint": "cd53291c4492c455", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-p4-smoke-preflight.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-4a5b7679f463f44a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-c5-real-dingtalk-preflight.test.mjs:2"}, "properties": {"repobilityId": "79f206dfa7016eb5", "scanner": "scanner-primary", "fingerprint": "4a5b7679f463f44a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/attendance-c5-real-dingtalk-preflight.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-a0a363d7fdc8a1f6", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-smoke-session.test.mjs:2"}, "properties": {"repobilityId": "9a917ba717cfc629", "scanner": "scanner-primary", "fingerprint": "a0a363d7fdc8a1f6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-p4-smoke-session.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-4d8597002ec4d10a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-release-readiness.mjs:4"}, "properties": {"repobilityId": "7d7e01363988a1f5", "scanner": "scanner-primary", "fingerprint": "4d8597002ec4d10a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-p4-release-readiness.mjs"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-35b9070cb517c088", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/check-yjs-retention-health.mjs:3"}, "properties": {"repobilityId": "47c9a32011e7835f", "scanner": "scanner-primary", "fingerprint": "35b9070cb517c088", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/check-yjs-retention-health.mjs"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-7a39bdce3b211d71", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-ready-local.test.mjs:7"}, "properties": {"repobilityId": "b19445ee66637782", "scanner": "scanner-primary", "fingerprint": "7a39bdce3b211d71", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/multitable-pilot-ready-local.test.mjs"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-b56d79870aa57f17", "level": "error", "message": {"text": "Possible secret in scripts/ops/multitable-onprem-preflight.sh"}, "properties": {"repobilityId": "094559892eb2cac3", "scanner": "scanner-primary", "fingerprint": "b56d79870aa57f17", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/multitable-onprem-preflight.sh"}, "region": {"startLine": 552}}}]}, {"ruleId": "scanner-21b51d19d0fd91b2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-daily-gate-report.mjs:16"}, "properties": {"repobilityId": "1ae705074170e60d", "scanner": "scanner-primary", "fingerprint": "21b51d19d0fd91b2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/attendance-daily-gate-report.mjs"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-aa5015e8f8ea31ff", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/integration-issue1542-seed-workbench-systems.test.mjs:6"}, "properties": {"repobilityId": "854c28890440a9c4", "scanner": "scanner-primary", "fingerprint": "aa5015e8f8ea31ff", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/integration-issue1542-seed-workbench-systems.test.mjs"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-e8cd0dcd08ecfa95", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-final-closeout.test.mjs:2"}, "properties": {"repobilityId": "69b60cf8a47fafa8", "scanner": "scanner-primary", "fingerprint": "e8cd0dcd08ecfa95", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-p4-final-closeout.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-05dd5daf2f3a8779", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-fast-parallel-summary-report.test.mjs:5"}, "properties": {"repobilityId": "ffd263bbf97ea72c", "scanner": "scanner-primary", "fingerprint": "05dd5daf2f3a8779", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/attendance-fast-parallel-summary-report.test.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-c3b79a0385f07b8a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-work-notification-release-gate.mjs:4"}, "properties": {"repobilityId": "b51c929cd5d99b3d", "scanner": "scanner-primary", "fingerprint": "c3b79a0385f07b8a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-work-notification-release-gate.mjs"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-c1a707915a13e18d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-classify-perf-capacity-mismatch.test.mjs:5"}, "properties": {"repobilityId": "72af22f74b23c907", "scanner": "scanner-primary", "fingerprint": "c1a707915a13e18d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/attendance-classify-perf-capacity-mismatch.test.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-6aa0275cf1381a5f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/set-dingtalk-alertmanager-webhook-secret.mjs:2"}, "properties": {"repobilityId": "f70bb7aa978ee9c3", "scanner": "scanner-primary", "fingerprint": "6aa0275cf1381a5f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/set-dingtalk-alertmanager-webhook-secret.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-20c896bb9c05ec37", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/resolve-k3wise-smoke-token.test.mjs:2"}, "properties": {"repobilityId": "a71bf1f7496a5b03", "scanner": "scanner-primary", "fingerprint": "20c896bb9c05ec37", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/resolve-k3wise-smoke-token.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-ccb8bb6d03e7ae11", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/github-dingtalk-oauth-stability-summary.test.mjs:2"}, "properties": {"repobilityId": "08bdfbe07ba19cd8", "scanner": "scanner-primary", "fingerprint": "ccb8bb6d03e7ae11", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/github-dingtalk-oauth-stability-summary.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-84bd893fed6d660c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/staging-migration-alignment-report.mjs:2"}, "properties": {"repobilityId": "abf2aa69d83b20bb", "scanner": "scanner-primary", "fingerprint": "84bd893fed6d660c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/staging-migration-alignment-report.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-8a3804f0a54af888", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/export-dingtalk-staging-evidence-packet.test.mjs:2"}, "properties": {"repobilityId": "b21842df7b6409b6", "scanner": "scanner-primary", "fingerprint": "8a3804f0a54af888", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/export-dingtalk-staging-evidence-packet.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-fcfbcb7901413421", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-final-input-status.test.mjs:2"}, "properties": {"repobilityId": "3417715eac4520f7", "scanner": "scanner-primary", "fingerprint": "fcfbcb7901413421", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-p4-final-input-status.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-4ce9f37e98d6c90f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/set-dingtalk-alertmanager-webhook-secret.test.mjs:2"}, "properties": {"repobilityId": "e8b5c993f472e0f9", "scanner": "scanner-primary", "fingerprint": "4ce9f37e98d6c90f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/set-dingtalk-alertmanager-webhook-secret.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-388985fa3fe6a98a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-postdeploy-summary.test.mjs:2"}, "properties": {"repobilityId": "98da094b5b4ba1a6", "scanner": "scanner-primary", "fingerprint": "388985fa3fe6a98a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/integration-k3wise-postdeploy-summary.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-3965d9e08001ec67", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/compile-dingtalk-p4-smoke-evidence.test.mjs:2"}, "properties": {"repobilityId": "ea4a00e3178abb4d", "scanner": "scanner-primary", "fingerprint": "3965d9e08001ec67", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/compile-dingtalk-p4-smoke-evidence.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-00931de68568c843", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-pilot-handoff.test.mjs:7"}, "properties": {"repobilityId": "67c6dfe81944dd8c", "scanner": "scanner-primary", "fingerprint": "00931de68568c843", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/multitable-pilot-handoff.test.mjs"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-ae2f2461afceedbb", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-onprem-package-verify-migrations.test.mjs:2"}, "properties": {"repobilityId": "d22c75979f110286", "scanner": "scanner-primary", "fingerprint": "ae2f2461afceedbb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/attendance-onprem-package-verify-migrations.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-0a95f20c2e908dd1", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/integration-k3wise-signoff-gate.test.mjs:2"}, "properties": {"repobilityId": "2fe63e739829dbfc", "scanner": "scanner-primary", "fingerprint": "0a95f20c2e908dd1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/integration-k3wise-signoff-gate.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-ee7bf7dd24510121", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-p4-smoke-session.mjs:4"}, "properties": {"repobilityId": "6973754c8e5c636d", "scanner": "scanner-primary", "fingerprint": "ee7bf7dd24510121", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-p4-smoke-session.mjs"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-373f1118a441bcb2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/attendance-check-metrics.test.mjs:5"}, "properties": {"repobilityId": "83744dec44430e4a", "scanner": "scanner-primary", "fingerprint": "373f1118a441bcb2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/attendance-check-metrics.test.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-426b9319eda8d092", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/dingtalk-work-notification-env-status.test.mjs:2"}, "properties": {"repobilityId": "fae92ed42eedbd95", "scanner": "scanner-primary", "fingerprint": "426b9319eda8d092", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/dingtalk-work-notification-env-status.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-0c7f7a3abe57742d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/multitable-phase3-release-gate.test.mjs:6"}, "properties": {"repobilityId": "9d463b9f443e8081", "scanner": "scanner-primary", "fingerprint": "0c7f7a3abe57742d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/multitable-phase3-release-gate.test.mjs"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-b2331beeaf61a120", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/phase5-cache-hit-rate-contract.test.mjs:2"}, "properties": {"repobilityId": "fa7759a5f6fad1ce", "scanner": "scanner-primary", "fingerprint": "b2331beeaf61a120", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/phase5-cache-hit-rate-contract.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-b6df861a18dc7121", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/github-actions-runtime-readiness.test.mjs:2"}, "properties": {"repobilityId": "dc23acb920ec9a17", "scanner": "scanner-primary", "fingerprint": "b6df861a18dc7121", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/github-actions-runtime-readiness.test.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-b7ab6c7a5f412ffa", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/check-pr-stack-readiness.mjs:2"}, "properties": {"repobilityId": "0e59203aeeefd30a", "scanner": "scanner-primary", "fingerprint": "b7ab6c7a5f412ffa", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/check-pr-stack-readiness.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-7b26eecc42ebeeb1", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ops/run-yjs-rollout-gate.mjs:5"}, "properties": {"repobilityId": "f53a97437df077d5", "scanner": "scanner-primary", "fingerprint": "7b26eecc42ebeeb1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ops/run-yjs-rollout-gate.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-ac0717e9d5ff26f8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in packages/core-backend/test-error-banner.html:27"}, "properties": {"repobilityId": "057b5f39ed96fe3a", "scanner": "scanner-primary", "fingerprint": "ac0717e9d5ff26f8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core-backend/test-error-banner.html"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-c7bda3adff1d1288", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in packages/core-backend/test-frontend.html:22"}, "properties": {"repobilityId": "1254ce1224dff3fb", "scanner": "scanner-primary", "fingerprint": "c7bda3adff1d1288", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core-backend/test-frontend.html"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-b871e693abc6c64c", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in packages/core-backend/src/server.js:91"}, "properties": {"repobilityId": "0cd62e6e2ff4f089", "scanner": "scanner-primary", "fingerprint": "b871e693abc6c64c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core-backend/src/server.js"}, "region": {"startLine": 91}}}]}, {"ruleId": "scanner-6da7612aac84ff03", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in packages/core-backend/src/integration/rate-limiting/redis-token-bucket-store.ts:160"}, "properties": {"repobilityId": "70a189a088fdfd8e", "scanner": "scanner-primary", "fingerprint": "6da7612aac84ff03", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core-backend/src/integration/rate-limiting/redis-token-bucket-store.ts"}, "region": {"startLine": 160}}}]}, {"ruleId": "scanner-52df59bae42f6373", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in packages/core-backend/src/multitable/redis-leader-lock.ts:38"}, "properties": {"repobilityId": "cc45e337e0857d8f", "scanner": "scanner-primary", "fingerprint": "52df59bae42f6373", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core-backend/src/multitable/redis-leader-lock.ts"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-737b1bdaea4ed45d", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in packages/core-backend/src/multitable/automation-service.ts:611"}, "properties": {"repobilityId": "342c2cae8ff10709", "scanner": "scanner-primary", "fingerprint": "737b1bdaea4ed45d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core-backend/src/multitable/automation-service.ts"}, "region": {"startLine": 611}}}]}, {"ruleId": "scanner-8c1d869a5b42ab17", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/core-backend/src/sandbox/ScriptSandbox.ts:332"}, "properties": {"repobilityId": "6d150361f80f0577", "scanner": "scanner-primary", "fingerprint": "8c1d869a5b42ab17", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core-backend/src/sandbox/ScriptSandbox.ts"}, "region": {"startLine": 332}}}]}, {"ruleId": "scanner-0f0d4b88a1219747", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in packages/core-backend/src/services/MetricsStreamService.ts:107"}, "properties": {"repobilityId": "20a30014b8fa8536", "scanner": "scanner-primary", "fingerprint": "0f0d4b88a1219747", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core-backend/src/services/MetricsStreamService.ts"}, "region": {"startLine": 107}}}]}, {"ruleId": "scanner-d7ccdb78df34559b", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in packages/core-backend/src/services/CollabService.ts:245"}, "properties": {"repobilityId": "af1f497c51ba03d8", "scanner": "scanner-primary", "fingerprint": "d7ccdb78df34559b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core-backend/src/services/CollabService.ts"}, "region": {"startLine": 245}}}]}, {"ruleId": "scanner-5e7e9ba78e383271", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in packages/core-backend/src/services/CacheService.ts:41"}, "properties": {"repobilityId": "6427d6a24bd940b7", "scanner": "scanner-primary", "fingerprint": "5e7e9ba78e383271", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core-backend/src/services/CacheService.ts"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-0d9f8c618e30a83c", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in packages/core-backend/src/gateway/RateLimiter.ts:18"}, "properties": {"repobilityId": "c08fc8887cead108", "scanner": "scanner-primary", "fingerprint": "0d9f8c618e30a83c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core-backend/src/gateway/RateLimiter.ts"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-55409e7ec6aa6f5c", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in packages/core-backend/src/gateway/redis-circuit-breaker-store.ts:372"}, "properties": {"repobilityId": "49e1628a587ca009", "scanner": "scanner-primary", "fingerprint": "55409e7ec6aa6f5c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core-backend/src/gateway/redis-circuit-breaker-store.ts"}, "region": {"startLine": 372}}}]}, {"ruleId": "scanner-160bed30ede9182d", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in packages/core-backend/src/gateway/APIGateway.ts:195"}, "properties": {"repobilityId": "d1c793938a4055f2", "scanner": "scanner-primary", "fingerprint": "160bed30ede9182d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core-backend/src/gateway/APIGateway.ts"}, "region": {"startLine": 195}}}]}, {"ruleId": "scanner-3c0976a893db9c90", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/openapi/dist-sdk/scripts/build.mjs:1"}, "properties": {"repobilityId": "6e1bfa79d32ec966", "scanner": "scanner-primary", "fingerprint": "3c0976a893db9c90", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/openapi/dist-sdk/scripts/build.mjs"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-625904ebb606ef2b", "level": "error", "message": {"text": "Possible secret in .github/workflows/sqlserver-smoke.yml"}, "properties": {"repobilityId": "d65eee514fcd174f", "scanner": "scanner-primary", "fingerprint": "625904ebb606ef2b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sqlserver-smoke.yml"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-625904ebb606ef2b", "level": "error", "message": {"text": "Possible secret in .github/workflows/sqlserver-smoke.yml"}, "properties": {"repobilityId": "d65eee514fcd174f", "scanner": "scanner-primary", "fingerprint": "625904ebb606ef2b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sqlserver-smoke.yml"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-625904ebb606ef2b", "level": "error", "message": {"text": "Possible secret in .github/workflows/sqlserver-smoke.yml"}, "properties": {"repobilityId": "d65eee514fcd174f", "scanner": "scanner-primary", "fingerprint": "625904ebb606ef2b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sqlserver-smoke.yml"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-815d3a6755e5de3e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in plugins/plugin-integration-core/__tests__/k3-sqlserver-smoke-script.test.cjs:4"}, "properties": {"repobilityId": "4c86c6844cb1eca1", "scanner": "scanner-primary", "fingerprint": "815d3a6755e5de3e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plugins/plugin-integration-core/__tests__/k3-sqlserver-smoke-script.test.cjs"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-96d88dedacf454c7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "01863b73326adb92", "scanner": "scanner-primary", "fingerprint": "96d88dedacf454c7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-threshold-update.yml"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-96d88dedacf454c7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "534e9b20aa7d9be2", "scanner": "scanner-primary", "fingerprint": "96d88dedacf454c7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-threshold-update.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-96d88dedacf454c7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fa22f614b106e475", "scanner": "scanner-primary", "fingerprint": "96d88dedacf454c7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-threshold-update.yml"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-96d88dedacf454c7", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "477164401c87a005", "scanner": "scanner-primary", "fingerprint": "96d88dedacf454c7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-threshold-update.yml"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-6e93b17e19af7da8", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "661a8e85f568def8", "scanner": "scanner-primary", "fingerprint": "6e93b17e19af7da8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-threshold-update.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2bf3621b608d138a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "50695f7667803e49", "scanner": "scanner-primary", "fingerprint": "2bf3621b608d138a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/multitable-perf-baseline.yml"}, "region": {"startLine": 127}}}]}, {"ruleId": "scanner-2bf3621b608d138a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ef2ca86207838358", "scanner": "scanner-primary", "fingerprint": "2bf3621b608d138a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/multitable-perf-baseline.yml"}, "region": {"startLine": 130}}}]}, {"ruleId": "scanner-2bf3621b608d138a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e4135d0fd9b65249", "scanner": "scanner-primary", "fingerprint": "2bf3621b608d138a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/multitable-perf-baseline.yml"}, "region": {"startLine": 135}}}]}, {"ruleId": "scanner-2bf3621b608d138a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "04ddcf2e5ef64a7a", "scanner": "scanner-primary", "fingerprint": "2bf3621b608d138a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/multitable-perf-baseline.yml"}, "region": {"startLine": 206}}}]}, {"ruleId": "scanner-a44f99e8acccfc33", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "293c0028780bf6bf", "scanner": "scanner-primary", "fingerprint": "a44f99e8acccfc33", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-import-perf-longrun.yml"}, "region": {"startLine": 140}}}]}, {"ruleId": "scanner-a44f99e8acccfc33", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ee56f076b857e766", "scanner": "scanner-primary", "fingerprint": "a44f99e8acccfc33", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-import-perf-longrun.yml"}, "region": {"startLine": 262}}}]}, {"ruleId": "scanner-a44f99e8acccfc33", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d83d9ff79879edf3", "scanner": "scanner-primary", "fingerprint": "a44f99e8acccfc33", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-import-perf-longrun.yml"}, "region": {"startLine": 265}}}]}, {"ruleId": "scanner-a44f99e8acccfc33", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "293c0028780bf6bf", "scanner": "scanner-primary", "fingerprint": "a44f99e8acccfc33", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-import-perf-longrun.yml"}, "region": {"startLine": 438}}}]}, {"ruleId": "scanner-a44f99e8acccfc33", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ee56f076b857e766", "scanner": "scanner-primary", "fingerprint": "a44f99e8acccfc33", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-import-perf-longrun.yml"}, "region": {"startLine": 463}}}]}, {"ruleId": "scanner-a44f99e8acccfc33", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d83d9ff79879edf3", "scanner": "scanner-primary", "fingerprint": "a44f99e8acccfc33", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-import-perf-longrun.yml"}, "region": {"startLine": 466}}}]}, {"ruleId": "scanner-a44f99e8acccfc33", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6e813876eccca58b", "scanner": "scanner-primary", "fingerprint": "a44f99e8acccfc33", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-import-perf-longrun.yml"}, "region": {"startLine": 471}}}]}, {"ruleId": "scanner-a44f99e8acccfc33", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "293c0028780bf6bf", "scanner": "scanner-primary", "fingerprint": "a44f99e8acccfc33", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-import-perf-longrun.yml"}, "region": {"startLine": 536}}}]}, {"ruleId": "scanner-a44f99e8acccfc33", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f511590dbfffe7fb", "scanner": "scanner-primary", "fingerprint": "a44f99e8acccfc33", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-import-perf-longrun.yml"}, "region": {"startLine": 565}}}]}, {"ruleId": "scanner-07124fc19ab90c05", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "866ffcbf6450e3a8", "scanner": "scanner-primary", "fingerprint": "07124fc19ab90c05", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-remote-preflight-prod.yml"}, "region": {"startLine": 292}}}]}, {"ruleId": "scanner-07124fc19ab90c05", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cb1343cb63d39238", "scanner": "scanner-primary", "fingerprint": "07124fc19ab90c05", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-remote-preflight-prod.yml"}, "region": {"startLine": 301}}}]}, {"ruleId": "scanner-91aa58942f4261a0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "561e261c32ce47ca", "scanner": "scanner-primary", "fingerprint": "91aa58942f4261a0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-production-flags-guard.yml"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-086d71400c5b7cd1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a2f1d204f53c9f06", "scanner": "scanner-primary", "fingerprint": "086d71400c5b7cd1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/migration-replay.yml"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-086d71400c5b7cd1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b438d1929664e073", "scanner": "scanner-primary", "fingerprint": "086d71400c5b7cd1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/migration-replay.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-086d71400c5b7cd1", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "409a4095e8093357", "scanner": "scanner-primary", "fingerprint": "086d71400c5b7cd1", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/migration-replay.yml"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-086d71400c5b7cd1", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0edaae11900862f9", "scanner": "scanner-primary", "fingerprint": "086d71400c5b7cd1", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/migration-replay.yml"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-086d71400c5b7cd1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5128f0247136c44d", "scanner": "scanner-primary", "fingerprint": "086d71400c5b7cd1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/migration-replay.yml"}, "region": {"startLine": 94}}}]}, {"ruleId": "scanner-56a1311090c642e6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "814d291ccc1121a4", "scanner": "scanner-primary", "fingerprint": "56a1311090c642e6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-validate.yml"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-56a1311090c642e6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f7e60614dcff7c66", "scanner": "scanner-primary", "fingerprint": "56a1311090c642e6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-validate.yml"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-56a1311090c642e6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ad84860ca3c60b7e", "scanner": "scanner-primary", "fingerprint": "56a1311090c642e6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-validate.yml"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-d2c4f33a9580cb25", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a20d965320d436af", "scanner": "scanner-primary", "fingerprint": "d2c4f33a9580cb25", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/multitable-perf-highscale.yml"}, "region": {"startLine": 118}}}]}, {"ruleId": "scanner-d2c4f33a9580cb25", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "30e563ef9fe1e5d1", "scanner": "scanner-primary", "fingerprint": "d2c4f33a9580cb25", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/multitable-perf-highscale.yml"}, "region": {"startLine": 121}}}]}, {"ruleId": "scanner-d2c4f33a9580cb25", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ed53c91ad58df000", "scanner": "scanner-primary", "fingerprint": "d2c4f33a9580cb25", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/multitable-perf-highscale.yml"}, "region": {"startLine": 126}}}]}, {"ruleId": "scanner-d2c4f33a9580cb25", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2dac0510e085f38f", "scanner": "scanner-primary", "fingerprint": "d2c4f33a9580cb25", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/multitable-perf-highscale.yml"}, "region": {"startLine": 197}}}]}, {"ruleId": "scanner-9c71a605bf6db03c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7392a319e1d24236", "scanner": "scanner-primary", "fingerprint": "9c71a605bf6db03c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sprint2-staging-validation.yml"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-9c71a605bf6db03c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7392a319e1d24236", "scanner": "scanner-primary", "fingerprint": "9c71a605bf6db03c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sprint2-staging-validation.yml"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-9c71a605bf6db03c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7392a319e1d24236", "scanner": "scanner-primary", "fingerprint": "9c71a605bf6db03c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sprint2-staging-validation.yml"}, "region": {"startLine": 129}}}]}, {"ruleId": "scanner-9c71a605bf6db03c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7392a319e1d24236", "scanner": "scanner-primary", "fingerprint": "9c71a605bf6db03c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sprint2-staging-validation.yml"}, "region": {"startLine": 134}}}]}, {"ruleId": "scanner-7c13306dba367b57", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cbb42ae07a6635a8", "scanner": "scanner-primary", "fingerprint": "7c13306dba367b57", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-manifest-validation.yml"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-7c13306dba367b57", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "18888027d91c2205", "scanner": "scanner-primary", "fingerprint": "7c13306dba367b57", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-manifest-validation.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-7c13306dba367b57", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f5b6f18d739123d2", "scanner": "scanner-primary", "fingerprint": "7c13306dba367b57", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-manifest-validation.yml"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-eafdcf6fb7603074", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "02f108bca6ff2904", "scanner": "scanner-primary", "fingerprint": "eafdcf6fb7603074", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-remote-storage-prod.yml"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-eafdcf6fb7603074", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b98705b5f77401b7", "scanner": "scanner-primary", "fingerprint": "eafdcf6fb7603074", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-remote-storage-prod.yml"}, "region": {"startLine": 416}}}]}, {"ruleId": "scanner-eafdcf6fb7603074", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b4afb9bd851e98c5", "scanner": "scanner-primary", "fingerprint": "eafdcf6fb7603074", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-remote-storage-prod.yml"}, "region": {"startLine": 455}}}]}, {"ruleId": "scanner-5319f2a5fd59acc0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "82e50c8042fd5e5f", "scanner": "scanner-primary", "fingerprint": "5319f2a5fd59acc0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-gate-issue-notify.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-80cb7f683dc88c48", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c04cb1cbd93390c3", "scanner": "scanner-primary", "fingerprint": "80cb7f683dc88c48", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/multitable-onprem-package-build.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-80cb7f683dc88c48", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1d4e5857e6ec0bba", "scanner": "scanner-primary", "fingerprint": "80cb7f683dc88c48", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/multitable-onprem-package-build.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-80cb7f683dc88c48", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4e15afa459c4912f", "scanner": "scanner-primary", "fingerprint": "80cb7f683dc88c48", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/multitable-onprem-package-build.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-80cb7f683dc88c48", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "795a64717e216ea2", "scanner": "scanner-primary", "fingerprint": "80cb7f683dc88c48", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/multitable-onprem-package-build.yml"}, "region": {"startLine": 127}}}]}, {"ruleId": "scanner-7f433de8703fcfbf", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "80e11ec7e7776ad5", "scanner": "scanner-primary", "fingerprint": "7f433de8703fcfbf", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/multitable-onprem-package-build.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5b7b9cc5a31896f2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "162ec9f40ada8ede", "scanner": "scanner-primary", "fingerprint": "5b7b9cc5a31896f2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-remote-upload-cleanup-prod.yml"}, "region": {"startLine": 280}}}]}, {"ruleId": "scanner-5b7b9cc5a31896f2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "506558d1e76c5726", "scanner": "scanner-primary", "fingerprint": "5b7b9cc5a31896f2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-remote-upload-cleanup-prod.yml"}, "region": {"startLine": 316}}}]}, {"ruleId": "scanner-c8c8f9d8d77fd15f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7c66a72bf3ede494", "scanner": "scanner-primary", "fingerprint": "c8c8f9d8d77fd15f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/dingtalk-oauth-stability-recording-lite.yml"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-a3d6cb3a9a6b7455", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "431d35baf9d913ea", "scanner": "scanner-primary", "fingerprint": "a3d6cb3a9a6b7455", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-web-guard.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-a3d6cb3a9a6b7455", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "aedd19a66035a256", "scanner": "scanner-primary", "fingerprint": "a3d6cb3a9a6b7455", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-web-guard.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-a3d6cb3a9a6b7455", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "87d950a78b57589e", "scanner": "scanner-primary", "fingerprint": "a3d6cb3a9a6b7455", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-web-guard.yml"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-a3d6cb3a9a6b7455", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fb1bdf21f39cde87", "scanner": "scanner-primary", "fingerprint": "a3d6cb3a9a6b7455", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-web-guard.yml"}, "region": {"startLine": 62}}}]}, {"ruleId": "scanner-a0bbb49826d60b39", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2ca121f6930b2cef", "scanner": "scanner-primary", "fingerprint": "a0bbb49826d60b39", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-import-perf-highscale.yml"}, "region": {"startLine": 129}}}]}, {"ruleId": "scanner-a0bbb49826d60b39", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8bba2273733a78d4", "scanner": "scanner-primary", "fingerprint": "a0bbb49826d60b39", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-import-perf-highscale.yml"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-a0bbb49826d60b39", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "67f2af3d880df364", "scanner": "scanner-primary", "fingerprint": "a0bbb49826d60b39", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-import-perf-highscale.yml"}, "region": {"startLine": 180}}}]}, {"ruleId": "scanner-a0bbb49826d60b39", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2ca121f6930b2cef", "scanner": "scanner-primary", "fingerprint": "a0bbb49826d60b39", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-import-perf-highscale.yml"}, "region": {"startLine": 387}}}]}, {"ruleId": "scanner-a0bbb49826d60b39", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a8763d986b5344ea", "scanner": "scanner-primary", "fingerprint": "a0bbb49826d60b39", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-import-perf-highscale.yml"}, "region": {"startLine": 409}}}]}, {"ruleId": "scanner-0bec28e256bf2e11", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "39423d1bf79bca82", "scanner": "scanner-primary", "fingerprint": "0bec28e256bf2e11", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-import-perf-baseline.yml"}, "region": {"startLine": 143}}}]}, {"ruleId": "scanner-0bec28e256bf2e11", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e0722d83f3829841", "scanner": "scanner-primary", "fingerprint": "0bec28e256bf2e11", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-import-perf-baseline.yml"}, "region": {"startLine": 190}}}]}, {"ruleId": "scanner-0bec28e256bf2e11", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2aa327651a869a6a", "scanner": "scanner-primary", "fingerprint": "0bec28e256bf2e11", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-import-perf-baseline.yml"}, "region": {"startLine": 193}}}]}, {"ruleId": "scanner-0bec28e256bf2e11", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "39423d1bf79bca82", "scanner": "scanner-primary", "fingerprint": "0bec28e256bf2e11", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-import-perf-baseline.yml"}, "region": {"startLine": 348}}}]}, {"ruleId": "scanner-0bec28e256bf2e11", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7dbeeba31f45f5cd", "scanner": "scanner-primary", "fingerprint": "0bec28e256bf2e11", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-import-perf-baseline.yml"}, "region": {"startLine": 369}}}]}, {"ruleId": "scanner-bb51d54555a60cb8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0a8ce7eaf0f7944a", "scanner": "scanner-primary", "fingerprint": "bb51d54555a60cb8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-nightly-validation-regression.yml"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-bb51d54555a60cb8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "422ed54d348490be", "scanner": "scanner-primary", "fingerprint": "bb51d54555a60cb8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-nightly-validation-regression.yml"}, "region": {"startLine": 103}}}]}, {"ruleId": "scanner-bb51d54555a60cb8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "80016f3f03b39541", "scanner": "scanner-primary", "fingerprint": "bb51d54555a60cb8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-nightly-validation-regression.yml"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-bb51d54555a60cb8", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "acf356c41dd52a98", "scanner": "scanner-primary", "fingerprint": "bb51d54555a60cb8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-nightly-validation-regression.yml"}, "region": {"startLine": 181}}}]}, {"ruleId": "scanner-79e4017e6ff786ab", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "822290055dced071", "scanner": "scanner-primary", "fingerprint": "79e4017e6ff786ab", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-nightly-validation-regression.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b9fc63716b246690", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c5147756cd2ae909", "scanner": "scanner-primary", "fingerprint": "b9fc63716b246690", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/p99-evaluation-helper.yml"}, "region": {"startLine": 105}}}]}, {"ruleId": "scanner-b9fc63716b246690", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "23ec3eaeac63f3db", "scanner": "scanner-primary", "fingerprint": "b9fc63716b246690", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/p99-evaluation-helper.yml"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-ee15c11661c13166", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e480b85a3a9f9fe2", "scanner": "scanner-primary", "fingerprint": "ee15c11661c13166", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-strict-gates-prod.yml"}, "region": {"startLine": 122}}}]}, {"ruleId": "scanner-ee15c11661c13166", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2165d1f48260de98", "scanner": "scanner-primary", "fingerprint": "ee15c11661c13166", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-strict-gates-prod.yml"}, "region": {"startLine": 249}}}]}, {"ruleId": "scanner-ee15c11661c13166", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e480b85a3a9f9fe2", "scanner": "scanner-primary", "fingerprint": "ee15c11661c13166", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-strict-gates-prod.yml"}, "region": {"startLine": 290}}}]}, {"ruleId": "scanner-ee15c11661c13166", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "16789227967bd5e8", "scanner": "scanner-primary", "fingerprint": "ee15c11661c13166", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-strict-gates-prod.yml"}, "region": {"startLine": 293}}}]}, {"ruleId": "scanner-ee15c11661c13166", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f2447300fa039b84", "scanner": "scanner-primary", "fingerprint": "ee15c11661c13166", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-strict-gates-prod.yml"}, "region": {"startLine": 298}}}]}, {"ruleId": "scanner-ee15c11661c13166", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2165d1f48260de98", "scanner": "scanner-primary", "fingerprint": "ee15c11661c13166", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-strict-gates-prod.yml"}, "region": {"startLine": 502}}}]}, {"ruleId": "scanner-ee15c11661c13166", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0f22d13132f920d3", "scanner": "scanner-primary", "fingerprint": "ee15c11661c13166", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-strict-gates-prod.yml"}, "region": {"startLine": 524}}}]}, {"ruleId": "scanner-ee15c11661c13166", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "caefaa30addc97bd", "scanner": "scanner-primary", "fingerprint": "ee15c11661c13166", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-strict-gates-prod.yml"}, "region": {"startLine": 577}}}]}, {"ruleId": "scanner-6e95cc5b6ff363c5", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e6df10c117df1c78", "scanner": "scanner-primary", "fingerprint": "6e95cc5b6ff363c5", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-branch-policy-drift-prod.yml"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-6e95cc5b6ff363c5", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9579bf46b6f13741", "scanner": "scanner-primary", "fingerprint": "6e95cc5b6ff363c5", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-branch-policy-drift-prod.yml"}, "region": {"startLine": 188}}}]}, {"ruleId": "scanner-6e95cc5b6ff363c5", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "adaa695adf12f8fd", "scanner": "scanner-primary", "fingerprint": "6e95cc5b6ff363c5", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-branch-policy-drift-prod.yml"}, "region": {"startLine": 219}}}]}, {"ruleId": "scanner-c42c66403e5c84b3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "35b783b035fd83cc", "scanner": "scanner-primary", "fingerprint": "c42c66403e5c84b3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/yjs-staging-validation.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-c42c66403e5c84b3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d24c23d276f34ced", "scanner": "scanner-primary", "fingerprint": "c42c66403e5c84b3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/yjs-staging-validation.yml"}, "region": {"startLine": 182}}}]}, {"ruleId": "scanner-c42c66403e5c84b3", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "74d10c91356eb06b", "scanner": "scanner-primary", "fingerprint": "c42c66403e5c84b3", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/yjs-staging-validation.yml"}, "region": {"startLine": 187}}}]}, {"ruleId": "scanner-c42c66403e5c84b3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cabc6794f013c46f", "scanner": "scanner-primary", "fingerprint": "c42c66403e5c84b3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/yjs-staging-validation.yml"}, "region": {"startLine": 228}}}]}, {"ruleId": "scanner-83fa80d2b6b08e00", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e2c6335c8ad9df6a", "scanner": "scanner-primary", "fingerprint": "83fa80d2b6b08e00", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sqlserver-smoke.yml"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-83fa80d2b6b08e00", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "978a2df187cc1142", "scanner": "scanner-primary", "fingerprint": "83fa80d2b6b08e00", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sqlserver-smoke.yml"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-83fa80d2b6b08e00", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2e9c5a2f38ee971b", "scanner": "scanner-primary", "fingerprint": "83fa80d2b6b08e00", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sqlserver-smoke.yml"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-8e2a3670dc7abe81", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a731dada4e85866f", "scanner": "scanner-primary", "fingerprint": "8e2a3670dc7abe81", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-remote-log-snapshot-prod.yml"}, "region": {"startLine": 173}}}]}, {"ruleId": "scanner-45e25ba999641d64", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9a7dfd766cca5e78", "scanner": "scanner-primary", "fingerprint": "45e25ba999641d64", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-nightly.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-45e25ba999641d64", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7ac5ccb2c98dc399", "scanner": "scanner-primary", "fingerprint": "45e25ba999641d64", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-nightly.yml"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-45e25ba999641d64", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "93d05d810dcc12f2", "scanner": "scanner-primary", "fingerprint": "45e25ba999641d64", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-nightly.yml"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-45e25ba999641d64", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3caf6d972a022827", "scanner": "scanner-primary", "fingerprint": "45e25ba999641d64", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-nightly.yml"}, "region": {"startLine": 134}}}]}, {"ruleId": "scanner-e83bc557681368a6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "96913d4f2abbf5e3", "scanner": "scanner-primary", "fingerprint": "e83bc557681368a6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sandbox-windows-portability.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-e83bc557681368a6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "43831855f39ed6ca", "scanner": "scanner-primary", "fingerprint": "e83bc557681368a6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sandbox-windows-portability.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-e83bc557681368a6", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "803910f6f3651c2b", "scanner": "scanner-primary", "fingerprint": "e83bc557681368a6", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sandbox-windows-portability.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-e83bc557681368a6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d071ce0a61875157", "scanner": "scanner-primary", "fingerprint": "e83bc557681368a6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sandbox-windows-portability.yml"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-92b26845c8cec445", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "23ea4304951e9765", "scanner": "scanner-primary", "fingerprint": "92b26845c8cec445", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-gate-contract-matrix.yml"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-92b26845c8cec445", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "16fb21bef215b94b", "scanner": "scanner-primary", "fingerprint": "92b26845c8cec445", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-gate-contract-matrix.yml"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-92b26845c8cec445", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "baec241d35899563", "scanner": "scanner-primary", "fingerprint": "92b26845c8cec445", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-gate-contract-matrix.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-92b26845c8cec445", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3c3af6b31de2b395", "scanner": "scanner-primary", "fingerprint": "92b26845c8cec445", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-gate-contract-matrix.yml"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-25360b24b7b70c9b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3ef465b0868564ed", "scanner": "scanner-primary", "fingerprint": "25360b24b7b70c9b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/realshare-trend.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-25360b24b7b70c9b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "be9c72cb6b8c2f0e", "scanner": "scanner-primary", "fingerprint": "25360b24b7b70c9b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/realshare-trend.yml"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-25360b24b7b70c9b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1df400a5c37842c7", "scanner": "scanner-primary", "fingerprint": "25360b24b7b70c9b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/realshare-trend.yml"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-fcb785dbc4d4308c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2709b6bf9ae7a9d6", "scanner": "scanner-primary", "fingerprint": "fcb785dbc4d4308c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/observability-strict.yml"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-fcb785dbc4d4308c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5a38e97a87b04387", "scanner": "scanner-primary", "fingerprint": "fcb785dbc4d4308c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/observability-strict.yml"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-fcb785dbc4d4308c", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3ccdd89cd4d05df7", "scanner": "scanner-primary", "fingerprint": "fcb785dbc4d4308c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/observability-strict.yml"}, "region": {"startLine": 62}}}]}, {"ruleId": "scanner-fcb785dbc4d4308c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f49fbf9085b6b817", "scanner": "scanner-primary", "fingerprint": "fcb785dbc4d4308c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/observability-strict.yml"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-fcb785dbc4d4308c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "90e12cfda6262afd", "scanner": "scanner-primary", "fingerprint": "fcb785dbc4d4308c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/observability-strict.yml"}, "region": {"startLine": 87}}}]}, {"ruleId": "scanner-fcb785dbc4d4308c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "90e12cfda6262afd", "scanner": "scanner-primary", "fingerprint": "fcb785dbc4d4308c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/observability-strict.yml"}, "region": {"startLine": 587}}}]}, {"ruleId": "scanner-ccef11abb997e305", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "63584817a007f4ba", "scanner": "scanner-primary", "fingerprint": "ccef11abb997e305", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-tests.yml"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-ccef11abb997e305", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d3b3e37e2ba2a11c", "scanner": "scanner-primary", "fingerprint": "ccef11abb997e305", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-tests.yml"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-ccef11abb997e305", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "892466725f624324", "scanner": "scanner-primary", "fingerprint": "ccef11abb997e305", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-tests.yml"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-ccef11abb997e305", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "63584817a007f4ba", "scanner": "scanner-primary", "fingerprint": "ccef11abb997e305", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-tests.yml"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-ccef11abb997e305", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d3b3e37e2ba2a11c", "scanner": "scanner-primary", "fingerprint": "ccef11abb997e305", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-tests.yml"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-ccef11abb997e305", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "494851bb62caa71d", "scanner": "scanner-primary", "fingerprint": "ccef11abb997e305", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-tests.yml"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-ccef11abb997e305", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "63584817a007f4ba", "scanner": "scanner-primary", "fingerprint": "ccef11abb997e305", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-tests.yml"}, "region": {"startLine": 81}}}]}, {"ruleId": "scanner-ccef11abb997e305", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d3b3e37e2ba2a11c", "scanner": "scanner-primary", "fingerprint": "ccef11abb997e305", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-tests.yml"}, "region": {"startLine": 84}}}]}, {"ruleId": "scanner-ccef11abb997e305", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "494851bb62caa71d", "scanner": "scanner-primary", "fingerprint": "ccef11abb997e305", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-tests.yml"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-ccef11abb997e305", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "41b6d8111028caeb", "scanner": "scanner-primary", "fingerprint": "ccef11abb997e305", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-tests.yml"}, "region": {"startLine": 107}}}]}, {"ruleId": "scanner-ccef11abb997e305", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "892466725f624324", "scanner": "scanner-primary", "fingerprint": "ccef11abb997e305", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-tests.yml"}, "region": {"startLine": 120}}}]}, {"ruleId": "scanner-ccef11abb997e305", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "49428438985bdb27", "scanner": "scanner-primary", "fingerprint": "ccef11abb997e305", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-tests.yml"}, "region": {"startLine": 147}}}]}, {"ruleId": "scanner-ccef11abb997e305", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "892466725f624324", "scanner": "scanner-primary", "fingerprint": "ccef11abb997e305", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-tests.yml"}, "region": {"startLine": 301}}}]}, {"ruleId": "scanner-ccef11abb997e305", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "63584817a007f4ba", "scanner": "scanner-primary", "fingerprint": "ccef11abb997e305", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-tests.yml"}, "region": {"startLine": 314}}}]}, {"ruleId": "scanner-ccef11abb997e305", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d3b3e37e2ba2a11c", "scanner": "scanner-primary", "fingerprint": "ccef11abb997e305", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-tests.yml"}, "region": {"startLine": 317}}}]}, {"ruleId": "scanner-ccef11abb997e305", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "494851bb62caa71d", "scanner": "scanner-primary", "fingerprint": "ccef11abb997e305", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-tests.yml"}, "region": {"startLine": 322}}}]}, {"ruleId": "scanner-ccef11abb997e305", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "41b6d8111028caeb", "scanner": "scanner-primary", "fingerprint": "ccef11abb997e305", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-tests.yml"}, "region": {"startLine": 340}}}]}, {"ruleId": "scanner-ccef11abb997e305", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "892466725f624324", "scanner": "scanner-primary", "fingerprint": "ccef11abb997e305", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-tests.yml"}, "region": {"startLine": 353}}}]}, {"ruleId": "scanner-ccef11abb997e305", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "49428438985bdb27", "scanner": "scanner-primary", "fingerprint": "ccef11abb997e305", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-tests.yml"}, "region": {"startLine": 359}}}]}, {"ruleId": "scanner-ccef11abb997e305", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "892466725f624324", "scanner": "scanner-primary", "fingerprint": "ccef11abb997e305", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/plugin-tests.yml"}, "region": {"startLine": 384}}}]}, {"ruleId": "scanner-346f356ff3e376c8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3be736b6e9d17312", "scanner": "scanner-primary", "fingerprint": "346f356ff3e376c8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/safety-guard-e2e.yml"}, "region": {"startLine": 155}}}]}, {"ruleId": "scanner-b44d1f4a08bb991b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cffb564562d547a3", "scanner": "scanner-primary", "fingerprint": "b44d1f4a08bb991b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-ops-deploy.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-b44d1f4a08bb991b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5feb1dc587ba3ec4", "scanner": "scanner-primary", "fingerprint": "b44d1f4a08bb991b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-ops-deploy.yml"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-b44d1f4a08bb991b", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f801727331ee6c49", "scanner": "scanner-primary", "fingerprint": "b44d1f4a08bb991b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-ops-deploy.yml"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-393535c7ca9756b9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4e9889afa38a71b9", "scanner": "scanner-primary", "fingerprint": "393535c7ca9756b9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-remote-docker-gc-prod.yml"}, "region": {"startLine": 220}}}]}, {"ruleId": "scanner-d3c9b397935226c8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d68278483c39c1a7", "scanner": "scanner-primary", "fingerprint": "d3c9b397935226c8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-slo-validation.yml"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-d3c9b397935226c8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ce9b69cb9258b51a", "scanner": "scanner-primary", "fingerprint": "d3c9b397935226c8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-slo-validation.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-d3c9b397935226c8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3f622b9364ffeea2", "scanner": "scanner-primary", "fingerprint": "d3c9b397935226c8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-slo-validation.yml"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-120242dc2437bece", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fd23df35ed9cdb25", "scanner": "scanner-primary", "fingerprint": "120242dc2437bece", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-post-merge-verify-nightly.yml"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-120242dc2437bece", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "093338d3708f8903", "scanner": "scanner-primary", "fingerprint": "120242dc2437bece", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-post-merge-verify-nightly.yml"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-cf3f42660eea640d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "45166f0d8f1020de", "scanner": "scanner-primary", "fingerprint": "cf3f42660eea640d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-branch-protection-prod.yml"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-cf3f42660eea640d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1ef1dcd88f4eb71c", "scanner": "scanner-primary", "fingerprint": "cf3f42660eea640d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-branch-protection-prod.yml"}, "region": {"startLine": 188}}}]}, {"ruleId": "scanner-cf3f42660eea640d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fdd4a5a3a81c84ce", "scanner": "scanner-primary", "fingerprint": "cf3f42660eea640d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-branch-protection-prod.yml"}, "region": {"startLine": 219}}}]}, {"ruleId": "scanner-a6b7758b94b81a60", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9cdad3cb47c3e151", "scanner": "scanner-primary", "fingerprint": "a6b7758b94b81a60", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-remote-env-reconcile-prod.yml"}, "region": {"startLine": 215}}}]}, {"ruleId": "scanner-f54d0d3a389cb4de", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f992a0f3a9da3b1a", "scanner": "scanner-primary", "fingerprint": "f54d0d3a389cb4de", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-f54d0d3a389cb4de", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cd56c11f7620ac8a", "scanner": "scanner-primary", "fingerprint": "f54d0d3a389cb4de", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 907}}}]}, {"ruleId": "scanner-4724e05098b6722d", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "a669f23915d1d93d", "scanner": "scanner-primary", "fingerprint": "4724e05098b6722d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0bd0bbb5ecc986d5", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6585c2568e9e166e", "scanner": "scanner-primary", "fingerprint": "0bd0bbb5ecc986d5", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/yuantus-pact-consumer.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-0bd0bbb5ecc986d5", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1b49552b2a43347e", "scanner": "scanner-primary", "fingerprint": "0bd0bbb5ecc986d5", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/yuantus-pact-consumer.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-0bd0bbb5ecc986d5", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6f0c6c3e75b6e9c1", "scanner": "scanner-primary", "fingerprint": "0bd0bbb5ecc986d5", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/yuantus-pact-consumer.yml"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-0bd0bbb5ecc986d5", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0c000bbe4c14b54b", "scanner": "scanner-primary", "fingerprint": "0bd0bbb5ecc986d5", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/yuantus-pact-consumer.yml"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-97a357ebb5ff386b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d4eeaffa6b493b3b", "scanner": "scanner-primary", "fingerprint": "97a357ebb5ff386b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-locale-zh-smoke-prod.yml"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-97a357ebb5ff386b", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "de9a49f8a5a69ecd", "scanner": "scanner-primary", "fingerprint": "97a357ebb5ff386b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-locale-zh-smoke-prod.yml"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-97a357ebb5ff386b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "deda0b7fc6c3db4a", "scanner": "scanner-primary", "fingerprint": "97a357ebb5ff386b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-locale-zh-smoke-prod.yml"}, "region": {"startLine": 102}}}]}, {"ruleId": "scanner-97a357ebb5ff386b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e4af5d4e3421c3bc", "scanner": "scanner-primary", "fingerprint": "97a357ebb5ff386b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-locale-zh-smoke-prod.yml"}, "region": {"startLine": 238}}}]}, {"ruleId": "scanner-97a357ebb5ff386b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "654553b66d254f69", "scanner": "scanner-primary", "fingerprint": "97a357ebb5ff386b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-locale-zh-smoke-prod.yml"}, "region": {"startLine": 284}}}]}, {"ruleId": "scanner-97a357ebb5ff386b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "654553b66d254f69", "scanner": "scanner-primary", "fingerprint": "97a357ebb5ff386b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-locale-zh-smoke-prod.yml"}, "region": {"startLine": 310}}}]}, {"ruleId": "scanner-97a357ebb5ff386b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "654553b66d254f69", "scanner": "scanner-primary", "fingerprint": "97a357ebb5ff386b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-locale-zh-smoke-prod.yml"}, "region": {"startLine": 359}}}]}, {"ruleId": "scanner-6ac22df5a2741a58", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "17926014b64e2ead", "scanner": "scanner-primary", "fingerprint": "6ac22df5a2741a58", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-remote-metrics-prod.yml"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-6ac22df5a2741a58", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a7a2ec861b6d9f53", "scanner": "scanner-primary", "fingerprint": "6ac22df5a2741a58", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-remote-metrics-prod.yml"}, "region": {"startLine": 369}}}]}, {"ruleId": "scanner-6ac22df5a2741a58", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ac3cfdad562af084", "scanner": "scanner-primary", "fingerprint": "6ac22df5a2741a58", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-remote-metrics-prod.yml"}, "region": {"startLine": 408}}}]}, {"ruleId": "scanner-42f82336e128a5ca", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e7ad190bda6162c4", "scanner": "scanner-primary", "fingerprint": "42f82336e128a5ca", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/observability-e2e.yml"}, "region": {"startLine": 307}}}]}, {"ruleId": "scanner-a2161e775ec878fc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e0c441575580780c", "scanner": "scanner-primary", "fingerprint": "a2161e775ec878fc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-onprem-package-build.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-a2161e775ec878fc", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e3c542aa142822e1", "scanner": "scanner-primary", "fingerprint": "a2161e775ec878fc", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-onprem-package-build.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-a2161e775ec878fc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "65cb84873eb288e6", "scanner": "scanner-primary", "fingerprint": "a2161e775ec878fc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-onprem-package-build.yml"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-a2161e775ec878fc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7c74c3827b321c1f", "scanner": "scanner-primary", "fingerprint": "a2161e775ec878fc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-onprem-package-build.yml"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-adcf950293d573dd", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "81a36163a743b07c", "scanner": "scanner-primary", "fingerprint": "adcf950293d573dd", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-onprem-package-build.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b62138f365bedabd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "75cf2fe043c6c81d", "scanner": "scanner-primary", "fingerprint": "b62138f365bedabd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/smoke-verify.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-b62138f365bedabd", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9263669998e3535c", "scanner": "scanner-primary", "fingerprint": "b62138f365bedabd", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/smoke-verify.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-b62138f365bedabd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "083f39e3bd67fb89", "scanner": "scanner-primary", "fingerprint": "b62138f365bedabd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/smoke-verify.yml"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-b62138f365bedabd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4e113c1f92b8b0ab", "scanner": "scanner-primary", "fingerprint": "b62138f365bedabd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/smoke-verify.yml"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-85d24a8b2e9142e0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "55e4d1516e3eb0c8", "scanner": "scanner-primary", "fingerprint": "85d24a8b2e9142e0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-nightly-validation.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-85d24a8b2e9142e0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0f6c43c8d050bfd0", "scanner": "scanner-primary", "fingerprint": "85d24a8b2e9142e0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-nightly-validation.yml"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-85d24a8b2e9142e0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8f0ba28b01b54f98", "scanner": "scanner-primary", "fingerprint": "85d24a8b2e9142e0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-nightly-validation.yml"}, "region": {"startLine": 108}}}]}, {"ruleId": "scanner-85d24a8b2e9142e0", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4a0ce6775412c5cf", "scanner": "scanner-primary", "fingerprint": "85d24a8b2e9142e0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-nightly-validation.yml"}, "region": {"startLine": 130}}}]}, {"ruleId": "scanner-a45e0d42329e8468", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "11d9bb52b116f1c2", "scanner": "scanner-primary", "fingerprint": "a45e0d42329e8468", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-baseline-rotation.yml"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-a45e0d42329e8468", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7108d0b27a6a5ecc", "scanner": "scanner-primary", "fingerprint": "a45e0d42329e8468", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-baseline-rotation.yml"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-a45e0d42329e8468", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b96bbf04b8f2c67a", "scanner": "scanner-primary", "fingerprint": "a45e0d42329e8468", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-baseline-rotation.yml"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-861be82047ba8ff8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7d2a74f05a1eb682", "scanner": "scanner-primary", "fingerprint": "861be82047ba8ff8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-daily-gate-dashboard.yml"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-861be82047ba8ff8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4505104e07fb8b47", "scanner": "scanner-primary", "fingerprint": "861be82047ba8ff8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-daily-gate-dashboard.yml"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-861be82047ba8ff8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7fd75b3c2fde674d", "scanner": "scanner-primary", "fingerprint": "861be82047ba8ff8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-daily-gate-dashboard.yml"}, "region": {"startLine": 91}}}]}, {"ruleId": "scanner-861be82047ba8ff8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7fd75b3c2fde674d", "scanner": "scanner-primary", "fingerprint": "861be82047ba8ff8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-daily-gate-dashboard.yml"}, "region": {"startLine": 242}}}]}, {"ruleId": "scanner-861be82047ba8ff8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "524c5ba985b999f6", "scanner": "scanner-primary", "fingerprint": "861be82047ba8ff8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/attendance-daily-gate-dashboard.yml"}, "region": {"startLine": 395}}}]}, {"ruleId": "scanner-969cc8ac38051cbe", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d30c3fe3b254eae6", "scanner": "scanner-primary", "fingerprint": "969cc8ac38051cbe", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-weekly-maintenance.yml"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-969cc8ac38051cbe", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "44efb6d2e67ddfe2", "scanner": "scanner-primary", "fingerprint": "969cc8ac38051cbe", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/phase5-weekly-maintenance.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-ad05a5ae604775b7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "49600fd9bee788b7", "scanner": "scanner-primary", "fingerprint": "ad05a5ae604775b7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/integration-k3wise-postdeploy-smoke.yml"}, "region": {"startLine": 207}}}]}, {"ruleId": "scanner-12744f8892f3d219", "level": "note", "message": {"text": "Very large file: apps/web/tests/multitable-workbench-view.spec.ts (2587 lines)"}, "properties": {"repobilityId": "023d407bf7a62d50", "scanner": "scanner-primary", "fingerprint": "12744f8892f3d219", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c3e51df0d074fd1f", "level": "note", "message": {"text": "Very large file: apps/web/tests/multitable-automation-manager.spec.ts (3104 lines)"}, "properties": {"repobilityId": "1d5ef015f2a46324", "scanner": "scanner-primary", "fingerprint": "c3e51df0d074fd1f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-204d20e434155e54", "level": "note", "message": {"text": "Very large file: apps/web/tests/multitable-automation-rule-editor.spec.ts (3644 lines)"}, "properties": {"repobilityId": "184dcc6a0de3b9e2", "scanner": "scanner-primary", "fingerprint": "204d20e434155e54", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-73b35fd42489898a", "level": "note", "message": {"text": "Very large file: apps/web/tests/attendance-admin-regressions.spec.ts (6301 lines)"}, "properties": {"repobilityId": "eca730c19a075cb0", "scanner": "scanner-primary", "fingerprint": "73b35fd42489898a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d7e83df5214eba91", "level": "note", "message": {"text": "Very large file: apps/web/tests/usePlmTeamViews.spec.ts (3929 lines)"}, "properties": {"repobilityId": "2e6e13d3bff110e9", "scanner": "scanner-primary", "fingerprint": "d7e83df5214eba91", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f853313bb5f6ec14", "level": "note", "message": {"text": "Very large file: apps/web/tests/k3WiseSetup.spec.ts (1367 lines)"}, "properties": {"repobilityId": "057edaca7808a049", "scanner": "scanner-primary", "fingerprint": "f853313bb5f6ec14", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8bdecdbee38ac129", "level": "note", "message": {"text": "Very large file: apps/web/tests/multitable-dashboard-view.spec.ts (1183 lines)"}, "properties": {"repobilityId": "f91990422b53215a", "scanner": "scanner-primary", "fingerprint": "8bdecdbee38ac129", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-17524d70aa1cf68b", "level": "note", "message": {"text": "Very large file: apps/web/tests/userManagementView.spec.ts (1826 lines)"}, "properties": {"repobilityId": "fc3d817bd6f00f71", "scanner": "scanner-primary", "fingerprint": "17524d70aa1cf68b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5b03282b8c3c7a42", "level": "note", "message": {"text": "Very large file: apps/web/tests/plmAuditTeamViewCollaboration.spec.ts (1774 lines)"}, "properties": {"repobilityId": "ee0a279326b06e3d", "scanner": "scanner-primary", "fingerprint": "5b03282b8c3c7a42", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d8b2a396ddf2c474", "level": "note", "message": {"text": "Very large file: apps/web/tests/usePlmTeamFilterPresets.spec.ts (2964 lines)"}, "properties": {"repobilityId": "9dbf3bdcd3a300e1", "scanner": "scanner-primary", "fingerprint": "d8b2a396ddf2c474", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e72933c98f560fa2", "level": "note", "message": {"text": "Very large file: apps/web/tests/AfterSalesView.spec.ts (3196 lines)"}, "properties": {"repobilityId": "115db21da71619e4", "scanner": "scanner-primary", "fingerprint": "e72933c98f560fa2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a1ccf06c47f0729d", "level": "note", "message": {"text": "Very large file: apps/web/tests/directoryManagementView.spec.ts (6033 lines)"}, "properties": {"repobilityId": "f9a9f5d897842d66", "scanner": "scanner-primary", "fingerprint": "a1ccf06c47f0729d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9955312a61edb3cb", "level": "note", "message": {"text": "Very large file: apps/web/tests/AfterSalesView.service-records.spec.ts (2095 lines)"}, "properties": {"repobilityId": "8b01bb6c29b13692", "scanner": "scanner-primary", "fingerprint": "9955312a61edb3cb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-40a2d88f397f11cd", "level": "note", "message": {"text": "Very large file: apps/web/tests/plmWorkbenchClient.spec.ts (1870 lines)"}, "properties": {"repobilityId": "a9cace64e9080150", "scanner": "scanner-primary", "fingerprint": "40a2d88f397f11cd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cc8a7c0880b9d8ee", "level": "note", "message": {"text": "Very large file: apps/web/tests/AttendanceReportFieldsSection.spec.ts (1400 lines)"}, "properties": {"repobilityId": "5c5dbe7b01746606", "scanner": "scanner-primary", "fingerprint": "cc8a7c0880b9d8ee", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cf24ecf060baf5ad", "level": "note", "message": {"text": "Very large file: apps/web/tests/attendance-admin-anchor-nav.spec.ts (1288 lines)"}, "properties": {"repobilityId": "d804871ba7faf119", "scanner": "scanner-primary", "fingerprint": "cf24ecf060baf5ad", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ec90cfac09cbaeab", "level": "note", "message": {"text": "Very large file: apps/web/tests/IntegrationWorkbenchView.spec.ts (4075 lines)"}, "properties": {"repobilityId": "5c591f70c52a4d26", "scanner": "scanner-primary", "fingerprint": "ec90cfac09cbaeab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fe901016efadf644", "level": "note", "message": {"text": "Very large file: apps/web/src/multitable/api/client.ts (1911 lines)"}, "properties": {"repobilityId": "b9222dff8416baa6", "scanner": "scanner-primary", "fingerprint": "fe901016efadf644", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-45bcd04080638e94", "level": "note", "message": {"text": "Very large file: apps/web/src/multitable/utils/meta-automation-labels.ts (1131 lines)"}, "properties": {"repobilityId": "0775ae09c59a8280", "scanner": "scanner-primary", "fingerprint": "45bcd04080638e94", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0d8f8155e784da41", "level": "note", "message": {"text": "Very large file: apps/web/src/services/integration/k3WiseSetup.ts (2322 lines)"}, "properties": {"repobilityId": "e83e987e1cfa8ba3", "scanner": "scanner-primary", "fingerprint": "0d8f8155e784da41", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8428fff514f463c5", "level": "note", "message": {"text": "Very large file: apps/web/src/views/attendance/useAttendanceAdminImportWorkflow.ts (2323 lines)"}, "properties": {"repobilityId": "c10f8f4c1129c208", "scanner": "scanner-primary", "fingerprint": "8428fff514f463c5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-db6d699ea0c5ec8b", "level": "note", "message": {"text": "Very large file: apps/web/src/views/plm/plmPanelModels.ts (1495 lines)"}, "properties": {"repobilityId": "45a42ae47eadb9a3", "scanner": "scanner-primary", "fingerprint": "db6d699ea0c5ec8b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4ca3ae0956a9173a", "level": "note", "message": {"text": "Very large file: scripts/verify-multitable-live-smoke.mjs (5020 lines)"}, "properties": {"repobilityId": "dfcb0b7c8195c877", "scanner": "scanner-primary", "fingerprint": "4ca3ae0956a9173a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4725e24244c57038", "level": "note", "message": {"text": "Very large file: scripts/verify-plm-ui-regression.sh (1875 lines)"}, "properties": {"repobilityId": "ef4f3d105dd2129c", "scanner": "scanner-primary", "fingerprint": "4725e24244c57038", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-55b675effbba4948", "level": "note", "message": {"text": "Very large file: scripts/ops/attendance-import-perf.mjs (1415 lines)"}, "properties": {"repobilityId": "fa0055af4fb6ce10", "scanner": "scanner-primary", "fingerprint": "55b675effbba4948", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8bcfe0935a2d504e", "level": "note", "message": {"text": "Very large file: scripts/ops/integration-k3wise-postdeploy-smoke.test.mjs (1771 lines)"}, "properties": {"repobilityId": "495045e65355d362", "scanner": "scanner-primary", "fingerprint": "8bcfe0935a2d504e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f4b9ab1f8a085ad2", "level": "note", "message": {"text": "Very large file: scripts/ops/integration-k3wise-postdeploy-smoke.mjs (1953 lines)"}, "properties": {"repobilityId": "641cf1164db58d96", "scanner": "scanner-primary", "fingerprint": "f4b9ab1f8a085ad2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-93012401db82b423", "level": "note", "message": {"text": "Very large file: scripts/ops/attendance-daily-gate-report.mjs (2361 lines)"}, "properties": {"repobilityId": "d386cb6cc8fe6744", "scanner": "scanner-primary", "fingerprint": "93012401db82b423", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-37f6932219e6e153", "level": "note", "message": {"text": "Very large file: scripts/ops/multitable-onprem-package-verify.sh (852 lines)"}, "properties": {"repobilityId": "bd0c8ec46ab19510", "scanner": "scanner-primary", "fingerprint": "37f6932219e6e153", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e67db5cfe867304f", "level": "note", "message": {"text": "Very large file: packages/core-backend/tests/integration/attendance-plugin.test.ts (14036 lines)"}, "properties": {"repobilityId": "e836eb56a5df93c8", "scanner": "scanner-primary", "fingerprint": "e67db5cfe867304f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2959e391299be6f2", "level": "note", "message": {"text": "Very large file: packages/core-backend/tests/integration/multitable-sheet-permissions.api.test.ts (3147 lines)"}, "properties": {"repobilityId": "80379d2936c27ad1", "scanner": "scanner-primary", "fingerprint": "2959e391299be6f2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ac76207f76b28d52", "level": "note", "message": {"text": "Very large file: packages/core-backend/tests/integration/attendance-schedule-dispatch.test.ts (1340 lines)"}, "properties": {"repobilityId": "8cd42b41fe4a769e", "scanner": "scanner-primary", "fingerprint": "ac76207f76b28d52", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5dc21bb7146f2299", "level": "note", "message": {"text": "Very large file: packages/core-backend/tests/integration/after-sales-plugin.install.test.ts (3607 lines)"}, "properties": {"repobilityId": "ff8726477e692cea", "scanner": "scanner-primary", "fingerprint": "5dc21bb7146f2299", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1dbfaa0e9330f223", "level": "note", "message": {"text": "Very large file: packages/core-backend/tests/integration/multitable-record-form.api.test.ts (1646 lines)"}, "properties": {"repobilityId": "0b3b8baff691322a", "scanner": "scanner-primary", "fingerprint": "1dbfaa0e9330f223", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7bbbd5e8316424cb", "level": "note", "message": {"text": "Very large file: packages/core-backend/tests/integration/dingtalk-automation-link-routes.api.test.ts (1583 lines)"}, "properties": {"repobilityId": "6d33c0961be04d4f", "scanner": "scanner-primary", "fingerprint": "7bbbd5e8316424cb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-93c5064daefdf4b4", "level": "note", "message": {"text": "Very large file: packages/core-backend/tests/integration/multitable-context.api.test.ts (1605 lines)"}, "properties": {"repobilityId": "b47cd675f9ff79c9", "scanner": "scanner-primary", "fingerprint": "93c5064daefdf4b4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bb39524782ee4166", "level": "note", "message": {"text": "Very large file: packages/core-backend/tests/unit/attendance-report-field-formula-engine.test.ts (1471 lines)"}, "properties": {"repobilityId": "3b12b4c1dbe149a9", "scanner": "scanner-primary", "fingerprint": "bb39524782ee4166", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-95df281df8848189", "level": "note", "message": {"text": "Very large file: packages/core-backend/tests/unit/after-sales-plugin-routes.test.ts (6266 lines)"}, "properties": {"repobilityId": "66f4eded3fd700a3", "scanner": "scanner-primary", "fingerprint": "95df281df8848189", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0d62d13033de505f", "level": "note", "message": {"text": "Very large file: packages/core-backend/tests/unit/admin-users-routes.test.ts (3469 lines)"}, "properties": {"repobilityId": "722c70c8ba97b8b8", "scanner": "scanner-primary", "fingerprint": "0d62d13033de505f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7f824a2e13427ca2", "level": "note", "message": {"text": "Very large file: packages/core-backend/tests/unit/attendance-report-field-catalog.test.ts (2333 lines)"}, "properties": {"repobilityId": "f2304d3ad01843a8", "scanner": "scanner-primary", "fingerprint": "7f824a2e13427ca2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1ce4ae72aa22f417", "level": "note", "message": {"text": "Very large file: packages/core-backend/tests/unit/attendance-uuid-validation-routes.test.ts (2690 lines)"}, "properties": {"repobilityId": "8a2a58ff2c436e47", "scanner": "scanner-primary", "fingerprint": "1ce4ae72aa22f417", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7d2d0090f309b974", "level": "note", "message": {"text": "Very large file: packages/core-backend/tests/unit/approval-product-service.test.ts (3897 lines)"}, "properties": {"repobilityId": "d4619571833f4549", "scanner": "scanner-primary", "fingerprint": "7d2d0090f309b974", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2467e1674e266741", "level": "note", "message": {"text": "Very large file: packages/core-backend/tests/unit/plm-workbench-routes.test.ts (1930 lines)"}, "properties": {"repobilityId": "04d221346493f3c3", "scanner": "scanner-primary", "fingerprint": "2467e1674e266741", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bd2f7698d41a3bdd", "level": "note", "message": {"text": "Very large file: packages/core-backend/tests/unit/automation-v1.test.ts (4070 lines)"}, "properties": {"repobilityId": "e996e249a4193d17", "scanner": "scanner-primary", "fingerprint": "bd2f7698d41a3bdd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-efe4890c718a1aa2", "level": "note", "message": {"text": "Very large file: packages/core-backend/src/index.ts (2576 lines)"}, "properties": {"repobilityId": "f73fb624fbf5ba25", "scanner": "scanner-primary", "fingerprint": "efe4890c718a1aa2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bd8dcdb9e8a8eba1", "level": "note", "message": {"text": "Very large file: packages/core-backend/src/types/plugin.ts (1948 lines)"}, "properties": {"repobilityId": "6c3b33e9055f584c", "scanner": "scanner-primary", "fingerprint": "bd8dcdb9e8a8eba1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8c2fdce7b7f7610b", "level": "note", "message": {"text": "Very large file: packages/core-backend/src/directory/directory-sync.ts (4060 lines)"}, "properties": {"repobilityId": "6fa4c6bd2505fada", "scanner": "scanner-primary", "fingerprint": "8c2fdce7b7f7610b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5210db608ee1ebae", "level": "note", "message": {"text": "Very large file: packages/core-backend/src/multitable/automation-service.ts (1803 lines)"}, "properties": {"repobilityId": "3b771cb7ef5dcfb8", "scanner": "scanner-primary", "fingerprint": "5210db608ee1ebae", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-630e3092f08cda36", "level": "note", "message": {"text": "Very large file: packages/core-backend/src/multitable/record-write-service.ts (1221 lines)"}, "properties": {"repobilityId": "a904bfe1cf7ee645", "scanner": "scanner-primary", "fingerprint": "630e3092f08cda36", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bcc2f72acac26b86", "level": "note", "message": {"text": "Very large file: packages/core-backend/src/multitable/automation-executor.ts (3241 lines)"}, "properties": {"repobilityId": "4c807a3c3fcc1842", "scanner": "scanner-primary", "fingerprint": "bcc2f72acac26b86", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-db5f4be84342d2f2", "level": "note", "message": {"text": "Very large file: packages/core-backend/src/multitable/permission-service.ts (1347 lines)"}, "properties": {"repobilityId": "f94b9e76d5959d4a", "scanner": "scanner-primary", "fingerprint": "db5f4be84342d2f2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-03bfbf69ab9f1a62", "level": "note", "message": {"text": "Very large file: packages/core-backend/src/routes/admin-users.ts (4385 lines)"}, "properties": {"repobilityId": "101eab584c35c01c", "scanner": "scanner-primary", "fingerprint": "03bfbf69ab9f1a62", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-74d3d267b70ca42d", "level": "note", "message": {"text": "Very large file: packages/core-backend/src/routes/plm-workbench.ts (3228 lines)"}, "properties": {"repobilityId": "621cdb1a94230f75", "scanner": "scanner-primary", "fingerprint": "74d3d267b70ca42d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-da845fc42b388806", "level": "note", "message": {"text": "Very large file: packages/core-backend/src/routes/admin-routes.ts (2059 lines)"}, "properties": {"repobilityId": "281653d2617b2fe5", "scanner": "scanner-primary", "fingerprint": "da845fc42b388806", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9df0d6dbd71cfa7e", "level": "note", "message": {"text": "Very large file: packages/core-backend/src/routes/approvals.ts (1651 lines)"}, "properties": {"repobilityId": "b05c9d5c3653edaa", "scanner": "scanner-primary", "fingerprint": "9df0d6dbd71cfa7e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-49acd1d7ee16b667", "level": "note", "message": {"text": "Very large file: packages/core-backend/src/routes/univer-meta.ts (10750 lines)"}, "properties": {"repobilityId": "72540cb1e8dd0c66", "scanner": "scanner-primary", "fingerprint": "49acd1d7ee16b667", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cca3f2ac7e4e2b82", "level": "note", "message": {"text": "Very large file: packages/core-backend/src/routes/federation.ts (3267 lines)"}, "properties": {"repobilityId": "b102b3b663859b7e", "scanner": "scanner-primary", "fingerprint": "cca3f2ac7e4e2b82", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2c96d660584d36bb", "level": "note", "message": {"text": "Very large file: packages/core-backend/src/workflow/BPMNWorkflowEngine.ts (1852 lines)"}, "properties": {"repobilityId": "f5cd556994499553", "scanner": "scanner-primary", "fingerprint": "2c96d660584d36bb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3b5c50ea5634f130", "level": "note", "message": {"text": "Very large file: packages/core-backend/src/services/ApprovalProductService.ts (3891 lines)"}, "properties": {"repobilityId": "3f24f238dea8fdde", "scanner": "scanner-primary", "fingerprint": "3b5c50ea5634f130", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-eda4b09fe94c96ea", "level": "note", "message": {"text": "Very large file: packages/core-backend/src/data-adapters/PLMAdapter.ts (2775 lines)"}, "properties": {"repobilityId": "6fe646222ba0a755", "scanner": "scanner-primary", "fingerprint": "eda4b09fe94c96ea", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2c9eee475d869a8c", "level": "note", "message": {"text": "Very large file: packages/openapi/dist-sdk/index.d.ts (16699 lines)"}, "properties": {"repobilityId": "cb7e814c0ff1a006", "scanner": "scanner-primary", "fingerprint": "2c9eee475d869a8c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5bb9b3debb0e5c93", "level": "note", "message": {"text": "Very large file: plugins/plugin-integration-core/__tests__/pipeline-runner.test.cjs (1942 lines)"}, "properties": {"repobilityId": "d322aa844acf4e1f", "scanner": "scanner-primary", "fingerprint": "5bb9b3debb0e5c93", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-15ea69463c9adeb5", "level": "note", "message": {"text": "Very large file: plugins/plugin-integration-core/__tests__/k3-wise-adapters.test.cjs (1552 lines)"}, "properties": {"repobilityId": "8f4c73a968f1dee7", "scanner": "scanner-primary", "fingerprint": "15ea69463c9adeb5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b52ee38409f03caa", "level": "note", "message": {"text": "Very large file: plugins/plugin-integration-core/__tests__/http-routes.test.cjs (3621 lines)"}, "properties": {"repobilityId": "288e6cf46e9e4fea", "scanner": "scanner-primary", "fingerprint": "b52ee38409f03caa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f39ca62e515568b1", "level": "note", "message": {"text": "Very large file: plugins/plugin-integration-core/lib/http-routes.cjs (1897 lines)"}, "properties": {"repobilityId": "a146966774c40240", "scanner": "scanner-primary", "fingerprint": "f39ca62e515568b1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-218b3fb7d4d9df48", "level": "note", "message": {"text": "Very large file: plugins/plugin-integration-core/lib/adapters/k3-wise-webapi-adapter.cjs (1385 lines)"}, "properties": {"repobilityId": "a5aaa2f666a270ba", "scanner": "scanner-primary", "fingerprint": "218b3fb7d4d9df48", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-18e451dd8ac8561b", "level": "note", "message": {"text": "Very large file: plugins/plugin-after-sales/index.cjs (4540 lines)"}, "properties": {"repobilityId": "3282d6647c22638d", "scanner": "scanner-primary", "fingerprint": "18e451dd8ac8561b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-097f397fee304667", "level": "note", "message": {"text": "65 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "097f397fee304667", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "e157fcdaae75c47c", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-4a9eb7dc7c6e3880", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/web/package.json"}, "properties": {"repobilityId": "6c1704bf24cf19ac", "scanner": "scanner-primary", "fingerprint": "4a9eb7dc7c6e3880", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3b3a11c92517dd3e", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/core-backend/package.json"}, "properties": {"repobilityId": "51a11723753ae49a", "scanner": "scanner-primary", "fingerprint": "3b3a11c92517dd3e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core-backend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-87b3a3cc134c1379", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/mssql-readonly-utils/package.json"}, "properties": {"repobilityId": "e132bce899816b13", "scanner": "scanner-primary", "fingerprint": "87b3a3cc134c1379", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/mssql-readonly-utils/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cd346190611dafdd", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/openapi/dist-sdk/package.json"}, "properties": {"repobilityId": "5919d7edce6032bc", "scanner": "scanner-primary", "fingerprint": "cd346190611dafdd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/openapi/dist-sdk/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-148ccfc698a9378f", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: tools/cli/package.json"}, "properties": {"repobilityId": "3ac3b498f75d90c0", "scanner": "scanner-primary", "fingerprint": "148ccfc698a9378f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/cli/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c355c09b8df31723", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: plugins/plugin-view-gantt/package.json"}, "properties": {"repobilityId": "2c98d44eacbe693f", "scanner": "scanner-primary", "fingerprint": "c355c09b8df31723", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plugins/plugin-view-gantt/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-47375ebb884f49a8", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: plugins/plugin-attendance/package.json"}, "properties": {"repobilityId": "cdabec190ba7a79c", "scanner": "scanner-primary", "fingerprint": "47375ebb884f49a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plugins/plugin-attendance/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e24e814ad7b38c65", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: plugins/plugin-intelligent-restore/package.json"}, "properties": {"repobilityId": "b99d163d832c3549", "scanner": "scanner-primary", "fingerprint": "e24e814ad7b38c65", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plugins/plugin-intelligent-restore/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d45fb9a041479d62", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: plugins/plugin-audit-logger/package.json"}, "properties": {"repobilityId": "ebc3cdfcec5c5915", "scanner": "scanner-primary", "fingerprint": "d45fb9a041479d62", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plugins/plugin-audit-logger/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b51ccbda3e7a714c", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: plugins/plugin-telemetry-otel/package.json"}, "properties": {"repobilityId": "04425dbbc52612ce", "scanner": "scanner-primary", "fingerprint": "b51ccbda3e7a714c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plugins/plugin-telemetry-otel/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-90253ed622db9511", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: plugins/plugin-integration-core/package.json"}, "properties": {"repobilityId": "d965395f58d0e0e5", "scanner": "scanner-primary", "fingerprint": "90253ed622db9511", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plugins/plugin-integration-core/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "57cfe835574c6f99", "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": "b93f45b475408011", "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": "23ba547b6bdbbedd", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "a12ccce39b38ce97", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "8c90d399c601c9ee", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "98e9a0f5b17f35c9", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "d128a7515bf91512", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-6ca9ba3ee4116916", "level": "none", "message": {"text": "Commented-code block (9 lines) in ecosystem.config.cjs:16"}, "properties": {"repobilityId": "b999e3ee229d6c76", "scanner": "scanner-primary", "fingerprint": "6ca9ba3ee4116916", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5bbfdc0e6ea0d887", "level": "note", "message": {"text": "Legacy-named symbol `metasheet_v2` in test-persistence.js:94"}, "properties": {"repobilityId": "fa2d27198dcc6cda", "scanner": "scanner-primary", "fingerprint": "5bbfdc0e6ea0d887", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0c66338aaa451a4d", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/tests/multitable-gantt-view.spec.ts:314"}, "properties": {"repobilityId": "76a3c7a657ec6e94", "scanner": "scanner-primary", "fingerprint": "0c66338aaa451a4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d2667420f152e309", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/tests/multitable-workbench-view.spec.ts:2561"}, "properties": {"repobilityId": "8589465739db5de4", "scanner": "scanner-primary", "fingerprint": "d2667420f152e309", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6be25de8720b97ce", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/tests/multitable-yjs-cell-binding.spec.ts:161"}, "properties": {"repobilityId": "4581bcf520679604", "scanner": "scanner-primary", "fingerprint": "6be25de8720b97ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f6c21f6c215a411", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/tests/multitable-calendar-drag-reschedule.spec.ts:8"}, "properties": {"repobilityId": "ae1e37ee2b066c64", "scanner": "scanner-primary", "fingerprint": "6f6c21f6c215a411", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b11a9ee866b3c365", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in apps/web/tests/multitable-automation-rule-editor.spec.ts:561"}, "properties": {"repobilityId": "3c34810d2b31fdbc", "scanner": "scanner-primary", "fingerprint": "b11a9ee866b3c365", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-40347c96342090a4", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/tests/attendance-admin-regressions.spec.ts:810"}, "properties": {"repobilityId": "1b1cb200048d6e89", "scanner": "scanner-primary", "fingerprint": "40347c96342090a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3338a1112f4bac49", "level": "note", "message": {"text": "Legacy-named symbol `req_old` in apps/web/tests/multitable-embed-host.spec.ts:499"}, "properties": {"repobilityId": "a261228c5d3ca7b6", "scanner": "scanner-primary", "fingerprint": "3338a1112f4bac49", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1470bc57ed292f36", "level": "note", "message": {"text": "Legacy-named symbol `statusLegacy` in apps/web/tests/conditionBranchRunsView.spec.ts:17"}, "properties": {"repobilityId": "e0e7388738c129bb", "scanner": "scanner-primary", "fingerprint": "1470bc57ed292f36", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-20b7a6d907786d73", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/web/tests/effectiveCalendar.spec.ts:1"}, "properties": {"repobilityId": "0772cad81b090cc9", "scanner": "scanner-primary", "fingerprint": "20b7a6d907786d73", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-def9fada77bb8f2c", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in apps/web/tests/workflowDesignerCompilePreview.spec.ts:33"}, "properties": {"repobilityId": "5ed945c0e575bd0b", "scanner": "scanner-primary", "fingerprint": "def9fada77bb8f2c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f8e242c1d229554f", "level": "note", "message": {"text": "Legacy-named symbol `plmAuthLegacy` in apps/web/tests/usePlmAuthStatus.spec.ts:36"}, "properties": {"repobilityId": "9dbe5a865e5addb2", "scanner": "scanner-primary", "fingerprint": "f8e242c1d229554f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7c4277537d77b139", "level": "note", "message": {"text": "Legacy-named symbol `statusLegacy` in apps/web/tests/AutomationExecutionsView.spec.ts:17"}, "properties": {"repobilityId": "2e18eb49623b4a84", "scanner": "scanner-primary", "fingerprint": "7c4277537d77b139", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9ac88fe487970df1", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/tests/multitable-crossbase-link-normalizer.spec.ts:6"}, "properties": {"repobilityId": "c4734f6fa356da84", "scanner": "scanner-primary", "fingerprint": "9ac88fe487970df1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f157811d5355329", "level": "note", "message": {"text": "Legacy-named symbol `mt_col_widths_s1_v1` in apps/web/tests/multitable-phase3.spec.ts:38"}, "properties": {"repobilityId": "180810382c8967ca", "scanner": "scanner-primary", "fingerprint": "0f157811d5355329", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0643300a42901071", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in apps/web/tests/parallelBranchEditor.spec.ts:47"}, "properties": {"repobilityId": "c7c54b23fb487b9a", "scanner": "scanner-primary", "fingerprint": "0643300a42901071", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d4684d74f1e4a292", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/web/tests/multitable-crossbase-workbench-wiring.spec.ts:4"}, "properties": {"repobilityId": "0f8840303991a26b", "scanner": "scanner-primary", "fingerprint": "d4684d74f1e4a292", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7a9214951df2ce57", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/web/tests/multitable-calendar-view.spec.ts:221"}, "properties": {"repobilityId": "ee3f65b767fa0412", "scanner": "scanner-primary", "fingerprint": "7a9214951df2ce57", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39d04a8c74e50207", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in apps/web/tests/multitable-client.spec.ts:233"}, "properties": {"repobilityId": "fb53fc5200e86ed5", "scanner": "scanner-primary", "fingerprint": "39d04a8c74e50207", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3460a8ec7f29225a", "level": "note", "message": {"text": "Legacy-named symbol `plmAuthLegacy` in apps/web/tests/usePlmProductPanel.spec.ts:56"}, "properties": {"repobilityId": "5f995157b700638d", "scanner": "scanner-primary", "fingerprint": "3460a8ec7f29225a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a0bf9f1bbc7292fb", "level": "note", "message": {"text": "Legacy-named symbol `att_old` in apps/web/tests/multitable-record-drawer.spec.ts:534"}, "properties": {"repobilityId": "40cdd36828309928", "scanner": "scanner-primary", "fingerprint": "a0bf9f1bbc7292fb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-911c930ccd619b96", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/tests/approvalTemplateCenterCategory.spec.ts:125"}, "properties": {"repobilityId": "e2cfb931cc1fa5a9", "scanner": "scanner-primary", "fingerprint": "911c930ccd619b96", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc4af968c853fdea", "level": "note", "message": {"text": "Legacy-named symbol `statusLegacy` in apps/web/tests/parallelBranchRunsView.spec.ts:17"}, "properties": {"repobilityId": "33e5d59683b5bb04", "scanner": "scanner-primary", "fingerprint": "cc4af968c853fdea", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ab59148b7f4d7a38", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in apps/web/tests/conditionBranchEditor.spec.ts:38"}, "properties": {"repobilityId": "b8629a7e619fa5bb", "scanner": "scanner-primary", "fingerprint": "ab59148b7f4d7a38", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ff3303f6e338e0b3", "level": "note", "message": {"text": "Legacy-named symbol `att_old` in apps/web/tests/multitable-attachment-editor.spec.ts:177"}, "properties": {"repobilityId": "46defa024fc64d7e", "scanner": "scanner-primary", "fingerprint": "ff3303f6e338e0b3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-08d086095fb3eb78", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/web/tests/calendarChipDisplay.spec.ts:1"}, "properties": {"repobilityId": "c1a37a1b1aeb8b35", "scanner": "scanner-primary", "fingerprint": "08d086095fb3eb78", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce7442e2350a89be", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/tests/yjs-document-stale-guard.spec.ts:113"}, "properties": {"repobilityId": "1ed67aa9e6d2c6b3", "scanner": "scanner-primary", "fingerprint": "ce7442e2350a89be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16aa3a7d67df7fd1", "level": "note", "message": {"text": "Legacy-named symbol `att_old` in apps/web/tests/multitable-form-view.spec.ts:312"}, "properties": {"repobilityId": "33244b324eee053a", "scanner": "scanner-primary", "fingerprint": "16aa3a7d67df7fd1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1925082709bcaa42", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/tests/attendance-selfservice-dashboard.spec.ts:933"}, "properties": {"repobilityId": "e2dd3e40105e5dca", "scanner": "scanner-primary", "fingerprint": "1925082709bcaa42", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8103bbab6fee7af", "level": "note", "message": {"text": "Legacy-named symbol `base_legacy` in apps/web/tests/multitable-grid.spec.ts:215"}, "properties": {"repobilityId": "a1bc3c16a52f60a8", "scanner": "scanner-primary", "fingerprint": "e8103bbab6fee7af", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a9c3a594129cb65a", "level": "note", "message": {"text": "Legacy-named symbol `k3_target_copy` in apps/web/tests/IntegrationWorkbenchView.spec.ts:921"}, "properties": {"repobilityId": "d86421777812c472", "scanner": "scanner-primary", "fingerprint": "a9c3a594129cb65a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2773573a0e22b3b5", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/tests/multitable-richtext-longtext.spec.ts:13"}, "properties": {"repobilityId": "c46b6ad44188749c", "scanner": "scanner-primary", "fingerprint": "2773573a0e22b3b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55559c14d3840a7b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/tests/multitable-crossbase-link-picker.spec.ts:265"}, "properties": {"repobilityId": "ab6504d9f21dd419", "scanner": "scanner-primary", "fingerprint": "55559c14d3840a7b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b26cdc93b58487e6", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/tests/setup/localstorage.ts:3"}, "properties": {"repobilityId": "fc8e6db225af4609", "scanner": "scanner-primary", "fingerprint": "b26cdc93b58487e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eeb634594f2a6bc3", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in apps/web/src/multitable/types.ts:896"}, "properties": {"repobilityId": "a42f1ec4a1593e03", "scanner": "scanner-primary", "fingerprint": "eeb634594f2a6bc3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9fa2e6e2f0f7dfbf", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/multitable/types.ts:152"}, "properties": {"repobilityId": "ac08150118c16699", "scanner": "scanner-primary", "fingerprint": "9fa2e6e2f0f7dfbf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07f6c3f8422430be", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/multitable/api/client.ts:822"}, "properties": {"repobilityId": "3d21875169afbffb", "scanner": "scanner-primary", "fingerprint": "07f6c3f8422430be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-80b125de82ec5b2c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/multitable/api/client.ts:907"}, "properties": {"repobilityId": "23025c7c4e1525b0", "scanner": "scanner-primary", "fingerprint": "80b125de82ec5b2c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-43f6684e998bb480", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/multitable/composables/useYjsTextField.ts:103"}, "properties": {"repobilityId": "7b385621bd6d7d3a", "scanner": "scanner-primary", "fingerprint": "43f6684e998bb480", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-789276ba199f382b", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/src/multitable/composables/useYjsCellBinding.ts:256"}, "properties": {"repobilityId": "b4517948a15fbf97", "scanner": "scanner-primary", "fingerprint": "789276ba199f382b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a62288e2329b80b7", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/multitable/composables/useAiShortcut.ts:330"}, "properties": {"repobilityId": "34ce8f695a29856f", "scanner": "scanner-primary", "fingerprint": "a62288e2329b80b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f08d305a3ec11bd", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/multitable/composables/useTemplateInstall.ts:3"}, "properties": {"repobilityId": "6fa1ee107c3b62df", "scanner": "scanner-primary", "fingerprint": "2f08d305a3ec11bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62eb98a916181c07", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/multitable/utils/rich-longtext.ts:9"}, "properties": {"repobilityId": "3e024cd2032ec5ee", "scanner": "scanner-primary", "fingerprint": "62eb98a916181c07", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-958075ee16653c93", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/src/multitable/utils/automation-log-redact.ts:50"}, "properties": {"repobilityId": "ee70e6dbada2235d", "scanner": "scanner-primary", "fingerprint": "958075ee16653c93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8401fb4cbadb5d22", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/src/multitable/utils/meta-record-labels.ts:11"}, "properties": {"repobilityId": "fee44b7fa4ef8b71", "scanner": "scanner-primary", "fingerprint": "8401fb4cbadb5d22", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-274df14f654a38c4", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/multitable/utils/field-config.ts:10"}, "properties": {"repobilityId": "0936c017e20b0eee", "scanner": "scanner-primary", "fingerprint": "274df14f654a38c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-49141cd753de8787", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/multitable/utils/conditional-formatting.ts:1"}, "properties": {"repobilityId": "59acd2217b1ec737", "scanner": "scanner-primary", "fingerprint": "49141cd753de8787", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-60722c174b36880c", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/web/src/multitable/utils/conditionBranchAuthoring.ts:3"}, "properties": {"repobilityId": "4951069b3d24a372", "scanner": "scanner-primary", "fingerprint": "60722c174b36880c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7f028d07dff4048b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/multitable/utils/meta-core-labels.ts:4"}, "properties": {"repobilityId": "aab531e237001d81", "scanner": "scanner-primary", "fingerprint": "7f028d07dff4048b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9dfd683f40069f3", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/multitable/utils/link-fields.ts:18"}, "properties": {"repobilityId": "4b537e40823032cd", "scanner": "scanner-primary", "fingerprint": "b9dfd683f40069f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6242c10db184527f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/services/ViewManager.ts:287"}, "properties": {"repobilityId": "853a3e190410fc3a", "scanner": "scanner-primary", "fingerprint": "6242c10db184527f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bb76221209933958", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/src/services/integration/workbench.ts:432"}, "properties": {"repobilityId": "6c846638e478ecf6", "scanner": "scanner-primary", "fingerprint": "bb76221209933958", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b16981a4a8cfdef7", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/web/src/services/integration/plmEmbed.ts:3"}, "properties": {"repobilityId": "ef9ff88324954af2", "scanner": "scanner-primary", "fingerprint": "b16981a4a8cfdef7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7a11cea674869a96", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/web/src/services/integration/k3WiseSetup.ts:789"}, "properties": {"repobilityId": "ab8452df223acd8b", "scanner": "scanner-primary", "fingerprint": "7a11cea674869a96", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c30709ef25680886", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/services/attendance/effectiveCalendar.ts:8"}, "properties": {"repobilityId": "b3615753708f8e97", "scanner": "scanner-primary", "fingerprint": "c30709ef25680886", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca24ce22e57f7109", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/services/attendance/calendarChipDisplay.ts:5"}, "properties": {"repobilityId": "28d7e3c1060af660", "scanner": "scanner-primary", "fingerprint": "ca24ce22e57f7109", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-20014ab02de4b3e4", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in apps/web/src/views/workflowDesignerPersistence.ts:738"}, "properties": {"repobilityId": "90f7b826eac3a24e", "scanner": "scanner-primary", "fingerprint": "20014ab02de4b3e4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-397ed8e9c81f5651", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/views/workflowDesignerPersistence.ts:654"}, "properties": {"repobilityId": "1875844888122f17", "scanner": "scanner-primary", "fingerprint": "397ed8e9c81f5651", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-249b93d179c26b21", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/views/attendance/useAttendanceAdminScheduling.ts:60"}, "properties": {"repobilityId": "1dc789cef41962a4", "scanner": "scanner-primary", "fingerprint": "249b93d179c26b21", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-106e2a1df6c2d9a6", "level": "note", "message": {"text": "Legacy-named symbol `plmAuthLegacy` in apps/web/src/views/plm/usePlmProductPanel.ts:25"}, "properties": {"repobilityId": "9688f5890b8944f7", "scanner": "scanner-primary", "fingerprint": "106e2a1df6c2d9a6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c8011b0839d3bcac", "level": "note", "message": {"text": "Legacy-named symbol `plmAuthLegacy` in apps/web/src/views/plm/usePlmAuthStatus.ts:55"}, "properties": {"repobilityId": "eb077dcaab7f20c5", "scanner": "scanner-primary", "fingerprint": "c8011b0839d3bcac", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-86803e5806cfacd5", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/sanitize-smoke-report.mjs:2"}, "properties": {"repobilityId": "5388176ad15f0dcf", "scanner": "scanner-primary", "fingerprint": "86803e5806cfacd5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-59b089751a1fef36", "level": "note", "message": {"text": "Legacy-named symbol `base_legacy` in scripts/verify-multitable-live-smoke.mjs:4172"}, "properties": {"repobilityId": "2f9db594d8fbc8ab", "scanner": "scanner-primary", "fingerprint": "59b089751a1fef36", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ade0c9a828ed76b0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seed-demo-data.ts:24"}, "properties": {"repobilityId": "2c814e8b8423e031", "scanner": "scanner-primary", "fingerprint": "ade0c9a828ed76b0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9be7877ba5e90355", "level": "note", "message": {"text": "Legacy-named symbol `base_legacy` in scripts/profile-multitable-grid.mjs:314"}, "properties": {"repobilityId": "f2bc7ca9350a8abe", "scanner": "scanner-primary", "fingerprint": "9be7877ba5e90355", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5a2a4b8475c02a95", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/attendance-ui-verify.mjs:10"}, "properties": {"repobilityId": "eba6180927e502da", "scanner": "scanner-primary", "fingerprint": "5a2a4b8475c02a95", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2a372032cc2f1f38", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ops/integration-k3wise-live-poc-evidence.mjs:34"}, "properties": {"repobilityId": "64d7e035a9dc2b29", "scanner": "scanner-primary", "fingerprint": "2a372032cc2f1f38", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-86db978e01ef087e", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ops/integration-k3wise-onprem-preflight.test.mjs:397"}, "properties": {"repobilityId": "e858cfb8961b2d18", "scanner": "scanner-primary", "fingerprint": "86db978e01ef087e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-962da218f18fd055", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ops/multitable-perf-baseline.mjs:35"}, "properties": {"repobilityId": "06a4d419a6abc154", "scanner": "scanner-primary", "fingerprint": "962da218f18fd055", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-267f63d0fe0aa812", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/ops/integration-k3wise-onprem-preflight.mjs:4"}, "properties": {"repobilityId": "5ec82812eeb3743f", "scanner": "scanner-primary", "fingerprint": "267f63d0fe0aa812", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62bbcc77cbcf6fc7", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/ops/staging-attendance-auto-shift-a2-smoke.mjs:8"}, "properties": {"repobilityId": "10f02e3d314e17b3", "scanner": "scanner-primary", "fingerprint": "62bbcc77cbcf6fc7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0eba74bf74fb522e", "level": "note", "message": {"text": "Legacy-named symbol `attendance_overtime_segmentation_v1` in scripts/ops/staging-attendance-overtime-segmentation-o6-smoke.mjs:187"}, "properties": {"repobilityId": "4781f1d0f61e0ce2", "scanner": "scanner-primary", "fingerprint": "0eba74bf74fb522e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-983f7878fa743c3f", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ops/staging-attendance-dispatch-d5-smoke.mjs:8"}, "properties": {"repobilityId": "5e7c7f47631606a7", "scanner": "scanner-primary", "fingerprint": "983f7878fa743c3f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06666722bce31c5d", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/ops/staging-attendance-inout-merge-s2-3-smoke.mjs:8"}, "properties": {"repobilityId": "4567c11946da5dfd", "scanner": "scanner-primary", "fingerprint": "06666722bce31c5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a8ca45909917448", "level": "note", "message": {"text": "Legacy-named symbol `rbac_permission_cache_legacy` in scripts/ops/phase5-cache-hit-rate-contract.test.mjs:66"}, "properties": {"repobilityId": "d686a4208747b9f6", "scanner": "scanner-primary", "fingerprint": "1a8ca45909917448", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a6c7a8000bcb986d", "level": "none", "message": {"text": "Commented-code block (10 lines) in scripts/ops/fixtures/integration-k3wise/run-mock-poc-demo.mjs:6"}, "properties": {"repobilityId": "1e70ab34ddffedf7", "scanner": "scanner-primary", "fingerprint": "a6c7a8000bcb986d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56118375ec2c8d73", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/ops/fixtures/integration-k3wise/mock-k3-webapi-server.mjs:2"}, "properties": {"repobilityId": "0a210789f439861e", "scanner": "scanner-primary", "fingerprint": "56118375ec2c8d73", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d40b027003f06943", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ops/fixtures/integration-k3wise/mock-sqlserver-executor.mjs:2"}, "properties": {"repobilityId": "9dffab8c6ac8f7ba", "scanner": "scanner-primary", "fingerprint": "d40b027003f06943", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4da554560c8694a7", "level": "note", "message": {"text": "Legacy-named symbol `metasheet_v2` in packages/core-backend/test-persistence.js:10"}, "properties": {"repobilityId": "034d7ecde6830de3", "scanner": "scanner-primary", "fingerprint": "4da554560c8694a7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0198184b7c25242d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-backend/test-kanban-integration.js:6"}, "properties": {"repobilityId": "0fdc3e17565f394e", "scanner": "scanner-primary", "fingerprint": "0198184b7c25242d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-05daec20d082c089", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/tests/integration/multitable-cross-base-automation-write-rule.test.ts:100"}, "properties": {"repobilityId": "b750b492e950d61e", "scanner": "scanner-primary", "fingerprint": "05daec20d082c089", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f6ff086cc5fbfd00", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core-backend/tests/integration/multitable-ai-shortcut-run.test.ts:189"}, "properties": {"repobilityId": "07c762ae430847a7", "scanner": "scanner-primary", "fingerprint": "f6ff086cc5fbfd00", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-265d9e523fe38948", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core-backend/tests/integration/multitable-cross-base-link-optin.test.ts:231"}, "properties": {"repobilityId": "b9d99405defb4f6c", "scanner": "scanner-primary", "fingerprint": "265d9e523fe38948", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f065ec08e61489b9", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/tests/integration/multitable-automation-jobs.test.ts:93"}, "properties": {"repobilityId": "4cb0c0448833e4e4", "scanner": "scanner-primary", "fingerprint": "f065ec08e61489b9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-92327b9f89c7bc20", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core-backend/tests/integration/multitable-automation-jobs.test.ts:110"}, "properties": {"repobilityId": "95cb178dd617144a", "scanner": "scanner-primary", "fingerprint": "92327b9f89c7bc20", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7f78c6b5dd816758", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-ai-suggest-formula.test.ts:128"}, "properties": {"repobilityId": "b9b031eca42b80fd", "scanner": "scanner-primary", "fingerprint": "7f78c6b5dd816758", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cdbfc41d1a1f46b8", "level": "note", "message": {"text": "Legacy-named symbol `sec_old` in packages/core-backend/tests/integration/multitable-record-restore.test.ts:240"}, "properties": {"repobilityId": "1e4523cfd47e101e", "scanner": "scanner-primary", "fingerprint": "cdbfc41d1a1f46b8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-33bdb0c6f91bd11f", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/tests/integration/multitable-automation-branch-local-wait.test.ts:119"}, "properties": {"repobilityId": "aebe4e6a1b6b407e", "scanner": "scanner-primary", "fingerprint": "33bdb0c6f91bd11f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-85f4f5cf9bc7a5a7", "level": "note", "message": {"text": "Legacy-named symbol `attendance_overtime_segmentation_v1` in packages/core-backend/tests/integration/attendance-plugin.test.ts:5069"}, "properties": {"repobilityId": "f41f11a4f4368829", "scanner": "scanner-primary", "fingerprint": "85f4f5cf9bc7a5a7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-078e2248ce66b7cd", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/tests/integration/attendance-plugin.test.ts:238"}, "properties": {"repobilityId": "353ab60cceda61a0", "scanner": "scanner-primary", "fingerprint": "078e2248ce66b7cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b55b913a7be693b", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-cross-sheet-related-echo-mask.test.ts:180"}, "properties": {"repobilityId": "8be938f49acabfd0", "scanner": "scanner-primary", "fingerprint": "3b55b913a7be693b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e73e1e90e516b8b5", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/tests/integration/multitable-automation-suspend-resume.test.ts:47"}, "properties": {"repobilityId": "1ad70c1d661dee2f", "scanner": "scanner-primary", "fingerprint": "e73e1e90e516b8b5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e46166c171fae2e0", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/core-backend/tests/integration/multitable-cross-base-write-quota.test.ts:183"}, "properties": {"repobilityId": "7ef59455f83ec2e2", "scanner": "scanner-primary", "fingerprint": "e46166c171fae2e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-082bb21bf772953e", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-bidirectional-mirror-links.test.ts:235"}, "properties": {"repobilityId": "d29b34f665cd9f65", "scanner": "scanner-primary", "fingerprint": "082bb21bf772953e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d37e98c97b0818f5", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/approval-template-authoring-uat.api.test.ts:1"}, "properties": {"repobilityId": "8d3334f4c2bf0ad8", "scanner": "scanner-primary", "fingerprint": "d37e98c97b0818f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-369f06a737e7cf25", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core-backend/tests/integration/multitable-permission-golden-d3d2.test.ts:164"}, "properties": {"repobilityId": "3c6294ef63f0d9ff", "scanner": "scanner-primary", "fingerprint": "369f06a737e7cf25", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a2cf04a6381c35d2", "level": "note", "message": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/integration/multitable-cross-base-seed-view-toctou.test.ts:9"}, "properties": {"repobilityId": "83c518f5759dec1b", "scanner": "scanner-primary", "fingerprint": "a2cf04a6381c35d2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d3524ad6e1eff67c", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-cross-base-link-wall.test.ts:195"}, "properties": {"repobilityId": "fa1b96afe20fbd1c", "scanner": "scanner-primary", "fingerprint": "d3524ad6e1eff67c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-502e6020e51e41f2", "level": "note", "message": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/integration/multitable-cross-base-sheet-create-toctou.test.ts:221"}, "properties": {"repobilityId": "8f91c4417f913bae", "scanner": "scanner-primary", "fingerprint": "502e6020e51e41f2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ede6267b33254b43", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-cross-base-sheet-create-toctou.test.ts:172"}, "properties": {"repobilityId": "dc4cda8d4efc8562", "scanner": "scanner-primary", "fingerprint": "ede6267b33254b43", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-abac8ae8c37a9df4", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/tests/integration/multitable-formula-dryrun.test.ts:295"}, "properties": {"repobilityId": "476f135dde183010", "scanner": "scanner-primary", "fingerprint": "abac8ae8c37a9df4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53d110e1ab06441f", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-permission-golden-d3d1.test.ts:51"}, "properties": {"repobilityId": "4635083902ece2f1", "scanner": "scanner-primary", "fingerprint": "53d110e1ab06441f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4a7f39a6348178b8", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-base-writable-resolver.test.ts:143"}, "properties": {"repobilityId": "572af6fe3d5c95b9", "scanner": "scanner-primary", "fingerprint": "4a7f39a6348178b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-940d5b5287fb4ef4", "level": "note", "message": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/integration/after-sales-registry-backfill.test.ts:134"}, "properties": {"repobilityId": "6ebfb00441719f75", "scanner": "scanner-primary", "fingerprint": "940d5b5287fb4ef4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ea7d4764133f03d6", "level": "note", "message": {"text": "Legacy-named symbol `fld_status_old` in packages/core-backend/tests/integration/multitable-view-config.api.test.ts:219"}, "properties": {"repobilityId": "a65eaac3c09ac12d", "scanner": "scanner-primary", "fingerprint": "ea7d4764133f03d6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-eca5697de8a78510", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-view-config.api.test.ts:8"}, "properties": {"repobilityId": "c234ea15aaf31e45", "scanner": "scanner-primary", "fingerprint": "eca5697de8a78510", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76f62c9664a76a46", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/tests/integration/multitable-cross-base-automation-write.test.ts:315"}, "properties": {"repobilityId": "332847e6b5006bae", "scanner": "scanner-primary", "fingerprint": "76f62c9664a76a46", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d782d1520b2e7dfc", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/tests/integration/multitable-base-readable-resolver.test.ts:94"}, "properties": {"repobilityId": "c23c5ec62a97ae3f", "scanner": "scanner-primary", "fingerprint": "d782d1520b2e7dfc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0111f8f2a3f487f5", "level": "note", "message": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/integration/multitable-context.api.test.ts:530"}, "properties": {"repobilityId": "8b520e6e7be679c5", "scanner": "scanner-primary", "fingerprint": "0111f8f2a3f487f5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-36bed9bffbf4e3d5", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-context.api.test.ts:26"}, "properties": {"repobilityId": "f92bee03fdccaea6", "scanner": "scanner-primary", "fingerprint": "36bed9bffbf4e3d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95a4c36e3bbbe1ad", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/multitable-formula-over-lookup-view.test.ts:104"}, "properties": {"repobilityId": "af2bd79aeafccd38", "scanner": "scanner-primary", "fingerprint": "95a4c36e3bbbe1ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-468ad8699cdaf400", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/tests/integration/multitable-automation-start-approval.test.ts:175"}, "properties": {"repobilityId": "83176e229c9fa208", "scanner": "scanner-primary", "fingerprint": "468ad8699cdaf400", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f3deabc7d66a880f", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/tests/integration/multitable-cross-base-automation-delete-lock.test.ts:254"}, "properties": {"repobilityId": "c2cffa95faf114de", "scanner": "scanner-primary", "fingerprint": "f3deabc7d66a880f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de7e449062478e35", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/collab-ux-flow.test.ts:81"}, "properties": {"repobilityId": "3f755c74457711de", "scanner": "scanner-primary", "fingerprint": "de7e449062478e35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd6f9c37306da44a", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core-backend/tests/integration/approval-wp4-template-categories.api.test.ts:105"}, "properties": {"repobilityId": "2b920dd0e59a7eb0", "scanner": "scanner-primary", "fingerprint": "bd6f9c37306da44a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0ff2f51ed5866ac", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/integration/attendance-outdoor-punch.test.ts:9"}, "properties": {"repobilityId": "487de24bf38e8867", "scanner": "scanner-primary", "fingerprint": "d0ff2f51ed5866ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f17f27dea21ebf2", "level": "note", "message": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/multitable-provisioning.test.ts:201"}, "properties": {"repobilityId": "492879be970411f0", "scanner": "scanner-primary", "fingerprint": "2f17f27dea21ebf2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d1ca61bdbff42c46", "level": "note", "message": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/multitable-record-create-context.test.ts:7"}, "properties": {"repobilityId": "22ee6b5c5cb38003", "scanner": "scanner-primary", "fingerprint": "d1ca61bdbff42c46", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2337ac452ee61033", "level": "note", "message": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/after-sales-installer.test.ts:465"}, "properties": {"repobilityId": "4ee160027930b6d4", "scanner": "scanner-primary", "fingerprint": "2337ac452ee61033", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e434e8d5145eb93a", "level": "note", "message": {"text": "Legacy-named symbol `wf_copy` in packages/core-backend/tests/unit/workflow-designer-compile-preview-route.test.ts:222"}, "properties": {"repobilityId": "eda07e930831f95b", "scanner": "scanner-primary", "fingerprint": "e434e8d5145eb93a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-15ab811449d9b831", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core-backend/tests/unit/automation-routes-wiring.test.ts:206"}, "properties": {"repobilityId": "0dbf72088ec65c20", "scanner": "scanner-primary", "fingerprint": "15ab811449d9b831", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-47d76cb558a0aef0", "level": "note", "message": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/after-sales-plugin-routes.test.ts:286"}, "properties": {"repobilityId": "0d15a38fb961e17c", "scanner": "scanner-primary", "fingerprint": "47d76cb558a0aef0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-28d697b6d955cb59", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core-backend/tests/unit/multitable-template-dryrun-routes.test.ts:494"}, "properties": {"repobilityId": "d98cd7a3f1605ac4", "scanner": "scanner-primary", "fingerprint": "28d697b6d955cb59", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bded507938255c34", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/unit/multitable-egress-coverage-guard.test.ts:80"}, "properties": {"repobilityId": "5f474e8c17d15e8a", "scanner": "scanner-primary", "fingerprint": "bded507938255c34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3c1baf4fee199164", "level": "note", "message": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/multitable-plugin-scope.test.ts:83"}, "properties": {"repobilityId": "189811982fc298ae", "scanner": "scanner-primary", "fingerprint": "3c1baf4fee199164", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-25adeaf1fd8c4f0f", "level": "note", "message": {"text": "Legacy-named symbol `rule_legacy` in packages/core-backend/tests/unit/automation-scheduler-leader.test.ts:125"}, "properties": {"repobilityId": "6b21d016d658fb4c", "scanner": "scanner-primary", "fingerprint": "25adeaf1fd8c4f0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-00de9f70d2fa559b", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/tests/unit/multitable-record-lock-guard.guard.test.ts:123"}, "properties": {"repobilityId": "9a420b76e216be67", "scanner": "scanner-primary", "fingerprint": "00de9f70d2fa559b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0bc0ea419308ee37", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/unit/metrics-stream.test.ts:3"}, "properties": {"repobilityId": "d3ae59dc26d2103d", "scanner": "scanner-primary", "fingerprint": "0bc0ea419308ee37", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9496530b80a9f69b", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/unit/richtext-longtext-sanitizer.test.ts:237"}, "properties": {"repobilityId": "9787b25061636145", "scanner": "scanner-primary", "fingerprint": "9496530b80a9f69b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7629312113847056", "level": "note", "message": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/attendance-report-field-catalog.test.ts:855"}, "properties": {"repobilityId": "d07de963e5306a22", "scanner": "scanner-primary", "fingerprint": "7629312113847056", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1298a155b47eb3f0", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core-backend/tests/unit/plm-adapter-effective-tenant.test.ts:4"}, "properties": {"repobilityId": "8b27753a2b565b49", "scanner": "scanner-primary", "fingerprint": "1298a155b47eb3f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa989dbd621b18c7", "level": "note", "message": {"text": "Legacy-named symbol `tenant_legacy` in packages/core-backend/tests/unit/jwt-middleware.test.ts:123"}, "properties": {"repobilityId": "6d7c14bc197bae22", "scanner": "scanner-primary", "fingerprint": "fa989dbd621b18c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3bafc93c21345551", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/unit/multitable-field-visibility-rule.test.ts:12"}, "properties": {"repobilityId": "be5499b80255f873", "scanner": "scanner-primary", "fingerprint": "3bafc93c21345551", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-939488f853001da4", "level": "note", "message": {"text": "Legacy-named symbol `statusLegacy` in packages/core-backend/tests/unit/automation-runs-api.test.ts:80"}, "properties": {"repobilityId": "d8115d59ad89b1d6", "scanner": "scanner-primary", "fingerprint": "939488f853001da4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0380cbdfc1225c71", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/tests/unit/multitable-cross-base-write-guard.guard.test.ts:176"}, "properties": {"repobilityId": "f4a231529a0d097a", "scanner": "scanner-primary", "fingerprint": "0380cbdfc1225c71", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c9e5742257fd10e", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core-backend/tests/unit/yjs-poc.test.ts:689"}, "properties": {"repobilityId": "3bcf316bbd26b387", "scanner": "scanner-primary", "fingerprint": "7c9e5742257fd10e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1cf52b17b560118", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/tests/unit/field-validation-wiring.test.ts:288"}, "properties": {"repobilityId": "c4d445aa70566d30", "scanner": "scanner-primary", "fingerprint": "d1cf52b17b560118", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c0de20a4b0352af3", "level": "note", "message": {"text": "Legacy-named symbol `lead_legacy` in packages/core-backend/tests/unit/after-sales-workflow-adapter.test.ts:672"}, "properties": {"repobilityId": "84003b2746185aef", "scanner": "scanner-primary", "fingerprint": "c0de20a4b0352af3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f6e62c2b9a01035b", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/core-backend/tests/unit/formula-engine.test.ts:542"}, "properties": {"repobilityId": "003f3a67dd4456cc", "scanner": "scanner-primary", "fingerprint": "f6e62c2b9a01035b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a9754ce99d995d0", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core-backend/tests/unit/yjs-rest-invalidation.test.ts:248"}, "properties": {"repobilityId": "c1fdcb8a8f59f827", "scanner": "scanner-primary", "fingerprint": "3a9754ce99d995d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a8cba1619a31da3", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/tests/unit/multitable-automation-service.test.ts:426"}, "properties": {"repobilityId": "cf142ec498cfb209", "scanner": "scanner-primary", "fingerprint": "5a8cba1619a31da3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7d4d3a2804c65f7a", "level": "note", "message": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/tests/unit/multitable-records.test.ts:54"}, "properties": {"repobilityId": "3d47f5f62911cec4", "scanner": "scanner-primary", "fingerprint": "7d4d3a2804c65f7a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-728a9528e163d49e", "level": "note", "message": {"text": "Legacy-named symbol `fld_legacy` in packages/core-backend/tests/unit/multitable-formula-engine.test.ts:343"}, "properties": {"repobilityId": "1d32d7f69a41c52c", "scanner": "scanner-primary", "fingerprint": "728a9528e163d49e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-85378a7a9f38ca82", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/tests/unit/record-write-service.test.ts:807"}, "properties": {"repobilityId": "6ed296befe28f123", "scanner": "scanner-primary", "fingerprint": "85378a7a9f38ca82", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-026099801ab6906f", "level": "note", "message": {"text": "Legacy-named symbol `dt_legacy` in packages/core-backend/tests/unit/automation-v1.test.ts:763"}, "properties": {"repobilityId": "47ad05d5ed415fe0", "scanner": "scanner-primary", "fingerprint": "026099801ab6906f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8d6220f0d2f8bb8f", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/unit/automation-v1.test.ts:80"}, "properties": {"repobilityId": "607bb971ca959ac4", "scanner": "scanner-primary", "fingerprint": "8d6220f0d2f8bb8f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f428fcd1ee145c7", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/unit/comment-contracts.test.ts:132"}, "properties": {"repobilityId": "cc7bddadd71bf4ce", "scanner": "scanner-primary", "fingerprint": "2f428fcd1ee145c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0feea60ea93f089f", "level": "note", "message": {"text": "Legacy-named symbol `unregisterOld` in packages/core-backend/tests/unit/attendance-scheduler.test.ts:120"}, "properties": {"repobilityId": "7d582482f3e1dcd5", "scanner": "scanner-primary", "fingerprint": "0feea60ea93f089f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-75a3e1f2c81e11b9", "level": "note", "message": {"text": "Legacy-named symbol `asyncsend_v2` in packages/core-backend/tests/unit/dingtalk-work-notification.test.ts:102"}, "properties": {"repobilityId": "7374728e88d266b0", "scanner": "scanner-primary", "fingerprint": "75a3e1f2c81e11b9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a9501d0070310bc2", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/tests/unit/multitable-raw-record-data-projection.guard.test.ts:151"}, "properties": {"repobilityId": "e5e3b3c0cc801f19", "scanner": "scanner-primary", "fingerprint": "a9501d0070310bc2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4eca8572bf7a58d9", "level": "note", "message": {"text": "Legacy-named symbol `dt_legacy` in packages/core-backend/tests/unit/dingtalk-group-destination-service.test.ts:129"}, "properties": {"repobilityId": "873367b8673dcde6", "scanner": "scanner-primary", "fingerprint": "4eca8572bf7a58d9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-639406d27c7d24c6", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/tests/e2e/multitable-perf-baseline.spec.ts:411"}, "properties": {"repobilityId": "0086d44c711cdda4", "scanner": "scanner-primary", "fingerprint": "639406d27c7d24c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2879b53b200b0ac1", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/scripts/smoke-sqlserver.ts:95"}, "properties": {"repobilityId": "ff2926fac38e5b0d", "scanner": "scanner-primary", "fingerprint": "2879b53b200b0ac1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6bc08871aa6c8ad", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/scripts/smoke-sqlserver-seed.ts:38"}, "properties": {"repobilityId": "fb7bcf43cd4cd383", "scanner": "scanner-primary", "fingerprint": "f6bc08871aa6c8ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7bd88d881221315", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-backend/scripts/ops/yjs-node-client.mjs:36"}, "properties": {"repobilityId": "b32ab5e1ee5cc70a", "scanner": "scanner-primary", "fingerprint": "a7bd88d881221315", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ef166924be5a34f7", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/benchmark/pattern-matching.ts:26"}, "properties": {"repobilityId": "9344435441bc53e1", "scanner": "scanner-primary", "fingerprint": "ef166924be5a34f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7dcfc1679cfacd96", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/src/index.ts:1111"}, "properties": {"repobilityId": "393aaf6608fb352a", "scanner": "scanner-primary", "fingerprint": "7dcfc1679cfacd96", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-40d8103e84386c05", "level": "note", "message": {"text": "Legacy-named symbol `asyncsend_v2` in packages/core-backend/src/integrations/dingtalk/client.ts:628"}, "properties": {"repobilityId": "bcecc0d764e475b6", "scanner": "scanner-primary", "fingerprint": "40d8103e84386c05", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b669d4fe49425ae9", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/src/integration/events/event-bus.ts:63"}, "properties": {"repobilityId": "af03913504e87700", "scanner": "scanner-primary", "fingerprint": "b669d4fe49425ae9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85ac3a8c9f796842", "level": "note", "message": {"text": "Legacy-named symbol `subscribePatternLegacy` in packages/core-backend/src/integration/messaging/message-bus.ts:306"}, "properties": {"repobilityId": "1f7b2259122edb7f", "scanner": "scanner-primary", "fingerprint": "85ac3a8c9f796842", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-00743fdc4db0b263", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/src/integration/rate-limiting/redis-token-bucket-store.ts:24"}, "properties": {"repobilityId": "c06f0beb90728d53", "scanner": "scanner-primary", "fingerprint": "00743fdc4db0b263", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b211b28959a4e4c4", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/src/auth/dingtalk-oauth.ts:790"}, "properties": {"repobilityId": "9e0264855dad2c1c", "scanner": "scanner-primary", "fingerprint": "b211b28959a4e4c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e0d80b32b4396c33", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/src/multitable/charts.ts:5"}, "properties": {"repobilityId": "dba2ce2ee4149800", "scanner": "scanner-primary", "fingerprint": "e0d80b32b4396c33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aac29663bd6da73e", "level": "none", "message": {"text": "Commented-code block (14 lines) in packages/core-backend/src/multitable/conditional-formatting-service.ts:383"}, "properties": {"repobilityId": "45c8b94bf4d71b9f", "scanner": "scanner-primary", "fingerprint": "aac29663bd6da73e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a9fdff223706f478", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/src/multitable/webhook-service.ts:432"}, "properties": {"repobilityId": "47589d8b9051ba03", "scanner": "scanner-primary", "fingerprint": "a9fdff223706f478", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cedb306c8e7e1ba9", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/src/multitable/field-visibility-rule.ts:8"}, "properties": {"repobilityId": "205d034ddad10a5e", "scanner": "scanner-primary", "fingerprint": "cedb306c8e7e1ba9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc78f0a7b5d53a74", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/src/multitable/auto-number-service.ts:85"}, "properties": {"repobilityId": "3f10562dfbbe5811", "scanner": "scanner-primary", "fingerprint": "bc78f0a7b5d53a74", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-593002fa7c2d5e31", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/multitable/automation-service.ts:77"}, "properties": {"repobilityId": "dfc031ced69e1d1b", "scanner": "scanner-primary", "fingerprint": "593002fa7c2d5e31", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-da3f83fc9a816f53", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/src/multitable/automation-service.ts:1190"}, "properties": {"repobilityId": "53e5e126e0f6c078", "scanner": "scanner-primary", "fingerprint": "da3f83fc9a816f53", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d48a1768f9a23764", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/multitable/automation-actions.ts:155"}, "properties": {"repobilityId": "3c790f57d22f4655", "scanner": "scanner-primary", "fingerprint": "d48a1768f9a23764", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-64aef8a90d10bd34", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/src/multitable/record-service.ts:66"}, "properties": {"repobilityId": "4b13986e78581fd3", "scanner": "scanner-primary", "fingerprint": "64aef8a90d10bd34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad1686755523a364", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/src/multitable/automation-suspension-service.ts:83"}, "properties": {"repobilityId": "8aff5f9dc14ea7d7", "scanner": "scanner-primary", "fingerprint": "ad1686755523a364", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8848656aae820d73", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/core-backend/src/multitable/chart-aggregation-service.ts:174"}, "properties": {"repobilityId": "6ff933ef507fede4", "scanner": "scanner-primary", "fingerprint": "8848656aae820d73", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9910e5d6c23b872", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/multitable/automation-job-service.ts:5"}, "properties": {"repobilityId": "eb2af20f3a3d0043", "scanner": "scanner-primary", "fingerprint": "e9910e5d6c23b872", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7b558ae04fb088e4", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/core-backend/src/multitable/automation-job-service.ts:247"}, "properties": {"repobilityId": "7100d07313270895", "scanner": "scanner-primary", "fingerprint": "7b558ae04fb088e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-247c8278c486274d", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/src/multitable/formula-engine.ts:301"}, "properties": {"repobilityId": "f6b0eb2c48dee8c7", "scanner": "scanner-primary", "fingerprint": "247c8278c486274d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-44a8a8efbbbb0da5", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/src/multitable/automation-log-service.ts:185"}, "properties": {"repobilityId": "5b6d58fb9b5286f6", "scanner": "scanner-primary", "fingerprint": "44a8a8efbbbb0da5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5346f4b2711c9afb", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/src/multitable/record-write-service.ts:447"}, "properties": {"repobilityId": "26aa8f4d81683d2b", "scanner": "scanner-primary", "fingerprint": "5346f4b2711c9afb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25607dd074899249", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/multitable/automation-executor.ts:581"}, "properties": {"repobilityId": "3d41b37c6e2356cd", "scanner": "scanner-primary", "fingerprint": "25607dd074899249", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8788aab344c80e5a", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/src/multitable/automation-executor.ts:708"}, "properties": {"repobilityId": "3ebfcecef01a1b8b", "scanner": "scanner-primary", "fingerprint": "8788aab344c80e5a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd994b5be5a3fe69", "level": "note", "message": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/src/multitable/provisioning.ts:107"}, "properties": {"repobilityId": "f387c62c133dc180", "scanner": "scanner-primary", "fingerprint": "cd994b5be5a3fe69", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bef4c21e8449b338", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/src/multitable/permission-service.ts:110"}, "properties": {"repobilityId": "8da137d04693b8a2", "scanner": "scanner-primary", "fingerprint": "bef4c21e8449b338", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6bdf7cf8d8da3d0", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/src/multitable/query-service.ts:280"}, "properties": {"repobilityId": "1eafef9cdf682e68", "scanner": "scanner-primary", "fingerprint": "d6bdf7cf8d8da3d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5d0a0faa009d7ef", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/src/multitable/automation-resume-cursor.ts:92"}, "properties": {"repobilityId": "5da0d57186a7e1e8", "scanner": "scanner-primary", "fingerprint": "d5d0a0faa009d7ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f0129878ff18dcc", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/src/multitable/field-codecs.ts:423"}, "properties": {"repobilityId": "5aefae001bac8d8a", "scanner": "scanner-primary", "fingerprint": "2f0129878ff18dcc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0aa73586a1ee44b4", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core-backend/src/routes/plm-workbench.ts:783"}, "properties": {"repobilityId": "44c553bd1ae0baff", "scanner": "scanner-primary", "fingerprint": "0aa73586a1ee44b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-302830d0dda7d2b9", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/src/routes/admin-routes.ts:1126"}, "properties": {"repobilityId": "2b619bd83af4038a", "scanner": "scanner-primary", "fingerprint": "302830d0dda7d2b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5be1e95ab513a8cf", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/src/routes/approvals.ts:409"}, "properties": {"repobilityId": "f6953213322206d1", "scanner": "scanner-primary", "fingerprint": "5be1e95ab513a8cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1954f79c52301a6b", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/src/routes/approval-metrics.ts:127"}, "properties": {"repobilityId": "7353b86066e559c8", "scanner": "scanner-primary", "fingerprint": "1954f79c52301a6b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b4e9d57c7ba1e1f", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/src/routes/plm-embed.ts:93"}, "properties": {"repobilityId": "e96a34ce32e167c6", "scanner": "scanner-primary", "fingerprint": "8b4e9d57c7ba1e1f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-026dddb787c0d9d2", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/src/routes/cache-test.ts:83"}, "properties": {"repobilityId": "7d82bf1fd7be6761", "scanner": "scanner-primary", "fingerprint": "026dddb787c0d9d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b5b5b5857015e41", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/src/routes/data-sources.ts:373"}, "properties": {"repobilityId": "3b6770ac64c5e46d", "scanner": "scanner-primary", "fingerprint": "5b5b5b5857015e41", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e9f65fb3f6fd429", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/src/routes/multitable-ai.ts:295"}, "properties": {"repobilityId": "9a212a673c68194b", "scanner": "scanner-primary", "fingerprint": "5e9f65fb3f6fd429", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f9c799cc8d84134", "level": "note", "message": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/src/routes/univer-meta.ts:354"}, "properties": {"repobilityId": "69f93f6c07a50648", "scanner": "scanner-primary", "fingerprint": "6f9c799cc8d84134", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-91276efebeb753b7", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core-backend/src/routes/univer-meta.ts:195"}, "properties": {"repobilityId": "f584023ecfc1e43b", "scanner": "scanner-primary", "fingerprint": "91276efebeb753b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e2e686ee4d9a1c04", "level": "note", "message": {"text": "Legacy-named symbol `statusLegacy` in packages/core-backend/src/routes/automation.ts:86"}, "properties": {"repobilityId": "2a91857f2542decc", "scanner": "scanner-primary", "fingerprint": "e2e686ee4d9a1c04", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-efbb1c0d6c33ddc6", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/src/routes/automation.ts:182"}, "properties": {"repobilityId": "09b5d5877ce53aa7", "scanner": "scanner-primary", "fingerprint": "efbb1c0d6c33ddc6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97da7b0171da1e45", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-backend/src/routes/automation.ts:296"}, "properties": {"repobilityId": "e8d86daeb88c5b11", "scanner": "scanner-primary", "fingerprint": "97da7b0171da1e45", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6b9b347749d1b893", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/workflow/bpmnCompilePreview.ts:47"}, "properties": {"repobilityId": "f3a45529ad59325f", "scanner": "scanner-primary", "fingerprint": "6b9b347749d1b893", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-dbe0688b40290ee1", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/src/collab/yjs-sync-service.ts:92"}, "properties": {"repobilityId": "46904dea949cfbc9", "scanner": "scanner-primary", "fingerprint": "dbe0688b40290ee1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9093478016fe047", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/src/services/ApprovalProductService.ts:933"}, "properties": {"repobilityId": "2781eee201267a7a", "scanner": "scanner-primary", "fingerprint": "f9093478016fe047", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea11d617c62fd61e", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/src/services/ApprovalGraphExecutor.ts:495"}, "properties": {"repobilityId": "99a22a44356712d9", "scanner": "scanner-primary", "fingerprint": "ea11d617c62fd61e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-47b4627a780509f5", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core-backend/src/services/ai-provider-readiness.ts:140"}, "properties": {"repobilityId": "cec3262305fb19c2", "scanner": "scanner-primary", "fingerprint": "47b4627a780509f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a2e26b4964890ce6", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/src/services/AttendanceExpiryService.ts:25"}, "properties": {"repobilityId": "90828dc7193896ab", "scanner": "scanner-primary", "fingerprint": "a2e26b4964890ce6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd2ec9fc1ac2e5a9", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/core-backend/src/services/ApprovalAssigneeResolver.ts:53"}, "properties": {"repobilityId": "a049bdf705199411", "scanner": "scanner-primary", "fingerprint": "fd2ec9fc1ac2e5a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dfcb4a55b61ef547", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/db/types.ts:1340"}, "properties": {"repobilityId": "6fd24292318fed40", "scanner": "scanner-primary", "fingerprint": "dfcb4a55b61ef547", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c9970b4da8f72617", "level": "none", "message": {"text": "Commented-code block (11 lines) in packages/core-backend/src/db/migrations/zzzz20260603120000_create_attendance_leave_balances.ts:9"}, "properties": {"repobilityId": "6ba1dc6b2e4b67da", "scanner": "scanner-primary", "fingerprint": "c9970b4da8f72617", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f2642707c77608b", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/db/migrations/zzzz20260603130000_create_automation_suspensions.ts:5"}, "properties": {"repobilityId": "247fcda17f2cf1d9", "scanner": "scanner-primary", "fingerprint": "3f2642707c77608b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-469a6d0c9b71b4d7", "level": "none", "message": {"text": "Commented-code block (12 lines) in packages/core-backend/src/db/migrations/zzzz20260615170000_add_annual_leave_accrual_schema.ts:9"}, "properties": {"repobilityId": "725bb500b0c6db92", "scanner": "scanner-primary", "fingerprint": "469a6d0c9b71b4d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7f33750bcd30e8ab", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/src/db/migrations/zzzz20260605120000_add_outdoor_punch_request_type.ts:5"}, "properties": {"repobilityId": "e58314d9c7629a8c", "scanner": "scanner-primary", "fingerprint": "7f33750bcd30e8ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-286ea6c4b27a37db", "level": "note", "message": {"text": "Legacy-named symbol `base_legacy` in packages/core-backend/src/db/migrations/zzzz20260318110000_add_multitable_bases_and_permissions.ts:4"}, "properties": {"repobilityId": "b5336e17e6ee78d9", "scanner": "scanner-primary", "fingerprint": "286ea6c4b27a37db", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c5fd18bc58d20a72", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/core-backend/src/db/migrations/zzzz20260615190000_create_meta_comment_reactions.ts:4"}, "properties": {"repobilityId": "254a59a0ccfea43b", "scanner": "scanner-primary", "fingerprint": "c5fd18bc58d20a72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9486e600e1cf1de2", "level": "note", "message": {"text": "Legacy-named symbol `workflow_job_v1` in packages/core-backend/src/db/migrations/zzzz20260530120000_create_automation_jobs_and_execution_mode.ts:5"}, "properties": {"repobilityId": "1487e5594fe2e03f", "scanner": "scanner-primary", "fingerprint": "9486e600e1cf1de2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5b54cea3e4d73892", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core-backend/src/db/migrations/zzzz20260604120000_create_attendance_unscheduled_reminder_dispatch.ts:8"}, "properties": {"repobilityId": "d0efdcd91b08e2f5", "scanner": "scanner-primary", "fingerprint": "5b54cea3e4d73892", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bde5eeb9605fcc8a", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-backend/src/data-adapters/PLMAdapter.ts:1142"}, "properties": {"repobilityId": "96ec2f34c8f41815", "scanner": "scanner-primary", "fingerprint": "bde5eeb9605fcc8a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f910b5eb5fd3baf1", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-backend/src/data-adapters/data-source-plugin-facade.ts:149"}, "properties": {"repobilityId": "b42a1924d0b934a4", "scanner": "scanner-primary", "fingerprint": "f910b5eb5fd3baf1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c954a26d34234922", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/core-backend/src/data-adapters/MSSQLAdapter.ts:1"}, "properties": {"repobilityId": "b546bef046d5f2e0", "scanner": "scanner-primary", "fingerprint": "c954a26d34234922", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-84d264638ec3d74b", "level": "note", "message": {"text": "Legacy-named symbol `listPendingApprovalsLegacy` in packages/openapi/dist-sdk/index.d.ts:431"}, "properties": {"repobilityId": "097df853f92cb902", "scanner": "scanner-primary", "fingerprint": "84d264638ec3d74b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-250a8f685bf524ae", "level": "none", "message": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/__tests__/data-source-sql-readonly-source-adapter.test.cjs:3"}, "properties": {"repobilityId": "8c0311a10f5a9018", "scanner": "scanner-primary", "fingerprint": "250a8f685bf524ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e6c475ca34dc32a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/__tests__/pipeline-runner.test.cjs:1903"}, "properties": {"repobilityId": "0089bfaff34c533a", "scanner": "scanner-primary", "fingerprint": "e6c475ca34dc32a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ec0c3d8704c5930", "level": "none", "message": {"text": "Commented-code block (11 lines) in plugins/plugin-integration-core/__tests__/staging-installer.test.cjs:6"}, "properties": {"repobilityId": "eb690c19c96ae49e", "scanner": "scanner-primary", "fingerprint": "5ec0c3d8704c5930", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db4e7dde345417f3", "level": "none", "message": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/__tests__/k3-df-t1-target-payload-preview.test.cjs:3"}, "properties": {"repobilityId": "908ee7f171b64d67", "scanner": "scanner-primary", "fingerprint": "db4e7dde345417f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34fd0004e9d2f3bd", "level": "none", "message": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/__tests__/k3-save-body-composer.parity.test.cjs:180"}, "properties": {"repobilityId": "6a854c432dba1410", "scanner": "scanner-primary", "fingerprint": "34fd0004e9d2f3bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-028890fef1cedd28", "level": "none", "message": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/__tests__/df-n2-2c-provenance-read.test.cjs:3"}, "properties": {"repobilityId": "b3fb7c7a00a4f8c8", "scanner": "scanner-primary", "fingerprint": "028890fef1cedd28", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6daa2afad28d913a", "level": "note", "message": {"text": "Legacy-named symbol `dbLegacy` in plugins/plugin-integration-core/__tests__/db.test.cjs:247"}, "properties": {"repobilityId": "5cfc1962eae2ced3", "scanner": "scanner-primary", "fingerprint": "6daa2afad28d913a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-882c693163a51565", "level": "none", "message": {"text": "Commented-code block (13 lines) in plugins/plugin-integration-core/__tests__/db.test.cjs:6"}, "properties": {"repobilityId": "a5c4834aedcbf26f", "scanner": "scanner-primary", "fingerprint": "882c693163a51565", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-47a9f72cfb598e7e", "level": "none", "message": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/__tests__/k3-wise-material-presets.test.cjs:55"}, "properties": {"repobilityId": "051f2fffff4852da", "scanner": "scanner-primary", "fingerprint": "47a9f72cfb598e7e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f77e64e24fb42dfb", "level": "note", "message": {"text": "Legacy-named symbol `audit_copy` in plugins/plugin-integration-core/__tests__/metasheet-multitable-target-adapter.test.cjs:161"}, "properties": {"repobilityId": "e52329685f317c62", "scanner": "scanner-primary", "fingerprint": "f77e64e24fb42dfb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8c70e5d158d5ac5e", "level": "none", "message": {"text": "Commented-code block (11 lines) in plugins/plugin-integration-core/__tests__/credential-store.test.cjs:6"}, "properties": {"repobilityId": "f4f8b68d96e40e5b", "scanner": "scanner-primary", "fingerprint": "8c70e5d158d5ac5e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d420a2e49e9770d3", "level": "none", "message": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/__tests__/http-routes.test.cjs:1133"}, "properties": {"repobilityId": "6eaa2abbf6291c64", "scanner": "scanner-primary", "fingerprint": "d420a2e49e9770d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b866ed1668919489", "level": "none", "message": {"text": "Commented-code block (7 lines) in plugins/plugin-integration-core/__tests__/plugin-runtime-smoke.test.cjs:6"}, "properties": {"repobilityId": "94573b2eb4864502", "scanner": "scanner-primary", "fingerprint": "b866ed1668919489", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bfba25e7f780ab96", "level": "none", "message": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/__tests__/external-systems.test.cjs:425"}, "properties": {"repobilityId": "dc7a08c05e830ef7", "scanner": "scanner-primary", "fingerprint": "bfba25e7f780ab96", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e2e62a4bd0ed33f", "level": "none", "message": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/reference-mapping-templates.cjs:3"}, "properties": {"repobilityId": "c5b82d54b6f443cf", "scanner": "scanner-primary", "fingerprint": "9e2e62a4bd0ed33f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-691ce466408af378", "level": "none", "message": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/http-routes.cjs:55"}, "properties": {"repobilityId": "29d9e93d529e5992", "scanner": "scanner-primary", "fingerprint": "691ce466408af378", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5303e20a81f3ab3e", "level": "none", "message": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/staging-installer.cjs:10"}, "properties": {"repobilityId": "5d7ff7ffe9de70e2", "scanner": "scanner-primary", "fingerprint": "5303e20a81f3ab3e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c840c3313eb21dc", "level": "none", "message": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/contracts.cjs:6"}, "properties": {"repobilityId": "37eabcd5b613ec27", "scanner": "scanner-primary", "fingerprint": "4c840c3313eb21dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6982f5e4e4f307f", "level": "none", "message": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/db.cjs:13"}, "properties": {"repobilityId": "372e707c9a2deb44", "scanner": "scanner-primary", "fingerprint": "f6982f5e4e4f307f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a73cf7dbe40c14f", "level": "none", "message": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/reference-mapping-resolver.cjs:61"}, "properties": {"repobilityId": "49b0528df74104a8", "scanner": "scanner-primary", "fingerprint": "9a73cf7dbe40c14f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eea7aa090e30c9ba", "level": "none", "message": {"text": "Commented-code block (7 lines) in plugins/plugin-integration-core/lib/pipelines.cjs:714"}, "properties": {"repobilityId": "0b8ac5f3bec85496", "scanner": "scanner-primary", "fingerprint": "eea7aa090e30c9ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-08be3e88f2eac071", "level": "none", "message": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/payload-redaction.cjs:54"}, "properties": {"repobilityId": "86f27bcce334a2de", "scanner": "scanner-primary", "fingerprint": "08be3e88f2eac071", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-acadceab702ff8a6", "level": "none", "message": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/run-log.cjs:89"}, "properties": {"repobilityId": "9eae1f83b7b0cb4e", "scanner": "scanner-primary", "fingerprint": "acadceab702ff8a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c35fdbb2d01be76", "level": "none", "message": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/reference-mapping-source.cjs:3"}, "properties": {"repobilityId": "29e1093446d968d1", "scanner": "scanner-primary", "fingerprint": "4c35fdbb2d01be76", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e40594be92180af1", "level": "none", "message": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/credential-store.cjs:9"}, "properties": {"repobilityId": "f99bef29bcc3f331", "scanner": "scanner-primary", "fingerprint": "e40594be92180af1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2520af68ffb8ab90", "level": "note", "message": {"text": "Legacy-named symbol `plm_stock_preparation_decision_v1` in plugins/plugin-integration-core/lib/stock-preparation-templates.cjs:469"}, "properties": {"repobilityId": "0bdd3b898f4a69c9", "scanner": "scanner-primary", "fingerprint": "2520af68ffb8ab90", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-17550e44b1fe680d", "level": "none", "message": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/connector-action-contracts.cjs:3"}, "properties": {"repobilityId": "8e6c4e32753cbcc6", "scanner": "scanner-primary", "fingerprint": "17550e44b1fe680d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-457397342e78dee9", "level": "none", "message": {"text": "Commented-code block (5 lines) in plugins/plugin-integration-core/lib/connector-template-derive.cjs:8"}, "properties": {"repobilityId": "0a4ee26902a6ab5d", "scanner": "scanner-primary", "fingerprint": "457397342e78dee9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5eeacc06d55a4f5f", "level": "none", "message": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/pipeline-runner.cjs:17"}, "properties": {"repobilityId": "facdd01efa8a4e4c", "scanner": "scanner-primary", "fingerprint": "5eeacc06d55a4f5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d579790b63684ff0", "level": "note", "message": {"text": "Legacy-named symbol `plm_stock_preparation_decision_v1` in plugins/plugin-integration-core/lib/stock-preparation-option-sync.cjs:39"}, "properties": {"repobilityId": "0d45678f41506b2a", "scanner": "scanner-primary", "fingerprint": "d579790b63684ff0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5ea7a76bc294a217", "level": "none", "message": {"text": "Commented-code block (8 lines) in plugins/plugin-integration-core/lib/adapters/k3-wise-document-templates.cjs:169"}, "properties": {"repobilityId": "c0c813019e906715", "scanner": "scanner-primary", "fingerprint": "5ea7a76bc294a217", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad3ab5e4ba70d09b", "level": "none", "message": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/adapters/k3-save-body-composer.cjs:5"}, "properties": {"repobilityId": "cd607c9a757e5998", "scanner": "scanner-primary", "fingerprint": "ad3ab5e4ba70d09b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10eddf6670ea4d31", "level": "none", "message": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/adapters/k3-wise-webapi-adapter.cjs:232"}, "properties": {"repobilityId": "e75bacfe2d875976", "scanner": "scanner-primary", "fingerprint": "10eddf6670ea4d31", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d712985136d3434", "level": "none", "message": {"text": "Commented-code block (6 lines) in plugins/plugin-integration-core/lib/adapters/data-source-sql-readonly-source-adapter.cjs:3"}, "properties": {"repobilityId": "3c98a9b4bc740ae5", "scanner": "scanner-primary", "fingerprint": "8d712985136d3434", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c4f08b16b82a0cc7", "level": "note", "message": {"text": "497 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "4aa1a4a6c822719e", "scanner": "scanner-primary", "fingerprint": "c4f08b16b82a0cc7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-fc0faa3f651be66c", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:8900/api/plugins (packages/core-backend/test-kanban-integration.js:6)"}, "properties": {"repobilityId": "6c612e2c058a727e", "scanner": "scanner-primary", "fingerprint": "fc0faa3f651be66c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3bff24aa8f2881a2", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:8900/metrics/prom (plugins/hello-world/src/index.js:87)"}, "properties": {"repobilityId": "8ed77fde72660955", "scanner": "scanner-primary", "fingerprint": "3bff24aa8f2881a2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0178fc5beb5978f9", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/bases (apps/web/src/multitable/api/client.ts:907)"}, "properties": {"repobilityId": "a95adc31ee45650d", "scanner": "scanner-primary", "fingerprint": "0178fc5beb5978f9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-40a4266849f14854", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/bases (apps/web/src/multitable/api/client.ts:912)"}, "properties": {"repobilityId": "479b4abc1a04c1d1", "scanner": "scanner-primary", "fingerprint": "40a4266849f14854", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-042128595b83ef7c", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/templates (apps/web/src/multitable/api/client.ts:921)"}, "properties": {"repobilityId": "358d800babd4ecad", "scanner": "scanner-primary", "fingerprint": "042128595b83ef7c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b5ec8ed3f664c2f0", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/templates/${encodeURIComponent(templateId)}/install (apps/web/src/multitable/api/client.ts:926)"}, "properties": {"repobilityId": "bc9e9d03d78a8847", "scanner": "scanner-primary", "fingerprint": "b5ec8ed3f664c2f0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9cd6e24469535d2e", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/templates/${encodeURIComponent(templateId)}/dry-run (apps/web/src/multitable/api/client.ts:937)"}, "properties": {"repobilityId": "bcad3a202d6380ba", "scanner": "scanner-primary", "fingerprint": "9cd6e24469535d2e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4d8ebd3c59608a33", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/context${qs(params)} (apps/web/src/multitable/api/client.ts:947)"}, "properties": {"repobilityId": "59825944ba03b397", "scanner": "scanner-primary", "fingerprint": "4d8ebd3c59608a33", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-87daba0b452b4071", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/sheets (apps/web/src/multitable/api/client.ts:953)"}, "properties": {"repobilityId": "0021d10b59513bc3", "scanner": "scanner-primary", "fingerprint": "87daba0b452b4071", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7e02e28ef459c157", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/sheets (apps/web/src/multitable/api/client.ts:958)"}, "properties": {"repobilityId": "8ba28af2c431da52", "scanner": "scanner-primary", "fingerprint": "7e02e28ef459c157", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a1d341c522e8e9f2", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/permissions (apps/web/src/multitable/api/client.ts:967)"}, "properties": {"repobilityId": "91433f35fadf15db", "scanner": "scanner-primary", "fingerprint": "a1d341c522e8e9f2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-23691cf85c0c43bd", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/permission-candidates${qs(params ?? {})} (apps/web/src/multitable/api/client.ts:976)"}, "properties": {"repobilityId": "8314402f476a6c39", "scanner": "scanner-primary", "fingerprint": "23691cf85c0c43bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2c88f511da39b294", "level": "error", "message": {"text": "Dangling fetch: PUT /api/multitable/sheets/${encodeURIComponent(sheetId)}/permissions/${encodeURIComponent(subjectType)}/${encodeURIComponent(subjectId)} (apps/web/src/multitable/api/client.ts:987)"}, "properties": {"repobilityId": "2426f641f33dfd41", "scanner": "scanner-primary", "fingerprint": "2c88f511da39b294", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7dc18c3482fd91a4", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/field-permissions (apps/web/src/multitable/api/client.ts:1013)"}, "properties": {"repobilityId": "de86f5d0610857e9", "scanner": "scanner-primary", "fingerprint": "7dc18c3482fd91a4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d8eb9ec8a8c28ea4", "level": "error", "message": {"text": "Dangling fetch: PUT /api/multitable/sheets/${encodeURIComponent(sheetId)}/field-permissions/${encodeURIComponent(fieldId)}/${encodeURIComponent(subjectType)}/${encodeURIComponent(subjectId)} (apps/web/src/multitable/api/client.ts:1043)"}, "properties": {"repobilityId": "5950db5197b89839", "scanner": "scanner-primary", "fingerprint": "d8eb9ec8a8c28ea4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-72ba5fb882f4a932", "level": "error", "message": {"text": "Dangling fetch: PUT /api/multitable/views/${encodeURIComponent(viewId)}/permissions/${encodeURIComponent(subjectType)}/${encodeURIComponent(subjectId)} (apps/web/src/multitable/api/client.ts:1085)"}, "properties": {"repobilityId": "6a9573355f9aef26", "scanner": "scanner-primary", "fingerprint": "72ba5fb882f4a932", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a2560197b35d951d", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/fields${qs({ sheetId })} (apps/web/src/multitable/api/client.ts:1098)"}, "properties": {"repobilityId": "0460fc7ca6415ed6", "scanner": "scanner-primary", "fingerprint": "a2560197b35d951d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3b67286ac8f53fb7", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/fields (apps/web/src/multitable/api/client.ts:1103)"}, "properties": {"repobilityId": "8d982db518032e4f", "scanner": "scanner-primary", "fingerprint": "3b67286ac8f53fb7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2415626d108e61e2", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/person-fields/prepare (apps/web/src/multitable/api/client.ts:1112)"}, "properties": {"repobilityId": "d02d28bed01ad6cf", "scanner": "scanner-primary", "fingerprint": "2415626d108e61e2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f4681dbf5a123b6a", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/multitable/fields/${fieldId} (apps/web/src/multitable/api/client.ts:1121)"}, "properties": {"repobilityId": "7ecaac52a693fc7c", "scanner": "scanner-primary", "fingerprint": "f4681dbf5a123b6a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dcf56d46d6358f72", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/multitable/fields/${fieldId} (apps/web/src/multitable/api/client.ts:1130)"}, "properties": {"repobilityId": "65ef2262cc1b59b6", "scanner": "scanner-primary", "fingerprint": "dcf56d46d6358f72", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1542f5175283935a", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/views${qs({ sheetId })} (apps/web/src/multitable/api/client.ts:1136)"}, "properties": {"repobilityId": "e579139fdd81aeed", "scanner": "scanner-primary", "fingerprint": "1542f5175283935a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-63aacb0a6926a2e9", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/views (apps/web/src/multitable/api/client.ts:1141)"}, "properties": {"repobilityId": "bac424ff457f94f2", "scanner": "scanner-primary", "fingerprint": "63aacb0a6926a2e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6c5e2aea4cbee0e4", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/multitable/views/${viewId} (apps/web/src/multitable/api/client.ts:1150)"}, "properties": {"repobilityId": "88a37b0f788ff581", "scanner": "scanner-primary", "fingerprint": "6c5e2aea4cbee0e4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2e5c97069b2f7b82", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/multitable/views/${viewId} (apps/web/src/multitable/api/client.ts:1159)"}, "properties": {"repobilityId": "bbf4a52950e4512a", "scanner": "scanner-primary", "fingerprint": "2e5c97069b2f7b82", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b48b8e9dcd7d1d28", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/view${qs(params as Record<string, string | number | boolean | undefined>)} (apps/web/src/multitable/api/client.ts:1173)"}, "properties": {"repobilityId": "7940c27ffdfaf9b2", "scanner": "scanner-primary", "fingerprint": "b48b8e9dcd7d1d28", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3fbaf79706a32f8e", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/view-aggregate${qs(rest as Record<string, string | undefined>)} (apps/web/src/multitable/api/client.ts:1182)"}, "properties": {"repobilityId": "532437c3c37272d1", "scanner": "scanner-primary", "fingerprint": "3fbaf79706a32f8e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d0fb3bd5e7b92627", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/formula/dry-run (apps/web/src/multitable/api/client.ts:1193)"}, "properties": {"repobilityId": "a3f78de3dea79deb", "scanner": "scanner-primary", "fingerprint": "d0fb3bd5e7b92627", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-32112f33190e3f4e", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/ai/shortcut/preview (apps/web/src/multitable/api/client.ts:1210)"}, "properties": {"repobilityId": "8839a54e74ff816f", "scanner": "scanner-primary", "fingerprint": "32112f33190e3f4e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1067a9eabfc497c4", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/ai/shortcut/run (apps/web/src/multitable/api/client.ts:1226)"}, "properties": {"repobilityId": "46a21dec2086ae18", "scanner": "scanner-primary", "fingerprint": "1067a9eabfc497c4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-744c8d469aff5e55", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/ai/suggest-formula (apps/web/src/multitable/api/client.ts:1239)"}, "properties": {"repobilityId": "d434e9b9926e1468", "scanner": "scanner-primary", "fingerprint": "744c8d469aff5e55", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2d2c633348d3fcb6", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/ai/usage-summary (apps/web/src/multitable/api/client.ts:1250)"}, "properties": {"repobilityId": "33d8442d059137fe", "scanner": "scanner-primary", "fingerprint": "2d2c633348d3fcb6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4b2020f31ab55556", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/records/${recordId}${qs(params ?? {})} (apps/web/src/multitable/api/client.ts:1265)"}, "properties": {"repobilityId": "31786a0ad89a8d27", "scanner": "scanner-primary", "fingerprint": "4b2020f31ab55556", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-735d3dec7de5798d", "level": "error", "message": {"text": "Dangling fetch: PUT /api/multitable/sheets/${encodeURIComponent(sheetId)}/records/${encodeURIComponent(recordId)}/subscriptions/me (apps/web/src/multitable/api/client.ts:1286)"}, "properties": {"repobilityId": "cd8f76eba3be865d", "scanner": "scanner-primary", "fingerprint": "735d3dec7de5798d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1f2e57d6d58ee74e", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/record-subscription-notifications${qs(params ?? {})} (apps/web/src/multitable/api/client.ts:1304)"}, "properties": {"repobilityId": "60cdb7a6423a662c", "scanner": "scanner-primary", "fingerprint": "1f2e57d6d58ee74e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-799a2d80faaccf6d", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/records (apps/web/src/multitable/api/client.ts:1310)"}, "properties": {"repobilityId": "6d49dc6ab8d8ae50", "scanner": "scanner-primary", "fingerprint": "799a2d80faaccf6d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e79b6b4b7292bd23", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/multitable/records/${recordId}${qs({ expectedVersion })} (apps/web/src/multitable/api/client.ts:1320)"}, "properties": {"repobilityId": "597dd09f0a0aa89c", "scanner": "scanner-primary", "fingerprint": "e79b6b4b7292bd23", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b34055336598a3eb", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/records/${recordId}/lock (apps/web/src/multitable/api/client.ts:1330)"}, "properties": {"repobilityId": "67627ac4de6d3e5d", "scanner": "scanner-primary", "fingerprint": "b34055336598a3eb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1cb9fb033afa04ec", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/patch (apps/web/src/multitable/api/client.ts:1339)"}, "properties": {"repobilityId": "373de1594e015328", "scanner": "scanner-primary", "fingerprint": "1cb9fb033afa04ec", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fd5761b7a527be55", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/fields/${fieldId}/link-options${qs(params ?? {})} (apps/web/src/multitable/api/client.ts:1365)"}, "properties": {"repobilityId": "269b8bae9e90fd76", "scanner": "scanner-primary", "fingerprint": "fd5761b7a527be55", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0174ab2ba54d5d52", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/records-summary${qs(params as Record<string, string | number | boolean | undefined>)} (apps/web/src/multitable/api/client.ts:1373)"}, "properties": {"repobilityId": "4856875c53151384", "scanner": "scanner-primary", "fingerprint": "0174ab2ba54d5d52", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-48d8eb62bccfba48", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/attachments (apps/web/src/multitable/api/client.ts:1384)"}, "properties": {"repobilityId": "e6aa5f0791a95236", "scanner": "scanner-primary", "fingerprint": "48d8eb62bccfba48", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-777845e097b1414e", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/multitable/attachments/${attachmentId} (apps/web/src/multitable/api/client.ts:1393)"}, "properties": {"repobilityId": "0335cbbf3942bd66", "scanner": "scanner-primary", "fingerprint": "777845e097b1414e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-11823398129942d8", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/records/${encodeURIComponent(recordId)}/permissions (apps/web/src/multitable/api/client.ts:1399)"}, "properties": {"repobilityId": "aae611eeef0be13f", "scanner": "scanner-primary", "fingerprint": "11823398129942d8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-99f53c5d6e6fd5f1", "level": "error", "message": {"text": "Dangling fetch: PUT /api/multitable/sheets/${encodeURIComponent(sheetId)}/records/${encodeURIComponent(recordId)}/permissions (apps/web/src/multitable/api/client.ts:1411)"}, "properties": {"repobilityId": "232de976ba2ea423", "scanner": "scanner-primary", "fingerprint": "99f53c5d6e6fd5f1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9f3188b19ae5e42a", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/multitable/sheets/${encodeURIComponent(sheetId)}/records/${encodeURIComponent(recordId)}/permissions/${encodeURIComponent(permissionId)} (apps/web/src/multitable/api/client.ts:1423)"}, "properties": {"repobilityId": "2d8138004a6d61c3", "scanner": "scanner-primary", "fingerprint": "9f3188b19ae5e42a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-27c6455eb082019b", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/multitable/sheets/${encodeURIComponent(sheetId)}/automations/${encodeURIComponent(ruleId)} (apps/web/src/multitable/api/client.ts:1456)"}, "properties": {"repobilityId": "e472cf41e9d9cd96", "scanner": "scanner-primary", "fingerprint": "27c6455eb082019b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e935796038e5ef42", "level": "error", "message": {"text": "Dangling fetch: GET /api/comments/mention-candidates${qs(params)} (apps/web/src/multitable/api/client.ts:1523)"}, "properties": {"repobilityId": "3e7f0daf4817332e", "scanner": "scanner-primary", "fingerprint": "e935796038e5ef42", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7fb4ff8da3892ec5", "level": "error", "message": {"text": "Dangling fetch: GET /api/comments/mention-summary${qs(params)} (apps/web/src/multitable/api/client.ts:1567)"}, "properties": {"repobilityId": "66e353dfe59a458a", "scanner": "scanner-primary", "fingerprint": "7fb4ff8da3892ec5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-72d31bdd6328ca04", "level": "error", "message": {"text": "Dangling fetch: GET /api/comments/inbox${qs(params ?? {})} (apps/web/src/multitable/api/client.ts:1582)"}, "properties": {"repobilityId": "0250c9b93523e7f6", "scanner": "scanner-primary", "fingerprint": "72d31bdd6328ca04", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3115d4ba7008f1f9", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/views/${encodeURIComponent(viewId)}/form-share (apps/web/src/multitable/api/client.ts:1600)"}, "properties": {"repobilityId": "3391d2f8e5adc2a4", "scanner": "scanner-primary", "fingerprint": "3115d4ba7008f1f9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-415ed1ed87470fde", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/multitable/sheets/${encodeURIComponent(sheetId)}/views/${encodeURIComponent(viewId)}/form-share (apps/web/src/multitable/api/client.ts:1606)"}, "properties": {"repobilityId": "134e8af0e9910121", "scanner": "scanner-primary", "fingerprint": "415ed1ed87470fde", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5ece80b8ee64506b", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/views/${encodeURIComponent(viewId)}/form-share/regenerate (apps/web/src/multitable/api/client.ts:1616)"}, "properties": {"repobilityId": "077394ca857cddb8", "scanner": "scanner-primary", "fingerprint": "5ece80b8ee64506b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-966dae78f3b69f8c", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/form-share-candidates${qs(params ?? {})} (apps/web/src/multitable/api/client.ts:1626)"}, "properties": {"repobilityId": "831155edd2e93f39", "scanner": "scanner-primary", "fingerprint": "966dae78f3b69f8c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d0312a1d1e98ed0e", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/tokens (apps/web/src/multitable/api/client.ts:1633)"}, "properties": {"repobilityId": "7a65d92643d68d21", "scanner": "scanner-primary", "fingerprint": "d0312a1d1e98ed0e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-90d05b7b972d56ce", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/tokens (apps/web/src/multitable/api/client.ts:1639)"}, "properties": {"repobilityId": "23816ad5d1250204", "scanner": "scanner-primary", "fingerprint": "90d05b7b972d56ce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cf275646eaa787f1", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/multitable/tokens/${encodeURIComponent(tokenId)} (apps/web/src/multitable/api/client.ts:1648)"}, "properties": {"repobilityId": "8352bb6f631ec285", "scanner": "scanner-primary", "fingerprint": "cf275646eaa787f1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c1a3f2ad136dd04b", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/tokens/${encodeURIComponent(tokenId)}/rotate (apps/web/src/multitable/api/client.ts:1655)"}, "properties": {"repobilityId": "18d58b6d49e09318", "scanner": "scanner-primary", "fingerprint": "c1a3f2ad136dd04b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-24100e2cff07f8d4", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/dingtalk-groups${qs(sheetId ? { sheetId } : {})} (apps/web/src/multitable/api/client.ts:1701)"}, "properties": {"repobilityId": "4527f7aa1a62bd7a", "scanner": "scanner-primary", "fingerprint": "24100e2cff07f8d4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ef6d3996600a870c", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/multitable/dingtalk-groups/${encodeURIComponent(id)}${qs(sheetId ? { sheetId } : {})} (apps/web/src/multitable/api/client.ts:1716)"}, "properties": {"repobilityId": "8843ca22398e737e", "scanner": "scanner-primary", "fingerprint": "ef6d3996600a870c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2fdd369b4e1b56a2", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/multitable/dingtalk-groups/${encodeURIComponent(id)}${qs(sheetId ? { sheetId } : {})} (apps/web/src/multitable/api/client.ts:1725)"}, "properties": {"repobilityId": "65f29f9adee10797", "scanner": "scanner-primary", "fingerprint": "2fdd369b4e1b56a2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bed123421544966c", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/dingtalk-groups/${encodeURIComponent(id)}/test-send${qs(sheetId ? { sheetId } : {})} (apps/web/src/multitable/api/client.ts:1732)"}, "properties": {"repobilityId": "9d0b3f28a5ad26f9", "scanner": "scanner-primary", "fingerprint": "bed123421544966c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5b1f1e0524748513", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/dingtalk-groups/${encodeURIComponent(id)}/deliveries${qs(sheetId ? { sheetId } : {})} (apps/web/src/multitable/api/client.ts:1741)"}, "properties": {"repobilityId": "fe1bf34a29fe706a", "scanner": "scanner-primary", "fingerprint": "5b1f1e0524748513", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9acc67bcd3ba24de", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/automations/${encodeURIComponent(ruleId)}/test (apps/web/src/multitable/api/client.ts:1748)"}, "properties": {"repobilityId": "9b3152b8f6ac4b31", "scanner": "scanner-primary", "fingerprint": "9acc67bcd3ba24de", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d42f2c58332a49c7", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/automation-executions${qs({ ...filters })} (apps/web/src/multitable/api/client.ts:1777)"}, "properties": {"repobilityId": "b404ecb89ac825be", "scanner": "scanner-primary", "fingerprint": "d42f2c58332a49c7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fe42775df7d11439", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/automation/resume (apps/web/src/multitable/api/client.ts:1797)"}, "properties": {"repobilityId": "2c3b2554c3eb28ca", "scanner": "scanner-primary", "fingerprint": "fe42775df7d11439", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8c69757727e3aeb2", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/charts (apps/web/src/multitable/api/client.ts:1823)"}, "properties": {"repobilityId": "90d2a5aed0dac0c0", "scanner": "scanner-primary", "fingerprint": "8c69757727e3aeb2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-90a8e71f2254ffe0", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/charts (apps/web/src/multitable/api/client.ts:1829)"}, "properties": {"repobilityId": "e747f7459f9f762c", "scanner": "scanner-primary", "fingerprint": "90a8e71f2254ffe0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-188fa25213f303f8", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/multitable/sheets/${encodeURIComponent(sheetId)}/charts/${encodeURIComponent(chartId)} (apps/web/src/multitable/api/client.ts:1838)"}, "properties": {"repobilityId": "4bc8facbc3d16cc5", "scanner": "scanner-primary", "fingerprint": "188fa25213f303f8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b26d069a84d4d50d", "level": "error", "message": {"text": "Dangling fetch: GET /api/multitable/sheets/${encodeURIComponent(sheetId)}/dashboards (apps/web/src/multitable/api/client.ts:1875)"}, "properties": {"repobilityId": "790b56f1932dadee", "scanner": "scanner-primary", "fingerprint": "b26d069a84d4d50d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-31755df9af645583", "level": "error", "message": {"text": "Dangling fetch: POST /api/multitable/sheets/${encodeURIComponent(sheetId)}/dashboards (apps/web/src/multitable/api/client.ts:1881)"}, "properties": {"repobilityId": "e81522fa2c46e678", "scanner": "scanner-primary", "fingerprint": "31755df9af645583", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4c9c680b81d00882", "level": "error", "message": {"text": "Dangling fetch: GET http://${addr.address}:${addr.port}/api/plugins (packages/core-backend/tests/unit/server-lifecycle.test.ts:31)"}, "properties": {"repobilityId": "bcaf86a720814aac", "scanner": "scanner-primary", "fingerprint": "4c9c680b81d00882", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-92182603cfed82bf", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:8900/api/admin/users (packages/core-backend/src/routes/metrics-demo.ts:172)"}, "properties": {"repobilityId": "0d27ba1d3ca6e55d", "scanner": "scanner-primary", "fingerprint": "92182603cfed82bf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c073144bd0b8db7f", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:8900/api/user/profile (packages/core-backend/src/routes/metrics-demo.ts:177)"}, "properties": {"repobilityId": "3cc8855ba2a2c329", "scanner": "scanner-primary", "fingerprint": "c073144bd0b8db7f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b77664e8ee28d5e9", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:8900/api/admin/users (packages/core-backend/src/routes/metrics-demo.ts:184)"}, "properties": {"repobilityId": "8dc54ecae47187d9", "scanner": "scanner-primary", "fingerprint": "b77664e8ee28d5e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6f1895f99f815b88", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:8900/api/hr/employees (packages/core-backend/src/routes/metrics-demo.ts:191)"}, "properties": {"repobilityId": "e3ff2cd787c33eeb", "scanner": "scanner-primary", "fingerprint": "6f1895f99f815b88", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-684f0e83ba7e1558", "level": "note", "message": {"text": "Unused endpoint: GET "}, "properties": {"repobilityId": "a85caa03c3c545bd", "scanner": "scanner-primary", "fingerprint": "684f0e83ba7e1558", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dde3adb27bf7eebe", "level": "note", "message": {"text": "Unused endpoint: USE /api"}, "properties": {"repobilityId": "af404f2e013b656f", "scanner": "scanner-primary", "fingerprint": "dde3adb27bf7eebe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fbd66d11171d3c03", "level": "note", "message": {"text": "Unused endpoint: USE /api/attendance/import"}, "properties": {"repobilityId": "1d3917ff14893f00", "scanner": "scanner-primary", "fingerprint": "fbd66d11171d3c03", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4756b4c4da7d2088", "level": "note", "message": {"text": "Unused endpoint: GET /api/health"}, "properties": {"repobilityId": "daaa730134d67fb4", "scanner": "scanner-primary", "fingerprint": "4756b4c4da7d2088", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6eb452fbfb454d20", "level": "note", "message": {"text": "Unused endpoint: USE /api/auth"}, "properties": {"repobilityId": "43ca967c2e280668", "scanner": "scanner-primary", "fingerprint": "6eb452fbfb454d20", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9e25fe4b55b16f13", "level": "note", "message": {"text": "Unused endpoint: USE /api/kanban"}, "properties": {"repobilityId": "f7e8102db00992a4", "scanner": "scanner-primary", "fingerprint": "9e25fe4b55b16f13", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-327ee581f298a180", "level": "note", "message": {"text": "Unused endpoint: USE /api/workflow"}, "properties": {"repobilityId": "f74d3a01ff014e36", "scanner": "scanner-primary", "fingerprint": "327ee581f298a180", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6901ef493a961e94", "level": "note", "message": {"text": "Unused endpoint: USE /api/workflow-designer"}, "properties": {"repobilityId": "ce581e55940f46c6", "scanner": "scanner-primary", "fingerprint": "6901ef493a961e94", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-136b1fe70d2c3619", "level": "note", "message": {"text": "Unused endpoint: USE /api/plm-workbench"}, "properties": {"repobilityId": "39e9ba29f2543501", "scanner": "scanner-primary", "fingerprint": "136b1fe70d2c3619", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0ca8ba0e94aa43d4", "level": "note", "message": {"text": "Unused endpoint: USE /api/plm-embed"}, "properties": {"repobilityId": "c71da7ca82dbaedd", "scanner": "scanner-primary", "fingerprint": "0ca8ba0e94aa43d4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-af26eb6b0f2839c6", "level": "note", "message": {"text": "Unused endpoint: USE /api/federation/plm"}, "properties": {"repobilityId": "17e824942c457f8f", "scanner": "scanner-primary", "fingerprint": "af26eb6b0f2839c6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8571ee09bc3db67a", "level": "note", "message": {"text": "Unused endpoint: USE /api/federation/import/plm"}, "properties": {"repobilityId": "c5a8b2fc9c7b9f21", "scanner": "scanner-primary", "fingerprint": "8571ee09bc3db67a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8f53a97327fcad4a", "level": "note", "message": {"text": "Unused endpoint: POST /api/workflow-mock/echo"}, "properties": {"repobilityId": "bfaf588d8997f12d", "scanner": "scanner-primary", "fingerprint": "8f53a97327fcad4a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9e903021f9fa348d", "level": "note", "message": {"text": "Unused endpoint: GET /api/workflow-mock/status"}, "properties": {"repobilityId": "55dd5548c457cfab", "scanner": "scanner-primary", "fingerprint": "9e903021f9fa348d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b7aed31b642f495c", "level": "note", "message": {"text": "Unused endpoint: USE /api/univer-mock"}, "properties": {"repobilityId": "0077cc3139349f97", "scanner": "scanner-primary", "fingerprint": "b7aed31b642f495c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7e389f934842c879", "level": "note", "message": {"text": "Unused endpoint: USE /api/multitable"}, "properties": {"repobilityId": "b09b10765f3dfc38", "scanner": "scanner-primary", "fingerprint": "7e389f934842c879", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-891768534cc943a5", "level": "note", "message": {"text": "Unused endpoint: USE /api/univer-meta"}, "properties": {"repobilityId": "f3013840e4c68254", "scanner": "scanner-primary", "fingerprint": "891768534cc943a5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-631c43d5fd71eb12", "level": "note", "message": {"text": "Unused endpoint: USE /internal"}, "properties": {"repobilityId": "30f7037c8cbe9e74", "scanner": "scanner-primary", "fingerprint": "631c43d5fd71eb12", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-47221992508715c8", "level": "note", "message": {"text": "Unused endpoint: USE /internal/test"}, "properties": {"repobilityId": "f00be89b67f3ca78", "scanner": "scanner-primary", "fingerprint": "47221992508715c8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-64fae58db3632fb7", "level": "note", "message": {"text": "Unused endpoint: USE /api/cache-test"}, "properties": {"repobilityId": "7b75bf7e1aac9a34", "scanner": "scanner-primary", "fingerprint": "64fae58db3632fb7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-69c5f715415cb464", "level": "note", "message": {"text": "Unused endpoint: GET /api/sim-error"}, "properties": {"repobilityId": "b3d836360e49bede", "scanner": "scanner-primary", "fingerprint": "69c5f715415cb464", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ad3e75eeeb3debdf", "level": "note", "message": {"text": "Unused endpoint: USE /api/views"}, "properties": {"repobilityId": "1a434a7cbe854884", "scanner": "scanner-primary", "fingerprint": "ad3e75eeeb3debdf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d93a530ce10d47d9", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin"}, "properties": {"repobilityId": "df283f850644aefe", "scanner": "scanner-primary", "fingerprint": "d93a530ce10d47d9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0198bb20f630b0e2", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin/directory"}, "properties": {"repobilityId": "52350050b37bfe9f", "scanner": "scanner-primary", "fingerprint": "0198bb20f630b0e2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-84549350ff5406d8", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin/canary"}, "properties": {"repobilityId": "167e317cd93750fa", "scanner": "scanner-primary", "fingerprint": "84549350ff5406d8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-60011473f1352052", "level": "note", "message": {"text": "Unused endpoint: GET /api/v2/hello"}, "properties": {"repobilityId": "cb3cf4cec2fe0d9c", "scanner": "scanner-primary", "fingerprint": "60011473f1352052", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e07100320599f7e2", "level": "note", "message": {"text": "Unused endpoint: GET /api/v2/rpc-test"}, "properties": {"repobilityId": "68635e7a18107519", "scanner": "scanner-primary", "fingerprint": "e07100320599f7e2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3e91f42808613291", "level": "note", "message": {"text": "Unused endpoint: GET /api/plugins"}, "properties": {"repobilityId": "443956316beed331", "scanner": "scanner-primary", "fingerprint": "3e91f42808613291", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-40bd61272c1fc6dc", "level": "note", "message": {"text": "Unused endpoint: USE /api/platform/apps"}, "properties": {"repobilityId": "b808ff8848de900e", "scanner": "scanner-primary", "fingerprint": "40bd61272c1fc6dc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-66de898ab16de2ca", "level": "note", "message": {"text": "Unused endpoint: GET /internal/metrics"}, "properties": {"repobilityId": "f02fd80ce98afb97", "scanner": "scanner-primary", "fingerprint": "66de898ab16de2ca", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8f65a71db250415f", "level": "note", "message": {"text": "Unused endpoint: POST /safety/confirm"}, "properties": {"repobilityId": "d98f2003c47e474b", "scanner": "scanner-primary", "fingerprint": "8f65a71db250415f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6cbef3132fd29e0d", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/tables/:id"}, "properties": {"repobilityId": "e2853b9c083066ed", "scanner": "scanner-primary", "fingerprint": "6cbef3132fd29e0d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a4b62202fb1c6d67", "level": "note", "message": {"text": "Unused endpoint: GET /api/admin/role-delegation/summary"}, "properties": {"repobilityId": "7f160c767988c2a9", "scanner": "scanner-primary", "fingerprint": "a4b62202fb1c6d67", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-97de7b6f4ace1aca", "level": "note", "message": {"text": "Unused endpoint: GET /api/admin/role-delegation/departments"}, "properties": {"repobilityId": "767ccf287866438f", "scanner": "scanner-primary", "fingerprint": "97de7b6f4ace1aca", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0fd43892c9a375eb", "level": "note", "message": {"text": "Unused endpoint: GET /api/admin/role-delegation/member-groups"}, "properties": {"repobilityId": "09b4ade1ed480dda", "scanner": "scanner-primary", "fingerprint": "0fd43892c9a375eb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b43bcb4e09e229b4", "level": "note", "message": {"text": "Unused endpoint: POST /api/admin/role-delegation/member-groups"}, "properties": {"repobilityId": "54e6a5ced8791e58", "scanner": "scanner-primary", "fingerprint": "b43bcb4e09e229b4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-be936c1d670b4c68", "level": "note", "message": {"text": "Unused endpoint: GET /api/admin/role-delegation/member-groups/:groupId"}, "properties": {"repobilityId": "93cbbdce9b1123b3", "scanner": "scanner-primary", "fingerprint": "be936c1d670b4c68", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6dd2b97bfe027604", "level": "note", "message": {"text": "Unused endpoint: GET /api/admin/role-delegation/scope-templates"}, "properties": {"repobilityId": "b36f200178bc7a34", "scanner": "scanner-primary", "fingerprint": "6dd2b97bfe027604", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-019b497ab549fd78", "level": "note", "message": {"text": "Unused endpoint: POST /api/admin/role-delegation/scope-templates"}, "properties": {"repobilityId": "e718e88e8706355d", "scanner": "scanner-primary", "fingerprint": "019b497ab549fd78", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-434308bf9f9b84bf", "level": "note", "message": {"text": "Unused endpoint: GET /api/admin/role-delegation/scope-templates/:templateId"}, "properties": {"repobilityId": "b295192538bb66aa", "scanner": "scanner-primary", "fingerprint": "434308bf9f9b84bf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c4fb620197bea109", "level": "note", "message": {"text": "Unused endpoint: POST /api/admin/role-delegation/scope-templates/:templateId/departments/:action(assign|unassign)"}, "properties": {"repobilityId": "ecaeabe0ccb19888", "scanner": "scanner-primary", "fingerprint": "c4fb620197bea109", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a1540f32632d9f3b", "level": "note", "message": {"text": "Unused endpoint: POST /api/admin/role-delegation/scope-templates/:templateId/member-groups/:action(assign|unassign)"}, "properties": {"repobilityId": "0d4cd92a1a21e32c", "scanner": "scanner-primary", "fingerprint": "a1540f32632d9f3b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-db5241e1af860719", "level": "note", "message": {"text": "Unused endpoint: GET /api/admin/role-delegation/users/:userId/scopes"}, "properties": {"repobilityId": "a729f61c1400e42f", "scanner": "scanner-primary", "fingerprint": "db5241e1af860719", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-72a5210d113a8704", "level": "note", "message": {"text": "Unused endpoint: POST /api/admin/role-delegation/users/:userId/scopes/:action(assign|unassign)"}, "properties": {"repobilityId": "874796597164f866", "scanner": "scanner-primary", "fingerprint": "72a5210d113a8704", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fc5757afba388aa0", "level": "note", "message": {"text": "Unused endpoint: POST /api/admin/role-delegation/users/:userId/scope-groups/:action(assign|unassign)"}, "properties": {"repobilityId": "5c16235ce02a9d8e", "scanner": "scanner-primary", "fingerprint": "fc5757afba388aa0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-75cbd4dc364a41a8", "level": "note", "message": {"text": "Unused endpoint: POST /api/admin/role-delegation/users/:userId/member-groups/:action(assign|unassign)"}, "properties": {"repobilityId": "89ee3befc84dedc7", "scanner": "scanner-primary", "fingerprint": "75cbd4dc364a41a8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a51107d700dc43aa", "level": "note", "message": {"text": "Unused endpoint: POST /api/admin/role-delegation/users/:userId/scope-templates/apply"}, "properties": {"repobilityId": "66b253e837016b84", "scanner": "scanner-primary", "fingerprint": "a51107d700dc43aa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fff808a02157aa00", "level": "note", "message": {"text": "Unused endpoint: GET /api/admin/role-delegation/users"}, "properties": {"repobilityId": "585122257a2d0e0e", "scanner": "scanner-primary", "fingerprint": "fff808a02157aa00", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0ae020aa1ca6f883", "level": "note", "message": {"text": "Unused endpoint: GET /api/admin/role-delegation/users/:userId/access"}, "properties": {"repobilityId": "20bf1e73730d9af4", "scanner": "scanner-primary", "fingerprint": "0ae020aa1ca6f883", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f508a59ef3ad2ee4", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/admin/role-delegation/users/:userId/namespaces/:namespace/admission"}, "properties": {"repobilityId": "381641711bea94a1", "scanner": "scanner-primary", "fingerprint": "f508a59ef3ad2ee4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}