{"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-431b79f026e22a46", "name": "Stray `console.log` in TS/JS \u2014 sw.js:223", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sw.js:223"}, "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-b50a1d9d74d2c893", "name": "Stray `console.log` in TS/JS \u2014 boot.js:121", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 boot.js:121"}, "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-ffdbb5b6a6a95db4", "name": "Icon-only button without accessible name \u2014 main.js:1819", "shortDescription": {"text": "Icon-only button without accessible name \u2014 main.js:1819"}, "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-e08861d399376042", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify_je_fix.js:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify_je_fix.js:68"}, "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-3cbec75c36b19e67", "name": "Stray `console.log` in TS/JS \u2014 scripts/diag_je_rest.js:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/diag_je_rest.js: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-26c97eca0f80e2c4", "name": "Stray `console.log` in TS/JS \u2014 scripts/static-server.js:110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/static-server.js:110"}, "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-cedd296d5a10a602", "name": "Stray `console.log` in TS/JS \u2014 scripts/leave_spoof_test.js:133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/leave_spoof_test.js:133"}, "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-0f425d57474aed47", "name": "Stray `console.log` in TS/JS \u2014 scripts/accounting_integrity_smoke.js:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/accounting_integrity_smoke.js:89"}, "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-7108777ec0328dc5", "name": "Stray `console.log` in TS/JS \u2014 scripts/diag_je_rls.js:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/diag_je_rls.js:81"}, "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-1f8065d15d0bb029", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill_orphan_journals.js:139", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill_orphan_journals.js:139"}, "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-d0af454c06e7552a", "name": "Icon-only button without accessible name \u2014 modules/quotations.js:640", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/quotations.js:640"}, "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-b3dc747a3115eafe", "name": "Icon-only button without accessible name \u2014 modules/products.js:1870", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/products.js:1870"}, "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-3a23594a441199e6", "name": "Icon-only button without accessible name \u2014 modules/loyalty.js:429", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/loyalty.js:429"}, "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-c14be8a10fa08317", "name": "Icon-only button without accessible name \u2014 modules/time_clock.js:1297", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/time_clock.js:1297"}, "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-3f029e7dac66b906", "name": "Icon-only button without accessible name \u2014 modules/service_form.js:836", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/service_form.js:836"}, "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-42aaa0d5e63d12df", "name": "Icon-only button without accessible name \u2014 modules/staff.js:223", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/staff.js:223"}, "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-573d2a71b7a0c3b9", "name": "Icon-only button without accessible name \u2014 modules/service_equipment.js:165", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/service_equipment.js:165"}, "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-13abfbae0ef4b2cc", "name": "TODO/FIXME marker in shipping code \u2014 modules/error_codes.js:267", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 modules/error_codes.js:267"}, "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-c4b2033313dd975e", "name": "Icon-only button without accessible name \u2014 modules/stock_count.js:271", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/stock_count.js:271"}, "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-57fef4dc7bfe9af1", "name": "Icon-only button without accessible name \u2014 modules/receipts.js:1019", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/receipts.js:1019"}, "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-95feb2de4a0f58d1", "name": "Icon-only button without accessible name \u2014 modules/customer_dashboard.js:423", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/customer_dashboard.js:423"}, "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-adec0e5de7f7f4ff", "name": "Icon-only button without accessible name \u2014 modules/delivery_invoices.js:873", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/delivery_invoices.js:873"}, "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-8a46c82a311bfce0", "name": "Icon-only button without accessible name \u2014 modules/utils.js:240", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/utils.js:240"}, "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-bb2bc49721325a49", "name": "Icon-only button without accessible name \u2014 modules/solar.js:299", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/solar.js:299"}, "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-fc77739a25d076ca", "name": "Icon-only button without accessible name \u2014 modules/quote_templates.js:190", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/quote_templates.js:190"}, "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-bec3906fbc9c6d3d", "name": "Icon-only button without accessible name \u2014 modules/ac_install.js:892", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/ac_install.js:892"}, "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-430d66cc139ca1ed", "name": "Icon-only button without accessible name \u2014 modules/expenses.js:678", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/expenses.js:678"}, "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-891fbba2d70e0971", "name": "Icon-only button without accessible name \u2014 modules/stock_in_wizard.js:306", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/stock_in_wizard.js:306"}, "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-8aa4e98b6cb1ce0f", "name": "Stray `console.log` in TS/JS \u2014 modules/stock_in_wizard.js:181", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 modules/stock_in_wizard.js:181"}, "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-00a08473f964c0c9", "name": "Icon-only button without accessible name \u2014 modules/serials.js:356", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/serials.js:356"}, "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-7c6452e931029508", "name": "Icon-only button without accessible name \u2014 modules/pos.js:370", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/pos.js:370"}, "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-b8181641e48bf2be", "name": "Icon-only button without accessible name \u2014 modules/settings/permissions.js:9", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/settings/permissions.js:9"}, "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-31f456417db3ecad", "name": "Icon-only button without accessible name \u2014 modules/settings/payment.js:49", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/settings/payment.js:49"}, "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-982eb8f3dcc5a330", "name": "Icon-only button without accessible name \u2014 modules/settings/pages.js:19", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/settings/pages.js:19"}, "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-2c992f86b5235e23", "name": "Icon-only button without accessible name \u2014 modules/settings/users.js:12", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/settings/users.js:12"}, "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-7f3378b640ff7529", "name": "Icon-only button without accessible name \u2014 modules/settings/ac-catalog.js:146", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/settings/ac-catalog.js:146"}, "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-d7ad59dad1978a3b", "name": "Icon-only button without accessible name \u2014 modules/accounting/journals.js:307", "shortDescription": {"text": "Icon-only button without accessible name \u2014 modules/accounting/journals.js:307"}, "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-d63da3583b14afc0", "name": "Dockerfile runs as root: Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2f3178ddda7c2897", "name": "Docker base image is tag-pinned but not digest-pinned: nginx:alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: nginx:alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c8ca75976f46498c", "name": "Insecure pattern 'direct_innerhtml_assignment' in boot.js:33", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in boot.js:33"}, "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-b60e5645e656284f", "name": "Insecure pattern 'direct_innerhtml_assignment' in ai-chat-widget.js:278", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-chat-widget.js:278"}, "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-3ee197fc467923c0", "name": "Insecure pattern 'direct_innerhtml_assignment' in share.html:75", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in share.html:75"}, "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-e47ef53a55aa7863", "name": "Insecure pattern 'document_write' in main.js:4081", "shortDescription": {"text": "Insecure pattern 'document_write' in main.js:4081"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0b7af8407cf13ed8", "name": "Insecure pattern 'direct_innerhtml_assignment' in main.js:447", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in main.js:447"}, "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-f9d4615984047097", "name": "Insecure pattern 'cors_wildcard' in functions/api/send-otp.js:53", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in functions/api/send-otp.js:53"}, "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-e3d694cff0b3aacb", "name": "Insecure pattern 'cors_wildcard' in functions/api/verify-slip.js:75", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in functions/api/verify-slip.js:75"}, "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-c0b698ced0486271", "name": "Insecure pattern 'cors_wildcard' in functions/api/verify-otp.js:6", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in functions/api/verify-otp.js:6"}, "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-9e32b5999b4c593f", "name": "Insecure pattern 'cors_wildcard' in functions/api/parse-receipt.js:21", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in functions/api/parse-receipt.js:21"}, "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-8a3227193c3c90cd", "name": "Insecure pattern 'cors_wildcard' in functions/api/line-notify.js:12", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in functions/api/line-notify.js:12"}, "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-757a69d1656443ab", "name": "Insecure pattern 'cors_wildcard' in functions/api/ai-assistant.js:235", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in functions/api/ai-assistant.js:235"}, "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-5e918bee5bd926f2", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/permission_matrix.js:42", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/permission_matrix.js:42"}, "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-efb73ed29c378fc5", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/leave_management.js:1595", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/leave_management.js:1595"}, "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-5478225f36488c4e", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/payroll_overview.js:33", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/payroll_overview.js:33"}, "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-c5ee86b2f670a640", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/line_notify.js:171", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/line_notify.js:171"}, "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-a90311b00c19d2dd", "name": "Insecure pattern 'document_write' in modules/quotations.js:1187", "shortDescription": {"text": "Insecure pattern 'document_write' in modules/quotations.js:1187"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c6a08ce0aba6432b", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/quotations.js:173", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/quotations.js:173"}, "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-d3cb37851737f0f7", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/error_codes_shared.js:47", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/error_codes_shared.js:47"}, "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-d9fa7bb2854011d5", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/service_jobs.js:96", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/service_jobs.js:96"}, "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-d7c56fa4c472b2a3", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/income_overview.js:47", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/income_overview.js:47"}, "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-2da48eb1d5f662a1", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/refunds.js:116", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/refunds.js:116"}, "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-825d050fde695990", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/btu_calculator.js:34", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/btu_calculator.js:34"}, "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-cd3a51267bcd0d14", "name": "Insecure pattern 'document_write' in modules/products.js:1488", "shortDescription": {"text": "Insecure pattern 'document_write' in modules/products.js:1488"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4c486f45a7701fab", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/loyalty.js:437", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/loyalty.js:437"}, "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-ffa5ded596b6ea57", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/time_clock.js:763", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/time_clock.js:763"}, "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-8505185a650e46f9", "name": "Insecure pattern 'document_write' in modules/service_form.js:1032", "shortDescription": {"text": "Insecure pattern 'document_write' in modules/service_form.js:1032"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-682d49a47e4c0eea", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/service_form.js:110", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/service_form.js:110"}, "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-5b47b0f9889353d9", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/staff.js:23", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/staff.js:23"}, "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-9f42023e660398cb", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/profit_by_product.js:95", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/profit_by_product.js:95"}, "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-4a659ddb67f89a0c", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/stock_value.js:97", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/stock_value.js:97"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fbb96d6e47013cd0", "name": "Insecure pattern 'document_write' in modules/hr_forms.js:267", "shortDescription": {"text": "Insecure pattern 'document_write' in modules/hr_forms.js:267"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e6dfce31807fa590", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/hr_forms.js:278", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/hr_forms.js:278"}, "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-e9eb1c8061a2939d", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/service_equipment.js:151", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/service_equipment.js:151"}, "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-98ea5f8e3f967c1a", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/service_request.js:63", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/service_request.js:63"}, "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-09a2ea28ecc98dbf", "name": "Insecure pattern 'document_write' in modules/hr_overview.js:2693", "shortDescription": {"text": "Insecure pattern 'document_write' in modules/hr_overview.js:2693"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9c96cf90d4e72ea3", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/hr_overview.js:2126", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/hr_overview.js:2126"}, "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-0ab3b835b2660369", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/ai_sales.js:351", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/ai_sales.js:351"}, "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-e12b630abe5d13e2", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/cash_recon.js:120", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/cash_recon.js:120"}, "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-2bd6fbf39970dd4e", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/departments.js:18", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/departments.js:18"}, "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-2809e1c47546534c", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/product_detail_modal.js:146", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/product_detail_modal.js:146"}, "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-e3a25454cfa68d3a", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/stock_count.js:39", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/stock_count.js:39"}, "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-8f5e050f5200c1bc", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/share_doc.js:26", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/share_doc.js:26"}, "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-3fdb3ab74854eb24", "name": "Insecure pattern 'document_write' in modules/thermal_printer.js:247", "shortDescription": {"text": "Insecure pattern 'document_write' in modules/thermal_printer.js:247"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e443545ba6553d9e", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/sales.js:46", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/sales.js:46"}, "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-7ab002126751f0ac", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/dashboard.js:478", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/dashboard.js:478"}, "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-2352c25156b76ecc", "name": "Insecure pattern 'document_write' in modules/receipts.js:974", "shortDescription": {"text": "Insecure pattern 'document_write' in modules/receipts.js:974"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6803c8001033b051", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/receipts.js:147", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/receipts.js:147"}, "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-44439adcf255f8ad", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/customer_dashboard.js:315", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/customer_dashboard.js:315"}, "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-8da7f419060bcecd", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/top_customers.js:102", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/top_customers.js:102"}, "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-a0d75c4dfa7676ad", "name": "Insecure pattern 'document_write' in modules/delivery_invoices.js:692", "shortDescription": {"text": "Insecure pattern 'document_write' in modules/delivery_invoices.js:692"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b37e7ed1ac2d9555", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/delivery_invoices.js:95", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/delivery_invoices.js:95"}, "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-8c09685f76d01059", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/tasks.js:32", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/tasks.js:32"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5472f05d503a7030", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/utils.js:234", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/utils.js:234"}, "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-410069f04c66b772", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/sales_heatmap.js:98", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/sales_heatmap.js:98"}, "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-e7a0fd3a08afc0f8", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/audit_log.js:44", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/audit_log.js:44"}, "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-c79948f4b0616575", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/birthdays.js:38", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/birthdays.js:38"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-374416b4941c0590", "name": "Insecure pattern 'document_write' in modules/payroll.js:1807", "shortDescription": {"text": "Insecure pattern 'document_write' in modules/payroll.js:1807"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7e753b421cc27d22", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/payroll.js:288", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/payroll.js:288"}, "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-79d4151a6a69917e", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/solar.js:85", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/solar.js:85"}, "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-e9bb5c97709cea4f", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/ac_shop.js:236", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/ac_shop.js:236"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6dca7aeddd7c0916", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/warranty_report.js:24", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/warranty_report.js:24"}, "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-261dfe1344404228", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/service_reconcile.js:248", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/service_reconcile.js:248"}, "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-a53733fca6085f0d", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/stock_movements.js:257", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/stock_movements.js:257"}, "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-58bb351e60554b53", "name": "Insecure pattern 'document_write' in modules/ac_install.js:1087", "shortDescription": {"text": "Insecure pattern 'document_write' in modules/ac_install.js:1087"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-17da095a9171eb2e", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/ac_install.js:123", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/ac_install.js:123"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-768a75170d73a76c", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/calendar.js:496", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/calendar.js:496"}, "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-85cd02a91663cb24", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/expenses.js:93", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/expenses.js:93"}, "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-293377ba261c544f", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/recurring_expenses.js:34", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/recurring_expenses.js:34"}, "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-b7258e949f427f9c", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/team_command_center.js:814", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/team_command_center.js:814"}, "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-1863190a5416aa97", "name": "Insecure pattern 'insert_adjacent_html' in modules/team_command_center.js:945", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in modules/team_command_center.js:945"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6b1d8edea1d622e0", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/stock_in_wizard.js:39", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/stock_in_wizard.js:39"}, "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-e009ddd7bec6b596", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/serials.js:37", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/serials.js:37"}, "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-2dbbc49ec2f5482b", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/credit_tracker.js:189", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/credit_tracker.js:189"}, "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-9f6062ede8726685", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/profit_report.js:11", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/profit_report.js:11"}, "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-2171d37a95523478", "name": "Insecure pattern 'document_write' in modules/doc-utils.js:216", "shortDescription": {"text": "Insecure pattern 'document_write' in modules/doc-utils.js:216"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-12e990935a55bc84", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/stock_reconcile_report.js:245", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/stock_reconcile_report.js:245"}, "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-2b34348847b4f53f", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/expense_overview.js:40", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/expense_overview.js:40"}, "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-db1d02bc5192de27", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/customers.js:74", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/customers.js:74"}, "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-5a4f79e607af6cd8", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/auth.js:107", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/auth.js:107"}, "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-bceab1ba1f8f7cee", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/help_tutor.js:443", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/help_tutor.js:443"}, "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-07625f1075e49619", "name": "Insecure pattern 'insert_adjacent_html' in modules/help_tutor.js:667", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in modules/help_tutor.js:667"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6b354341d696806e", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/pos.js:192", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/pos.js:192"}, "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-b323061a949e7205", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/dead_stock.js:80", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/dead_stock.js:80"}, "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-19508517dcd5fe70", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/ac-spec-editor.js:78", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/ac-spec-editor.js:78"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5e5d8fe88b16885b", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/store.js:17", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/store.js:17"}, "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-d177f5e551cee55c", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/permissions.js:6", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/permissions.js:6"}, "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-76665987a6d9490a", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/payment.js:46", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/payment.js:46"}, "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-a3e17a792bfa291e", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/pages.js:16", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/pages.js:16"}, "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-3165f07719d33cf8", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/menu.js:20", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/menu.js:20"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0d2ef09ca3592c74", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/ac-stock-form.js:71", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/ac-stock-form.js:71"}, "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-3fb5cac971c24d5d", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/users.js:9", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/users.js:9"}, "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-ab57a05aae225f90", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/ac-catalog.js:143", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/ac-catalog.js:143"}, "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-bc0d6183c32defee", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/export_bundle.js:272", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/export_bundle.js:272"}, "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-0cd82fd96a305665", "name": "Insecure pattern 'document_write' in modules/accounting/balance_sheet.js:325", "shortDescription": {"text": "Insecure pattern 'document_write' in modules/accounting/balance_sheet.js:325"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b92e58ff6cff1249", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/balance_sheet.js:129", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/balance_sheet.js:129"}, "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-a65ec7f04c36ed68", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/opening_balance.js:80", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/opening_balance.js:80"}, "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-a85bee00fa9537af", "name": "Insecure pattern 'document_write' in modules/accounting/profit_loss.js:564", "shortDescription": {"text": "Insecure pattern 'document_write' in modules/accounting/profit_loss.js:564"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-98914e4c83249dd2", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/profit_loss.js:192", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/profit_loss.js:192"}, "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-6b47f6253c46da65", "name": "Insecure pattern 'document_write' in modules/accounting/trial_balance.js:426", "shortDescription": {"text": "Insecure pattern 'document_write' in modules/accounting/trial_balance.js:426"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-abb781d0fd91122b", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/trial_balance.js:163", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/trial_balance.js:163"}, "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-324775e27ef93bf7", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/journals.js:116", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/journals.js:116"}, "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-cfc2ff5ed4800ee3", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/periods.js:260", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/periods.js:260"}, "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-f564991ff99067c9", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/backfill.js:67", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/backfill.js:67"}, "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-a69f594a6cd5943a", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/journal_form.js:46", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/journal_form.js:46"}, "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-995e59d10a64e005", "name": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/coa.js:34", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/coa.js:34"}, "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-1d7e834080dbebed", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-cc7949b8369e2cb6", "name": "Very large file: main.js (4888 lines)", "shortDescription": {"text": "Very large file: main.js (4888 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-830031a730d3a8fb", "name": "Very large file: tests/hr_overview.test.js (1349 lines)", "shortDescription": {"text": "Very large file: tests/hr_overview.test.js (1349 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-33118845d1a2cafc", "name": "Very large file: tests/leave_management.test.js (2123 lines)", "shortDescription": {"text": "Very large file: tests/leave_management.test.js (2123 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-8377c00bf296fafa", "name": "Very large file: modules/leave_management.js (2602 lines)", "shortDescription": {"text": "Very large file: modules/leave_management.js (2602 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-e1c4d89f0468ab46", "name": "Very large file: modules/quotations.js (1551 lines)", "shortDescription": {"text": "Very large file: modules/quotations.js (1551 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-c95c47ac1d9788fc", "name": "Very large file: modules/products.js (2574 lines)", "shortDescription": {"text": "Very large file: modules/products.js (2574 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-24049c0f127818cf", "name": "Very large file: modules/time_clock.js (1382 lines)", "shortDescription": {"text": "Very large file: modules/time_clock.js (1382 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-2d66d1fbd6a6b47a", "name": "Very large file: modules/service_form.js (1134 lines)", "shortDescription": {"text": "Very large file: modules/service_form.js (1134 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-e23ed35ca68e8a53", "name": "Very large file: modules/hr_forms.js (1030 lines)", "shortDescription": {"text": "Very large file: modules/hr_forms.js (1030 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-284b63cf7e2e5d08", "name": "Very large file: modules/hr_overview.js (2842 lines)", "shortDescription": {"text": "Very large file: modules/hr_overview.js (2842 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-5371f9451ac8b452", "name": "Very large file: modules/ai_sales.js (916 lines)", "shortDescription": {"text": "Very large file: modules/ai_sales.js (916 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-fa00f9735ecdfc6b", "name": "Very large file: modules/dashboard.js (1298 lines)", "shortDescription": {"text": "Very large file: modules/dashboard.js (1298 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-43580d59f6d3a329", "name": "Very large file: modules/receipts.js (1260 lines)", "shortDescription": {"text": "Very large file: modules/receipts.js (1260 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-a101ba70c0e8439c", "name": "Very large file: modules/customer_dashboard.js (1184 lines)", "shortDescription": {"text": "Very large file: modules/customer_dashboard.js (1184 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-9ec7767b5a1caca7", "name": "Very large file: modules/delivery_invoices.js (984 lines)", "shortDescription": {"text": "Very large file: modules/delivery_invoices.js (984 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-6c3407bf13f5c983", "name": "Very large file: modules/payroll.js (2197 lines)", "shortDescription": {"text": "Very large file: modules/payroll.js (2197 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-a5da98ddea68cb94", "name": "Very large file: modules/solar.js (870 lines)", "shortDescription": {"text": "Very large file: modules/solar.js (870 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-1fcead0f89b49335", "name": "Very large file: modules/ac_install.js (1381 lines)", "shortDescription": {"text": "Very large file: modules/ac_install.js (1381 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-49fba639c1ec0b10", "name": "Very large file: modules/expenses.js (1059 lines)", "shortDescription": {"text": "Very large file: modules/expenses.js (1059 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-7a7fd0ba8df8af9e", "name": "Very large file: modules/team_command_center.js (978 lines)", "shortDescription": {"text": "Very large file: modules/team_command_center.js (978 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-dc514b852a283c99", "name": "Very large file: modules/pos.js (1650 lines)", "shortDescription": {"text": "Very large file: modules/pos.js (1650 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-faccb9061e9b52a0", "name": "No README detected", "shortDescription": {"text": "No README detected"}, "fullDescription": {"text": "No README file was found. Generated repos without README context are hard to operate, validate, or safely hand off."}, "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 138 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 214 placeholder/mock markers across 55 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, operator-readme. 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, operator-readme. 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-0208e1bcbd872b2f", "name": "Agent authority lacks a verifier contract: SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e999dfb1071d2929", "name": "Agent authority lacks a verifier contract: .claude/skills/boonsook-review/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/boonsook-review/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f3f99a7d0037d5bc", "name": "Commented-code block (176 lines) in sw.js:1", "shortDescription": {"text": "Commented-code block (176 lines) in sw.js: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-3e9932bd4e05f82b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 sw.js:291", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 sw.js:291"}, "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-d12b79fa46f402d0", "name": "Commented-code block (6 lines) in boot.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in boot.js: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-1a41cf8386d86cc9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 boot.js:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 boot.js:55"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5100698bf40809f3", "name": "Commented-code block (6 lines) in eslint.config.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in eslint.config.js: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-7e85bb33217dcf2a", "name": "Commented-code block (12 lines) in ai-chat-widget.js:4", "shortDescription": {"text": "Commented-code block (12 lines) in ai-chat-widget.js: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-b51fb784050ae165", "name": "Commented-code block (5 lines) in selfheal.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in selfheal.js: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-facbfb3d8d5f2019", "name": "Legacy-named symbol `bsk_cart_v2` in main.js:271", "shortDescription": {"text": "Legacy-named symbol `bsk_cart_v2` in main.js:271"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7fe8921858fc95b3", "name": "Commented-code block (6 lines) in main.js:36", "shortDescription": {"text": "Commented-code block (6 lines) in main.js:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-61887ff33e1b0a0f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 main.js:1212", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 main.js:1212"}, "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-7182dde012bfedc2", "name": "Commented-code block (5 lines) in tests/air_catalog_quotation_draft.test.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in tests/air_catalog_quotation_draft.test.js: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-b9b76acb66b3acb4", "name": "Commented-code block (11 lines) in tests/accounting_readiness_service_scope.test.js:4", "shortDescription": {"text": "Commented-code block (11 lines) in tests/accounting_readiness_service_scope.test.js: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-53266ccf43385e7a", "name": "Commented-code block (11 lines) in tests/otp_verify_guard.test.js:3", "shortDescription": {"text": "Commented-code block (11 lines) in tests/otp_verify_guard.test.js: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-cde709132c5586e6", "name": "Commented-code block (7 lines) in tests/dashboard_recent_txn.test.js:4", "shortDescription": {"text": "Commented-code block (7 lines) in tests/dashboard_recent_txn.test.js: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-c7dc0e2cdf43ae71", "name": "Commented-code block (6 lines) in tests/branding_sync_app_logo.test.js:8", "shortDescription": {"text": "Commented-code block (6 lines) in tests/branding_sync_app_logo.test.js: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-bc08c6f444a9493c", "name": "Commented-code block (8 lines) in tests/pos_loyalty_auto_earn.test.js:7", "shortDescription": {"text": "Commented-code block (8 lines) in tests/pos_loyalty_auto_earn.test.js:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5626fd2d735994cf", "name": "Commented-code block (6 lines) in tests/leave_management.test.js:1631", "shortDescription": {"text": "Commented-code block (6 lines) in tests/leave_management.test.js:1631"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5c0fc84eaf6a23b1", "name": "Commented-code block (10 lines) in tests/service_job_block_save_guard.test.js:4", "shortDescription": {"text": "Commented-code block (10 lines) in tests/service_job_block_save_guard.test.js: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-12fab63f0b5df800", "name": "Commented-code block (9 lines) in tests/quick_pay_guard.test.js:3", "shortDescription": {"text": "Commented-code block (9 lines) in tests/quick_pay_guard.test.js: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-a5329d7a2fbfe94d", "name": "Commented-code block (8 lines) in tests/share_doc.test.js:7", "shortDescription": {"text": "Commented-code block (8 lines) in tests/share_doc.test.js:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e8e7f706dd7b7ff4", "name": "Commented-code block (6 lines) in tests/expenses_autokey_auth.test.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in tests/expenses_autokey_auth.test.js: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-d025e7c78535ea84", "name": "Commented-code block (6 lines) in tests/multi_payment_guard.test.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in tests/multi_payment_guard.test.js: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-f670edcbc0b4fc26", "name": "Commented-code block (7 lines) in tests/service_request_total_cost_guard.test.js:4", "shortDescription": {"text": "Commented-code block (7 lines) in tests/service_request_total_cost_guard.test.js: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-e501e9d8e8c6fa98", "name": "Commented-code block (7 lines) in tests/ac_stock_manager_guard.test.js:4", "shortDescription": {"text": "Commented-code block (7 lines) in tests/ac_stock_manager_guard.test.js: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-f25757fa5d8b43f9", "name": "Commented-code block (7 lines) in tests/loyalty_settings_admin_guard.test.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in tests/loyalty_settings_admin_guard.test.js: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-9f6c9072d4f3f2f0", "name": "Commented-code block (6 lines) in tests/di_delete_receipt_precheck_guard.test.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in tests/di_delete_receipt_precheck_guard.test.js: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-95a99ebb852dba8b", "name": "Commented-code block (6 lines) in tests/auth_recovery_graceful_guard.test.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in tests/auth_recovery_graceful_guard.test.js: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-1c1cc2d5e71a3a7d", "name": "Commented-code block (8 lines) in tests/income_overview_guard.test.js:4", "shortDescription": {"text": "Commented-code block (8 lines) in tests/income_overview_guard.test.js: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-222cf83457a2bd7f", "name": "Commented-code block (7 lines) in tests/stock_reconcile_report_guard.test.js:4", "shortDescription": {"text": "Commented-code block (7 lines) in tests/stock_reconcile_report_guard.test.js: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-8b8d7a92baf56b84", "name": "Commented-code block (5 lines) in tests/loyalty_history_modal_listener.test.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in tests/loyalty_history_modal_listener.test.js: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-215efd92a95814f0", "name": "Commented-code block (5 lines) in tests/pos_gross_profit.test.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in tests/pos_gross_profit.test.js: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-ca768ac95c0cd47b", "name": "Commented-code block (6 lines) in tests/hr_gps_self_clock_guard.test.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in tests/hr_gps_self_clock_guard.test.js: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-2f3da36db7e0dc34", "name": "Commented-code block (14 lines) in tests/hr_forms_guard.test.js:4", "shortDescription": {"text": "Commented-code block (14 lines) in tests/hr_forms_guard.test.js: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-63d331549fab5f17", "name": "Commented-code block (13 lines) in tests/dashboard_ui_guard.test.js:4", "shortDescription": {"text": "Commented-code block (13 lines) in tests/dashboard_ui_guard.test.js: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-708d25d52d13a34c", "name": "Commented-code block (7 lines) in tests/mobile_row_layout.test.js:4", "shortDescription": {"text": "Commented-code block (7 lines) in tests/mobile_row_layout.test.js: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-ad1757843a8cd466", "name": "Commented-code block (8 lines) in tests/air_quotation_save_linkback.test.js:4", "shortDescription": {"text": "Commented-code block (8 lines) in tests/air_quotation_save_linkback.test.js: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-a1b00fd8d031852c", "name": "Commented-code block (5 lines) in tests/dashboard_income_guard.test.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in tests/dashboard_income_guard.test.js: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-e41823cf0b66e19c", "name": "Commented-code block (5 lines) in tests/stock_mirror_canonical_guard.test.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in tests/stock_mirror_canonical_guard.test.js: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-340830e75c95836e", "name": "Commented-code block (8 lines) in tests/ui_theme_guard.test.js:4", "shortDescription": {"text": "Commented-code block (8 lines) in tests/ui_theme_guard.test.js: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-5bed745625b0432f", "name": "Commented-code block (6 lines) in tests/service_job_equipment_guard.test.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in tests/service_job_equipment_guard.test.js: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-b581d88631e0805d", "name": "Commented-code block (6 lines) in tests/store_settings_sync_guard.test.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in tests/store_settings_sync_guard.test.js: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-ac611f77a7c69188", "name": "Commented-code block (6 lines) in tests/expense_delete_void_jv_guard.test.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in tests/expense_delete_void_jv_guard.test.js: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-089d07a0c854b9d4", "name": "Commented-code block (8 lines) in tests/opening_balance_guard.test.js:5", "shortDescription": {"text": "Commented-code block (8 lines) in tests/opening_balance_guard.test.js: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-a86071e6c60e9190", "name": "Commented-code block (6 lines) in tests/revert_stock_cas_guard.test.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in tests/revert_stock_cas_guard.test.js: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-90f6eff93b8c8612", "name": "Commented-code block (6 lines) in tests/lazy_import_cache_bust.test.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in tests/lazy_import_cache_bust.test.js: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-83c68ce15989010a", "name": "Commented-code block (7 lines) in tests/effective_date_guard.test.js:1", "shortDescription": {"text": "Commented-code block (7 lines) in tests/effective_date_guard.test.js: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-d4d53fa1f1f28db3", "name": "Commented-code block (7 lines) in tests/branding_update_app_logos.test.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in tests/branding_update_app_logos.test.js: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-67cb6e34af04a0ea", "name": "Commented-code block (9 lines) in tests/apply_stock_movement_floor.test.js:4", "shortDescription": {"text": "Commented-code block (9 lines) in tests/apply_stock_movement_floor.test.js: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-22132da6c7ff0ab6", "name": "Commented-code block (7 lines) in tests/transfer_rpc_wiring_guard.test.js:4", "shortDescription": {"text": "Commented-code block (7 lines) in tests/transfer_rpc_wiring_guard.test.js: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-5bac1f3e6875e134", "name": "Commented-code block (6 lines) in tests/verify_slip_auth.test.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in tests/verify_slip_auth.test.js: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-b4a627e2186ef759", "name": "Commented-code block (5 lines) in tests/accounting_integrity_panel.test.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in tests/accounting_integrity_panel.test.js: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-028e44d186904f8a", "name": "Commented-code block (8 lines) in tests/service_reconcile_guard.test.js:4", "shortDescription": {"text": "Commented-code block (8 lines) in tests/service_reconcile_guard.test.js: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-bc0a66f7e684deb4", "name": "Commented-code block (7 lines) in tests/dashboard_readonly_guard.test.js:4", "shortDescription": {"text": "Commented-code block (7 lines) in tests/dashboard_readonly_guard.test.js: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-9fdfdcf7eec7f84b", "name": "Commented-code block (6 lines) in tests/loyalty_reverse_sale.test.js:13", "shortDescription": {"text": "Commented-code block (6 lines) in tests/loyalty_reverse_sale.test.js: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-60e69e51fca329cb", "name": "Commented-code block (5 lines) in tests/stock_movement_type_guard.test.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in tests/stock_movement_type_guard.test.js: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-f6a2a44fe43221ac", "name": "Commented-code block (6 lines) in tests/topbar_notif_profile.test.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in tests/topbar_notif_profile.test.js: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-6e7e3ba3f6cf1783", "name": "Commented-code block (8 lines) in tests/cashbasis_revenue_guard.test.js:4", "shortDescription": {"text": "Commented-code block (8 lines) in tests/cashbasis_revenue_guard.test.js: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-e3130c86c8d9804a", "name": "Commented-code block (9 lines) in tests/mobile_layout_guard.test.js:4", "shortDescription": {"text": "Commented-code block (9 lines) in tests/mobile_layout_guard.test.js: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-62d0923f39b5b073", "name": "Commented-code block (5 lines) in tests/receipt_acct_trace_refresh_guard.test.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in tests/receipt_acct_trace_refresh_guard.test.js: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-cac5af4a1d89c0ac", "name": "Commented-code block (6 lines) in tests/convert_inflight_guard.test.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in tests/convert_inflight_guard.test.js: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-dc8dc94ebf4b1372", "name": "Commented-code block (9 lines) in tests/technician_stock_access_guard.test.js:4", "shortDescription": {"text": "Commented-code block (9 lines) in tests/technician_stock_access_guard.test.js: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-a71d2eb55e0a28dc", "name": "Commented-code block (5 lines) in tests/service_job_precheck_aggregate_guard.test.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in tests/service_job_precheck_aggregate_guard.test.js: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-1771910cdfd3be28", "name": "Commented-code block (11 lines) in tests/payroll_pay_race_guard.test.js:4", "shortDescription": {"text": "Commented-code block (11 lines) in tests/payroll_pay_race_guard.test.js: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-bee769eb5d87a806", "name": "Commented-code block (9 lines) in tests/stock_nonneg_guard.test.js:4", "shortDescription": {"text": "Commented-code block (9 lines) in tests/stock_nonneg_guard.test.js: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-f906ed11118bd2f6", "name": "Commented-code block (7 lines) in tests/loyalty_calc_earn_points.test.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in tests/loyalty_calc_earn_points.test.js: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-a45a4a259a9899e5", "name": "Commented-code block (6 lines) in tests/backfill_deleted_guard.test.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in tests/backfill_deleted_guard.test.js: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-ec1749768c24fa10", "name": "Commented-code block (7 lines) in tests/xss_regression.test.js:4", "shortDescription": {"text": "Commented-code block (7 lines) in tests/xss_regression.test.js: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-cd72d691fecab10a", "name": "Commented-code block (11 lines) in tests/payroll_partc_guard.test.js:4", "shortDescription": {"text": "Commented-code block (11 lines) in tests/payroll_partc_guard.test.js: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-1a7ae5584020a12f", "name": "Commented-code block (9 lines) in tests/payroll_partb_guard.test.js:4", "shortDescription": {"text": "Commented-code block (9 lines) in tests/payroll_partb_guard.test.js: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-58487677e5bbf96b", "name": "Legacy-named symbol `too_old` in tests/journal_date_guard.test.js:12", "shortDescription": {"text": "Legacy-named symbol `too_old` in tests/journal_date_guard.test.js:12"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-880427739b010057", "name": "Commented-code block (13 lines) in tests/journal_date_guard.test.js:4", "shortDescription": {"text": "Commented-code block (13 lines) in tests/journal_date_guard.test.js: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-b51ac2c5558e611d", "name": "Commented-code block (5 lines) in tests/lazy_libs_load_html2canvas.test.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in tests/lazy_libs_load_html2canvas.test.js: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-2dfc0f020ff0518f", "name": "Commented-code block (5 lines) in tests/credit_payment_partial_failure.test.js:12", "shortDescription": {"text": "Commented-code block (5 lines) in tests/credit_payment_partial_failure.test.js: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-e8b610f72792b27f", "name": "Commented-code block (8 lines) in tests/report_header_mobile.test.js:4", "shortDescription": {"text": "Commented-code block (8 lines) in tests/report_header_mobile.test.js: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-31c1887c1c44dbcf", "name": "Commented-code block (9 lines) in tests/customer_group_guard.test.js:4", "shortDescription": {"text": "Commented-code block (9 lines) in tests/customer_group_guard.test.js: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-025a9c1a0614e051", "name": "Commented-code block (5 lines) in tests/loyalty_settings_save.test.js:9", "shortDescription": {"text": "Commented-code block (5 lines) in tests/loyalty_settings_save.test.js: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-e550043069046e6c", "name": "Commented-code block (5 lines) in tests/boot_periodic_sw_update.test.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in tests/boot_periodic_sw_update.test.js: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-0604eb04f36f72bb", "name": "Commented-code block (8 lines) in tests/payroll_period_guard.test.js:4", "shortDescription": {"text": "Commented-code block (8 lines) in tests/payroll_period_guard.test.js: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-202923cc8cabe44c", "name": "Commented-code block (11 lines) in tests/ai_service_queue_line_guard.test.js:4", "shortDescription": {"text": "Commented-code block (11 lines) in tests/ai_service_queue_line_guard.test.js: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-021ba6391ac35c83", "name": "Commented-code block (15 lines) in tests/team_center_readonly_guard.test.js:4", "shortDescription": {"text": "Commented-code block (15 lines) in tests/team_center_readonly_guard.test.js: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-69c6c6f1bb6e65d6", "name": "Commented-code block (6 lines) in tests/dashboard_trend_chart.test.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in tests/dashboard_trend_chart.test.js: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-6cdd334f7a756f91", "name": "Commented-code block (6 lines) in tests/quotation_save_inflight_guard.test.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in tests/quotation_save_inflight_guard.test.js: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-eee838516e0eea8d", "name": "Commented-code block (7 lines) in tests/warehouse_transfer_cas.test.js:4", "shortDescription": {"text": "Commented-code block (7 lines) in tests/warehouse_transfer_cas.test.js: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-5ef07c8b9dbb2b71", "name": "Commented-code block (5 lines) in tests/load_all_pagination.test.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in tests/load_all_pagination.test.js: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-a802fb7ae2099027", "name": "Commented-code block (5 lines) in scripts/verify_je_fix.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/verify_je_fix.js: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-029eb5cf229e6a67", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/verify_je_fix.js:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/verify_je_fix.js:45"}, "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-7893867c48717b27", "name": "Commented-code block (7 lines) in scripts/diag_je_rest.js:5", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/diag_je_rest.js: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-f4e14033731a5948", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/diag_je_rest.js:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/diag_je_rest.js:42"}, "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-e8544d8908d05bab", "name": "Commented-code block (8 lines) in scripts/static-server.js:15", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/static-server.js:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-458833f731c84931", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/leave_spoof_test.js:60", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/leave_spoof_test.js:60"}, "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-52f75d2517cbdf32", "name": "Commented-code block (5 lines) in scripts/accounting_integrity_smoke.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/accounting_integrity_smoke.js: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-2bf3ff1a68c9dd8b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/accounting_integrity_smoke.js:61", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/accounting_integrity_smoke.js:61"}, "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-06ebf5ead488e4c1", "name": "Commented-code block (8 lines) in scripts/diag_je_rls.js:10", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/diag_je_rls.js: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-a0a0ec745299685e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/diag_je_rls.js:44", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/diag_je_rls.js:44"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6233bc962badace1", "name": "Commented-code block (8 lines) in scripts/backfill_orphan_journals.js:13", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/backfill_orphan_journals.js: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-2ceff47d5068a1a2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/backfill_orphan_journals.js:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/backfill_orphan_journals.js:69"}, "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-fdf712c219df6961", "name": "Commented-code block (6 lines) in functions/_middleware.js:6", "shortDescription": {"text": "Commented-code block (6 lines) in functions/_middleware.js: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-26b03c62f279d343", "name": "Commented-code block (5 lines) in functions/api/log-error.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in functions/api/log-error.js: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-19ca2e24c97cf2ad", "name": "Commented-code block (5 lines) in functions/api/verify-slip.js:10", "shortDescription": {"text": "Commented-code block (5 lines) in functions/api/verify-slip.js: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-324e01f3a8d6b5b8", "name": "Commented-code block (6 lines) in functions/api/ai-assistant.js:11", "shortDescription": {"text": "Commented-code block (6 lines) in functions/api/ai-assistant.js: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-daf2ccffd46f48c7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/permission_matrix.js:195", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/permission_matrix.js:195"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-861390812edb2787", "name": "Commented-code block (7 lines) in modules/leave_management.js:17", "shortDescription": {"text": "Commented-code block (7 lines) in modules/leave_management.js: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-4c1e22c32045cdae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/leave_management.js:1025", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/leave_management.js:1025"}, "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-28f72989937fa69f", "name": "Commented-code block (5 lines) in modules/payroll_overview.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in modules/payroll_overview.js: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-7eabe9c53797811b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/payroll_overview.js:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/payroll_overview.js:57"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bbfa7a84da005b8f", "name": "Commented-code block (7 lines) in modules/_offline_queue.js:11", "shortDescription": {"text": "Commented-code block (7 lines) in modules/_offline_queue.js: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-f833e3648b1a2c60", "name": "Commented-code block (6 lines) in modules/quotations.js:1363", "shortDescription": {"text": "Commented-code block (6 lines) in modules/quotations.js:1363"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-827636689c09416f", "name": "Commented-code block (5 lines) in modules/error_codes_shared.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in modules/error_codes_shared.js: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-be88dc1273ce936b", "name": "Commented-code block (5 lines) in modules/refunds.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in modules/refunds.js: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-c9c5e5d569d743a0", "name": "Commented-code block (6 lines) in modules/products.js:99", "shortDescription": {"text": "Commented-code block (6 lines) in modules/products.js:99"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-11659bf8e01e9a0f", "name": "Commented-code block (6 lines) in modules/loyalty.js:88", "shortDescription": {"text": "Commented-code block (6 lines) in modules/loyalty.js:88"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc89d874ccfdcf29", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/time_clock.js:459", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/time_clock.js:459"}, "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-8c8d93dc7a50b8a7", "name": "Commented-code block (6 lines) in modules/error_reporter.js:7", "shortDescription": {"text": "Commented-code block (6 lines) in modules/error_reporter.js:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-464f2efe64b68c70", "name": "Commented-code block (5 lines) in modules/service_form.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in modules/service_form.js: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-1978fa7f810afecc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/service_form.js:335", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/service_form.js:335"}, "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-eade702c3195914e", "name": "Commented-code block (5 lines) in modules/ac_quotation_draft.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in modules/ac_quotation_draft.js: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-15da30625dac5f17", "name": "Commented-code block (5 lines) in modules/staff.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in modules/staff.js: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-e1063dd31e254507", "name": "Commented-code block (5 lines) in modules/profit_by_product.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in modules/profit_by_product.js: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-e2567ab13e9ed768", "name": "Commented-code block (12 lines) in modules/hr_forms.js:8", "shortDescription": {"text": "Commented-code block (12 lines) in modules/hr_forms.js: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-a2207401074114d5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/hr_forms.js:613", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/hr_forms.js:613"}, "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-b070243326305bb7", "name": "Commented-code block (5 lines) in modules/service_equipment.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in modules/service_equipment.js: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-15ac29c2999b87de", "name": "Commented-code block (5 lines) in modules/ac_booking_draft.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in modules/ac_booking_draft.js: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-1633e937f50961b9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/service_request.js:240", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/service_request.js:240"}, "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-1c53e354bd541b4c", "name": "Commented-code block (11 lines) in modules/error_codes.js:261", "shortDescription": {"text": "Commented-code block (11 lines) in modules/error_codes.js:261"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-124080e0b6be893c", "name": "Commented-code block (6 lines) in modules/stock_cas.js:5", "shortDescription": {"text": "Commented-code block (6 lines) in modules/stock_cas.js: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-a28388b32e4bf725", "name": "Commented-code block (8 lines) in modules/hr_overview.js:4", "shortDescription": {"text": "Commented-code block (8 lines) in modules/hr_overview.js: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-089746403e9d1fae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/hr_overview.js:1244", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/hr_overview.js:1244"}, "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-f8bb16b0ffbc358c", "name": "Commented-code block (9 lines) in modules/ai_sales.js:302", "shortDescription": {"text": "Commented-code block (9 lines) in modules/ai_sales.js:302"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-57404331b0012975", "name": "Commented-code block (6 lines) in modules/bt_printer.js:10", "shortDescription": {"text": "Commented-code block (6 lines) in modules/bt_printer.js: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-7d36812bdc12e74c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/departments.js:37", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/departments.js:37"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2c87c94f850dc30a", "name": "Commented-code block (9 lines) in modules/product_detail_modal.js:7", "shortDescription": {"text": "Commented-code block (9 lines) in modules/product_detail_modal.js:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f55bc7e3e89b7464", "name": "Commented-code block (8 lines) in modules/auth_otp.js:6", "shortDescription": {"text": "Commented-code block (8 lines) in modules/auth_otp.js: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-e5fc9f930b0bfdd8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/auth_otp.js:214", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/auth_otp.js:214"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f6d0fb03ace21852", "name": "Commented-code block (5 lines) in modules/thermal_printer.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in modules/thermal_printer.js: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-2a65f2f1dbdf9222", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/customer_dashboard.js:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/customer_dashboard.js:66"}, "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-057465e59fac901e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/tasks.js:264", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/tasks.js:264"}, "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-9bc3444e2812d310", "name": "Commented-code block (10 lines) in modules/utils.js:9", "shortDescription": {"text": "Commented-code block (10 lines) in modules/utils.js: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-d2716cc146b9b2fb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/utils.js:355", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/utils.js:355"}, "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-a8ff38aba08a2269", "name": "Commented-code block (5 lines) in modules/boot.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in modules/boot.js: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-756c0817c39b1dc2", "name": "Commented-code block (9 lines) in modules/stock_precheck.js:1", "shortDescription": {"text": "Commented-code block (9 lines) in modules/stock_precheck.js: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-5c35f0aff5aded8d", "name": "Commented-code block (5 lines) in modules/birthdays.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in modules/birthdays.js: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-7d205e7fcc7a528f", "name": "Commented-code block (7 lines) in modules/payroll.js:93", "shortDescription": {"text": "Commented-code block (7 lines) in modules/payroll.js: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-f7d18d1c10cf168c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/payroll.js:322", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/payroll.js:322"}, "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-c3f5dbb893c5a09f", "name": "Commented-code block (5 lines) in modules/solar.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in modules/solar.js: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-4472b5284ee68bd8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/solar.js:591", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/solar.js:591"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9089d65fc8a32886", "name": "Commented-code block (7 lines) in modules/auth_email.js:13", "shortDescription": {"text": "Commented-code block (7 lines) in modules/auth_email.js: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-8f47253cb10c0c16", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/quote_templates.js:252", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/quote_templates.js:252"}, "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-915d48505d42e947", "name": "Commented-code block (5 lines) in modules/warranty_report.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in modules/warranty_report.js: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-93580955de184bf5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/warranty_report.js:211", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/warranty_report.js:211"}, "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-251f62a503cc768c", "name": "Commented-code block (6 lines) in modules/service_reconcile.js:10", "shortDescription": {"text": "Commented-code block (6 lines) in modules/service_reconcile.js: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-ceba4b9463c9eedf", "name": "Commented-code block (5 lines) in modules/otp_cooldown.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in modules/otp_cooldown.js: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-e7654d96afab4e25", "name": "Commented-code block (6 lines) in modules/ac_install.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in modules/ac_install.js: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-56f6480f153e657d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/ac_install.js:321", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/ac_install.js:321"}, "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-bda30f979b8fbe7c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/expenses.js:943", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/expenses.js:943"}, "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-267d56577a24927a", "name": "Commented-code block (5 lines) in modules/lazy_libs.js:19", "shortDescription": {"text": "Commented-code block (5 lines) in modules/lazy_libs.js:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8bcf664a4c0c6241", "name": "Commented-code block (5 lines) in modules/api.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in modules/api.js: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-05af96192ef9c88c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/api.js:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/api.js:55"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1e41893d85f3cc8a", "name": "Commented-code block (5 lines) in modules/recurring_expenses.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in modules/recurring_expenses.js: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-c92ffa46947ca0db", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/recurring_expenses.js:289", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/recurring_expenses.js:289"}, "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-b5524d2c66183153", "name": "Commented-code block (10 lines) in modules/team_command_center.js:3", "shortDescription": {"text": "Commented-code block (10 lines) in modules/team_command_center.js: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-82447ddb4711c73a", "name": "Commented-code block (5 lines) in modules/serials.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in modules/serials.js: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-d1529fd32a8112f8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/serials.js:333", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/serials.js:333"}, "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-c03e2c50fcfd4f0e", "name": "Commented-code block (6 lines) in modules/credit_tracker.js:46", "shortDescription": {"text": "Commented-code block (6 lines) in modules/credit_tracker.js:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-68ffb74949c3b4d9", "name": "Commented-code block (7 lines) in modules/branding.js:14", "shortDescription": {"text": "Commented-code block (7 lines) in modules/branding.js:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b559b6395ed1cc57", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/branding.js:111", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/branding.js:111"}, "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-d2ff4da19e1b162e", "name": "Commented-code block (5 lines) in modules/doc-utils.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in modules/doc-utils.js: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-7364f0403c402beb", "name": "Commented-code block (5 lines) in modules/error_codes_check_methods.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in modules/error_codes_check_methods.js: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-49d0b20a55e81189", "name": "Commented-code block (7 lines) in modules/stock_reconcile_report.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in modules/stock_reconcile_report.js: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-9f98faed93543623", "name": "Commented-code block (5 lines) in modules/expense_overview.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in modules/expense_overview.js: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-265f52feff0ae4a8", "name": "Commented-code block (5 lines) in modules/auth.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in modules/auth.js: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-ae47319f6b3cbf27", "name": "Legacy-named symbol `bsk_help_seen_v1` in modules/help_tutor.js:6", "shortDescription": {"text": "Legacy-named symbol `bsk_help_seen_v1` in modules/help_tutor.js:6"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1000d06250821d48", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/help_tutor.js:705", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/help_tutor.js:705"}, "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-14c9f9208482302f", "name": "Legacy-named symbol `bsk_cart_v2` in modules/pos.js:331", "shortDescription": {"text": "Legacy-named symbol `bsk_cart_v2` in modules/pos.js:331"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-790d70a8e8a60040", "name": "Commented-code block (7 lines) in modules/pos.js:62", "shortDescription": {"text": "Commented-code block (7 lines) in modules/pos.js:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7b8a5fbf7f4b8df3", "name": "Commented-code block (8 lines) in modules/settings/ac-spec-editor.js:4", "shortDescription": {"text": "Commented-code block (8 lines) in modules/settings/ac-spec-editor.js: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-0365c10bc22edfb4", "name": "Commented-code block (5 lines) in modules/accounting/export_bundle.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in modules/accounting/export_bundle.js: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-1641b2e7b1f387e8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/export_bundle.js:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/export_bundle.js:72"}, "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-c73f3b871d2177c3", "name": "Commented-code block (7 lines) in modules/accounting/balance_sheet.js:9", "shortDescription": {"text": "Commented-code block (7 lines) in modules/accounting/balance_sheet.js: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-0130dfbf6d8dcff2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/balance_sheet.js:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/balance_sheet.js:47"}, "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-e7d32260a1990aad", "name": "Legacy-named symbol `too_old` in modules/accounting/date_guard.js:51", "shortDescription": {"text": "Legacy-named symbol `too_old` in modules/accounting/date_guard.js:51"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de9e592bcdbd503a", "name": "Commented-code block (9 lines) in modules/accounting/date_guard.js:4", "shortDescription": {"text": "Commented-code block (9 lines) in modules/accounting/date_guard.js: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-e34ae11dc8f80aa6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/opening_balance.js:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/opening_balance.js:46"}, "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-0e24400b5e65f7e6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/profit_loss.js:112", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/profit_loss.js:112"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7449192d7051d3c6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/trial_balance.js:86", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/trial_balance.js:86"}, "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-7bb8e7b42b3c0d8e", "name": "Legacy-named symbol `too_old` in modules/accounting/journals.js:17", "shortDescription": {"text": "Legacy-named symbol `too_old` in modules/accounting/journals.js: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-9ba26a8dbe482057", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/journals.js:328", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/journals.js:328"}, "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-f6073460012bc318", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/periods.js:56", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/periods.js:56"}, "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-75438ecd914b06a5", "name": "Commented-code block (6 lines) in modules/accounting/backfill.js:9", "shortDescription": {"text": "Commented-code block (6 lines) in modules/accounting/backfill.js: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-415ca31c6e203f69", "name": "Commented-code block (5 lines) in modules/accounting/journal_form.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in modules/accounting/journal_form.js: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-4d9f58a8ae9599fa", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/journal_form.js:300", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/journal_form.js:300"}, "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-ebae54845f88d61d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/coa.js:234", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/coa.js:234"}, "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-881ba0e7b71e18b9", "name": "Commented-code block (7 lines) in modules/accounting/auto_post.js:4", "shortDescription": {"text": "Commented-code block (7 lines) in modules/accounting/auto_post.js: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-c29bfe8b5e9ee6b0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/auto_post.js:44", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/auto_post.js:44"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2eafc3188c36bb02", "name": "3 env vars used in code but missing from .env.example", "shortDescription": {"text": "3 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `CI`, `IDLE_EXIT_MS`, `PORT`. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/24675"}, "properties": {"repository": "boonsook/boonsook-pos-v5", "repoUrl": "https://github.com/boonsook/boonsook-pos-v5", "branch": "main"}, "results": [{"ruleId": "scanner-431b79f026e22a46", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sw.js:223"}, "properties": {"repobilityId": "b601567bccd7c248", "scanner": "scanner-primary", "fingerprint": "431b79f026e22a46", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b50a1d9d74d2c893", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 boot.js:121"}, "properties": {"repobilityId": "81fe5c7292aa782f", "scanner": "scanner-primary", "fingerprint": "b50a1d9d74d2c893", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ffdbb5b6a6a95db4", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 main.js:1819"}, "properties": {"repobilityId": "5c627bdf3a583600", "scanner": "scanner-primary", "fingerprint": "ffdbb5b6a6a95db4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-e08861d399376042", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify_je_fix.js:68"}, "properties": {"repobilityId": "37dd8dd8d2e08554", "scanner": "scanner-primary", "fingerprint": "e08861d399376042", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3cbec75c36b19e67", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/diag_je_rest.js:76"}, "properties": {"repobilityId": "ffc342c61ea3c61c", "scanner": "scanner-primary", "fingerprint": "3cbec75c36b19e67", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-26c97eca0f80e2c4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/static-server.js:110"}, "properties": {"repobilityId": "8b88709807a0ae52", "scanner": "scanner-primary", "fingerprint": "26c97eca0f80e2c4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cedd296d5a10a602", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/leave_spoof_test.js:133"}, "properties": {"repobilityId": "0b506dcdf06268dd", "scanner": "scanner-primary", "fingerprint": "cedd296d5a10a602", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f425d57474aed47", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/accounting_integrity_smoke.js:89"}, "properties": {"repobilityId": "674c91f8e223616e", "scanner": "scanner-primary", "fingerprint": "0f425d57474aed47", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7108777ec0328dc5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/diag_je_rls.js:81"}, "properties": {"repobilityId": "35247d150f963109", "scanner": "scanner-primary", "fingerprint": "7108777ec0328dc5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1f8065d15d0bb029", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill_orphan_journals.js:139"}, "properties": {"repobilityId": "cd9f7126877d1e7d", "scanner": "scanner-primary", "fingerprint": "1f8065d15d0bb029", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d0af454c06e7552a", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/quotations.js:640"}, "properties": {"repobilityId": "14b6cec2e49ed76f", "scanner": "scanner-primary", "fingerprint": "d0af454c06e7552a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-b3dc747a3115eafe", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/products.js:1870"}, "properties": {"repobilityId": "4d772b2d92dd2acb", "scanner": "scanner-primary", "fingerprint": "b3dc747a3115eafe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-3a23594a441199e6", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/loyalty.js:429"}, "properties": {"repobilityId": "c1a1df9d7d031e07", "scanner": "scanner-primary", "fingerprint": "3a23594a441199e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-c14be8a10fa08317", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/time_clock.js:1297"}, "properties": {"repobilityId": "28401544da5eb05e", "scanner": "scanner-primary", "fingerprint": "c14be8a10fa08317", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-3f029e7dac66b906", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/service_form.js:836"}, "properties": {"repobilityId": "5e5b99aff918b221", "scanner": "scanner-primary", "fingerprint": "3f029e7dac66b906", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-42aaa0d5e63d12df", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/staff.js:223"}, "properties": {"repobilityId": "5eedc0891af166c2", "scanner": "scanner-primary", "fingerprint": "42aaa0d5e63d12df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-573d2a71b7a0c3b9", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/service_equipment.js:165"}, "properties": {"repobilityId": "7a58e1306c81a495", "scanner": "scanner-primary", "fingerprint": "573d2a71b7a0c3b9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-13abfbae0ef4b2cc", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 modules/error_codes.js:267"}, "properties": {"repobilityId": "f9c93312e7e3283c", "scanner": "scanner-primary", "fingerprint": "13abfbae0ef4b2cc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-c4b2033313dd975e", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/stock_count.js:271"}, "properties": {"repobilityId": "0b4fd39b4a1536f3", "scanner": "scanner-primary", "fingerprint": "c4b2033313dd975e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-57fef4dc7bfe9af1", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/receipts.js:1019"}, "properties": {"repobilityId": "c4cc2b1be47f0e12", "scanner": "scanner-primary", "fingerprint": "57fef4dc7bfe9af1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-95feb2de4a0f58d1", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/customer_dashboard.js:423"}, "properties": {"repobilityId": "6885cef59c313a66", "scanner": "scanner-primary", "fingerprint": "95feb2de4a0f58d1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-adec0e5de7f7f4ff", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/delivery_invoices.js:873"}, "properties": {"repobilityId": "6d26c84023aab863", "scanner": "scanner-primary", "fingerprint": "adec0e5de7f7f4ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-8a46c82a311bfce0", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/utils.js:240"}, "properties": {"repobilityId": "6df2c9a994c9212a", "scanner": "scanner-primary", "fingerprint": "8a46c82a311bfce0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-bb2bc49721325a49", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/solar.js:299"}, "properties": {"repobilityId": "b7a14a9eca69e243", "scanner": "scanner-primary", "fingerprint": "bb2bc49721325a49", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-fc77739a25d076ca", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/quote_templates.js:190"}, "properties": {"repobilityId": "0ff28b0cefb62077", "scanner": "scanner-primary", "fingerprint": "fc77739a25d076ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-bec3906fbc9c6d3d", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/ac_install.js:892"}, "properties": {"repobilityId": "6baf38c8279aa78b", "scanner": "scanner-primary", "fingerprint": "bec3906fbc9c6d3d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-430d66cc139ca1ed", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/expenses.js:678"}, "properties": {"repobilityId": "0eda3f8a445c57db", "scanner": "scanner-primary", "fingerprint": "430d66cc139ca1ed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-891fbba2d70e0971", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/stock_in_wizard.js:306"}, "properties": {"repobilityId": "4324e7d160dff42b", "scanner": "scanner-primary", "fingerprint": "891fbba2d70e0971", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-8aa4e98b6cb1ce0f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 modules/stock_in_wizard.js:181"}, "properties": {"repobilityId": "60a32af468ee9a3f", "scanner": "scanner-primary", "fingerprint": "8aa4e98b6cb1ce0f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-00a08473f964c0c9", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/serials.js:356"}, "properties": {"repobilityId": "e0bff24fea105e24", "scanner": "scanner-primary", "fingerprint": "00a08473f964c0c9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-7c6452e931029508", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/pos.js:370"}, "properties": {"repobilityId": "cf1d7ae2c493442a", "scanner": "scanner-primary", "fingerprint": "7c6452e931029508", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-b8181641e48bf2be", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/settings/permissions.js:9"}, "properties": {"repobilityId": "662b96d7c71b3084", "scanner": "scanner-primary", "fingerprint": "b8181641e48bf2be", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-31f456417db3ecad", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/settings/payment.js:49"}, "properties": {"repobilityId": "1486f606bc4d46bf", "scanner": "scanner-primary", "fingerprint": "31f456417db3ecad", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-982eb8f3dcc5a330", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/settings/pages.js:19"}, "properties": {"repobilityId": "f34de5d2293fcf65", "scanner": "scanner-primary", "fingerprint": "982eb8f3dcc5a330", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-2c992f86b5235e23", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/settings/users.js:12"}, "properties": {"repobilityId": "a335ee47bd64f095", "scanner": "scanner-primary", "fingerprint": "2c992f86b5235e23", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-7f3378b640ff7529", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/settings/ac-catalog.js:146"}, "properties": {"repobilityId": "824a3a9df7a8f279", "scanner": "scanner-primary", "fingerprint": "7f3378b640ff7529", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-d7ad59dad1978a3b", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 modules/accounting/journals.js:307"}, "properties": {"repobilityId": "8bf596e041204607", "scanner": "scanner-primary", "fingerprint": "d7ad59dad1978a3b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-d63da3583b14afc0", "level": "warning", "message": {"text": "Dockerfile runs as root: Dockerfile"}, "properties": {"repobilityId": "a2ed1bd120e507db", "scanner": "scanner-primary", "fingerprint": "d63da3583b14afc0", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-2f3178ddda7c2897", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: nginx:alpine"}, "properties": {"repobilityId": "a5bbc8d852203c2a", "scanner": "scanner-primary", "fingerprint": "2f3178ddda7c2897", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-c8ca75976f46498c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in boot.js:33"}, "properties": {"repobilityId": "beb995ddae05622f", "scanner": "scanner-primary", "fingerprint": "c8ca75976f46498c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "boot.js"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-b60e5645e656284f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-chat-widget.js:278"}, "properties": {"repobilityId": "f34712580e9a759f", "scanner": "scanner-primary", "fingerprint": "b60e5645e656284f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ai-chat-widget.js"}, "region": {"startLine": 278}}}]}, {"ruleId": "scanner-3ee197fc467923c0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in share.html:75"}, "properties": {"repobilityId": "0648fd75866dbf21", "scanner": "scanner-primary", "fingerprint": "3ee197fc467923c0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "share.html"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-e47ef53a55aa7863", "level": "note", "message": {"text": "Insecure pattern 'document_write' in main.js:4081"}, "properties": {"repobilityId": "f13c1de6068b2ed9", "scanner": "scanner-primary", "fingerprint": "e47ef53a55aa7863", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.js"}, "region": {"startLine": 4081}}}]}, {"ruleId": "scanner-0b7af8407cf13ed8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in main.js:447"}, "properties": {"repobilityId": "1b4d35edc097833f", "scanner": "scanner-primary", "fingerprint": "0b7af8407cf13ed8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.js"}, "region": {"startLine": 447}}}]}, {"ruleId": "scanner-f9d4615984047097", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in functions/api/send-otp.js:53"}, "properties": {"repobilityId": "e5cd1b9f5e546da5", "scanner": "scanner-primary", "fingerprint": "f9d4615984047097", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "functions/api/send-otp.js"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-e3d694cff0b3aacb", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in functions/api/verify-slip.js:75"}, "properties": {"repobilityId": "e130b8571b5efeec", "scanner": "scanner-primary", "fingerprint": "e3d694cff0b3aacb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "functions/api/verify-slip.js"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-c0b698ced0486271", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in functions/api/verify-otp.js:6"}, "properties": {"repobilityId": "631af77487afec93", "scanner": "scanner-primary", "fingerprint": "c0b698ced0486271", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "functions/api/verify-otp.js"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-9e32b5999b4c593f", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in functions/api/parse-receipt.js:21"}, "properties": {"repobilityId": "45ce652dbcf55775", "scanner": "scanner-primary", "fingerprint": "9e32b5999b4c593f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "functions/api/parse-receipt.js"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-8a3227193c3c90cd", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in functions/api/line-notify.js:12"}, "properties": {"repobilityId": "a5211b872488cfc2", "scanner": "scanner-primary", "fingerprint": "8a3227193c3c90cd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "functions/api/line-notify.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-757a69d1656443ab", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in functions/api/ai-assistant.js:235"}, "properties": {"repobilityId": "7ae005df808cb302", "scanner": "scanner-primary", "fingerprint": "757a69d1656443ab", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "functions/api/ai-assistant.js"}, "region": {"startLine": 235}}}]}, {"ruleId": "scanner-5e918bee5bd926f2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/permission_matrix.js:42"}, "properties": {"repobilityId": "a6ad70c6c97bad9e", "scanner": "scanner-primary", "fingerprint": "5e918bee5bd926f2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/permission_matrix.js"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-efb73ed29c378fc5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/leave_management.js:1595"}, "properties": {"repobilityId": "30d849764ef26fd9", "scanner": "scanner-primary", "fingerprint": "efb73ed29c378fc5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/leave_management.js"}, "region": {"startLine": 1595}}}]}, {"ruleId": "scanner-5478225f36488c4e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/payroll_overview.js:33"}, "properties": {"repobilityId": "ab1eba8f4b039585", "scanner": "scanner-primary", "fingerprint": "5478225f36488c4e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/payroll_overview.js"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-c5ee86b2f670a640", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/line_notify.js:171"}, "properties": {"repobilityId": "3329cca67b19fd9e", "scanner": "scanner-primary", "fingerprint": "c5ee86b2f670a640", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/line_notify.js"}, "region": {"startLine": 171}}}]}, {"ruleId": "scanner-a90311b00c19d2dd", "level": "note", "message": {"text": "Insecure pattern 'document_write' in modules/quotations.js:1187"}, "properties": {"repobilityId": "4897856742125b71", "scanner": "scanner-primary", "fingerprint": "a90311b00c19d2dd", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/quotations.js"}, "region": {"startLine": 1187}}}]}, {"ruleId": "scanner-c6a08ce0aba6432b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/quotations.js:173"}, "properties": {"repobilityId": "086ebe92e5856582", "scanner": "scanner-primary", "fingerprint": "c6a08ce0aba6432b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/quotations.js"}, "region": {"startLine": 173}}}]}, {"ruleId": "scanner-d3cb37851737f0f7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/error_codes_shared.js:47"}, "properties": {"repobilityId": "d88431af704ac4dc", "scanner": "scanner-primary", "fingerprint": "d3cb37851737f0f7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/error_codes_shared.js"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-d9fa7bb2854011d5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/service_jobs.js:96"}, "properties": {"repobilityId": "3cb84f10cb78fc57", "scanner": "scanner-primary", "fingerprint": "d9fa7bb2854011d5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/service_jobs.js"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-d7c56fa4c472b2a3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/income_overview.js:47"}, "properties": {"repobilityId": "0005f21d6f4a0cbd", "scanner": "scanner-primary", "fingerprint": "d7c56fa4c472b2a3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/income_overview.js"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-2da48eb1d5f662a1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/refunds.js:116"}, "properties": {"repobilityId": "0d4fc512af8a061b", "scanner": "scanner-primary", "fingerprint": "2da48eb1d5f662a1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/refunds.js"}, "region": {"startLine": 116}}}]}, {"ruleId": "scanner-825d050fde695990", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/btu_calculator.js:34"}, "properties": {"repobilityId": "58177384b93723fe", "scanner": "scanner-primary", "fingerprint": "825d050fde695990", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/btu_calculator.js"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-cd3a51267bcd0d14", "level": "note", "message": {"text": "Insecure pattern 'document_write' in modules/products.js:1488"}, "properties": {"repobilityId": "a6c9f41e74290aef", "scanner": "scanner-primary", "fingerprint": "cd3a51267bcd0d14", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/products.js"}, "region": {"startLine": 1488}}}]}, {"ruleId": "scanner-4c486f45a7701fab", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/loyalty.js:437"}, "properties": {"repobilityId": "be1a5bd12d84a920", "scanner": "scanner-primary", "fingerprint": "4c486f45a7701fab", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/loyalty.js"}, "region": {"startLine": 437}}}]}, {"ruleId": "scanner-ffa5ded596b6ea57", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/time_clock.js:763"}, "properties": {"repobilityId": "ddb0aaf5e910c002", "scanner": "scanner-primary", "fingerprint": "ffa5ded596b6ea57", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/time_clock.js"}, "region": {"startLine": 763}}}]}, {"ruleId": "scanner-8505185a650e46f9", "level": "note", "message": {"text": "Insecure pattern 'document_write' in modules/service_form.js:1032"}, "properties": {"repobilityId": "f8505c207a392f78", "scanner": "scanner-primary", "fingerprint": "8505185a650e46f9", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/service_form.js"}, "region": {"startLine": 1032}}}]}, {"ruleId": "scanner-682d49a47e4c0eea", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/service_form.js:110"}, "properties": {"repobilityId": "b100dbdc094f12af", "scanner": "scanner-primary", "fingerprint": "682d49a47e4c0eea", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/service_form.js"}, "region": {"startLine": 110}}}]}, {"ruleId": "scanner-5b47b0f9889353d9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/staff.js:23"}, "properties": {"repobilityId": "23a1a3598f411a61", "scanner": "scanner-primary", "fingerprint": "5b47b0f9889353d9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/staff.js"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-9f42023e660398cb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/profit_by_product.js:95"}, "properties": {"repobilityId": "10f83432315c58ab", "scanner": "scanner-primary", "fingerprint": "9f42023e660398cb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/profit_by_product.js"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-4a659ddb67f89a0c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/stock_value.js:97"}, "properties": {"repobilityId": "9319670833872271", "scanner": "scanner-primary", "fingerprint": "4a659ddb67f89a0c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/stock_value.js"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-fbb96d6e47013cd0", "level": "note", "message": {"text": "Insecure pattern 'document_write' in modules/hr_forms.js:267"}, "properties": {"repobilityId": "ac57dc0e48b403b8", "scanner": "scanner-primary", "fingerprint": "fbb96d6e47013cd0", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/hr_forms.js"}, "region": {"startLine": 267}}}]}, {"ruleId": "scanner-e6dfce31807fa590", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/hr_forms.js:278"}, "properties": {"repobilityId": "fcdcdb0168d19c4b", "scanner": "scanner-primary", "fingerprint": "e6dfce31807fa590", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/hr_forms.js"}, "region": {"startLine": 278}}}]}, {"ruleId": "scanner-e9eb1c8061a2939d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/service_equipment.js:151"}, "properties": {"repobilityId": "6c5d84757faefad9", "scanner": "scanner-primary", "fingerprint": "e9eb1c8061a2939d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/service_equipment.js"}, "region": {"startLine": 151}}}]}, {"ruleId": "scanner-98ea5f8e3f967c1a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/service_request.js:63"}, "properties": {"repobilityId": "2117e7f630eef5c0", "scanner": "scanner-primary", "fingerprint": "98ea5f8e3f967c1a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/service_request.js"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-09a2ea28ecc98dbf", "level": "note", "message": {"text": "Insecure pattern 'document_write' in modules/hr_overview.js:2693"}, "properties": {"repobilityId": "69dca2e91b8196be", "scanner": "scanner-primary", "fingerprint": "09a2ea28ecc98dbf", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/hr_overview.js"}, "region": {"startLine": 2693}}}]}, {"ruleId": "scanner-9c96cf90d4e72ea3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/hr_overview.js:2126"}, "properties": {"repobilityId": "1cf8847fdc3ad6ce", "scanner": "scanner-primary", "fingerprint": "9c96cf90d4e72ea3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/hr_overview.js"}, "region": {"startLine": 2126}}}]}, {"ruleId": "scanner-0ab3b835b2660369", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/ai_sales.js:351"}, "properties": {"repobilityId": "a1db91446f8536cb", "scanner": "scanner-primary", "fingerprint": "0ab3b835b2660369", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/ai_sales.js"}, "region": {"startLine": 351}}}]}, {"ruleId": "scanner-e12b630abe5d13e2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/cash_recon.js:120"}, "properties": {"repobilityId": "55aca496d340b103", "scanner": "scanner-primary", "fingerprint": "e12b630abe5d13e2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/cash_recon.js"}, "region": {"startLine": 120}}}]}, {"ruleId": "scanner-2bd6fbf39970dd4e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/departments.js:18"}, "properties": {"repobilityId": "f0448bde29bb1bbb", "scanner": "scanner-primary", "fingerprint": "2bd6fbf39970dd4e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/departments.js"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-2809e1c47546534c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/product_detail_modal.js:146"}, "properties": {"repobilityId": "dd3eb5f37b28c2ce", "scanner": "scanner-primary", "fingerprint": "2809e1c47546534c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/product_detail_modal.js"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-e3a25454cfa68d3a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/stock_count.js:39"}, "properties": {"repobilityId": "3c5e0793da0e2545", "scanner": "scanner-primary", "fingerprint": "e3a25454cfa68d3a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/stock_count.js"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-8f5e050f5200c1bc", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/share_doc.js:26"}, "properties": {"repobilityId": "e6e29f3db4459e1c", "scanner": "scanner-primary", "fingerprint": "8f5e050f5200c1bc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/share_doc.js"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-3fdb3ab74854eb24", "level": "note", "message": {"text": "Insecure pattern 'document_write' in modules/thermal_printer.js:247"}, "properties": {"repobilityId": "cb5547f47256ef25", "scanner": "scanner-primary", "fingerprint": "3fdb3ab74854eb24", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/thermal_printer.js"}, "region": {"startLine": 247}}}]}, {"ruleId": "scanner-e443545ba6553d9e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/sales.js:46"}, "properties": {"repobilityId": "874430226b2bbe91", "scanner": "scanner-primary", "fingerprint": "e443545ba6553d9e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/sales.js"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-7ab002126751f0ac", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/dashboard.js:478"}, "properties": {"repobilityId": "6886d25310571401", "scanner": "scanner-primary", "fingerprint": "7ab002126751f0ac", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/dashboard.js"}, "region": {"startLine": 478}}}]}, {"ruleId": "scanner-2352c25156b76ecc", "level": "note", "message": {"text": "Insecure pattern 'document_write' in modules/receipts.js:974"}, "properties": {"repobilityId": "4c54cc63a34bf1a8", "scanner": "scanner-primary", "fingerprint": "2352c25156b76ecc", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/receipts.js"}, "region": {"startLine": 974}}}]}, {"ruleId": "scanner-6803c8001033b051", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/receipts.js:147"}, "properties": {"repobilityId": "6f928845501905a1", "scanner": "scanner-primary", "fingerprint": "6803c8001033b051", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/receipts.js"}, "region": {"startLine": 147}}}]}, {"ruleId": "scanner-44439adcf255f8ad", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/customer_dashboard.js:315"}, "properties": {"repobilityId": "8f385a7ab4947054", "scanner": "scanner-primary", "fingerprint": "44439adcf255f8ad", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/customer_dashboard.js"}, "region": {"startLine": 315}}}]}, {"ruleId": "scanner-8da7f419060bcecd", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/top_customers.js:102"}, "properties": {"repobilityId": "c0d3e2eadcfc4d56", "scanner": "scanner-primary", "fingerprint": "8da7f419060bcecd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/top_customers.js"}, "region": {"startLine": 102}}}]}, {"ruleId": "scanner-a0d75c4dfa7676ad", "level": "note", "message": {"text": "Insecure pattern 'document_write' in modules/delivery_invoices.js:692"}, "properties": {"repobilityId": "1135fea57a13c51f", "scanner": "scanner-primary", "fingerprint": "a0d75c4dfa7676ad", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/delivery_invoices.js"}, "region": {"startLine": 692}}}]}, {"ruleId": "scanner-b37e7ed1ac2d9555", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/delivery_invoices.js:95"}, "properties": {"repobilityId": "46bf9f1749c60482", "scanner": "scanner-primary", "fingerprint": "b37e7ed1ac2d9555", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/delivery_invoices.js"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-8c09685f76d01059", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/tasks.js:32"}, "properties": {"repobilityId": "fe59f4c9bbc1c19e", "scanner": "scanner-primary", "fingerprint": "8c09685f76d01059", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/tasks.js"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-5472f05d503a7030", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/utils.js:234"}, "properties": {"repobilityId": "d589c968e58a8d86", "scanner": "scanner-primary", "fingerprint": "5472f05d503a7030", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/utils.js"}, "region": {"startLine": 234}}}]}, {"ruleId": "scanner-410069f04c66b772", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/sales_heatmap.js:98"}, "properties": {"repobilityId": "b1df68545864b6af", "scanner": "scanner-primary", "fingerprint": "410069f04c66b772", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/sales_heatmap.js"}, "region": {"startLine": 98}}}]}, {"ruleId": "scanner-e7a0fd3a08afc0f8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/audit_log.js:44"}, "properties": {"repobilityId": "cda9f663cf7d22f5", "scanner": "scanner-primary", "fingerprint": "e7a0fd3a08afc0f8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/audit_log.js"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-c79948f4b0616575", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/birthdays.js:38"}, "properties": {"repobilityId": "44e63d6a03979cf2", "scanner": "scanner-primary", "fingerprint": "c79948f4b0616575", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/birthdays.js"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-374416b4941c0590", "level": "note", "message": {"text": "Insecure pattern 'document_write' in modules/payroll.js:1807"}, "properties": {"repobilityId": "7de5ae3d748539f6", "scanner": "scanner-primary", "fingerprint": "374416b4941c0590", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/payroll.js"}, "region": {"startLine": 1807}}}]}, {"ruleId": "scanner-7e753b421cc27d22", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/payroll.js:288"}, "properties": {"repobilityId": "9482529b28ed021c", "scanner": "scanner-primary", "fingerprint": "7e753b421cc27d22", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/payroll.js"}, "region": {"startLine": 288}}}]}, {"ruleId": "scanner-79d4151a6a69917e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/solar.js:85"}, "properties": {"repobilityId": "1179723ec3242471", "scanner": "scanner-primary", "fingerprint": "79d4151a6a69917e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/solar.js"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-e9bb5c97709cea4f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/ac_shop.js:236"}, "properties": {"repobilityId": "d0972e957353ebbb", "scanner": "scanner-primary", "fingerprint": "e9bb5c97709cea4f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/ac_shop.js"}, "region": {"startLine": 236}}}]}, {"ruleId": "scanner-6dca7aeddd7c0916", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/warranty_report.js:24"}, "properties": {"repobilityId": "ff3a8f945500e1bf", "scanner": "scanner-primary", "fingerprint": "6dca7aeddd7c0916", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/warranty_report.js"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-261dfe1344404228", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/service_reconcile.js:248"}, "properties": {"repobilityId": "50784411edfa911b", "scanner": "scanner-primary", "fingerprint": "261dfe1344404228", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/service_reconcile.js"}, "region": {"startLine": 248}}}]}, {"ruleId": "scanner-a53733fca6085f0d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/stock_movements.js:257"}, "properties": {"repobilityId": "09e6035ddc34b24e", "scanner": "scanner-primary", "fingerprint": "a53733fca6085f0d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/stock_movements.js"}, "region": {"startLine": 257}}}]}, {"ruleId": "scanner-58bb351e60554b53", "level": "note", "message": {"text": "Insecure pattern 'document_write' in modules/ac_install.js:1087"}, "properties": {"repobilityId": "3c17a1a18e656a38", "scanner": "scanner-primary", "fingerprint": "58bb351e60554b53", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/ac_install.js"}, "region": {"startLine": 1087}}}]}, {"ruleId": "scanner-17da095a9171eb2e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/ac_install.js:123"}, "properties": {"repobilityId": "59c5b160435204a3", "scanner": "scanner-primary", "fingerprint": "17da095a9171eb2e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/ac_install.js"}, "region": {"startLine": 123}}}]}, {"ruleId": "scanner-768a75170d73a76c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/calendar.js:496"}, "properties": {"repobilityId": "b553f49483321ead", "scanner": "scanner-primary", "fingerprint": "768a75170d73a76c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/calendar.js"}, "region": {"startLine": 496}}}]}, {"ruleId": "scanner-85cd02a91663cb24", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/expenses.js:93"}, "properties": {"repobilityId": "46e91cfa71cf7229", "scanner": "scanner-primary", "fingerprint": "85cd02a91663cb24", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/expenses.js"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-293377ba261c544f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/recurring_expenses.js:34"}, "properties": {"repobilityId": "fce1be132bc92318", "scanner": "scanner-primary", "fingerprint": "293377ba261c544f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/recurring_expenses.js"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-b7258e949f427f9c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/team_command_center.js:814"}, "properties": {"repobilityId": "13fce8dfa7e57a3e", "scanner": "scanner-primary", "fingerprint": "b7258e949f427f9c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/team_command_center.js"}, "region": {"startLine": 814}}}]}, {"ruleId": "scanner-1863190a5416aa97", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in modules/team_command_center.js:945"}, "properties": {"repobilityId": "e7a80302f41a06ed", "scanner": "scanner-primary", "fingerprint": "1863190a5416aa97", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/team_command_center.js"}, "region": {"startLine": 945}}}]}, {"ruleId": "scanner-6b1d8edea1d622e0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/stock_in_wizard.js:39"}, "properties": {"repobilityId": "a276717a45ff2b43", "scanner": "scanner-primary", "fingerprint": "6b1d8edea1d622e0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/stock_in_wizard.js"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-e009ddd7bec6b596", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/serials.js:37"}, "properties": {"repobilityId": "a1ba495a50589942", "scanner": "scanner-primary", "fingerprint": "e009ddd7bec6b596", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/serials.js"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-2dbbc49ec2f5482b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/credit_tracker.js:189"}, "properties": {"repobilityId": "b5e211c069e33bfa", "scanner": "scanner-primary", "fingerprint": "2dbbc49ec2f5482b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/credit_tracker.js"}, "region": {"startLine": 189}}}]}, {"ruleId": "scanner-9f6062ede8726685", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/profit_report.js:11"}, "properties": {"repobilityId": "64b22a1fe366e90c", "scanner": "scanner-primary", "fingerprint": "9f6062ede8726685", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/profit_report.js"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-2171d37a95523478", "level": "note", "message": {"text": "Insecure pattern 'document_write' in modules/doc-utils.js:216"}, "properties": {"repobilityId": "cba66ccd5f262701", "scanner": "scanner-primary", "fingerprint": "2171d37a95523478", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/doc-utils.js"}, "region": {"startLine": 216}}}]}, {"ruleId": "scanner-12e990935a55bc84", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/stock_reconcile_report.js:245"}, "properties": {"repobilityId": "17946374486b8968", "scanner": "scanner-primary", "fingerprint": "12e990935a55bc84", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/stock_reconcile_report.js"}, "region": {"startLine": 245}}}]}, {"ruleId": "scanner-2b34348847b4f53f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/expense_overview.js:40"}, "properties": {"repobilityId": "909316d5fb606242", "scanner": "scanner-primary", "fingerprint": "2b34348847b4f53f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/expense_overview.js"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-db1d02bc5192de27", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/customers.js:74"}, "properties": {"repobilityId": "717612447dc83d26", "scanner": "scanner-primary", "fingerprint": "db1d02bc5192de27", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/customers.js"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-5a4f79e607af6cd8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/auth.js:107"}, "properties": {"repobilityId": "a140cb494d90f73e", "scanner": "scanner-primary", "fingerprint": "5a4f79e607af6cd8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/auth.js"}, "region": {"startLine": 107}}}]}, {"ruleId": "scanner-bceab1ba1f8f7cee", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/help_tutor.js:443"}, "properties": {"repobilityId": "73c9f34ce509a1ac", "scanner": "scanner-primary", "fingerprint": "bceab1ba1f8f7cee", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/help_tutor.js"}, "region": {"startLine": 443}}}]}, {"ruleId": "scanner-07625f1075e49619", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in modules/help_tutor.js:667"}, "properties": {"repobilityId": "b933445b54a0e772", "scanner": "scanner-primary", "fingerprint": "07625f1075e49619", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/help_tutor.js"}, "region": {"startLine": 667}}}]}, {"ruleId": "scanner-6b354341d696806e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/pos.js:192"}, "properties": {"repobilityId": "fca51b336b27c9d5", "scanner": "scanner-primary", "fingerprint": "6b354341d696806e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/pos.js"}, "region": {"startLine": 192}}}]}, {"ruleId": "scanner-b323061a949e7205", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/dead_stock.js:80"}, "properties": {"repobilityId": "22a163516e79e7d5", "scanner": "scanner-primary", "fingerprint": "b323061a949e7205", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/dead_stock.js"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-19508517dcd5fe70", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/ac-spec-editor.js:78"}, "properties": {"repobilityId": "b8d20a042422c5e8", "scanner": "scanner-primary", "fingerprint": "19508517dcd5fe70", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/settings/ac-spec-editor.js"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-5e5d8fe88b16885b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/store.js:17"}, "properties": {"repobilityId": "e777b05275f3c41a", "scanner": "scanner-primary", "fingerprint": "5e5d8fe88b16885b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/settings/store.js"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-d177f5e551cee55c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/permissions.js:6"}, "properties": {"repobilityId": "8b05a6ac7868a31d", "scanner": "scanner-primary", "fingerprint": "d177f5e551cee55c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/settings/permissions.js"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-76665987a6d9490a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/payment.js:46"}, "properties": {"repobilityId": "dc213d587e31f049", "scanner": "scanner-primary", "fingerprint": "76665987a6d9490a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/settings/payment.js"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-a3e17a792bfa291e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/pages.js:16"}, "properties": {"repobilityId": "e7118020630da646", "scanner": "scanner-primary", "fingerprint": "a3e17a792bfa291e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/settings/pages.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-3165f07719d33cf8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/menu.js:20"}, "properties": {"repobilityId": "0efb588cc8921295", "scanner": "scanner-primary", "fingerprint": "3165f07719d33cf8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/settings/menu.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-0d2ef09ca3592c74", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/ac-stock-form.js:71"}, "properties": {"repobilityId": "e4f7b11f62443fb0", "scanner": "scanner-primary", "fingerprint": "0d2ef09ca3592c74", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/settings/ac-stock-form.js"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-3fb5cac971c24d5d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/users.js:9"}, "properties": {"repobilityId": "efc0e56f36b916a2", "scanner": "scanner-primary", "fingerprint": "3fb5cac971c24d5d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/settings/users.js"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-ab57a05aae225f90", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/settings/ac-catalog.js:143"}, "properties": {"repobilityId": "4b21097d7fef2dca", "scanner": "scanner-primary", "fingerprint": "ab57a05aae225f90", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/settings/ac-catalog.js"}, "region": {"startLine": 143}}}]}, {"ruleId": "scanner-bc0d6183c32defee", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/export_bundle.js:272"}, "properties": {"repobilityId": "2f4ff7c4b731cd5c", "scanner": "scanner-primary", "fingerprint": "bc0d6183c32defee", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/accounting/export_bundle.js"}, "region": {"startLine": 272}}}]}, {"ruleId": "scanner-0cd82fd96a305665", "level": "note", "message": {"text": "Insecure pattern 'document_write' in modules/accounting/balance_sheet.js:325"}, "properties": {"repobilityId": "c28f948e16204e35", "scanner": "scanner-primary", "fingerprint": "0cd82fd96a305665", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/accounting/balance_sheet.js"}, "region": {"startLine": 325}}}]}, {"ruleId": "scanner-b92e58ff6cff1249", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/balance_sheet.js:129"}, "properties": {"repobilityId": "b3a6cf198bc948f2", "scanner": "scanner-primary", "fingerprint": "b92e58ff6cff1249", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/accounting/balance_sheet.js"}, "region": {"startLine": 129}}}]}, {"ruleId": "scanner-a65ec7f04c36ed68", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/opening_balance.js:80"}, "properties": {"repobilityId": "01516a56754bc154", "scanner": "scanner-primary", "fingerprint": "a65ec7f04c36ed68", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/accounting/opening_balance.js"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-a85bee00fa9537af", "level": "note", "message": {"text": "Insecure pattern 'document_write' in modules/accounting/profit_loss.js:564"}, "properties": {"repobilityId": "8308948e13b6d822", "scanner": "scanner-primary", "fingerprint": "a85bee00fa9537af", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/accounting/profit_loss.js"}, "region": {"startLine": 564}}}]}, {"ruleId": "scanner-98914e4c83249dd2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/profit_loss.js:192"}, "properties": {"repobilityId": "296b1fd77b689b33", "scanner": "scanner-primary", "fingerprint": "98914e4c83249dd2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/accounting/profit_loss.js"}, "region": {"startLine": 192}}}]}, {"ruleId": "scanner-6b47f6253c46da65", "level": "note", "message": {"text": "Insecure pattern 'document_write' in modules/accounting/trial_balance.js:426"}, "properties": {"repobilityId": "19490039d441d8a1", "scanner": "scanner-primary", "fingerprint": "6b47f6253c46da65", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/accounting/trial_balance.js"}, "region": {"startLine": 426}}}]}, {"ruleId": "scanner-abb781d0fd91122b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/trial_balance.js:163"}, "properties": {"repobilityId": "f3891f8d4ae39f04", "scanner": "scanner-primary", "fingerprint": "abb781d0fd91122b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/accounting/trial_balance.js"}, "region": {"startLine": 163}}}]}, {"ruleId": "scanner-324775e27ef93bf7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/journals.js:116"}, "properties": {"repobilityId": "df1cb5b3b233ea00", "scanner": "scanner-primary", "fingerprint": "324775e27ef93bf7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/accounting/journals.js"}, "region": {"startLine": 116}}}]}, {"ruleId": "scanner-cfc2ff5ed4800ee3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/periods.js:260"}, "properties": {"repobilityId": "8b02730776fb17d6", "scanner": "scanner-primary", "fingerprint": "cfc2ff5ed4800ee3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/accounting/periods.js"}, "region": {"startLine": 260}}}]}, {"ruleId": "scanner-f564991ff99067c9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/backfill.js:67"}, "properties": {"repobilityId": "1869f3c38c9adf57", "scanner": "scanner-primary", "fingerprint": "f564991ff99067c9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/accounting/backfill.js"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-a69f594a6cd5943a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/journal_form.js:46"}, "properties": {"repobilityId": "ad0c2a37077c9e22", "scanner": "scanner-primary", "fingerprint": "a69f594a6cd5943a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/accounting/journal_form.js"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-995e59d10a64e005", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modules/accounting/coa.js:34"}, "properties": {"repobilityId": "39bf64c2913f0f66", "scanner": "scanner-primary", "fingerprint": "995e59d10a64e005", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modules/accounting/coa.js"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "399648a7a47344f6", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "559522b9a2bc3ff6", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "399648a7a47344f6", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "63ac508e8ed51295", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-cc7949b8369e2cb6", "level": "note", "message": {"text": "Very large file: main.js (4888 lines)"}, "properties": {"repobilityId": "35584af1b78f3853", "scanner": "scanner-primary", "fingerprint": "cc7949b8369e2cb6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-830031a730d3a8fb", "level": "note", "message": {"text": "Very large file: tests/hr_overview.test.js (1349 lines)"}, "properties": {"repobilityId": "f396eb98400854dd", "scanner": "scanner-primary", "fingerprint": "830031a730d3a8fb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-33118845d1a2cafc", "level": "note", "message": {"text": "Very large file: tests/leave_management.test.js (2123 lines)"}, "properties": {"repobilityId": "7ae4d4087c00c632", "scanner": "scanner-primary", "fingerprint": "33118845d1a2cafc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8377c00bf296fafa", "level": "note", "message": {"text": "Very large file: modules/leave_management.js (2602 lines)"}, "properties": {"repobilityId": "fa9c412d8b479557", "scanner": "scanner-primary", "fingerprint": "8377c00bf296fafa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e1c4d89f0468ab46", "level": "note", "message": {"text": "Very large file: modules/quotations.js (1551 lines)"}, "properties": {"repobilityId": "be352ee1b0584e99", "scanner": "scanner-primary", "fingerprint": "e1c4d89f0468ab46", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c95c47ac1d9788fc", "level": "note", "message": {"text": "Very large file: modules/products.js (2574 lines)"}, "properties": {"repobilityId": "552e99144cd6da9f", "scanner": "scanner-primary", "fingerprint": "c95c47ac1d9788fc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-24049c0f127818cf", "level": "note", "message": {"text": "Very large file: modules/time_clock.js (1382 lines)"}, "properties": {"repobilityId": "4ae6a8518564714a", "scanner": "scanner-primary", "fingerprint": "24049c0f127818cf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2d66d1fbd6a6b47a", "level": "note", "message": {"text": "Very large file: modules/service_form.js (1134 lines)"}, "properties": {"repobilityId": "9b5763072aeaea0a", "scanner": "scanner-primary", "fingerprint": "2d66d1fbd6a6b47a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e23ed35ca68e8a53", "level": "note", "message": {"text": "Very large file: modules/hr_forms.js (1030 lines)"}, "properties": {"repobilityId": "71d195e09a5dc020", "scanner": "scanner-primary", "fingerprint": "e23ed35ca68e8a53", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-284b63cf7e2e5d08", "level": "note", "message": {"text": "Very large file: modules/hr_overview.js (2842 lines)"}, "properties": {"repobilityId": "1a16b29927e1ef30", "scanner": "scanner-primary", "fingerprint": "284b63cf7e2e5d08", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5371f9451ac8b452", "level": "note", "message": {"text": "Very large file: modules/ai_sales.js (916 lines)"}, "properties": {"repobilityId": "bcb4b3bc82ce5b28", "scanner": "scanner-primary", "fingerprint": "5371f9451ac8b452", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fa00f9735ecdfc6b", "level": "note", "message": {"text": "Very large file: modules/dashboard.js (1298 lines)"}, "properties": {"repobilityId": "7ee3b85cfb5f23bd", "scanner": "scanner-primary", "fingerprint": "fa00f9735ecdfc6b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-43580d59f6d3a329", "level": "note", "message": {"text": "Very large file: modules/receipts.js (1260 lines)"}, "properties": {"repobilityId": "4e5c929584df4985", "scanner": "scanner-primary", "fingerprint": "43580d59f6d3a329", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a101ba70c0e8439c", "level": "note", "message": {"text": "Very large file: modules/customer_dashboard.js (1184 lines)"}, "properties": {"repobilityId": "b5d24853b173de00", "scanner": "scanner-primary", "fingerprint": "a101ba70c0e8439c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9ec7767b5a1caca7", "level": "note", "message": {"text": "Very large file: modules/delivery_invoices.js (984 lines)"}, "properties": {"repobilityId": "58b98d002214b559", "scanner": "scanner-primary", "fingerprint": "9ec7767b5a1caca7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6c3407bf13f5c983", "level": "note", "message": {"text": "Very large file: modules/payroll.js (2197 lines)"}, "properties": {"repobilityId": "dc12c70edf2f0ec0", "scanner": "scanner-primary", "fingerprint": "6c3407bf13f5c983", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a5da98ddea68cb94", "level": "note", "message": {"text": "Very large file: modules/solar.js (870 lines)"}, "properties": {"repobilityId": "556271d4021e80ff", "scanner": "scanner-primary", "fingerprint": "a5da98ddea68cb94", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1fcead0f89b49335", "level": "note", "message": {"text": "Very large file: modules/ac_install.js (1381 lines)"}, "properties": {"repobilityId": "b6cdaf30b644642c", "scanner": "scanner-primary", "fingerprint": "1fcead0f89b49335", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-49fba639c1ec0b10", "level": "note", "message": {"text": "Very large file: modules/expenses.js (1059 lines)"}, "properties": {"repobilityId": "dac2a7ab11929948", "scanner": "scanner-primary", "fingerprint": "49fba639c1ec0b10", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7a7fd0ba8df8af9e", "level": "note", "message": {"text": "Very large file: modules/team_command_center.js (978 lines)"}, "properties": {"repobilityId": "5f851b5d6bb06f32", "scanner": "scanner-primary", "fingerprint": "7a7fd0ba8df8af9e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dc514b852a283c99", "level": "note", "message": {"text": "Very large file: modules/pos.js (1650 lines)"}, "properties": {"repobilityId": "2b8899ba98a7e472", "scanner": "scanner-primary", "fingerprint": "dc514b852a283c99", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "0c702974f2d37f02", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-faccb9061e9b52a0", "level": "note", "message": {"text": "No README detected"}, "properties": {"repobilityId": "5d8eb536ef06ef2b", "scanner": "scanner-primary", "fingerprint": "faccb9061e9b52a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["docs", "readme", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "d1e70cb2a6a54405", "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": "f9d0bba32253e133", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "fe3f99411572efdf", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "7098213bc17f3404", "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": "ee87d7462b6b04ed", "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": "518a1416e29132d1", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-0208e1bcbd872b2f", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: SKILL.md"}, "properties": {"repobilityId": "42134429a68f4dd4", "scanner": "scanner-primary", "fingerprint": "0208e1bcbd872b2f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e999dfb1071d2929", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/boonsook-review/SKILL.md"}, "properties": {"repobilityId": "fe261c35bb503a93", "scanner": "scanner-primary", "fingerprint": "e999dfb1071d2929", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/boonsook-review/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f3f99a7d0037d5bc", "level": "none", "message": {"text": "Commented-code block (176 lines) in sw.js:1"}, "properties": {"repobilityId": "0f4854486af363c9", "scanner": "scanner-primary", "fingerprint": "f3f99a7d0037d5bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e9932bd4e05f82b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 sw.js:291"}, "properties": {"repobilityId": "26e3afc7b46079c7", "scanner": "scanner-primary", "fingerprint": "3e9932bd4e05f82b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d12b79fa46f402d0", "level": "none", "message": {"text": "Commented-code block (6 lines) in boot.js:1"}, "properties": {"repobilityId": "3d9b61eec9d7fa8d", "scanner": "scanner-primary", "fingerprint": "d12b79fa46f402d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a41cf8386d86cc9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 boot.js:55"}, "properties": {"repobilityId": "98a1d6cf579b37fb", "scanner": "scanner-primary", "fingerprint": "1a41cf8386d86cc9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5100698bf40809f3", "level": "none", "message": {"text": "Commented-code block (6 lines) in eslint.config.js:1"}, "properties": {"repobilityId": "efdd45f6aeab0c55", "scanner": "scanner-primary", "fingerprint": "5100698bf40809f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e85bb33217dcf2a", "level": "none", "message": {"text": "Commented-code block (12 lines) in ai-chat-widget.js:4"}, "properties": {"repobilityId": "30c839df4789a26e", "scanner": "scanner-primary", "fingerprint": "7e85bb33217dcf2a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b51fb784050ae165", "level": "none", "message": {"text": "Commented-code block (5 lines) in selfheal.js:6"}, "properties": {"repobilityId": "516e7c6ee8538c03", "scanner": "scanner-primary", "fingerprint": "b51fb784050ae165", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-facbfb3d8d5f2019", "level": "note", "message": {"text": "Legacy-named symbol `bsk_cart_v2` in main.js:271"}, "properties": {"repobilityId": "ea145fa01cd6f6be", "scanner": "scanner-primary", "fingerprint": "facbfb3d8d5f2019", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7fe8921858fc95b3", "level": "none", "message": {"text": "Commented-code block (6 lines) in main.js:36"}, "properties": {"repobilityId": "96d85b2e39f56d72", "scanner": "scanner-primary", "fingerprint": "7fe8921858fc95b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61887ff33e1b0a0f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 main.js:1212"}, "properties": {"repobilityId": "0ff53aaf5cd28db0", "scanner": "scanner-primary", "fingerprint": "61887ff33e1b0a0f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7182dde012bfedc2", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/air_catalog_quotation_draft.test.js:4"}, "properties": {"repobilityId": "cbdaba6d0e818c76", "scanner": "scanner-primary", "fingerprint": "7182dde012bfedc2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9b76acb66b3acb4", "level": "none", "message": {"text": "Commented-code block (11 lines) in tests/accounting_readiness_service_scope.test.js:4"}, "properties": {"repobilityId": "95bb713a529bba64", "scanner": "scanner-primary", "fingerprint": "b9b76acb66b3acb4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53266ccf43385e7a", "level": "none", "message": {"text": "Commented-code block (11 lines) in tests/otp_verify_guard.test.js:3"}, "properties": {"repobilityId": "3c67d3b5b551f927", "scanner": "scanner-primary", "fingerprint": "53266ccf43385e7a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cde709132c5586e6", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/dashboard_recent_txn.test.js:4"}, "properties": {"repobilityId": "425a7103d951ee9e", "scanner": "scanner-primary", "fingerprint": "cde709132c5586e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7dc0e2cdf43ae71", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/branding_sync_app_logo.test.js:8"}, "properties": {"repobilityId": "3c9bf22676b87a83", "scanner": "scanner-primary", "fingerprint": "c7dc0e2cdf43ae71", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc08c6f444a9493c", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/pos_loyalty_auto_earn.test.js:7"}, "properties": {"repobilityId": "2e11bfdf4b32aeb2", "scanner": "scanner-primary", "fingerprint": "bc08c6f444a9493c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5626fd2d735994cf", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/leave_management.test.js:1631"}, "properties": {"repobilityId": "3c7d60139578b85b", "scanner": "scanner-primary", "fingerprint": "5626fd2d735994cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5c0fc84eaf6a23b1", "level": "none", "message": {"text": "Commented-code block (10 lines) in tests/service_job_block_save_guard.test.js:4"}, "properties": {"repobilityId": "4056a42b4189009c", "scanner": "scanner-primary", "fingerprint": "5c0fc84eaf6a23b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12fab63f0b5df800", "level": "none", "message": {"text": "Commented-code block (9 lines) in tests/quick_pay_guard.test.js:3"}, "properties": {"repobilityId": "2c3adfa53a8ffae7", "scanner": "scanner-primary", "fingerprint": "12fab63f0b5df800", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a5329d7a2fbfe94d", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/share_doc.test.js:7"}, "properties": {"repobilityId": "e9d56f9895e79abb", "scanner": "scanner-primary", "fingerprint": "a5329d7a2fbfe94d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8e7f706dd7b7ff4", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/expenses_autokey_auth.test.js:4"}, "properties": {"repobilityId": "0b86e0fa65ea59cc", "scanner": "scanner-primary", "fingerprint": "e8e7f706dd7b7ff4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d025e7c78535ea84", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/multi_payment_guard.test.js:3"}, "properties": {"repobilityId": "9d203e073c4d2057", "scanner": "scanner-primary", "fingerprint": "d025e7c78535ea84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f670edcbc0b4fc26", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/service_request_total_cost_guard.test.js:4"}, "properties": {"repobilityId": "c55c6fbd6d42088c", "scanner": "scanner-primary", "fingerprint": "f670edcbc0b4fc26", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e501e9d8e8c6fa98", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/ac_stock_manager_guard.test.js:4"}, "properties": {"repobilityId": "3c940fde31458ed0", "scanner": "scanner-primary", "fingerprint": "e501e9d8e8c6fa98", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f25757fa5d8b43f9", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/loyalty_settings_admin_guard.test.js:3"}, "properties": {"repobilityId": "592a065310adb780", "scanner": "scanner-primary", "fingerprint": "f25757fa5d8b43f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f6c9072d4f3f2f0", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/di_delete_receipt_precheck_guard.test.js:4"}, "properties": {"repobilityId": "84e2920d7593e15b", "scanner": "scanner-primary", "fingerprint": "9f6c9072d4f3f2f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95a99ebb852dba8b", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/auth_recovery_graceful_guard.test.js:4"}, "properties": {"repobilityId": "10f913d64533976e", "scanner": "scanner-primary", "fingerprint": "95a99ebb852dba8b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c1cc2d5e71a3a7d", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/income_overview_guard.test.js:4"}, "properties": {"repobilityId": "e29aeb79dbbab78d", "scanner": "scanner-primary", "fingerprint": "1c1cc2d5e71a3a7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-222cf83457a2bd7f", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/stock_reconcile_report_guard.test.js:4"}, "properties": {"repobilityId": "ee91da50f4bc6f07", "scanner": "scanner-primary", "fingerprint": "222cf83457a2bd7f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b8d7a92baf56b84", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/loyalty_history_modal_listener.test.js:3"}, "properties": {"repobilityId": "9ec065d0bbb719ad", "scanner": "scanner-primary", "fingerprint": "8b8d7a92baf56b84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-215efd92a95814f0", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/pos_gross_profit.test.js:4"}, "properties": {"repobilityId": "18eac964cb301899", "scanner": "scanner-primary", "fingerprint": "215efd92a95814f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca768ac95c0cd47b", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/hr_gps_self_clock_guard.test.js:4"}, "properties": {"repobilityId": "591bda7e659e7f4c", "scanner": "scanner-primary", "fingerprint": "ca768ac95c0cd47b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f3da36db7e0dc34", "level": "none", "message": {"text": "Commented-code block (14 lines) in tests/hr_forms_guard.test.js:4"}, "properties": {"repobilityId": "a98b9f4dafe3b887", "scanner": "scanner-primary", "fingerprint": "2f3da36db7e0dc34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63d331549fab5f17", "level": "none", "message": {"text": "Commented-code block (13 lines) in tests/dashboard_ui_guard.test.js:4"}, "properties": {"repobilityId": "4dfc4b44ab6d3aa7", "scanner": "scanner-primary", "fingerprint": "63d331549fab5f17", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-708d25d52d13a34c", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/mobile_row_layout.test.js:4"}, "properties": {"repobilityId": "4f1c51fd6454db0f", "scanner": "scanner-primary", "fingerprint": "708d25d52d13a34c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad1757843a8cd466", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/air_quotation_save_linkback.test.js:4"}, "properties": {"repobilityId": "5248f6328e5e9696", "scanner": "scanner-primary", "fingerprint": "ad1757843a8cd466", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1b00fd8d031852c", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/dashboard_income_guard.test.js:4"}, "properties": {"repobilityId": "4f5970248ea60479", "scanner": "scanner-primary", "fingerprint": "a1b00fd8d031852c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e41823cf0b66e19c", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/stock_mirror_canonical_guard.test.js:4"}, "properties": {"repobilityId": "1ab5a39c6c0a77f1", "scanner": "scanner-primary", "fingerprint": "e41823cf0b66e19c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-340830e75c95836e", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/ui_theme_guard.test.js:4"}, "properties": {"repobilityId": "33263ec2b69489b1", "scanner": "scanner-primary", "fingerprint": "340830e75c95836e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5bed745625b0432f", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/service_job_equipment_guard.test.js:4"}, "properties": {"repobilityId": "262c3fda378e14f9", "scanner": "scanner-primary", "fingerprint": "5bed745625b0432f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b581d88631e0805d", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/store_settings_sync_guard.test.js:3"}, "properties": {"repobilityId": "730a81828550e914", "scanner": "scanner-primary", "fingerprint": "b581d88631e0805d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac611f77a7c69188", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/expense_delete_void_jv_guard.test.js:4"}, "properties": {"repobilityId": "6039c3767a9b8143", "scanner": "scanner-primary", "fingerprint": "ac611f77a7c69188", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-089d07a0c854b9d4", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/opening_balance_guard.test.js:5"}, "properties": {"repobilityId": "b94cbe97abaffef9", "scanner": "scanner-primary", "fingerprint": "089d07a0c854b9d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a86071e6c60e9190", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/revert_stock_cas_guard.test.js:1"}, "properties": {"repobilityId": "cf2507ca118645ef", "scanner": "scanner-primary", "fingerprint": "a86071e6c60e9190", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90f6eff93b8c8612", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/lazy_import_cache_bust.test.js:3"}, "properties": {"repobilityId": "e49464c6c08e1bc1", "scanner": "scanner-primary", "fingerprint": "90f6eff93b8c8612", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-83c68ce15989010a", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/effective_date_guard.test.js:1"}, "properties": {"repobilityId": "c7a92a752196c0c0", "scanner": "scanner-primary", "fingerprint": "83c68ce15989010a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4d53fa1f1f28db3", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/branding_update_app_logos.test.js:3"}, "properties": {"repobilityId": "2394fe6c857bd497", "scanner": "scanner-primary", "fingerprint": "d4d53fa1f1f28db3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67cb6e34af04a0ea", "level": "none", "message": {"text": "Commented-code block (9 lines) in tests/apply_stock_movement_floor.test.js:4"}, "properties": {"repobilityId": "ca9a5fd8dbd7a6d8", "scanner": "scanner-primary", "fingerprint": "67cb6e34af04a0ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22132da6c7ff0ab6", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/transfer_rpc_wiring_guard.test.js:4"}, "properties": {"repobilityId": "791a1ae755a6eeaa", "scanner": "scanner-primary", "fingerprint": "22132da6c7ff0ab6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5bac1f3e6875e134", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/verify_slip_auth.test.js:4"}, "properties": {"repobilityId": "f6cf39e5583ccda6", "scanner": "scanner-primary", "fingerprint": "5bac1f3e6875e134", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b4a627e2186ef759", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/accounting_integrity_panel.test.js:1"}, "properties": {"repobilityId": "bf274b66cf20e614", "scanner": "scanner-primary", "fingerprint": "b4a627e2186ef759", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-028e44d186904f8a", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/service_reconcile_guard.test.js:4"}, "properties": {"repobilityId": "b72e314edb516793", "scanner": "scanner-primary", "fingerprint": "028e44d186904f8a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc0a66f7e684deb4", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/dashboard_readonly_guard.test.js:4"}, "properties": {"repobilityId": "db73e63af0e64656", "scanner": "scanner-primary", "fingerprint": "bc0a66f7e684deb4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9fdfdcf7eec7f84b", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/loyalty_reverse_sale.test.js:13"}, "properties": {"repobilityId": "e4e143dc59eb5bf7", "scanner": "scanner-primary", "fingerprint": "9fdfdcf7eec7f84b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-60e69e51fca329cb", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/stock_movement_type_guard.test.js:1"}, "properties": {"repobilityId": "789ec1517f1e0350", "scanner": "scanner-primary", "fingerprint": "60e69e51fca329cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6a2a44fe43221ac", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/topbar_notif_profile.test.js:4"}, "properties": {"repobilityId": "61f9e91e446ce3b6", "scanner": "scanner-primary", "fingerprint": "f6a2a44fe43221ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6e7e3ba3f6cf1783", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/cashbasis_revenue_guard.test.js:4"}, "properties": {"repobilityId": "8d70206ce3c57dbc", "scanner": "scanner-primary", "fingerprint": "6e7e3ba3f6cf1783", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3130c86c8d9804a", "level": "none", "message": {"text": "Commented-code block (9 lines) in tests/mobile_layout_guard.test.js:4"}, "properties": {"repobilityId": "ef448dc601579193", "scanner": "scanner-primary", "fingerprint": "e3130c86c8d9804a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62d0923f39b5b073", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/receipt_acct_trace_refresh_guard.test.js:5"}, "properties": {"repobilityId": "706e1fb24861e416", "scanner": "scanner-primary", "fingerprint": "62d0923f39b5b073", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cac5af4a1d89c0ac", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/convert_inflight_guard.test.js:1"}, "properties": {"repobilityId": "4d10669838570acd", "scanner": "scanner-primary", "fingerprint": "cac5af4a1d89c0ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dc8dc94ebf4b1372", "level": "none", "message": {"text": "Commented-code block (9 lines) in tests/technician_stock_access_guard.test.js:4"}, "properties": {"repobilityId": "68bc52dad06e07b7", "scanner": "scanner-primary", "fingerprint": "dc8dc94ebf4b1372", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a71d2eb55e0a28dc", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/service_job_precheck_aggregate_guard.test.js:4"}, "properties": {"repobilityId": "831a5fcdb39d4b9a", "scanner": "scanner-primary", "fingerprint": "a71d2eb55e0a28dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1771910cdfd3be28", "level": "none", "message": {"text": "Commented-code block (11 lines) in tests/payroll_pay_race_guard.test.js:4"}, "properties": {"repobilityId": "8f1da80d5cfc015d", "scanner": "scanner-primary", "fingerprint": "1771910cdfd3be28", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bee769eb5d87a806", "level": "none", "message": {"text": "Commented-code block (9 lines) in tests/stock_nonneg_guard.test.js:4"}, "properties": {"repobilityId": "7bbada0a8e07304c", "scanner": "scanner-primary", "fingerprint": "bee769eb5d87a806", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f906ed11118bd2f6", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/loyalty_calc_earn_points.test.js:3"}, "properties": {"repobilityId": "a07ef948d4f28d17", "scanner": "scanner-primary", "fingerprint": "f906ed11118bd2f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a45a4a259a9899e5", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/backfill_deleted_guard.test.js:1"}, "properties": {"repobilityId": "f27fbb40728b5bc3", "scanner": "scanner-primary", "fingerprint": "a45a4a259a9899e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec1749768c24fa10", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/xss_regression.test.js:4"}, "properties": {"repobilityId": "5401192a8ffa4249", "scanner": "scanner-primary", "fingerprint": "ec1749768c24fa10", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd72d691fecab10a", "level": "none", "message": {"text": "Commented-code block (11 lines) in tests/payroll_partc_guard.test.js:4"}, "properties": {"repobilityId": "d6fb72860a91c7ca", "scanner": "scanner-primary", "fingerprint": "cd72d691fecab10a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a7ae5584020a12f", "level": "none", "message": {"text": "Commented-code block (9 lines) in tests/payroll_partb_guard.test.js:4"}, "properties": {"repobilityId": "105f5ee13d57fd54", "scanner": "scanner-primary", "fingerprint": "1a7ae5584020a12f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-58487677e5bbf96b", "level": "note", "message": {"text": "Legacy-named symbol `too_old` in tests/journal_date_guard.test.js:12"}, "properties": {"repobilityId": "61e8fb408427cd53", "scanner": "scanner-primary", "fingerprint": "58487677e5bbf96b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-880427739b010057", "level": "none", "message": {"text": "Commented-code block (13 lines) in tests/journal_date_guard.test.js:4"}, "properties": {"repobilityId": "b0c90127c46c1e3a", "scanner": "scanner-primary", "fingerprint": "880427739b010057", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b51ac2c5558e611d", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/lazy_libs_load_html2canvas.test.js:3"}, "properties": {"repobilityId": "8a888549313700c9", "scanner": "scanner-primary", "fingerprint": "b51ac2c5558e611d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2dfc0f020ff0518f", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/credit_payment_partial_failure.test.js:12"}, "properties": {"repobilityId": "9f1a5a56c37e24a3", "scanner": "scanner-primary", "fingerprint": "2dfc0f020ff0518f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8b610f72792b27f", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/report_header_mobile.test.js:4"}, "properties": {"repobilityId": "a8ad337486d39174", "scanner": "scanner-primary", "fingerprint": "e8b610f72792b27f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-31c1887c1c44dbcf", "level": "none", "message": {"text": "Commented-code block (9 lines) in tests/customer_group_guard.test.js:4"}, "properties": {"repobilityId": "61d48f7d7314afb5", "scanner": "scanner-primary", "fingerprint": "31c1887c1c44dbcf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-025a9c1a0614e051", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/loyalty_settings_save.test.js:9"}, "properties": {"repobilityId": "f708a14bbf9f43ff", "scanner": "scanner-primary", "fingerprint": "025a9c1a0614e051", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e550043069046e6c", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/boot_periodic_sw_update.test.js:8"}, "properties": {"repobilityId": "584677e5b281c214", "scanner": "scanner-primary", "fingerprint": "e550043069046e6c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0604eb04f36f72bb", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/payroll_period_guard.test.js:4"}, "properties": {"repobilityId": "4c91953b614967ec", "scanner": "scanner-primary", "fingerprint": "0604eb04f36f72bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-202923cc8cabe44c", "level": "none", "message": {"text": "Commented-code block (11 lines) in tests/ai_service_queue_line_guard.test.js:4"}, "properties": {"repobilityId": "a8be309282152aeb", "scanner": "scanner-primary", "fingerprint": "202923cc8cabe44c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-021ba6391ac35c83", "level": "none", "message": {"text": "Commented-code block (15 lines) in tests/team_center_readonly_guard.test.js:4"}, "properties": {"repobilityId": "442b4fd808742cbe", "scanner": "scanner-primary", "fingerprint": "021ba6391ac35c83", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-69c6c6f1bb6e65d6", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/dashboard_trend_chart.test.js:4"}, "properties": {"repobilityId": "c30cefd4f0f2957e", "scanner": "scanner-primary", "fingerprint": "69c6c6f1bb6e65d6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6cdd334f7a756f91", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/quotation_save_inflight_guard.test.js:4"}, "properties": {"repobilityId": "f89da80f667c8d6c", "scanner": "scanner-primary", "fingerprint": "6cdd334f7a756f91", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eee838516e0eea8d", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/warehouse_transfer_cas.test.js:4"}, "properties": {"repobilityId": "cb3fb643b186e89b", "scanner": "scanner-primary", "fingerprint": "eee838516e0eea8d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ef07c8b9dbb2b71", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/load_all_pagination.test.js:4"}, "properties": {"repobilityId": "dd8909fac3785034", "scanner": "scanner-primary", "fingerprint": "5ef07c8b9dbb2b71", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a802fb7ae2099027", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/verify_je_fix.js:8"}, "properties": {"repobilityId": "e466430e5854a16c", "scanner": "scanner-primary", "fingerprint": "a802fb7ae2099027", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-029eb5cf229e6a67", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/verify_je_fix.js:45"}, "properties": {"repobilityId": "d666a4cc42aae2e6", "scanner": "scanner-primary", "fingerprint": "029eb5cf229e6a67", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7893867c48717b27", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/diag_je_rest.js:5"}, "properties": {"repobilityId": "cef5ab51e0295c5c", "scanner": "scanner-primary", "fingerprint": "7893867c48717b27", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4e14033731a5948", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/diag_je_rest.js:42"}, "properties": {"repobilityId": "51fb7a54ba674302", "scanner": "scanner-primary", "fingerprint": "f4e14033731a5948", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e8544d8908d05bab", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/static-server.js:15"}, "properties": {"repobilityId": "c260c069a64b8e0f", "scanner": "scanner-primary", "fingerprint": "e8544d8908d05bab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-458833f731c84931", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/leave_spoof_test.js:60"}, "properties": {"repobilityId": "5a19bf34967edc78", "scanner": "scanner-primary", "fingerprint": "458833f731c84931", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-52f75d2517cbdf32", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/accounting_integrity_smoke.js:8"}, "properties": {"repobilityId": "d1f3282a570f8a4b", "scanner": "scanner-primary", "fingerprint": "52f75d2517cbdf32", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2bf3ff1a68c9dd8b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/accounting_integrity_smoke.js:61"}, "properties": {"repobilityId": "da1bd9adb30bcfa8", "scanner": "scanner-primary", "fingerprint": "2bf3ff1a68c9dd8b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-06ebf5ead488e4c1", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/diag_je_rls.js:10"}, "properties": {"repobilityId": "d97bf4527260af71", "scanner": "scanner-primary", "fingerprint": "06ebf5ead488e4c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a0a0ec745299685e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/diag_je_rls.js:44"}, "properties": {"repobilityId": "786a3acb9d3cb6d9", "scanner": "scanner-primary", "fingerprint": "a0a0ec745299685e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6233bc962badace1", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/backfill_orphan_journals.js:13"}, "properties": {"repobilityId": "61790ce750b6d280", "scanner": "scanner-primary", "fingerprint": "6233bc962badace1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ceff47d5068a1a2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/backfill_orphan_journals.js:69"}, "properties": {"repobilityId": "37a6be4b289dbdb7", "scanner": "scanner-primary", "fingerprint": "2ceff47d5068a1a2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fdf712c219df6961", "level": "none", "message": {"text": "Commented-code block (6 lines) in functions/_middleware.js:6"}, "properties": {"repobilityId": "3f87d73fca8ee15a", "scanner": "scanner-primary", "fingerprint": "fdf712c219df6961", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26b03c62f279d343", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/api/log-error.js:6"}, "properties": {"repobilityId": "0b00d0c6a3a0d971", "scanner": "scanner-primary", "fingerprint": "26b03c62f279d343", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19ca2e24c97cf2ad", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/api/verify-slip.js:10"}, "properties": {"repobilityId": "ac1ad47b295712ef", "scanner": "scanner-primary", "fingerprint": "19ca2e24c97cf2ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-324e01f3a8d6b5b8", "level": "none", "message": {"text": "Commented-code block (6 lines) in functions/api/ai-assistant.js:11"}, "properties": {"repobilityId": "c1ba92a5745df564", "scanner": "scanner-primary", "fingerprint": "324e01f3a8d6b5b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-daf2ccffd46f48c7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/permission_matrix.js:195"}, "properties": {"repobilityId": "c9e4d98fef636157", "scanner": "scanner-primary", "fingerprint": "daf2ccffd46f48c7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-861390812edb2787", "level": "none", "message": {"text": "Commented-code block (7 lines) in modules/leave_management.js:17"}, "properties": {"repobilityId": "367f17abf605ae97", "scanner": "scanner-primary", "fingerprint": "861390812edb2787", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c1e22c32045cdae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/leave_management.js:1025"}, "properties": {"repobilityId": "eae5caf8bc7c6e6c", "scanner": "scanner-primary", "fingerprint": "4c1e22c32045cdae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-28f72989937fa69f", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/payroll_overview.js:1"}, "properties": {"repobilityId": "e2aa22c3025b47a9", "scanner": "scanner-primary", "fingerprint": "28f72989937fa69f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7eabe9c53797811b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/payroll_overview.js:57"}, "properties": {"repobilityId": "a158f53501816c9c", "scanner": "scanner-primary", "fingerprint": "7eabe9c53797811b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bbfa7a84da005b8f", "level": "none", "message": {"text": "Commented-code block (7 lines) in modules/_offline_queue.js:11"}, "properties": {"repobilityId": "c7f1e58588c708fd", "scanner": "scanner-primary", "fingerprint": "bbfa7a84da005b8f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f833e3648b1a2c60", "level": "none", "message": {"text": "Commented-code block (6 lines) in modules/quotations.js:1363"}, "properties": {"repobilityId": "7b569ad96ef195d4", "scanner": "scanner-primary", "fingerprint": "f833e3648b1a2c60", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-827636689c09416f", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/error_codes_shared.js:1"}, "properties": {"repobilityId": "3f49cad4bd900f71", "scanner": "scanner-primary", "fingerprint": "827636689c09416f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be88dc1273ce936b", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/refunds.js:1"}, "properties": {"repobilityId": "1366016eb9b196fb", "scanner": "scanner-primary", "fingerprint": "be88dc1273ce936b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c9c5e5d569d743a0", "level": "none", "message": {"text": "Commented-code block (6 lines) in modules/products.js:99"}, "properties": {"repobilityId": "75b2f7087551107a", "scanner": "scanner-primary", "fingerprint": "c9c5e5d569d743a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11659bf8e01e9a0f", "level": "none", "message": {"text": "Commented-code block (6 lines) in modules/loyalty.js:88"}, "properties": {"repobilityId": "10ddb4b7339ca3c4", "scanner": "scanner-primary", "fingerprint": "11659bf8e01e9a0f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc89d874ccfdcf29", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/time_clock.js:459"}, "properties": {"repobilityId": "ccca6538c47b63d1", "scanner": "scanner-primary", "fingerprint": "cc89d874ccfdcf29", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8c8d93dc7a50b8a7", "level": "none", "message": {"text": "Commented-code block (6 lines) in modules/error_reporter.js:7"}, "properties": {"repobilityId": "2a61f0d2b83e6473", "scanner": "scanner-primary", "fingerprint": "8c8d93dc7a50b8a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-464f2efe64b68c70", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/service_form.js:1"}, "properties": {"repobilityId": "1c1faead41b778be", "scanner": "scanner-primary", "fingerprint": "464f2efe64b68c70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1978fa7f810afecc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/service_form.js:335"}, "properties": {"repobilityId": "463d912345b41340", "scanner": "scanner-primary", "fingerprint": "1978fa7f810afecc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eade702c3195914e", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/ac_quotation_draft.js:5"}, "properties": {"repobilityId": "4e99ef8a00fb839b", "scanner": "scanner-primary", "fingerprint": "eade702c3195914e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15da30625dac5f17", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/staff.js:1"}, "properties": {"repobilityId": "6958604ff6e26524", "scanner": "scanner-primary", "fingerprint": "15da30625dac5f17", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1063dd31e254507", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/profit_by_product.js:1"}, "properties": {"repobilityId": "29de6c436f15d31d", "scanner": "scanner-primary", "fingerprint": "e1063dd31e254507", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e2567ab13e9ed768", "level": "none", "message": {"text": "Commented-code block (12 lines) in modules/hr_forms.js:8"}, "properties": {"repobilityId": "e08dac3ed8a4f9e1", "scanner": "scanner-primary", "fingerprint": "e2567ab13e9ed768", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a2207401074114d5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/hr_forms.js:613"}, "properties": {"repobilityId": "7c7ea9e548255ef0", "scanner": "scanner-primary", "fingerprint": "a2207401074114d5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b070243326305bb7", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/service_equipment.js:5"}, "properties": {"repobilityId": "ef52f1fde3319a72", "scanner": "scanner-primary", "fingerprint": "b070243326305bb7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15ac29c2999b87de", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/ac_booking_draft.js:5"}, "properties": {"repobilityId": "5434cbec10fd8ef7", "scanner": "scanner-primary", "fingerprint": "15ac29c2999b87de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1633e937f50961b9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/service_request.js:240"}, "properties": {"repobilityId": "6899f6737b8d1e02", "scanner": "scanner-primary", "fingerprint": "1633e937f50961b9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1c53e354bd541b4c", "level": "none", "message": {"text": "Commented-code block (11 lines) in modules/error_codes.js:261"}, "properties": {"repobilityId": "3ff5952dfc5a0b6e", "scanner": "scanner-primary", "fingerprint": "1c53e354bd541b4c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-124080e0b6be893c", "level": "none", "message": {"text": "Commented-code block (6 lines) in modules/stock_cas.js:5"}, "properties": {"repobilityId": "4fad81a449e55c65", "scanner": "scanner-primary", "fingerprint": "124080e0b6be893c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a28388b32e4bf725", "level": "none", "message": {"text": "Commented-code block (8 lines) in modules/hr_overview.js:4"}, "properties": {"repobilityId": "bebd500e2c2c010c", "scanner": "scanner-primary", "fingerprint": "a28388b32e4bf725", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-089746403e9d1fae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/hr_overview.js:1244"}, "properties": {"repobilityId": "d04377be7847ed85", "scanner": "scanner-primary", "fingerprint": "089746403e9d1fae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f8bb16b0ffbc358c", "level": "none", "message": {"text": "Commented-code block (9 lines) in modules/ai_sales.js:302"}, "properties": {"repobilityId": "1d2283e29836847f", "scanner": "scanner-primary", "fingerprint": "f8bb16b0ffbc358c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57404331b0012975", "level": "none", "message": {"text": "Commented-code block (6 lines) in modules/bt_printer.js:10"}, "properties": {"repobilityId": "af5bc90ce0a3bacc", "scanner": "scanner-primary", "fingerprint": "57404331b0012975", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d36812bdc12e74c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/departments.js:37"}, "properties": {"repobilityId": "c588b00f23d851f4", "scanner": "scanner-primary", "fingerprint": "7d36812bdc12e74c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c87c94f850dc30a", "level": "none", "message": {"text": "Commented-code block (9 lines) in modules/product_detail_modal.js:7"}, "properties": {"repobilityId": "c0acea3662cb66a5", "scanner": "scanner-primary", "fingerprint": "2c87c94f850dc30a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f55bc7e3e89b7464", "level": "none", "message": {"text": "Commented-code block (8 lines) in modules/auth_otp.js:6"}, "properties": {"repobilityId": "ae862fc186402586", "scanner": "scanner-primary", "fingerprint": "f55bc7e3e89b7464", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5fc9f930b0bfdd8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/auth_otp.js:214"}, "properties": {"repobilityId": "3c834db3e02f0734", "scanner": "scanner-primary", "fingerprint": "e5fc9f930b0bfdd8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f6d0fb03ace21852", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/thermal_printer.js:1"}, "properties": {"repobilityId": "4e35e7a8f252ae8f", "scanner": "scanner-primary", "fingerprint": "f6d0fb03ace21852", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a65f2f1dbdf9222", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/customer_dashboard.js:66"}, "properties": {"repobilityId": "ff992d26935003cb", "scanner": "scanner-primary", "fingerprint": "2a65f2f1dbdf9222", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-057465e59fac901e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/tasks.js:264"}, "properties": {"repobilityId": "d9cf148daaa36d55", "scanner": "scanner-primary", "fingerprint": "057465e59fac901e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9bc3444e2812d310", "level": "none", "message": {"text": "Commented-code block (10 lines) in modules/utils.js:9"}, "properties": {"repobilityId": "2176d74acae8f3db", "scanner": "scanner-primary", "fingerprint": "9bc3444e2812d310", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d2716cc146b9b2fb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/utils.js:355"}, "properties": {"repobilityId": "7d55378dc8e4d243", "scanner": "scanner-primary", "fingerprint": "d2716cc146b9b2fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a8ff38aba08a2269", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/boot.js:4"}, "properties": {"repobilityId": "1da58edce517e825", "scanner": "scanner-primary", "fingerprint": "a8ff38aba08a2269", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-756c0817c39b1dc2", "level": "none", "message": {"text": "Commented-code block (9 lines) in modules/stock_precheck.js:1"}, "properties": {"repobilityId": "1507c24b571629ac", "scanner": "scanner-primary", "fingerprint": "756c0817c39b1dc2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5c35f0aff5aded8d", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/birthdays.js:1"}, "properties": {"repobilityId": "ef8dd630f8c0e12b", "scanner": "scanner-primary", "fingerprint": "5c35f0aff5aded8d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d205e7fcc7a528f", "level": "none", "message": {"text": "Commented-code block (7 lines) in modules/payroll.js:93"}, "properties": {"repobilityId": "2123527951aaf015", "scanner": "scanner-primary", "fingerprint": "7d205e7fcc7a528f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7d18d1c10cf168c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/payroll.js:322"}, "properties": {"repobilityId": "7efab6e8d15aca8a", "scanner": "scanner-primary", "fingerprint": "f7d18d1c10cf168c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c3f5dbb893c5a09f", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/solar.js:1"}, "properties": {"repobilityId": "f7075a94e087bdcd", "scanner": "scanner-primary", "fingerprint": "c3f5dbb893c5a09f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4472b5284ee68bd8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/solar.js:591"}, "properties": {"repobilityId": "2321ea200ca31e01", "scanner": "scanner-primary", "fingerprint": "4472b5284ee68bd8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9089d65fc8a32886", "level": "none", "message": {"text": "Commented-code block (7 lines) in modules/auth_email.js:13"}, "properties": {"repobilityId": "0cbbd03dcfe29ba2", "scanner": "scanner-primary", "fingerprint": "9089d65fc8a32886", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f47253cb10c0c16", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/quote_templates.js:252"}, "properties": {"repobilityId": "738780a33a8d9d22", "scanner": "scanner-primary", "fingerprint": "8f47253cb10c0c16", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-915d48505d42e947", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/warranty_report.js:1"}, "properties": {"repobilityId": "fd2aa1f4eb1ffb53", "scanner": "scanner-primary", "fingerprint": "915d48505d42e947", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-93580955de184bf5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/warranty_report.js:211"}, "properties": {"repobilityId": "2825e3305efeaf82", "scanner": "scanner-primary", "fingerprint": "93580955de184bf5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-251f62a503cc768c", "level": "none", "message": {"text": "Commented-code block (6 lines) in modules/service_reconcile.js:10"}, "properties": {"repobilityId": "6a07e7fca86dce54", "scanner": "scanner-primary", "fingerprint": "251f62a503cc768c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ceba4b9463c9eedf", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/otp_cooldown.js:8"}, "properties": {"repobilityId": "e4f9b33a1136aae1", "scanner": "scanner-primary", "fingerprint": "ceba4b9463c9eedf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7654d96afab4e25", "level": "none", "message": {"text": "Commented-code block (6 lines) in modules/ac_install.js:1"}, "properties": {"repobilityId": "461697a91df2d6fb", "scanner": "scanner-primary", "fingerprint": "e7654d96afab4e25", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56f6480f153e657d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/ac_install.js:321"}, "properties": {"repobilityId": "0e6b7d15ccc203da", "scanner": "scanner-primary", "fingerprint": "56f6480f153e657d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bda30f979b8fbe7c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/expenses.js:943"}, "properties": {"repobilityId": "b98c223cc1403441", "scanner": "scanner-primary", "fingerprint": "bda30f979b8fbe7c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-267d56577a24927a", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/lazy_libs.js:19"}, "properties": {"repobilityId": "6d457415e82e9ebc", "scanner": "scanner-primary", "fingerprint": "267d56577a24927a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8bcf664a4c0c6241", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/api.js:4"}, "properties": {"repobilityId": "14dd9a1bf1bbaaa1", "scanner": "scanner-primary", "fingerprint": "8bcf664a4c0c6241", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05af96192ef9c88c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/api.js:55"}, "properties": {"repobilityId": "d93db6c814051d66", "scanner": "scanner-primary", "fingerprint": "05af96192ef9c88c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1e41893d85f3cc8a", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/recurring_expenses.js:1"}, "properties": {"repobilityId": "39d248a4934dd9ef", "scanner": "scanner-primary", "fingerprint": "1e41893d85f3cc8a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c92ffa46947ca0db", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/recurring_expenses.js:289"}, "properties": {"repobilityId": "2874a74d432a213e", "scanner": "scanner-primary", "fingerprint": "c92ffa46947ca0db", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b5524d2c66183153", "level": "none", "message": {"text": "Commented-code block (10 lines) in modules/team_command_center.js:3"}, "properties": {"repobilityId": "26478b6c3ffa65e4", "scanner": "scanner-primary", "fingerprint": "b5524d2c66183153", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82447ddb4711c73a", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/serials.js:1"}, "properties": {"repobilityId": "7788d427108816ca", "scanner": "scanner-primary", "fingerprint": "82447ddb4711c73a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1529fd32a8112f8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/serials.js:333"}, "properties": {"repobilityId": "9b8bfed2e3a034d6", "scanner": "scanner-primary", "fingerprint": "d1529fd32a8112f8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c03e2c50fcfd4f0e", "level": "none", "message": {"text": "Commented-code block (6 lines) in modules/credit_tracker.js:46"}, "properties": {"repobilityId": "9d4c3c5f5238ff41", "scanner": "scanner-primary", "fingerprint": "c03e2c50fcfd4f0e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-68ffb74949c3b4d9", "level": "none", "message": {"text": "Commented-code block (7 lines) in modules/branding.js:14"}, "properties": {"repobilityId": "b6cc57df932f7d8a", "scanner": "scanner-primary", "fingerprint": "68ffb74949c3b4d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b559b6395ed1cc57", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/branding.js:111"}, "properties": {"repobilityId": "1ff8ff411bc4efd1", "scanner": "scanner-primary", "fingerprint": "b559b6395ed1cc57", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d2ff4da19e1b162e", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/doc-utils.js:1"}, "properties": {"repobilityId": "e010828a4775311e", "scanner": "scanner-primary", "fingerprint": "d2ff4da19e1b162e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7364f0403c402beb", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/error_codes_check_methods.js:1"}, "properties": {"repobilityId": "28bb13fc04ff2af6", "scanner": "scanner-primary", "fingerprint": "7364f0403c402beb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-49d0b20a55e81189", "level": "none", "message": {"text": "Commented-code block (7 lines) in modules/stock_reconcile_report.js:3"}, "properties": {"repobilityId": "7aa686cfe77e0966", "scanner": "scanner-primary", "fingerprint": "49d0b20a55e81189", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f98faed93543623", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/expense_overview.js:1"}, "properties": {"repobilityId": "a5d6c359a9cb8005", "scanner": "scanner-primary", "fingerprint": "9f98faed93543623", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-265f52feff0ae4a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/auth.js:8"}, "properties": {"repobilityId": "5af31a14b7df7162", "scanner": "scanner-primary", "fingerprint": "265f52feff0ae4a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae47319f6b3cbf27", "level": "note", "message": {"text": "Legacy-named symbol `bsk_help_seen_v1` in modules/help_tutor.js:6"}, "properties": {"repobilityId": "b733dad6cf9cf182", "scanner": "scanner-primary", "fingerprint": "ae47319f6b3cbf27", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1000d06250821d48", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/help_tutor.js:705"}, "properties": {"repobilityId": "1a61be5516fa6e3d", "scanner": "scanner-primary", "fingerprint": "1000d06250821d48", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-14c9f9208482302f", "level": "note", "message": {"text": "Legacy-named symbol `bsk_cart_v2` in modules/pos.js:331"}, "properties": {"repobilityId": "6bb9252a83ad1932", "scanner": "scanner-primary", "fingerprint": "14c9f9208482302f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-790d70a8e8a60040", "level": "none", "message": {"text": "Commented-code block (7 lines) in modules/pos.js:62"}, "properties": {"repobilityId": "880e62747e735ceb", "scanner": "scanner-primary", "fingerprint": "790d70a8e8a60040", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b8a5fbf7f4b8df3", "level": "none", "message": {"text": "Commented-code block (8 lines) in modules/settings/ac-spec-editor.js:4"}, "properties": {"repobilityId": "12ee4b53677863f8", "scanner": "scanner-primary", "fingerprint": "7b8a5fbf7f4b8df3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0365c10bc22edfb4", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/accounting/export_bundle.js:4"}, "properties": {"repobilityId": "f9b72448095ef6f3", "scanner": "scanner-primary", "fingerprint": "0365c10bc22edfb4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1641b2e7b1f387e8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/export_bundle.js:72"}, "properties": {"repobilityId": "93f5c8f313cbc59e", "scanner": "scanner-primary", "fingerprint": "1641b2e7b1f387e8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c73f3b871d2177c3", "level": "none", "message": {"text": "Commented-code block (7 lines) in modules/accounting/balance_sheet.js:9"}, "properties": {"repobilityId": "cd562a609c7b3ce0", "scanner": "scanner-primary", "fingerprint": "c73f3b871d2177c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0130dfbf6d8dcff2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/balance_sheet.js:47"}, "properties": {"repobilityId": "27a26cfc1f57e4da", "scanner": "scanner-primary", "fingerprint": "0130dfbf6d8dcff2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e7d32260a1990aad", "level": "note", "message": {"text": "Legacy-named symbol `too_old` in modules/accounting/date_guard.js:51"}, "properties": {"repobilityId": "25b2ebd7f9a136c4", "scanner": "scanner-primary", "fingerprint": "e7d32260a1990aad", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-de9e592bcdbd503a", "level": "none", "message": {"text": "Commented-code block (9 lines) in modules/accounting/date_guard.js:4"}, "properties": {"repobilityId": "6321b706c1e2c233", "scanner": "scanner-primary", "fingerprint": "de9e592bcdbd503a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e34ae11dc8f80aa6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/opening_balance.js:46"}, "properties": {"repobilityId": "1451c1557a17f182", "scanner": "scanner-primary", "fingerprint": "e34ae11dc8f80aa6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0e24400b5e65f7e6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/profit_loss.js:112"}, "properties": {"repobilityId": "20597d095a8ceca2", "scanner": "scanner-primary", "fingerprint": "0e24400b5e65f7e6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7449192d7051d3c6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/trial_balance.js:86"}, "properties": {"repobilityId": "3bd80f928bc548c9", "scanner": "scanner-primary", "fingerprint": "7449192d7051d3c6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7bb8e7b42b3c0d8e", "level": "note", "message": {"text": "Legacy-named symbol `too_old` in modules/accounting/journals.js:17"}, "properties": {"repobilityId": "1cec2ffed2d705f2", "scanner": "scanner-primary", "fingerprint": "7bb8e7b42b3c0d8e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9ba26a8dbe482057", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/journals.js:328"}, "properties": {"repobilityId": "175225c6cb9f168d", "scanner": "scanner-primary", "fingerprint": "9ba26a8dbe482057", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f6073460012bc318", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/periods.js:56"}, "properties": {"repobilityId": "fbea212b19626393", "scanner": "scanner-primary", "fingerprint": "f6073460012bc318", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-75438ecd914b06a5", "level": "none", "message": {"text": "Commented-code block (6 lines) in modules/accounting/backfill.js:9"}, "properties": {"repobilityId": "7d704df46c26c624", "scanner": "scanner-primary", "fingerprint": "75438ecd914b06a5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-415ca31c6e203f69", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/accounting/journal_form.js:4"}, "properties": {"repobilityId": "1475cb0b80ed5c71", "scanner": "scanner-primary", "fingerprint": "415ca31c6e203f69", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d9f58a8ae9599fa", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/journal_form.js:300"}, "properties": {"repobilityId": "3950019675589d62", "scanner": "scanner-primary", "fingerprint": "4d9f58a8ae9599fa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ebae54845f88d61d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/coa.js:234"}, "properties": {"repobilityId": "44674e4e21335070", "scanner": "scanner-primary", "fingerprint": "ebae54845f88d61d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-881ba0e7b71e18b9", "level": "none", "message": {"text": "Commented-code block (7 lines) in modules/accounting/auto_post.js:4"}, "properties": {"repobilityId": "76710e2161746e3d", "scanner": "scanner-primary", "fingerprint": "881ba0e7b71e18b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c29bfe8b5e9ee6b0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 modules/accounting/auto_post.js:44"}, "properties": {"repobilityId": "a2bca210d53a4074", "scanner": "scanner-primary", "fingerprint": "c29bfe8b5e9ee6b0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2eafc3188c36bb02", "level": "none", "message": {"text": "3 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "bd934ba112b02ffa", "scanner": "scanner-primary", "fingerprint": "2eafc3188c36bb02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}