{"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-af3aad1a678ba606", "name": "TODO/FIXME marker in shipping code \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/4995.86d2182d.js:24", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/4995.86d2182d.js:24084"}, "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-c5f622bc5b08f3ef", "name": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/4995.86d2182d.js:1058", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/4995.86d2182d.js:1058"}, "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-1670c2c3f33e257e", "name": "TODO/FIXME marker in shipping code \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/4995.2333d106.js:24", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/4995.2333d106.js:24084"}, "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-4d46947cac01efa5", "name": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/4995.2333d106.js:1058", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/4995.2333d106.js:1058"}, "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-662c909a41b45a4e", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/a9", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/a94703ab.b3bba68f.js:383"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-605e4904c747f9db", "name": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/553.55b955f2.js:10252", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/553.55b955f2.js:10252"}, "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-eb4f9d976d6bacfb", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/17", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/17896441.5200b775.js:536"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e2fc713094e2a551", "name": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 docs/website/static/examples/playbooks/defau", "shortDescription": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/1466.eaef7630.js:13197"}, "fullDescription": {"text": "React Flow edge labels render with a white rectangle behind the text by default, which scatters bright boxes across a dark canvas. Either drop the label, or override `.react-flow__edge-textbg` and `.react-flow__edge-text` in your stylesheet.\n\nWhy: P-H in CHECKLIST.md \u2014 vendor edge labels bleed white through a dark canvas.\nRule id: fq.edge-label.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-67f7ef08cca5c633", "name": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/3950.1b38d117.js:733", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/3950.1b38d117.js:733"}, "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-040caa18cbc0dc68", "name": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/3027.667865f0.js:3499", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/3027.667865f0.js:3499"}, "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-abb72f58457f837d", "name": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/3027.0353cf48.js:3499", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/3027.0353cf48.js:3499"}, "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-701d17a57b87a66c", "name": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/553.8bbdc9a5.js:10252", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/553.8bbdc9a5.js:10252"}, "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-d3a7641c0c44b25e", "name": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/3733.4636b4dd.js:1749", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/3733.4636b4dd.js:1749"}, "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-f62c0fd297c67e0f", "name": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 docs/website/static/examples/playbooks/defau", "shortDescription": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/1466.aa0af7f2.js:13197"}, "fullDescription": {"text": "React Flow edge labels render with a white rectangle behind the text by default, which scatters bright boxes across a dark canvas. Either drop the label, or override `.react-flow__edge-textbg` and `.react-flow__edge-text` in your stylesheet.\n\nWhy: P-H in CHECKLIST.md \u2014 vendor edge labels bleed white through a dark canvas.\nRule id: fq.edge-label.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5e6115ad7610abeb", "name": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/2686.6f55f1d5.js:302", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/2686.6f55f1d5.js:302"}, "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-5ed0310ab81213e3", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/a9", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/a94703ab.8d55695c.js:383"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dfb6fb643cef8670", "name": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/3733.4212cb97.js:1749", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/3733.4212cb97.js:1749"}, "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-46bd039ef17bb1d2", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/17", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/17896441.1c4ff451.js:536"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e12809aeaed11c60", "name": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/3950.d4ceed80.js:733", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/3950.d4ceed80.js:733"}, "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-5899e21878b83ba6", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/ma", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/main.71c0ac29.js:305"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2f29448ab14ec9d1", "name": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 docs/website/static/examples/playbooks/defau", "shortDescription": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/main.71c0ac29.js:3303"}, "fullDescription": {"text": "React Flow edge labels render with a white rectangle behind the text by default, which scatters bright boxes across a dark canvas. Either drop the label, or override `.react-flow__edge-textbg` and `.react-flow__edge-text` in your stylesheet.\n\nWhy: P-H in CHECKLIST.md \u2014 vendor edge labels bleed white through a dark canvas.\nRule id: fq.edge-label.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3a2de10ddec6b034", "name": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/2686.8443ec8f.js:302", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/2686.8443ec8f.js:302"}, "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-4436374534f0f97e", "name": "TODO/FIXME marker in shipping code \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/4995.86d2182d.js", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/4995.86d2182d.js:24084"}, "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-1cc72a9581985300", "name": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/4995.86d2182d.js:1058", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/4995.86d2182d.js:1058"}, "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-817d15b4f20e7e2d", "name": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/553.55b955f2.js:10252", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/553.55b955f2.js:10252"}, "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-0f3d9840e8b2630b", "name": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 docs/website/static/examples/playbooks/defau", "shortDescription": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/1466.eaef7630.js:13197"}, "fullDescription": {"text": "React Flow edge labels render with a white rectangle behind the text by default, which scatters bright boxes across a dark canvas. Either drop the label, or override `.react-flow__edge-textbg` and `.react-flow__edge-text` in your stylesheet.\n\nWhy: P-H in CHECKLIST.md \u2014 vendor edge labels bleed white through a dark canvas.\nRule id: fq.edge-label.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8222226b13908a98", "name": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/3950.1b38d117.js:733", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/3950.1b38d117.js:733"}, "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-86d543dbf419e825", "name": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/3027.667865f0.js:3499", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/3027.667865f0.js:3499"}, "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-21b9f8a59ca7f84e", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/main.334a8bac.js:305"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bed06aec6c1eceee", "name": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 docs/website/static/examples/playbooks/defau", "shortDescription": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/main.334a8bac.js:3303"}, "fullDescription": {"text": "React Flow edge labels render with a white rectangle behind the text by default, which scatters bright boxes across a dark canvas. Either drop the label, or override `.react-flow__edge-textbg` and `.react-flow__edge-text` in your stylesheet.\n\nWhy: P-H in CHECKLIST.md \u2014 vendor edge labels bleed white through a dark canvas.\nRule id: fq.edge-label.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-87ed6bd7a4524a2f", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/a94703ab.8d55695c.js:383"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-002519e7a830e487", "name": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/3733.4212cb97.js:1749", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/3733.4212cb97.js:1749"}, "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-762f059de0ee6941", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/17896441.1c4ff451.js:536"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-db6cd42dc2fc4c14", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/main.71c0ac29.js:305"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d069a46034956b29", "name": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 docs/website/static/examples/playbooks/defau", "shortDescription": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/main.71c0ac29.js:3303"}, "fullDescription": {"text": "React Flow edge labels render with a white rectangle behind the text by default, which scatters bright boxes across a dark canvas. Either drop the label, or override `.react-flow__edge-textbg` and `.react-flow__edge-text` in your stylesheet.\n\nWhy: P-H in CHECKLIST.md \u2014 vendor edge labels bleed white through a dark canvas.\nRule id: fq.edge-label.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4159be96cad365ef", "name": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/2686.8443ec8f.js:302", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/2686.8443ec8f.js:302"}, "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-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-fe897e71f9e88b47", "name": "Docker base image uses a mutable or implicit tag: final-${VARIANT}", "shortDescription": {"text": "Docker base image uses a mutable or implicit tag: final-${VARIANT}"}, "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": "medium", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cbe310f193a6df9f", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c9a78a7583798790", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e33c011c33a5a4d0", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-50a7431d0cb04a67", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ed88dec458724633", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e1c4a38b0644a0b6", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d638170dcf283827", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2236.3f5ef3f1.js (4395 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2236.3f5ef3f1.js (4395 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-b78ec6c67f173b78", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/4995.86d2182d.js (26207 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/4995.86d2182d.js (26207 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-5e5c45e1bf894af0", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3924.d5de1e8b.js (2767 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3924.d5de1e8b.js (2767 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-f45fa7ea4a7497a0", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/4995.2333d106.js (26207 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/4995.2333d106.js (26207 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-f106b22fd831cb7d", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/553.55b955f2.js (12158 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/553.55b955f2.js (12158 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-373ae42fc8206b61", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/1303.cd87ca3a.js (3444 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/1303.cd87ca3a.js (3444 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-181433878a7445a9", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/5907.5f5064f9.js (2079 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/5907.5f5064f9.js (2079 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-252f7c98a9ff9bcc", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/1519.19224f35.js (2691 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/1519.19224f35.js (2691 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-1c961e77935b83c2", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3347.73f3a73e.js (5839 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3347.73f3a73e.js (5839 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-dc4c31bc86c271f8", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/1466.eaef7630.js (26273 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/1466.eaef7630.js (26273 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-61681914df7edc3b", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/6451.4406ed7a.js (4121 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/6451.4406ed7a.js (4121 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-79f5d0e69e9244c8", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2694.a7eec9f7.js (1589 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2694.a7eec9f7.js (1589 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bc02680ada792768", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2042.0233ccb9.js (1397 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2042.0233ccb9.js (1397 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-66e30419172e39d8", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3347.a0f28379.js (5721 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3347.a0f28379.js (5721 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-073bc077dbb7debd", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3950.1b38d117.js (2420 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3950.1b38d117.js (2420 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-6c0fd9cba0aca766", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3027.667865f0.js (8114 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3027.667865f0.js (8114 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-7a5525e612d49c90", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3027.0353cf48.js (8114 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3027.0353cf48.js (8114 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-f5ee738ddb24c4a1", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2236.e1f32507.js (4395 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2236.e1f32507.js (4395 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-90cc988937c94943", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/9699.f8d9a1cb.js (2331 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/9699.f8d9a1cb.js (2331 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-601263f1960a665a", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/6529.4357f4a9.js (2288 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/6529.4357f4a9.js (2288 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-5bf2d94e46c47763", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/553.8bbdc9a5.js (12158 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/553.8bbdc9a5.js (12158 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-8e468630192ee92c", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3733.4636b4dd.js (21451 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3733.4636b4dd.js (21451 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-31c50d53ac3f1b25", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/5074.685d64b0.js (1412 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/5074.685d64b0.js (1412 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-e9ac6997f11f727d", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2694.180367af.js (1589 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2694.180367af.js (1589 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5249e2b1a469d541", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/5907.dc38f270.js (2079 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/5907.dc38f270.js (2079 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-bc2113e43d77622e", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/8378.72908476.js (3857 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/8378.72908476.js (3857 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-7598849a228998cf", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/9699.fd900124.js (2331 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/9699.fd900124.js (2331 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-6b7cfef27c38d130", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2289.a6025bc1.js (2078 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2289.a6025bc1.js (2078 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-f61257f3486d83d8", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/1466.aa0af7f2.js (26261 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/1466.aa0af7f2.js (26261 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-14aae66f9b9568df", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2686.6f55f1d5.js (1964 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2686.6f55f1d5.js (1964 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-248a0c2414b33994", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2042.69e2bc8a.js (1397 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2042.69e2bc8a.js (1397 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-468878d71132b830", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/8378.1d18cde0.js (3983 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/8378.1d18cde0.js (3983 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-50b96a0cf393b2ce", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/6451.3547c8a8.js (4129 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/6451.3547c8a8.js (4129 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-e0580e69851e7779", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2289.24f5b2c3.js (2078 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2289.24f5b2c3.js (2078 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-fb881161adaa1dff", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3733.4212cb97.js (21451 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3733.4212cb97.js (21451 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-91e4ac3b4c6c80a0", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/6529.a0325c79.js (2288 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/6529.a0325c79.js (2288 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-604905708d3501de", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3924.cb4a6670.js (2767 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3924.cb4a6670.js (2767 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-310d79f18cb2735b", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/1303.a1b140a8.js (3326 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/1303.a1b140a8.js (3326 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-f0d1c717c702c9c0", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3950.d4ceed80.js (2420 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3950.d4ceed80.js (2420 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-858d9470d5c9c615", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/main.71c0ac29.js (26564 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/main.71c0ac29.js (26564 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-30d57f637033e873", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2686.8443ec8f.js (1964 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2686.8443ec8f.js (1964 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-06f44bc60e85cc6a", "name": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/1519.8f6119fd.js (2817 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/1519.8f6119fd.js (2817 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-fdfdbe27cb9792d8", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/4995.86d2182d.js (26207 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/4995.86d2182d.js (26207 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-a53b475f3dd6854f", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/553.55b955f2.js (12158 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/553.55b955f2.js (12158 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-5e41351c69e5f59a", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/1519.19224f35.js (2691 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/1519.19224f35.js (2691 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-6607c54585f52f39", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/1466.eaef7630.js (26273 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/1466.eaef7630.js (26273 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-4785bee8a08e60b2", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/6451.4406ed7a.js (4121 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/6451.4406ed7a.js (4121 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-efc19bddbb38aaeb", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/2042.0233ccb9.js (1397 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/2042.0233ccb9.js (1397 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-edf3f11db501cb5b", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/3347.a0f28379.js (5721 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/3347.a0f28379.js (5721 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-89f36f05306ffd2b", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/3950.1b38d117.js (2420 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/3950.1b38d117.js (2420 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-3393ecee1d7ca9c5", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/3027.667865f0.js (8114 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/3027.667865f0.js (8114 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-22fb0d4b9d44e9e0", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/2236.e1f32507.js (4395 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/2236.e1f32507.js (4395 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-27945b4bb6fdedef", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/9699.f8d9a1cb.js (2331 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/9699.f8d9a1cb.js (2331 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-b9881fb9b38e4b69", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/6529.4357f4a9.js (2288 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/6529.4357f4a9.js (2288 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-0ea92a6fb7f4645d", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/main.334a8bac.js (26564 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/main.334a8bac.js (26564 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-d3a599d577bd6147", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/2694.180367af.js (1589 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/2694.180367af.js (1589 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee879da2b22a8253", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/5907.dc38f270.js (2079 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/5907.dc38f270.js (2079 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-b1644da8b28ecdf6", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/8378.72908476.js (3857 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/8378.72908476.js (3857 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-24951c642233530f", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/2289.a6025bc1.js (2078 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/2289.a6025bc1.js (2078 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-99a298ee02c62ce8", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/3733.4212cb97.js (21451 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/3733.4212cb97.js (21451 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-44f21935aed6bf16", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/3924.cb4a6670.js (2767 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/3924.cb4a6670.js (2767 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-55cbbb718e1ec2b4", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/1303.a1b140a8.js (3326 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/1303.a1b140a8.js (3326 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-dcb77b2539a83b7d", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/main.71c0ac29.js (26564 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/main.71c0ac29.js (26564 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-fea88e81e44784cf", "name": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/2686.8443ec8f.js (1964 lines)", "shortDescription": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/2686.8443ec8f.js (1964 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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 39 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 114 placeholder/mock markers across 11 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-122f91b7f2906dc4", "name": "Agent authority lacks a verifier contract: .claude/settings.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2c5f98b152cddb6d", "name": "Agent authority lacks a verifier contract: .claude/launch.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-923009e093ead168", "name": "Agent instruction/config may expose a secret: .github/instructions/security-and-owasp.instructions.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .github/instructions/security-and-owasp.instructions.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8f28ead38d30102e", "name": "Agent authority lacks a verifier contract: .github/instructions/markdown.instructions.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .github/instructions/markdown.instructions.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-e327d7e6b67f65c1", "name": "Agent instruction/config may expose a secret: .github/skills/gh-cli/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .github/skills/gh-cli/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-548a73dfe82b63c3", "name": "Legacy-named symbol `res_legacy` in tests/test_rules_evaluator.py:172", "shortDescription": {"text": "Legacy-named symbol `res_legacy` in tests/test_rules_evaluator.py:172"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c0ae74a82f2ecb7", "name": "Commented-code block (5 lines) in tests/commands/test_playbook_migrate.py:35", "shortDescription": {"text": "Commented-code block (5 lines) in tests/commands/test_playbook_migrate.py:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-caf767afe5477ed4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/553.55b955", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/553.55b955f2.js:5740"}, "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-177ebe6727c2148e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/553.8bbdc9", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/553.8bbdc9a5.js:5740"}, "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-556f1a741982f476", "name": "Legacy-named symbol `AsOld` in docs/website/static/examples/playbooks/default/alpine/assets/js/3733.4636b4dd.js:1912", "shortDescription": {"text": "Legacy-named symbol `AsOld` in docs/website/static/examples/playbooks/default/alpine/assets/js/3733.4636b4dd.js:1912"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f011df9aa95b543e", "name": "Legacy-named symbol `AsOld` in docs/website/static/examples/playbooks/default/alpine/assets/js/3733.4212cb97.js:1912", "shortDescription": {"text": "Legacy-named symbol `AsOld` in docs/website/static/examples/playbooks/default/alpine/assets/js/3733.4212cb97.js:1912"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-753088fda10ff330", "name": "Legacy-named symbol `unstable_legacy` in docs/website/static/examples/playbooks/default/alpine/assets/js/main.71c0ac29.j", "shortDescription": {"text": "Legacy-named symbol `unstable_legacy` in docs/website/static/examples/playbooks/default/alpine/assets/js/main.71c0ac29.js:11547"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-56c3b69fb768ccf3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/1df93b7f.d", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/1df93b7f.d6684e61.js:174"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-364cee17f299ab35", "name": "`fetch()` without try/.catch or AbortSignal \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/553.55b", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/553.55b955f2.js:5740"}, "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-24ec13296a1a5b7d", "name": "Legacy-named symbol `unstable_legacy` in docs/website/static/examples/playbooks/default/regis-cli/assets/js/main.334a8ba", "shortDescription": {"text": "Legacy-named symbol `unstable_legacy` in docs/website/static/examples/playbooks/default/regis-cli/assets/js/main.334a8bac.js:11547"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-48389b5b2452bb90", "name": "Legacy-named symbol `AsOld` in docs/website/static/examples/playbooks/default/regis-cli/assets/js/3733.4212cb97.js:1912", "shortDescription": {"text": "Legacy-named symbol `AsOld` in docs/website/static/examples/playbooks/default/regis-cli/assets/js/3733.4212cb97.js:1912"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72cfa3904d99557d", "name": "Legacy-named symbol `unstable_legacy` in docs/website/static/examples/playbooks/default/regis-cli/assets/js/main.71c0ac2", "shortDescription": {"text": "Legacy-named symbol `unstable_legacy` in docs/website/static/examples/playbooks/default/regis-cli/assets/js/main.71c0ac29.js:11547"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a1f231a7a7e2c1eb", "name": "Network/subprocess call without timeout or try/except \u2014 regis/adapters/driven/tools/subprocess_tool_runner.py:75", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 regis/adapters/driven/tools/subprocess_tool_runner.py:75"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dedab0a72c19b019", "name": "Legacy-named symbol `r_copy` in regis/rules/evaluator.py:178", "shortDescription": {"text": "Legacy-named symbol `r_copy` in regis/rules/evaluator.py:178"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db6034a314d65f56", "name": "Commented-code block (5 lines) in regis/commands/playbook.py:16", "shortDescription": {"text": "Commented-code block (5 lines) in regis/commands/playbook.py:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nregis/utils/syft.py:run_syft, regis/utils/grype.py:run_grype\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/21659"}, "properties": {"repository": "trivoallan/regis", "repoUrl": "https://github.com/trivoallan/regis", "branch": "main"}, "results": [{"ruleId": "scanner-af3aad1a678ba606", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/4995.86d2182d.js:24084"}, "properties": {"repobilityId": "88bc21725485cf33", "scanner": "scanner-primary", "fingerprint": "af3aad1a678ba606", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-c5f622bc5b08f3ef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/4995.86d2182d.js:1058"}, "properties": {"repobilityId": "b4993f2c887a9eaf", "scanner": "scanner-primary", "fingerprint": "c5f622bc5b08f3ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1670c2c3f33e257e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/4995.2333d106.js:24084"}, "properties": {"repobilityId": "1ebf5613f263cfb0", "scanner": "scanner-primary", "fingerprint": "1670c2c3f33e257e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-4d46947cac01efa5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/4995.2333d106.js:1058"}, "properties": {"repobilityId": "74047f68f957a425", "scanner": "scanner-primary", "fingerprint": "4d46947cac01efa5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-662c909a41b45a4e", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/a94703ab.b3bba68f.js:383"}, "properties": {"repobilityId": "162d5053441648e2", "scanner": "scanner-primary", "fingerprint": "662c909a41b45a4e", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-605e4904c747f9db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/553.55b955f2.js:10252"}, "properties": {"repobilityId": "45bf35656502fc21", "scanner": "scanner-primary", "fingerprint": "605e4904c747f9db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eb4f9d976d6bacfb", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/17896441.5200b775.js:536"}, "properties": {"repobilityId": "6dd9bedc632c812b", "scanner": "scanner-primary", "fingerprint": "eb4f9d976d6bacfb", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-e2fc713094e2a551", "level": "note", "message": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/1466.eaef7630.js:13197"}, "properties": {"repobilityId": "d1cd27bbeb8178c7", "scanner": "scanner-primary", "fingerprint": "e2fc713094e2a551", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.edge-label.no-bg"]}}, {"ruleId": "scanner-67f7ef08cca5c633", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/3950.1b38d117.js:733"}, "properties": {"repobilityId": "ffcac8ce23f6e4b6", "scanner": "scanner-primary", "fingerprint": "67f7ef08cca5c633", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-040caa18cbc0dc68", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/3027.667865f0.js:3499"}, "properties": {"repobilityId": "be70976a8f29c711", "scanner": "scanner-primary", "fingerprint": "040caa18cbc0dc68", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-abb72f58457f837d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/3027.0353cf48.js:3499"}, "properties": {"repobilityId": "a310ed1ccc9ae018", "scanner": "scanner-primary", "fingerprint": "abb72f58457f837d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-701d17a57b87a66c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/553.8bbdc9a5.js:10252"}, "properties": {"repobilityId": "6df06b4ee8a3d09f", "scanner": "scanner-primary", "fingerprint": "701d17a57b87a66c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d3a7641c0c44b25e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/3733.4636b4dd.js:1749"}, "properties": {"repobilityId": "db79a81f8ff04a34", "scanner": "scanner-primary", "fingerprint": "d3a7641c0c44b25e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f62c0fd297c67e0f", "level": "note", "message": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/1466.aa0af7f2.js:13197"}, "properties": {"repobilityId": "b619c9d04ad726bf", "scanner": "scanner-primary", "fingerprint": "f62c0fd297c67e0f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.edge-label.no-bg"]}}, {"ruleId": "scanner-5e6115ad7610abeb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/2686.6f55f1d5.js:302"}, "properties": {"repobilityId": "06e1141c62b5cec5", "scanner": "scanner-primary", "fingerprint": "5e6115ad7610abeb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ed0310ab81213e3", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/a94703ab.8d55695c.js:383"}, "properties": {"repobilityId": "1d510bdc25fcaa97", "scanner": "scanner-primary", "fingerprint": "5ed0310ab81213e3", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-dfb6fb643cef8670", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/3733.4212cb97.js:1749"}, "properties": {"repobilityId": "37ca81e769e26ff4", "scanner": "scanner-primary", "fingerprint": "dfb6fb643cef8670", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-46bd039ef17bb1d2", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/17896441.1c4ff451.js:536"}, "properties": {"repobilityId": "fae8a625bdf32b3e", "scanner": "scanner-primary", "fingerprint": "46bd039ef17bb1d2", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-e12809aeaed11c60", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/3950.d4ceed80.js:733"}, "properties": {"repobilityId": "7a6d0f2db6b9857f", "scanner": "scanner-primary", "fingerprint": "e12809aeaed11c60", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5899e21878b83ba6", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/main.71c0ac29.js:305"}, "properties": {"repobilityId": "41b815f5f0e216bc", "scanner": "scanner-primary", "fingerprint": "5899e21878b83ba6", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-2f29448ab14ec9d1", "level": "note", "message": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/main.71c0ac29.js:3303"}, "properties": {"repobilityId": "324bfe2777b29208", "scanner": "scanner-primary", "fingerprint": "2f29448ab14ec9d1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.edge-label.no-bg"]}}, {"ruleId": "scanner-3a2de10ddec6b034", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/2686.8443ec8f.js:302"}, "properties": {"repobilityId": "e89be3a64831dc20", "scanner": "scanner-primary", "fingerprint": "3a2de10ddec6b034", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4436374534f0f97e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/4995.86d2182d.js:24084"}, "properties": {"repobilityId": "3ebd1d8b357a2433", "scanner": "scanner-primary", "fingerprint": "4436374534f0f97e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-1cc72a9581985300", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/4995.86d2182d.js:1058"}, "properties": {"repobilityId": "b48348150a5815b5", "scanner": "scanner-primary", "fingerprint": "1cc72a9581985300", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-817d15b4f20e7e2d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/553.55b955f2.js:10252"}, "properties": {"repobilityId": "ba3410adaf4260ac", "scanner": "scanner-primary", "fingerprint": "817d15b4f20e7e2d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f3d9840e8b2630b", "level": "note", "message": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/1466.eaef7630.js:13197"}, "properties": {"repobilityId": "f8d1f612b99f334b", "scanner": "scanner-primary", "fingerprint": "0f3d9840e8b2630b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.edge-label.no-bg"]}}, {"ruleId": "scanner-8222226b13908a98", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/3950.1b38d117.js:733"}, "properties": {"repobilityId": "5125a8fddfb11dfc", "scanner": "scanner-primary", "fingerprint": "8222226b13908a98", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-86d543dbf419e825", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/3027.667865f0.js:3499"}, "properties": {"repobilityId": "5f86912c81dec10e", "scanner": "scanner-primary", "fingerprint": "86d543dbf419e825", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-21b9f8a59ca7f84e", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/main.334a8bac.js:305"}, "properties": {"repobilityId": "68cb50aa6645869e", "scanner": "scanner-primary", "fingerprint": "21b9f8a59ca7f84e", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-bed06aec6c1eceee", "level": "note", "message": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/main.334a8bac.js:3303"}, "properties": {"repobilityId": "e6f7bdf10c00ca1a", "scanner": "scanner-primary", "fingerprint": "bed06aec6c1eceee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.edge-label.no-bg"]}}, {"ruleId": "scanner-87ed6bd7a4524a2f", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/a94703ab.8d55695c.js:383"}, "properties": {"repobilityId": "1a5d3ce494912790", "scanner": "scanner-primary", "fingerprint": "87ed6bd7a4524a2f", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-002519e7a830e487", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/3733.4212cb97.js:1749"}, "properties": {"repobilityId": "62cb399495cbb5c3", "scanner": "scanner-primary", "fingerprint": "002519e7a830e487", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-762f059de0ee6941", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/17896441.1c4ff451.js:536"}, "properties": {"repobilityId": "902df70af9b67b7a", "scanner": "scanner-primary", "fingerprint": "762f059de0ee6941", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-db6cd42dc2fc4c14", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/main.71c0ac29.js:305"}, "properties": {"repobilityId": "3b8880cadc1c0f70", "scanner": "scanner-primary", "fingerprint": "db6cd42dc2fc4c14", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-d069a46034956b29", "level": "note", "message": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/main.71c0ac29.js:3303"}, "properties": {"repobilityId": "5b9722bbb9e43442", "scanner": "scanner-primary", "fingerprint": "d069a46034956b29", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.edge-label.no-bg"]}}, {"ruleId": "scanner-4159be96cad365ef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/2686.8443ec8f.js:302"}, "properties": {"repobilityId": "611670a9d39ed933", "scanner": "scanner-primary", "fingerprint": "4159be96cad365ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"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-fe897e71f9e88b47", "level": "warning", "message": {"text": "Docker base image uses a mutable or implicit tag: final-${VARIANT}"}, "properties": {"repobilityId": "51e86c13e264c2bb", "scanner": "scanner-primary", "fingerprint": "fe897e71f9e88b47", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 230}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-cbe310f193a6df9f", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "573212e145c44806", "scanner": "scanner-primary", "fingerprint": "cbe310f193a6df9f", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-please.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c9a78a7583798790", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "49627243c51832bb", "scanner": "scanner-primary", "fingerprint": "c9a78a7583798790", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-lint.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e33c011c33a5a4d0", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "f93db1a709999706", "scanner": "scanner-primary", "fingerprint": "e33c011c33a5a4d0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/cd-docker.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-50a7431d0cb04a67", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "ca84f54cd6b6089c", "scanner": "scanner-primary", "fingerprint": "50a7431d0cb04a67", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/cleanup-ghcr.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ed88dec458724633", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "75fc1547123a804d", "scanner": "scanner-primary", "fingerprint": "ed88dec458724633", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/repo-autorebase.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e1c4a38b0644a0b6", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "af26f00bac67d216", "scanner": "scanner-primary", "fingerprint": "e1c4a38b0644a0b6", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/cd-docs.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d638170dcf283827", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2236.3f5ef3f1.js (4395 lines)"}, "properties": {"repobilityId": "2488f1fac26b4e8f", "scanner": "scanner-primary", "fingerprint": "d638170dcf283827", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b78ec6c67f173b78", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/4995.86d2182d.js (26207 lines)"}, "properties": {"repobilityId": "d09cdd7eaf991a1d", "scanner": "scanner-primary", "fingerprint": "b78ec6c67f173b78", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5e5c45e1bf894af0", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3924.d5de1e8b.js (2767 lines)"}, "properties": {"repobilityId": "5bb91e8500220757", "scanner": "scanner-primary", "fingerprint": "5e5c45e1bf894af0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f45fa7ea4a7497a0", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/4995.2333d106.js (26207 lines)"}, "properties": {"repobilityId": "ca768c1ac9baf454", "scanner": "scanner-primary", "fingerprint": "f45fa7ea4a7497a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f106b22fd831cb7d", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/553.55b955f2.js (12158 lines)"}, "properties": {"repobilityId": "1df52cbdab88b071", "scanner": "scanner-primary", "fingerprint": "f106b22fd831cb7d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-373ae42fc8206b61", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/1303.cd87ca3a.js (3444 lines)"}, "properties": {"repobilityId": "16e7b7a9d1174d44", "scanner": "scanner-primary", "fingerprint": "373ae42fc8206b61", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-181433878a7445a9", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/5907.5f5064f9.js (2079 lines)"}, "properties": {"repobilityId": "6e5e44556120bb37", "scanner": "scanner-primary", "fingerprint": "181433878a7445a9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-252f7c98a9ff9bcc", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/1519.19224f35.js (2691 lines)"}, "properties": {"repobilityId": "b62886105d48b6e7", "scanner": "scanner-primary", "fingerprint": "252f7c98a9ff9bcc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1c961e77935b83c2", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3347.73f3a73e.js (5839 lines)"}, "properties": {"repobilityId": "6ad3ecf7d90e38b1", "scanner": "scanner-primary", "fingerprint": "1c961e77935b83c2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dc4c31bc86c271f8", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/1466.eaef7630.js (26273 lines)"}, "properties": {"repobilityId": "b5dd26dc8c3c1b8b", "scanner": "scanner-primary", "fingerprint": "dc4c31bc86c271f8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-61681914df7edc3b", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/6451.4406ed7a.js (4121 lines)"}, "properties": {"repobilityId": "f95b008734b21ee8", "scanner": "scanner-primary", "fingerprint": "61681914df7edc3b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-79f5d0e69e9244c8", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2694.a7eec9f7.js (1589 lines)"}, "properties": {"repobilityId": "7329257b98ff9ddf", "scanner": "scanner-primary", "fingerprint": "79f5d0e69e9244c8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bc02680ada792768", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2042.0233ccb9.js (1397 lines)"}, "properties": {"repobilityId": "6f8211273735b46b", "scanner": "scanner-primary", "fingerprint": "bc02680ada792768", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-66e30419172e39d8", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3347.a0f28379.js (5721 lines)"}, "properties": {"repobilityId": "fe613e8e8c4d7ec6", "scanner": "scanner-primary", "fingerprint": "66e30419172e39d8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-073bc077dbb7debd", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3950.1b38d117.js (2420 lines)"}, "properties": {"repobilityId": "681bcdd1f29c45e9", "scanner": "scanner-primary", "fingerprint": "073bc077dbb7debd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6c0fd9cba0aca766", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3027.667865f0.js (8114 lines)"}, "properties": {"repobilityId": "e8ec2aa9d2a8697f", "scanner": "scanner-primary", "fingerprint": "6c0fd9cba0aca766", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7a5525e612d49c90", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3027.0353cf48.js (8114 lines)"}, "properties": {"repobilityId": "dbdfc6dc50a9417a", "scanner": "scanner-primary", "fingerprint": "7a5525e612d49c90", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f5ee738ddb24c4a1", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2236.e1f32507.js (4395 lines)"}, "properties": {"repobilityId": "f2f04b6ab35c6763", "scanner": "scanner-primary", "fingerprint": "f5ee738ddb24c4a1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-90cc988937c94943", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/9699.f8d9a1cb.js (2331 lines)"}, "properties": {"repobilityId": "c6186c137685092c", "scanner": "scanner-primary", "fingerprint": "90cc988937c94943", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-601263f1960a665a", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/6529.4357f4a9.js (2288 lines)"}, "properties": {"repobilityId": "887016389e0f77cf", "scanner": "scanner-primary", "fingerprint": "601263f1960a665a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5bf2d94e46c47763", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/553.8bbdc9a5.js (12158 lines)"}, "properties": {"repobilityId": "280b1858e63209fc", "scanner": "scanner-primary", "fingerprint": "5bf2d94e46c47763", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8e468630192ee92c", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3733.4636b4dd.js (21451 lines)"}, "properties": {"repobilityId": "81c68b3b4796e813", "scanner": "scanner-primary", "fingerprint": "8e468630192ee92c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-31c50d53ac3f1b25", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/5074.685d64b0.js (1412 lines)"}, "properties": {"repobilityId": "c456cda48e946210", "scanner": "scanner-primary", "fingerprint": "31c50d53ac3f1b25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e9ac6997f11f727d", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2694.180367af.js (1589 lines)"}, "properties": {"repobilityId": "2490fdfcef7dfd08", "scanner": "scanner-primary", "fingerprint": "e9ac6997f11f727d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5249e2b1a469d541", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/5907.dc38f270.js (2079 lines)"}, "properties": {"repobilityId": "ccbbe7d59f725619", "scanner": "scanner-primary", "fingerprint": "5249e2b1a469d541", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bc2113e43d77622e", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/8378.72908476.js (3857 lines)"}, "properties": {"repobilityId": "1d4a88086e4781a1", "scanner": "scanner-primary", "fingerprint": "bc2113e43d77622e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7598849a228998cf", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/9699.fd900124.js (2331 lines)"}, "properties": {"repobilityId": "21a91e793a38bfc7", "scanner": "scanner-primary", "fingerprint": "7598849a228998cf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6b7cfef27c38d130", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2289.a6025bc1.js (2078 lines)"}, "properties": {"repobilityId": "1bbd7086292f286c", "scanner": "scanner-primary", "fingerprint": "6b7cfef27c38d130", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f61257f3486d83d8", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/1466.aa0af7f2.js (26261 lines)"}, "properties": {"repobilityId": "3c5f64dd46a366c2", "scanner": "scanner-primary", "fingerprint": "f61257f3486d83d8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-14aae66f9b9568df", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2686.6f55f1d5.js (1964 lines)"}, "properties": {"repobilityId": "f19119e592e7124c", "scanner": "scanner-primary", "fingerprint": "14aae66f9b9568df", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-248a0c2414b33994", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2042.69e2bc8a.js (1397 lines)"}, "properties": {"repobilityId": "ea3975961997473c", "scanner": "scanner-primary", "fingerprint": "248a0c2414b33994", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-468878d71132b830", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/8378.1d18cde0.js (3983 lines)"}, "properties": {"repobilityId": "b8ce80ec29c5251c", "scanner": "scanner-primary", "fingerprint": "468878d71132b830", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-50b96a0cf393b2ce", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/6451.3547c8a8.js (4129 lines)"}, "properties": {"repobilityId": "dc637c1fec74b872", "scanner": "scanner-primary", "fingerprint": "50b96a0cf393b2ce", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e0580e69851e7779", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2289.24f5b2c3.js (2078 lines)"}, "properties": {"repobilityId": "00c29caa93504a29", "scanner": "scanner-primary", "fingerprint": "e0580e69851e7779", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fb881161adaa1dff", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3733.4212cb97.js (21451 lines)"}, "properties": {"repobilityId": "e13f89f197e921f5", "scanner": "scanner-primary", "fingerprint": "fb881161adaa1dff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-91e4ac3b4c6c80a0", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/6529.a0325c79.js (2288 lines)"}, "properties": {"repobilityId": "b94bc3e06ee48699", "scanner": "scanner-primary", "fingerprint": "91e4ac3b4c6c80a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-604905708d3501de", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3924.cb4a6670.js (2767 lines)"}, "properties": {"repobilityId": "62a61941ed1a39d8", "scanner": "scanner-primary", "fingerprint": "604905708d3501de", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-310d79f18cb2735b", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/1303.a1b140a8.js (3326 lines)"}, "properties": {"repobilityId": "69f3e40eb51dad2f", "scanner": "scanner-primary", "fingerprint": "310d79f18cb2735b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f0d1c717c702c9c0", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/3950.d4ceed80.js (2420 lines)"}, "properties": {"repobilityId": "f3b77af1fe34b570", "scanner": "scanner-primary", "fingerprint": "f0d1c717c702c9c0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-858d9470d5c9c615", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/main.71c0ac29.js (26564 lines)"}, "properties": {"repobilityId": "48241cd5a2f19f5c", "scanner": "scanner-primary", "fingerprint": "858d9470d5c9c615", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-30d57f637033e873", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/2686.8443ec8f.js (1964 lines)"}, "properties": {"repobilityId": "336e75b0428fc71e", "scanner": "scanner-primary", "fingerprint": "30d57f637033e873", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-06f44bc60e85cc6a", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/alpine/assets/js/1519.8f6119fd.js (2817 lines)"}, "properties": {"repobilityId": "bfc0152b52afc981", "scanner": "scanner-primary", "fingerprint": "06f44bc60e85cc6a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fdfdbe27cb9792d8", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/4995.86d2182d.js (26207 lines)"}, "properties": {"repobilityId": "93c3533b4cb6ae06", "scanner": "scanner-primary", "fingerprint": "fdfdbe27cb9792d8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a53b475f3dd6854f", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/553.55b955f2.js (12158 lines)"}, "properties": {"repobilityId": "f21d0bfe1f56489b", "scanner": "scanner-primary", "fingerprint": "a53b475f3dd6854f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5e41351c69e5f59a", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/1519.19224f35.js (2691 lines)"}, "properties": {"repobilityId": "c045eedc08b8e5eb", "scanner": "scanner-primary", "fingerprint": "5e41351c69e5f59a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6607c54585f52f39", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/1466.eaef7630.js (26273 lines)"}, "properties": {"repobilityId": "169aea4cbff20b05", "scanner": "scanner-primary", "fingerprint": "6607c54585f52f39", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4785bee8a08e60b2", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/6451.4406ed7a.js (4121 lines)"}, "properties": {"repobilityId": "8698381736fa498b", "scanner": "scanner-primary", "fingerprint": "4785bee8a08e60b2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-efc19bddbb38aaeb", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/2042.0233ccb9.js (1397 lines)"}, "properties": {"repobilityId": "9131b77aacb0c2b5", "scanner": "scanner-primary", "fingerprint": "efc19bddbb38aaeb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-edf3f11db501cb5b", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/3347.a0f28379.js (5721 lines)"}, "properties": {"repobilityId": "475c9427c642995a", "scanner": "scanner-primary", "fingerprint": "edf3f11db501cb5b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-89f36f05306ffd2b", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/3950.1b38d117.js (2420 lines)"}, "properties": {"repobilityId": "1e600f8f10d18f39", "scanner": "scanner-primary", "fingerprint": "89f36f05306ffd2b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3393ecee1d7ca9c5", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/3027.667865f0.js (8114 lines)"}, "properties": {"repobilityId": "cbcd1196ab86976c", "scanner": "scanner-primary", "fingerprint": "3393ecee1d7ca9c5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-22fb0d4b9d44e9e0", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/2236.e1f32507.js (4395 lines)"}, "properties": {"repobilityId": "c99a517ab580fcb5", "scanner": "scanner-primary", "fingerprint": "22fb0d4b9d44e9e0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-27945b4bb6fdedef", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/9699.f8d9a1cb.js (2331 lines)"}, "properties": {"repobilityId": "1f5634ff3d7c9df4", "scanner": "scanner-primary", "fingerprint": "27945b4bb6fdedef", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b9881fb9b38e4b69", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/6529.4357f4a9.js (2288 lines)"}, "properties": {"repobilityId": "b3e59dca5b2d1077", "scanner": "scanner-primary", "fingerprint": "b9881fb9b38e4b69", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0ea92a6fb7f4645d", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/main.334a8bac.js (26564 lines)"}, "properties": {"repobilityId": "6021702267964f88", "scanner": "scanner-primary", "fingerprint": "0ea92a6fb7f4645d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d3a599d577bd6147", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/2694.180367af.js (1589 lines)"}, "properties": {"repobilityId": "647f16f35cfed056", "scanner": "scanner-primary", "fingerprint": "d3a599d577bd6147", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ee879da2b22a8253", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/5907.dc38f270.js (2079 lines)"}, "properties": {"repobilityId": "7c24fadff4e8ea56", "scanner": "scanner-primary", "fingerprint": "ee879da2b22a8253", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b1644da8b28ecdf6", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/8378.72908476.js (3857 lines)"}, "properties": {"repobilityId": "901affe4bb3f1a36", "scanner": "scanner-primary", "fingerprint": "b1644da8b28ecdf6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-24951c642233530f", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/2289.a6025bc1.js (2078 lines)"}, "properties": {"repobilityId": "a94722bb9fc88d01", "scanner": "scanner-primary", "fingerprint": "24951c642233530f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-99a298ee02c62ce8", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/3733.4212cb97.js (21451 lines)"}, "properties": {"repobilityId": "29dc2cefb0683dfa", "scanner": "scanner-primary", "fingerprint": "99a298ee02c62ce8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-44f21935aed6bf16", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/3924.cb4a6670.js (2767 lines)"}, "properties": {"repobilityId": "dd8722b4a9ae42fa", "scanner": "scanner-primary", "fingerprint": "44f21935aed6bf16", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-55cbbb718e1ec2b4", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/1303.a1b140a8.js (3326 lines)"}, "properties": {"repobilityId": "09af23a4ae8f9251", "scanner": "scanner-primary", "fingerprint": "55cbbb718e1ec2b4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dcb77b2539a83b7d", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/main.71c0ac29.js (26564 lines)"}, "properties": {"repobilityId": "4a6f43b78ea20d9b", "scanner": "scanner-primary", "fingerprint": "dcb77b2539a83b7d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fea88e81e44784cf", "level": "note", "message": {"text": "Very large file: docs/website/static/examples/playbooks/default/regis-cli/assets/js/2686.8443ec8f.js (1964 lines)"}, "properties": {"repobilityId": "e09a26df9da024b1", "scanner": "scanner-primary", "fingerprint": "fea88e81e44784cf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "cf70dea43b2d03d6", "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": "50a6b4c17b4b8eec", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "1e382a56e35abd8e", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "783188f94a082b15", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "f4a038c7b8f1638a", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-122f91b7f2906dc4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "properties": {"repobilityId": "a2967269048b6a9d", "scanner": "scanner-primary", "fingerprint": "122f91b7f2906dc4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2c5f98b152cddb6d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "properties": {"repobilityId": "0de48c0f4ab303d8", "scanner": "scanner-primary", "fingerprint": "2c5f98b152cddb6d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/launch.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-923009e093ead168", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .github/instructions/security-and-owasp.instructions.md"}, "properties": {"repobilityId": "f91c90708bd3dc10", "scanner": "scanner-primary", "fingerprint": "923009e093ead168", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "agent_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/instructions/security-and-owasp.instructions.md"}, "region": {"startLine": 437}}}]}, {"ruleId": "scanner-8f28ead38d30102e", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .github/instructions/markdown.instructions.md"}, "properties": {"repobilityId": "5c8ecaaee6891f7a", "scanner": "scanner-primary", "fingerprint": "8f28ead38d30102e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "agent_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/instructions/markdown.instructions.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e327d7e6b67f65c1", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .github/skills/gh-cli/SKILL.md"}, "properties": {"repobilityId": "21e9189eb6e609ef", "scanner": "scanner-primary", "fingerprint": "e327d7e6b67f65c1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/skills/gh-cli/SKILL.md"}, "region": {"startLine": 293}}}]}, {"ruleId": "scanner-548a73dfe82b63c3", "level": "note", "message": {"text": "Legacy-named symbol `res_legacy` in tests/test_rules_evaluator.py:172"}, "properties": {"repobilityId": "4a0c778b4072bd9a", "scanner": "scanner-primary", "fingerprint": "548a73dfe82b63c3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1c0ae74a82f2ecb7", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/commands/test_playbook_migrate.py:35"}, "properties": {"repobilityId": "0cded173d4ec2fb2", "scanner": "scanner-primary", "fingerprint": "1c0ae74a82f2ecb7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-caf767afe5477ed4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/553.55b955f2.js:5740"}, "properties": {"repobilityId": "e4ec8a35f0f42df6", "scanner": "scanner-primary", "fingerprint": "caf767afe5477ed4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-177ebe6727c2148e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/553.8bbdc9a5.js:5740"}, "properties": {"repobilityId": "de091850b239963c", "scanner": "scanner-primary", "fingerprint": "177ebe6727c2148e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-556f1a741982f476", "level": "note", "message": {"text": "Legacy-named symbol `AsOld` in docs/website/static/examples/playbooks/default/alpine/assets/js/3733.4636b4dd.js:1912"}, "properties": {"repobilityId": "2caa2441bdf8462a", "scanner": "scanner-primary", "fingerprint": "556f1a741982f476", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f011df9aa95b543e", "level": "note", "message": {"text": "Legacy-named symbol `AsOld` in docs/website/static/examples/playbooks/default/alpine/assets/js/3733.4212cb97.js:1912"}, "properties": {"repobilityId": "b189010d47c49b7a", "scanner": "scanner-primary", "fingerprint": "f011df9aa95b543e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-753088fda10ff330", "level": "note", "message": {"text": "Legacy-named symbol `unstable_legacy` in docs/website/static/examples/playbooks/default/alpine/assets/js/main.71c0ac29.js:11547"}, "properties": {"repobilityId": "839c48a8db3be642", "scanner": "scanner-primary", "fingerprint": "753088fda10ff330", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-56c3b69fb768ccf3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/website/static/examples/playbooks/default/alpine/assets/js/1df93b7f.d6684e61.js:174"}, "properties": {"repobilityId": "05ef9f227f55970f", "scanner": "scanner-primary", "fingerprint": "56c3b69fb768ccf3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-364cee17f299ab35", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/website/static/examples/playbooks/default/regis-cli/assets/js/553.55b955f2.js:5740"}, "properties": {"repobilityId": "0c04a6b193f33937", "scanner": "scanner-primary", "fingerprint": "364cee17f299ab35", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-24ec13296a1a5b7d", "level": "note", "message": {"text": "Legacy-named symbol `unstable_legacy` in docs/website/static/examples/playbooks/default/regis-cli/assets/js/main.334a8bac.js:11547"}, "properties": {"repobilityId": "391e9bb4fead7994", "scanner": "scanner-primary", "fingerprint": "24ec13296a1a5b7d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-48389b5b2452bb90", "level": "note", "message": {"text": "Legacy-named symbol `AsOld` in docs/website/static/examples/playbooks/default/regis-cli/assets/js/3733.4212cb97.js:1912"}, "properties": {"repobilityId": "7813e705c1c2cafe", "scanner": "scanner-primary", "fingerprint": "48389b5b2452bb90", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-72cfa3904d99557d", "level": "note", "message": {"text": "Legacy-named symbol `unstable_legacy` in docs/website/static/examples/playbooks/default/regis-cli/assets/js/main.71c0ac29.js:11547"}, "properties": {"repobilityId": "dc83e4509b7c47b3", "scanner": "scanner-primary", "fingerprint": "72cfa3904d99557d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a1f231a7a7e2c1eb", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 regis/adapters/driven/tools/subprocess_tool_runner.py:75"}, "properties": {"repobilityId": "ae42ccab1106e11c", "scanner": "scanner-primary", "fingerprint": "a1f231a7a7e2c1eb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dedab0a72c19b019", "level": "note", "message": {"text": "Legacy-named symbol `r_copy` in regis/rules/evaluator.py:178"}, "properties": {"repobilityId": "9362544a19bef9d9", "scanner": "scanner-primary", "fingerprint": "dedab0a72c19b019", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-db6034a314d65f56", "level": "none", "message": {"text": "Commented-code block (5 lines) in regis/commands/playbook.py:16"}, "properties": {"repobilityId": "354af069ed6a8ca2", "scanner": "scanner-primary", "fingerprint": "db6034a314d65f56", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "c11ba6f35d83f4bb", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "8dc6534fe3cd322c", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}