{"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-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b4801f21c9eeeebd", "name": "Stray `console.log` in TS/JS \u2014 scripts/gen-lux-entry.tsx:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-lux-entry.tsx:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-41f90edfe2bf51df", "name": "Stray `console.log` in TS/JS \u2014 scripts/gen-wellness-entry.tsx:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-wellness-entry.tsx:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4235202c35b081fc", "name": "Stray `console.log` in TS/JS \u2014 scripts/gen-batch3-review-entry.tsx:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-batch3-review-entry.tsx:90"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa0d5c60f128611c", "name": "Stray `console.log` in TS/JS \u2014 scripts/gen-kesehatan-entry.tsx:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-kesehatan-entry.tsx:34"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b3763b4281e13d51", "name": "Stray `console.log` in TS/JS \u2014 scripts/gen-kecantikan-entry.tsx:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-kecantikan-entry.tsx:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7bd2c4516729830d", "name": "Stray `console.log` in TS/JS \u2014 scripts/gen-atelier-entry.tsx:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-atelier-entry.tsx:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c708b5304383a8db", "name": "Stray `console.log` in TS/JS \u2014 scripts/gen-estetik-entry.tsx:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-estetik-entry.tsx:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dcc7d123d5a06da1", "name": "Stray `console.log` in TS/JS \u2014 scripts/gen-rumah-entry.tsx:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-rumah-entry.tsx:34"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90bc719bc0510766", "name": "Stray `console.log` in TS/JS \u2014 scripts/gen-klinik-entry.tsx:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-klinik-entry.tsx:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-da71dcd4b23f45cb", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-theme-registry-entry.ts:241", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-theme-registry-entry.ts:241"}, "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-300c776a93fa842b", "name": "Stray `console.log` in TS/JS \u2014 scripts/gen-sekolah-entry.tsx:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-sekolah-entry.tsx:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-32fa22a6fbd47d35", "name": "Stray `console.log` in TS/JS \u2014 scripts/gen-gadget-entry.tsx:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-gadget-entry.tsx:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-60e337e431502e36", "name": "Stray `console.log` in TS/JS \u2014 scripts/gen-warung-entry.tsx:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-warung-entry.tsx:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb27e54eea1fdf61", "name": "Stray `console.log` in TS/JS \u2014 scripts/gen-anak-entry.tsx:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-anak-entry.tsx:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8113cb0cb322237f", "name": "Stray `console.log` in TS/JS \u2014 scripts/gen-cafe-entry.tsx:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-cafe-entry.tsx:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9e9b031c57bf7843", "name": "Icon-only button without accessible name \u2014 src/app/demo/institusi/page.tsx:129", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/demo/institusi/page.tsx:129"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-56ffb1dcaf864c80", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/api/portal/sections/route.ts:19", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/api/portal/sections/route.ts:19"}, "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-c3685f1afda4ef49", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/ui/chart.tsx:83", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/ui/chart.tsx:83"}, "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-db28703d56e5ce1c", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/company/CompanyRenderer.tsx:438", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/company/CompanyRenderer.tsx:438"}, "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-a26e52a8a11591d9", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/sekolah/SekolahRenderer.tsx:449", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/sekolah/SekolahRenderer.tsx:449"}, "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-12c1c7e0f97cfa9a", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/restaurant-lux/RestaurantLuxRenderer.tsx", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/restaurant-lux/RestaurantLuxRenderer.tsx:310"}, "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-158bc05027d134db", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KesehatanLuxRenderer.tsx:32", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KesehatanLuxRenderer.tsx:322"}, "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-aae80ccd33db2307", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KlinikWellnessRenderer.tsx:", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KlinikWellnessRenderer.tsx: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-5de62252dffb3407", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KecantikanLuxRenderer.tsx:3", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KecantikanLuxRenderer.tsx:301"}, "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-4a37fe35f6e0c459", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KlinikUmumRenderer.tsx:344", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KlinikUmumRenderer.tsx:344"}, "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-175591a191e8ca98", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/RumahLuxRenderer.tsx:302", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/RumahLuxRenderer.tsx:302"}, "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-1906a90ee053f419", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KulinerLuxRenderer.tsx:441", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KulinerLuxRenderer.tsx:441"}, "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-adf770f07d30036b", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/GadgetLuxRenderer.tsx:323", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/GadgetLuxRenderer.tsx:323"}, "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-c98d21b0f0e41b72", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/AnakLuxRenderer.tsx:329", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/AnakLuxRenderer.tsx:329"}, "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-967211cec1b60850", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KlinikEstetikRenderer.tsx:2", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KlinikEstetikRenderer.tsx:295"}, "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-6cac42420a31a978", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KerajinanLuxRenderer.tsx:25", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KerajinanLuxRenderer.tsx:256"}, "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-f596ea894fa051c1", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/SekolahAlmamaterRenderer.ts", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/SekolahAlmamaterRenderer.tsx:340"}, "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-1e001cb4ab329ff4", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/lux-script.ts:8", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/lux-script.ts:8"}, "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-d5a0d716a2852044", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/CafeRenderer.tsx:301", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/CafeRenderer.tsx:301"}, "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-25f5e616e6821a7b", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/WarungRenderer.tsx:290", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/WarungRenderer.tsx:290"}, "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-32db9bd7732463c0", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-atelier/TokoAtelierRenderer.tsx:524", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-atelier/TokoAtelierRenderer.tsx:524"}, "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-96de0a1946ec66cb", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-atelier/atelier-script.ts:3", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-atelier/atelier-script.ts:3"}, "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-0851eccc9ab60fc3", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/klinik/KlinikCleanRenderer.tsx:594", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/klinik/KlinikCleanRenderer.tsx:594"}, "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-36aee3af12da3c3f", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/rental/RentalRenderer.tsx:206", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/rental/RentalRenderer.tsx:206"}, "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-1b1452c5c0a7eda0", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/restaurant/RestaurantRenderer.tsx:306", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/restaurant/RestaurantRenderer.tsx:306"}, "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-5e43e00a84e25292", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/batik-toko/BatikTokoRenderer.tsx:643", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/batik-toko/BatikTokoRenderer.tsx:643"}, "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-4162ba51f1dfa5f3", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/universal/TokenDrivenRenderer.tsx:169", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/universal/TokenDrivenRenderer.tsx:169"}, "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-2f2a1695bd89e075", "name": "Icon-only button without accessible name \u2014 src/app/components/cart/CartProvider.tsx:116", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/components/cart/CartProvider.tsx:116"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c60cc85288bf1d41", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/cart/CartProvider.tsx:129", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/cart/CartProvider.tsx:129"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dfa3c02ca0e6702b", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/sections/SectionRenderer.tsx:280", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/sections/SectionRenderer.tsx:280"}, "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-1195750e926b0556", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/theme-engine/ce-script.ts:4", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/theme-engine/ce-script.ts:4"}, "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-ef19b845985d993a", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/theme-engine/ComposableRenderer.tsx:149", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/theme-engine/ComposableRenderer.tsx:149"}, "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-763b9dd6040171e3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/CredentialBox.tsx:29", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/CredentialBox.tsx:29"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1fdb477fd546188b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/page.tsx:179", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/page.tsx:179"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7cb56c728f4207e1", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/preview/[pageId]/PreviewBar.tsx:161", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/preview/[pageId]/PreviewBar.tsx:161"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fbcdd4f3cabdcbca", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/mitra/AdminMitraClient.tsx:95", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/mitra/AdminMitraClient.tsx:95"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-62ba09e36d167b95", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/order/briefing/[token]/BriefingForm.tsx:412", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/order/briefing/[token]/BriefingForm.tsx:412"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9c7202e9b6adecf5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/order/briefing/[token]/BrandingPreview.tsx:77", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/order/briefing/[token]/BrandingPreview.tsx:77"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-74083602d7d3753e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/portal/PortalDashboard.tsx:335", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/portal/PortalDashboard.tsx:335"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2b144f1f40164408", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/template/page.tsx:92", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/template/page.tsx:92"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6370fff22b83d241", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/track/page.tsx:296", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/track/page.tsx:296"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-06fe0d54ca3e4bfa", "name": "Stray `console.log` in TS/JS \u2014 src/lib/theme-system/gen-design-rules.test.ts:196", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/theme-system/gen-design-rules.test.ts:196"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-62a471ad558ebf3b", "name": "Stray `console.log` in TS/JS \u2014 src/lib/theme-system/gen-samples.test.tsx:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/theme-system/gen-samples.test.tsx:111"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b33d57973ff4a440", "name": "Insecure pattern 'node_child_process' in scripts/shoot-chrome.mjs:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/shoot-chrome.mjs:15"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-197323a1df0bc584", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/ui/chart.tsx:83", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/ui/chart.tsx:83"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b56cc43d1eeecf27", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/company/CompanyRenderer.tsx:438", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/company/CompanyRenderer.tsx:438"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-417a972872677f3f", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/sekolah/SekolahRenderer.tsx:449", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/sekolah/SekolahRenderer.tsx:449"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7f75ab876abd401d", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/restaurant-lux/RestaurantLuxRenderer.tsx:310", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/restaurant-lux/RestaurantLuxRenderer.tsx:310"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fb9ea17404f256de", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KesehatanLuxRenderer.tsx:322", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KesehatanLuxRenderer.tsx:322"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-503d61f752e5758f", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KlinikWellnessRenderer.tsx:305", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KlinikWellnessRenderer.tsx:305"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-610a0a252d6e4de8", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KecantikanLuxRenderer.tsx:301", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KecantikanLuxRenderer.tsx:301"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-611f999ba1e28934", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KlinikUmumRenderer.tsx:344", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KlinikUmumRenderer.tsx:344"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c94cd954cd9e3374", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/RumahLuxRenderer.tsx:302", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/RumahLuxRenderer.tsx:302"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e2584337abc20a9e", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KulinerLuxRenderer.tsx:441", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KulinerLuxRenderer.tsx:441"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f7007c8647152b3c", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/GadgetLuxRenderer.tsx:323", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/GadgetLuxRenderer.tsx:323"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-41309b2569c0f1ca", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/AnakLuxRenderer.tsx:329", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/AnakLuxRenderer.tsx:329"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4c9fb9b5a6093437", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KlinikEstetikRenderer.tsx:295", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KlinikEstetikRenderer.tsx:295"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2c3334b4176db38d", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KerajinanLuxRenderer.tsx:256", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KerajinanLuxRenderer.tsx:256"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5a50c0723b9f665a", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/SekolahAlmamaterRenderer.tsx:340", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/SekolahAlmamaterRenderer.tsx:340"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-af9e1c58642141e7", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/CafeRenderer.tsx:301", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/CafeRenderer.tsx:301"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a21179d1b3df3810", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/WarungRenderer.tsx:290", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/WarungRenderer.tsx:290"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ffde0b0c5b384bec", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-atelier/TokoAtelierRenderer.tsx:524", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-atelier/TokoAtelierRenderer.tsx:524"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d6b18fbc0ba8e26", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/klinik/KlinikCleanRenderer.tsx:594", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/klinik/KlinikCleanRenderer.tsx:594"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a35a84182a2a4c4d", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/rental/RentalRenderer.tsx:206", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/rental/RentalRenderer.tsx:206"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6fe3ae40cdd7734c", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/restaurant/RestaurantRenderer.tsx:306", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/restaurant/RestaurantRenderer.tsx:306"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5a73f3a6d32be7b8", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/batik-toko/BatikTokoRenderer.tsx:643", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/batik-toko/BatikTokoRenderer.tsx:643"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2944e913edd0c6ae", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/universal/TokenDrivenRenderer.tsx:169", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/universal/TokenDrivenRenderer.tsx:169"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c810e3c40345903b", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/sections/SectionRenderer.tsx:280", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/sections/SectionRenderer.tsx:280"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-27c616db099be653", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/components/theme-engine/ComposableRenderer.tsx:149", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/theme-engine/ComposableRenderer.tsx:149"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a453834a6543d7ed", "name": "Very large file: src/app/components/themes/toko-bespoke/KulinerLuxRenderer.tsx (820 lines)", "shortDescription": {"text": "Very large file: src/app/components/themes/toko-bespoke/KulinerLuxRenderer.tsx (820 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-53438a1b1f7cf94b", "name": "Very large file: src/app/components/themes/toko-atelier/TokoAtelierRenderer.tsx (954 lines)", "shortDescription": {"text": "Very large file: src/app/components/themes/toko-atelier/TokoAtelierRenderer.tsx (954 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-e6b501c1e47f4bbf", "name": "Very large file: src/app/components/theme-engine/ComposableRenderer.test.tsx (1049 lines)", "shortDescription": {"text": "Very large file: src/app/components/theme-engine/ComposableRenderer.test.tsx (1049 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-ab535384b4415580", "name": "Very large file: src/app/components/theme-engine/blocks.tsx (1969 lines)", "shortDescription": {"text": "Very large file: src/app/components/theme-engine/blocks.tsx (1969 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-74fe0c84dccd9658", "name": "Very large file: src/app/order/page.tsx (1089 lines)", "shortDescription": {"text": "Very large file: src/app/order/page.tsx (1089 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-4418f48f2fb63559", "name": "Very large file: src/app/order/briefing/[token]/BriefingForm.tsx (952 lines)", "shortDescription": {"text": "Very large file: src/app/order/briefing/[token]/BriefingForm.tsx (952 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-deb5900cc85f9e7c", "name": "Very large file: src/app/portal/PortalDashboard.tsx (1276 lines)", "shortDescription": {"text": "Very large file: src/app/portal/PortalDashboard.tsx (1276 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-23dc19567498fda7", "name": "Very large file: src/lib/theme-system/sample-content.ts (2904 lines)", "shortDescription": {"text": "Very large file: src/lib/theme-system/sample-content.ts (2904 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "44 tests / 271 src (ratio 0.16)."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-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 173 placeholder/mock markers across 33 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-622654bfc1047f02", "name": "Commented-code block (6 lines) in next.config.mjs:3", "shortDescription": {"text": "Commented-code block (6 lines) in next.config.mjs:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2028c1c13cf9a180", "name": "Commented-code block (5 lines) in scripts/gen-lux-entry.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/gen-lux-entry.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3aedc7daa53e94e1", "name": "Commented-code block (5 lines) in scripts/gen-wellness-entry.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/gen-wellness-entry.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-82d381ccadf07b7e", "name": "Commented-code block (6 lines) in scripts/gen-batch3-review-entry.tsx:1", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/gen-batch3-review-entry.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3a485b9d31c9b2f3", "name": "Commented-code block (5 lines) in scripts/gen-kesehatan-entry.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/gen-kesehatan-entry.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6e9495c9735ebb4b", "name": "Commented-code block (5 lines) in scripts/gen-kecantikan-entry.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/gen-kecantikan-entry.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9427eb08674b9c07", "name": "Commented-code block (6 lines) in scripts/gen-atelier-entry.tsx:1", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/gen-atelier-entry.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-134d2f78b60e5b45", "name": "Commented-code block (5 lines) in scripts/gen-estetik-entry.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/gen-estetik-entry.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4e65313f8b26250b", "name": "Commented-code block (5 lines) in scripts/gen-rumah-entry.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/gen-rumah-entry.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9aa5669501b7b3ab", "name": "Commented-code block (7 lines) in scripts/sync-corp-preview.mjs:4", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/sync-corp-preview.mjs:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-52ae889373e2a700", "name": "Commented-code block (5 lines) in scripts/build-theme-registry-entry.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/build-theme-registry-entry.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9ddd7f33149a796a", "name": "Commented-code block (5 lines) in scripts/gen-sekolah-entry.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/gen-sekolah-entry.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ca58367a04ac1c78", "name": "Commented-code block (5 lines) in scripts/gen-gadget-entry.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/gen-gadget-entry.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-25c29240212e95b0", "name": "Commented-code block (5 lines) in scripts/gen-warung-entry.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/gen-warung-entry.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eb9b83b581843106", "name": "Commented-code block (5 lines) in scripts/gen-cafe-entry.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/gen-cafe-entry.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-22501105d39969bb", "name": "Commented-code block (5 lines) in src/proxy.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/proxy.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0091e5e002e8de83", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/proxy.ts:74", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/proxy.ts:74"}, "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-6ecacf75a84391ec", "name": "Commented-code block (5 lines) in src/app/api/booking/create/route.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/booking/create/route.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5909d0798be68d95", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/booking/create/route.ts:97", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/booking/create/route.ts:97"}, "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-264044cfdb83e4b6", "name": "Commented-code block (5 lines) in src/app/api/admin/orders/route.ts:102", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/orders/route.ts:102"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-851ac2dd790270e7", "name": "Commented-code block (5 lines) in src/app/api/admin/tenants/route.ts:166", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/tenants/route.ts:166"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-71ff55b334e63695", "name": "Commented-code block (6 lines) in src/app/api/portal/landing-page/route.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/portal/landing-page/route.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2e5663f40366308c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/shop/checkout/route.ts:98", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/shop/checkout/route.ts:98"}, "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-d8b2daa4c4f4a848", "name": "Commented-code block (5 lines) in src/app/api/briefing/route.ts:44", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/briefing/route.ts:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-25722bcd40d58ed4", "name": "Commented-code block (5 lines) in src/app/api/track/route.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/track/route.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-687702bd7a8b0bf3", "name": "Commented-code block (5 lines) in src/app/api/payment/webhook/route.ts:32", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/payment/webhook/route.ts:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-169cf9ad4509bdd1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/payment/confirm/route.ts:37", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/payment/confirm/route.ts:37"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fa018e7af6212b0e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/payment/retry/route.ts:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/payment/retry/route.ts:63"}, "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-da36f06823b606b9", "name": "Commented-code block (6 lines) in src/app/api/payment/create/route.ts:44", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/payment/create/route.ts:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-903918bfd3bf1b71", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/payment/create/route.ts:160", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/payment/create/route.ts:160"}, "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-a11a7259fee2c14c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/payment/pelunasan/route.ts:64", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/payment/pelunasan/route.ts:64"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3a16eb404260afca", "name": "Commented-code block (5 lines) in src/app/components/SiteRenderer.tsx:55", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/components/SiteRenderer.tsx:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3a52b29155187b22", "name": "Commented-code block (10 lines) in src/app/components/themes/company/CompanyRenderer.tsx:1", "shortDescription": {"text": "Commented-code block (10 lines) in src/app/components/themes/company/CompanyRenderer.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6c862399d5d0ee80", "name": "Commented-code block (8 lines) in src/app/components/themes/sekolah/SekolahRenderer.tsx:1", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/components/themes/sekolah/SekolahRenderer.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3f36a3c07bb190a4", "name": "Commented-code block (5 lines) in src/app/components/themes/restaurant-lux/RestaurantLuxRenderer.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/components/themes/restaurant-lux/RestaurantLuxRenderer.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-de6d7a6db71372f4", "name": "Commented-code block (7 lines) in src/app/components/themes/toko-bespoke/KlinikUmumRenderer.contrast.test.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/components/themes/toko-bespoke/KlinikUmumRenderer.contrast.test.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-22d34afac24e83e3", "name": "Commented-code block (10 lines) in src/app/components/themes/toko-bespoke/KesehatanLuxRenderer.tsx:7", "shortDescription": {"text": "Commented-code block (10 lines) in src/app/components/themes/toko-bespoke/KesehatanLuxRenderer.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c5b9e1373a5262ec", "name": "Commented-code block (13 lines) in src/app/components/themes/toko-bespoke/KlinikWellnessRenderer.tsx:7", "shortDescription": {"text": "Commented-code block (13 lines) in src/app/components/themes/toko-bespoke/KlinikWellnessRenderer.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4a03cef02a81a8e7", "name": "Commented-code block (8 lines) in src/app/components/themes/toko-bespoke/KecantikanLuxRenderer.tsx:7", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/components/themes/toko-bespoke/KecantikanLuxRenderer.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb115ccbb0ea68f2", "name": "Commented-code block (7 lines) in src/app/components/themes/toko-bespoke/registry.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/components/themes/toko-bespoke/registry.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b171034db823cf5", "name": "Commented-code block (15 lines) in src/app/components/themes/toko-bespoke/KlinikUmumRenderer.tsx:7", "shortDescription": {"text": "Commented-code block (15 lines) in src/app/components/themes/toko-bespoke/KlinikUmumRenderer.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-537a550c475e6e63", "name": "Commented-code block (9 lines) in src/app/components/themes/toko-bespoke/RumahLuxRenderer.tsx:7", "shortDescription": {"text": "Commented-code block (9 lines) in src/app/components/themes/toko-bespoke/RumahLuxRenderer.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-05c48b00cc578fda", "name": "Commented-code block (5 lines) in src/app/components/themes/toko-bespoke/BespokeLightbox.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/components/themes/toko-bespoke/BespokeLightbox.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f05b1d3ad86c13b1", "name": "Commented-code block (6 lines) in src/app/components/themes/toko-bespoke/KulinerLuxRenderer.tsx:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/components/themes/toko-bespoke/KulinerLuxRenderer.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ebcac23a4228439e", "name": "Commented-code block (9 lines) in src/app/components/themes/toko-bespoke/GadgetLuxRenderer.tsx:7", "shortDescription": {"text": "Commented-code block (9 lines) in src/app/components/themes/toko-bespoke/GadgetLuxRenderer.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e84e3d92d6d5ac8c", "name": "Commented-code block (11 lines) in src/app/components/themes/toko-bespoke/AnakLuxRenderer.tsx:7", "shortDescription": {"text": "Commented-code block (11 lines) in src/app/components/themes/toko-bespoke/AnakLuxRenderer.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5230dde268b053ad", "name": "Commented-code block (6 lines) in src/app/components/themes/toko-bespoke/KlinikEstetikRenderer.contrast.test.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/components/themes/toko-bespoke/KlinikEstetikRenderer.contrast.test.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bf1cd60b8eca8fb7", "name": "Commented-code block (8 lines) in src/app/components/themes/toko-bespoke/WarungRenderer.contrast.test.ts:4", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/components/themes/toko-bespoke/WarungRenderer.contrast.test.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b727f07a55514be8", "name": "Commented-code block (8 lines) in src/app/components/themes/toko-bespoke/SekolahAlmamaterRenderer.contrast.test.ts:4", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/components/themes/toko-bespoke/SekolahAlmamaterRenderer.contrast.test.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-df20fe7659069ebf", "name": "Commented-code block (5 lines) in src/app/components/themes/toko-bespoke/variants.ts:11", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/components/themes/toko-bespoke/variants.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d4bbbf00136e09e3", "name": "Commented-code block (13 lines) in src/app/components/themes/toko-bespoke/KlinikEstetikRenderer.tsx:7", "shortDescription": {"text": "Commented-code block (13 lines) in src/app/components/themes/toko-bespoke/KlinikEstetikRenderer.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ab24a6c9a79db6e2", "name": "Commented-code block (8 lines) in src/app/components/themes/toko-bespoke/CafeRenderer.contrast.test.ts:4", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/components/themes/toko-bespoke/CafeRenderer.contrast.test.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bfa5bb3ab4113661", "name": "Commented-code block (6 lines) in src/app/components/themes/toko-bespoke/KerajinanLuxRenderer.tsx:7", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/components/themes/toko-bespoke/KerajinanLuxRenderer.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-41a53cd8baa145ce", "name": "Commented-code block (14 lines) in src/app/components/themes/toko-bespoke/SekolahAlmamaterRenderer.tsx:7", "shortDescription": {"text": "Commented-code block (14 lines) in src/app/components/themes/toko-bespoke/SekolahAlmamaterRenderer.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-884a24b1043f8b15", "name": "Commented-code block (5 lines) in src/app/components/themes/toko-bespoke/KulinerLuxRenderer.contrast.test.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/components/themes/toko-bespoke/KulinerLuxRenderer.contrast.test.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2405eedc35311cec", "name": "Commented-code block (7 lines) in src/app/components/themes/toko-bespoke/RumahLuxRenderer.contrast.test.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/components/themes/toko-bespoke/RumahLuxRenderer.contrast.test.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ef926cd13f47a2ac", "name": "Commented-code block (7 lines) in src/app/components/themes/toko-bespoke/KesehatanLuxRenderer.contrast.test.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/components/themes/toko-bespoke/KesehatanLuxRenderer.contrast.test.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-585a657d7c51192b", "name": "Commented-code block (5 lines) in src/app/components/themes/toko-bespoke/KlinikWellnessRenderer.contrast.test.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/components/themes/toko-bespoke/KlinikWellnessRenderer.contrast.test.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-238d134e1a56d6b5", "name": "Commented-code block (7 lines) in src/app/components/themes/toko-bespoke/AnakLuxRenderer.contrast.test.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/components/themes/toko-bespoke/AnakLuxRenderer.contrast.test.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a529b318bfbfc55a", "name": "Commented-code block (7 lines) in src/app/components/themes/toko-bespoke/types.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/components/themes/toko-bespoke/types.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d21cfcc8176fccfd", "name": "Commented-code block (6 lines) in src/app/components/themes/toko-bespoke/lux-script.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/components/themes/toko-bespoke/lux-script.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9dee4f927993641a", "name": "Commented-code block (14 lines) in src/app/components/themes/toko-bespoke/CafeRenderer.tsx:7", "shortDescription": {"text": "Commented-code block (14 lines) in src/app/components/themes/toko-bespoke/CafeRenderer.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bcbce6c81fada6ab", "name": "Commented-code block (13 lines) in src/app/components/themes/toko-bespoke/WarungRenderer.tsx:7", "shortDescription": {"text": "Commented-code block (13 lines) in src/app/components/themes/toko-bespoke/WarungRenderer.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e5ad7e905df544bc", "name": "Commented-code block (5 lines) in src/app/components/themes/toko-atelier/TokoAtelierRenderer.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/components/themes/toko-atelier/TokoAtelierRenderer.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1c3778f256606ecd", "name": "Commented-code block (8 lines) in src/app/components/themes/toko-atelier/atelier-script.ts:1", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/components/themes/toko-atelier/atelier-script.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ce5959518371a0ea", "name": "Commented-code block (7 lines) in src/app/components/themes/toko-atelier/toko-atelier.contrast.test.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/components/themes/toko-atelier/toko-atelier.contrast.test.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0f90ab3664e3b6d9", "name": "Commented-code block (7 lines) in src/app/components/themes/toko-atelier/TokoAtelierRenderer.test.tsx:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/components/themes/toko-atelier/TokoAtelierRenderer.test.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-380a7783e1436610", "name": "Commented-code block (5 lines) in src/app/components/themes/klinik/KlinikCleanRenderer.tsx:2", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/components/themes/klinik/KlinikCleanRenderer.tsx:2"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bafc0349dad4252d", "name": "Commented-code block (8 lines) in src/app/components/themes/klinik/KlinikRenderer.tsx:2", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/components/themes/klinik/KlinikRenderer.tsx:2"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f98e7ae01fd063fe", "name": "Commented-code block (6 lines) in src/app/components/themes/rental/RentalRenderer.tsx:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/components/themes/rental/RentalRenderer.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-edd1436b831f46b3", "name": "Commented-code block (13 lines) in src/app/components/themes/restaurant/RestaurantRenderer.tsx:1", "shortDescription": {"text": "Commented-code block (13 lines) in src/app/components/themes/restaurant/RestaurantRenderer.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ddb9b7f4adb71d5c", "name": "Commented-code block (9 lines) in src/app/components/themes/batik-toko/BatikTokoRenderer.tsx:1", "shortDescription": {"text": "Commented-code block (9 lines) in src/app/components/themes/batik-toko/BatikTokoRenderer.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2062e9e274b36fca", "name": "Commented-code block (10 lines) in src/app/components/themes/universal/TokenDrivenRenderer.tsx:1", "shortDescription": {"text": "Commented-code block (10 lines) in src/app/components/themes/universal/TokenDrivenRenderer.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-242ced39a88ff89b", "name": "Commented-code block (5 lines) in src/app/components/sections/SectionRenderer.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/components/sections/SectionRenderer.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-38aaed87ac9a6c60", "name": "Commented-code block (8 lines) in src/app/components/theme-engine/CeReveal.tsx:2", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/components/theme-engine/CeReveal.tsx:2"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7d62a05a0e5321f4", "name": "Commented-code block (5 lines) in src/app/components/theme-engine/blocks.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/components/theme-engine/blocks.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ad53f055acf06b47", "name": "Commented-code block (5 lines) in src/app/components/theme-engine/ce-script.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/components/theme-engine/ce-script.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d41d512ed8109c2c", "name": "Commented-code block (5 lines) in src/app/components/theme-engine/ComposableRenderer.tsx:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/components/theme-engine/ComposableRenderer.tsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1d44481625d0cd18", "name": "Commented-code block (6 lines) in src/app/admin/token-lab/TokenLab.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/admin/token-lab/TokenLab.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9be6f2ea8b70eda0", "name": "Commented-code block (6 lines) in src/app/order/page.tsx:301", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/order/page.tsx:301"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c2462b4b7989b08e", "name": "Commented-code block (6 lines) in src/app/order/briefing/[token]/ThemePicker.tsx:2", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/order/briefing/[token]/ThemePicker.tsx:2"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-98e80978a01fd474", "name": "Commented-code block (7 lines) in src/app/order/briefing/[token]/SubKategoriPicker.tsx:2", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/order/briefing/[token]/SubKategoriPicker.tsx:2"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5ca29b816d676fa3", "name": "Commented-code block (5 lines) in src/app/order/briefing/[token]/ThemeIcon.tsx:2", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/order/briefing/[token]/ThemeIcon.tsx:2"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-33121550effa333f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/order/briefing/[token]/detail/DetailForm.tsx:216", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/order/briefing/[token]/detail/DetailForm.tsx:216"}, "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-ea2ea8f029540061", "name": "Commented-code block (5 lines) in src/app/order/briefing/[token]/detail/page.tsx:31", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/order/briefing/[token]/detail/page.tsx:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-638f6c1ca35748f9", "name": "Commented-code block (5 lines) in src/app/portal/SampleContentBanner.tsx:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/portal/SampleContentBanner.tsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-22d72ea33011c2bd", "name": "Commented-code block (5 lines) in src/app/portal/HeroImageField.tsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/portal/HeroImageField.tsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c2e7a1b5e2e41cbd", "name": "Commented-code block (5 lines) in src/app/portal/PortalDashboard.tsx:359", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/portal/PortalDashboard.tsx:359"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-97526e897a5688e0", "name": "Commented-code block (6 lines) in src/app/portal/KontenBrandPanel.tsx:7", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/portal/KontenBrandPanel.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-76490fd316b801b9", "name": "Commented-code block (5 lines) in src/app/thank-you/page.tsx:46", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/thank-you/page.tsx:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-790abde71d227baf", "name": "Commented-code block (6 lines) in src/app/track/page.tsx:135", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/track/page.tsx:135"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a15cd513336dbaf2", "name": "Commented-code block (8 lines) in src/app/[slug]/layout.tsx:4", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/[slug]/layout.tsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2431e063f0b4c677", "name": "Commented-code block (6 lines) in src/lib/email.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/email.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1be49c6825a020e4", "name": "Commented-code block (6 lines) in src/lib/website-variants.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/website-variants.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-14ac98074b8825c2", "name": "Commented-code block (5 lines) in src/lib/admin-auth.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/admin-auth.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cbecb4f89fe3013f", "name": "Commented-code block (5 lines) in src/lib/tenant-midtrans.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/tenant-midtrans.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-945ff2725ac1062d", "name": "Commented-code block (7 lines) in src/lib/websitebuilder-mapping.ts:37", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/websitebuilder-mapping.ts:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e3bbcb327ca81644", "name": "Commented-code block (7 lines) in src/lib/referrer-account.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/referrer-account.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4f843326e5be4f6a", "name": "Commented-code block (6 lines) in src/lib/referral-tier.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/referral-tier.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c7c7c44eef52e7b7", "name": "Commented-code block (9 lines) in src/lib/rate-limit.ts:3", "shortDescription": {"text": "Commented-code block (9 lines) in src/lib/rate-limit.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-89bb5bccaad8be67", "name": "Commented-code block (5 lines) in src/lib/wa.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/wa.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-191f8850ad2d72ab", "name": "Commented-code block (6 lines) in src/lib/booking-status.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/booking-status.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5d6bf126f22e39e1", "name": "Commented-code block (7 lines) in src/lib/shop-order-status.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/shop-order-status.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0b4c0729d3f226e3", "name": "Commented-code block (6 lines) in src/lib/client-account.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/client-account.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-42a21ac91f2baf8d", "name": "Commented-code block (7 lines) in src/lib/security-log.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/security-log.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a245a18c0f29eb7b", "name": "Commented-code block (6 lines) in src/lib/crypto-secret.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/crypto-secret.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-555184f4836cbc80", "name": "Commented-code block (8 lines) in src/lib/referral.ts:5", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/referral.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2d7762ccf6ed6c85", "name": "Commented-code block (5 lines) in src/lib/platform-midtrans.ts:35", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/platform-midtrans.ts:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4aa533282bb30af5", "name": "Commented-code block (9 lines) in src/lib/addons/catalog.ts:1", "shortDescription": {"text": "Commented-code block (9 lines) in src/lib/addons/catalog.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-44b073333ca53bee", "name": "Commented-code block (5 lines) in src/lib/addons/capabilities.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/addons/capabilities.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1486b23280dfcea1", "name": "Commented-code block (7 lines) in src/lib/addons/sections.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/addons/sections.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-61ec87e2d2576490", "name": "Commented-code block (5 lines) in src/lib/addons/catalog.test.ts:9", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/addons/catalog.test.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-044113df03bb82bc", "name": "Commented-code block (5 lines) in src/lib/addons/portal-tabs.ts:20", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/addons/portal-tabs.ts:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e198c07e5fd43357", "name": "Commented-code block (5 lines) in src/lib/supabase/addons.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/supabase/addons.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c6580e8e64350bd9", "name": "Commented-code block (6 lines) in src/lib/theme-system/taxonomy.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/theme-system/taxonomy.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a19eb5e2461f66ec", "name": "Commented-code block (8 lines) in src/lib/theme-system/manifest.ts:20", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/theme-system/manifest.ts:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b7587894fda84ade", "name": "Commented-code block (5 lines) in src/lib/theme-system/sample-content.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/theme-system/sample-content.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9d130c8f9eb59a39", "name": "Commented-code block (6 lines) in src/lib/theme-system/content-adapter.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/theme-system/content-adapter.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fa6906fe2f6c9c4a", "name": "Commented-code block (8 lines) in src/lib/theme-system/gen-design-rules.test.ts:1", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/theme-system/gen-design-rules.test.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d857e42cbf8f865c", "name": "Commented-code block (5 lines) in src/lib/theme-system/gen-samples.test.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/theme-system/gen-samples.test.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d479b5c66a6a34e4", "name": "Commented-code block (7 lines) in src/lib/theme-system/theme-packs/lux.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/theme-system/theme-packs/lux.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e38de474969102f6", "name": "Commented-code block (5 lines) in src/lib/theme-system/theme-packs/toko.ts:116", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/theme-system/theme-packs/toko.ts:116"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-829c8876df92af7f", "name": "Commented-code block (5 lines) in src/lib/theme-system/theme-packs/index.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/theme-system/theme-packs/index.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0768c13b386aa5d5", "name": "Commented-code block (5 lines) in src/lib/theme-system/theme-packs/company.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/theme-system/theme-packs/company.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9cdeb4af8b2dedd8", "name": "Commented-code block (6 lines) in src/lib/theme-system/theme-packs/_fonts.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/theme-system/theme-packs/_fonts.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c3a0d1c5d06e63bb", "name": "Commented-code block (5 lines) in src/lib/theme-system/theme-packs/sekolah.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/theme-system/theme-packs/sekolah.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d7aad6e50a5d3433", "name": "Commented-code block (5 lines) in src/lib/theme-system/theme-packs/personal.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/theme-system/theme-packs/personal.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b7087b10adba0283", "name": "Commented-code block (5 lines) in src/lib/design-tokens/section-adapter.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/design-tokens/section-adapter.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5150662ba345d4f0", "name": "Commented-code block (6 lines) in src/lib/design-tokens/packs.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/design-tokens/packs.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1891b3a5f43cb556", "name": "Commented-code block (5 lines) in src/lib/pricing/server-price.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/pricing/server-price.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-022e6399d1ef2beb", "name": "12 env vars used in code but missing from .env.example", "shortDescription": {"text": "12 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ADMIN_PASSWORD`, `ADMIN_SESSION_SECRET`, `BINDERBYTE_API_KEY`, `GEN_DESIGN_RULES`, `GEN_SAMPLES`, `LOCALAPPDATA`, `NEXT_PUBLIC_LANDING_URL`, `NEXT_PUBLIC_WA_NUMBER` + 4 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/18155"}, "properties": {"repository": "RiGi26/ja-websitebuilder-platform", "repoUrl": "https://github.com/RiGi26/ja-websitebuilder-platform", "branch": "main"}, "results": [{"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-b4801f21c9eeeebd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-lux-entry.tsx:40"}, "properties": {"repobilityId": "b8efd5492556cf7d", "scanner": "scanner-primary", "fingerprint": "b4801f21c9eeeebd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-41f90edfe2bf51df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-wellness-entry.tsx:23"}, "properties": {"repobilityId": "3047424a8e875f85", "scanner": "scanner-primary", "fingerprint": "41f90edfe2bf51df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4235202c35b081fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-batch3-review-entry.tsx:90"}, "properties": {"repobilityId": "cfc81376242b80e7", "scanner": "scanner-primary", "fingerprint": "4235202c35b081fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa0d5c60f128611c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-kesehatan-entry.tsx:34"}, "properties": {"repobilityId": "f6a856624423bb53", "scanner": "scanner-primary", "fingerprint": "aa0d5c60f128611c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b3763b4281e13d51", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-kecantikan-entry.tsx:35"}, "properties": {"repobilityId": "32b4e05901e858a5", "scanner": "scanner-primary", "fingerprint": "b3763b4281e13d51", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7bd2c4516729830d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-atelier-entry.tsx:37"}, "properties": {"repobilityId": "ac76f445b9779be9", "scanner": "scanner-primary", "fingerprint": "7bd2c4516729830d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c708b5304383a8db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-estetik-entry.tsx:23"}, "properties": {"repobilityId": "a42e4aa48e113e8c", "scanner": "scanner-primary", "fingerprint": "c708b5304383a8db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dcc7d123d5a06da1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-rumah-entry.tsx:34"}, "properties": {"repobilityId": "b5a545729021152b", "scanner": "scanner-primary", "fingerprint": "dcc7d123d5a06da1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-90bc719bc0510766", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-klinik-entry.tsx:28"}, "properties": {"repobilityId": "223e30a7ec950b23", "scanner": "scanner-primary", "fingerprint": "90bc719bc0510766", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-da71dcd4b23f45cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-theme-registry-entry.ts:241"}, "properties": {"repobilityId": "7ffaba8c2550644e", "scanner": "scanner-primary", "fingerprint": "da71dcd4b23f45cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-300c776a93fa842b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-sekolah-entry.tsx:23"}, "properties": {"repobilityId": "91160a2c947f8753", "scanner": "scanner-primary", "fingerprint": "300c776a93fa842b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-32fa22a6fbd47d35", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-gadget-entry.tsx:35"}, "properties": {"repobilityId": "38b5454383436e3a", "scanner": "scanner-primary", "fingerprint": "32fa22a6fbd47d35", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-60e337e431502e36", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-warung-entry.tsx:23"}, "properties": {"repobilityId": "a39c5c339edd8cd4", "scanner": "scanner-primary", "fingerprint": "60e337e431502e36", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb27e54eea1fdf61", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-anak-entry.tsx:28"}, "properties": {"repobilityId": "f4edb3fccde00f7d", "scanner": "scanner-primary", "fingerprint": "cb27e54eea1fdf61", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8113cb0cb322237f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-cafe-entry.tsx:23"}, "properties": {"repobilityId": "1b3c88beaecc09dd", "scanner": "scanner-primary", "fingerprint": "8113cb0cb322237f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9e9b031c57bf7843", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/demo/institusi/page.tsx:129"}, "properties": {"repobilityId": "0784b9c5d15d8380", "scanner": "scanner-primary", "fingerprint": "9e9b031c57bf7843", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-56ffb1dcaf864c80", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/api/portal/sections/route.ts:19"}, "properties": {"repobilityId": "08bd20ceb603dc0b", "scanner": "scanner-primary", "fingerprint": "56ffb1dcaf864c80", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-c3685f1afda4ef49", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/ui/chart.tsx:83"}, "properties": {"repobilityId": "2833a3e050ea5ebf", "scanner": "scanner-primary", "fingerprint": "c3685f1afda4ef49", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-db28703d56e5ce1c", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/company/CompanyRenderer.tsx:438"}, "properties": {"repobilityId": "55a951def42c64ec", "scanner": "scanner-primary", "fingerprint": "db28703d56e5ce1c", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-a26e52a8a11591d9", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/sekolah/SekolahRenderer.tsx:449"}, "properties": {"repobilityId": "f68802225dc671bc", "scanner": "scanner-primary", "fingerprint": "a26e52a8a11591d9", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-12c1c7e0f97cfa9a", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/restaurant-lux/RestaurantLuxRenderer.tsx:310"}, "properties": {"repobilityId": "c196438c3c387ae6", "scanner": "scanner-primary", "fingerprint": "12c1c7e0f97cfa9a", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-158bc05027d134db", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KesehatanLuxRenderer.tsx:322"}, "properties": {"repobilityId": "6a3d9f3cb51bb6da", "scanner": "scanner-primary", "fingerprint": "158bc05027d134db", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-aae80ccd33db2307", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KlinikWellnessRenderer.tsx:305"}, "properties": {"repobilityId": "b86408907abc8cc7", "scanner": "scanner-primary", "fingerprint": "aae80ccd33db2307", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-5de62252dffb3407", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KecantikanLuxRenderer.tsx:301"}, "properties": {"repobilityId": "35d9ee6b00ecf430", "scanner": "scanner-primary", "fingerprint": "5de62252dffb3407", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-4a37fe35f6e0c459", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KlinikUmumRenderer.tsx:344"}, "properties": {"repobilityId": "c6896f7b9d19a50f", "scanner": "scanner-primary", "fingerprint": "4a37fe35f6e0c459", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-175591a191e8ca98", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/RumahLuxRenderer.tsx:302"}, "properties": {"repobilityId": "0cc2d2d575df9dd4", "scanner": "scanner-primary", "fingerprint": "175591a191e8ca98", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-1906a90ee053f419", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KulinerLuxRenderer.tsx:441"}, "properties": {"repobilityId": "0c9bcd8fe9738f54", "scanner": "scanner-primary", "fingerprint": "1906a90ee053f419", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-adf770f07d30036b", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/GadgetLuxRenderer.tsx:323"}, "properties": {"repobilityId": "99618d2491c9083a", "scanner": "scanner-primary", "fingerprint": "adf770f07d30036b", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-c98d21b0f0e41b72", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/AnakLuxRenderer.tsx:329"}, "properties": {"repobilityId": "3a40a88c0b01a4c1", "scanner": "scanner-primary", "fingerprint": "c98d21b0f0e41b72", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-967211cec1b60850", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KlinikEstetikRenderer.tsx:295"}, "properties": {"repobilityId": "38b22e98ef1dc2fe", "scanner": "scanner-primary", "fingerprint": "967211cec1b60850", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6cac42420a31a978", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/KerajinanLuxRenderer.tsx:256"}, "properties": {"repobilityId": "9391cff90028a4f5", "scanner": "scanner-primary", "fingerprint": "6cac42420a31a978", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-f596ea894fa051c1", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/SekolahAlmamaterRenderer.tsx:340"}, "properties": {"repobilityId": "477401a3785fff0b", "scanner": "scanner-primary", "fingerprint": "f596ea894fa051c1", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-1e001cb4ab329ff4", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/lux-script.ts:8"}, "properties": {"repobilityId": "dbedcc6a7db4be8f", "scanner": "scanner-primary", "fingerprint": "1e001cb4ab329ff4", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-d5a0d716a2852044", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/CafeRenderer.tsx:301"}, "properties": {"repobilityId": "4ff5ecf2dc3d3f21", "scanner": "scanner-primary", "fingerprint": "d5a0d716a2852044", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-25f5e616e6821a7b", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-bespoke/WarungRenderer.tsx:290"}, "properties": {"repobilityId": "1c40bfa2f6e28d26", "scanner": "scanner-primary", "fingerprint": "25f5e616e6821a7b", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-32db9bd7732463c0", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-atelier/TokoAtelierRenderer.tsx:524"}, "properties": {"repobilityId": "7293fbc3f6f95787", "scanner": "scanner-primary", "fingerprint": "32db9bd7732463c0", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-96de0a1946ec66cb", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/toko-atelier/atelier-script.ts:3"}, "properties": {"repobilityId": "25c6de28d6108bbf", "scanner": "scanner-primary", "fingerprint": "96de0a1946ec66cb", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-0851eccc9ab60fc3", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/klinik/KlinikCleanRenderer.tsx:594"}, "properties": {"repobilityId": "e8d66fbb3ec66000", "scanner": "scanner-primary", "fingerprint": "0851eccc9ab60fc3", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-36aee3af12da3c3f", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/rental/RentalRenderer.tsx:206"}, "properties": {"repobilityId": "9b8b2e9db7a65abc", "scanner": "scanner-primary", "fingerprint": "36aee3af12da3c3f", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-1b1452c5c0a7eda0", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/restaurant/RestaurantRenderer.tsx:306"}, "properties": {"repobilityId": "1133c9cc6014e056", "scanner": "scanner-primary", "fingerprint": "1b1452c5c0a7eda0", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-5e43e00a84e25292", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/batik-toko/BatikTokoRenderer.tsx:643"}, "properties": {"repobilityId": "4666ff71969c1358", "scanner": "scanner-primary", "fingerprint": "5e43e00a84e25292", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-4162ba51f1dfa5f3", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/themes/universal/TokenDrivenRenderer.tsx:169"}, "properties": {"repobilityId": "c1b04789c7cbb8ab", "scanner": "scanner-primary", "fingerprint": "4162ba51f1dfa5f3", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-2f2a1695bd89e075", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/components/cart/CartProvider.tsx:116"}, "properties": {"repobilityId": "782782aa9824edf0", "scanner": "scanner-primary", "fingerprint": "2f2a1695bd89e075", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-c60cc85288bf1d41", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/cart/CartProvider.tsx:129"}, "properties": {"repobilityId": "848fa11a18a59c68", "scanner": "scanner-primary", "fingerprint": "c60cc85288bf1d41", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dfa3c02ca0e6702b", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/sections/SectionRenderer.tsx:280"}, "properties": {"repobilityId": "dedf44766599607e", "scanner": "scanner-primary", "fingerprint": "dfa3c02ca0e6702b", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-1195750e926b0556", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/theme-engine/ce-script.ts:4"}, "properties": {"repobilityId": "c69aab0a2fdfd87e", "scanner": "scanner-primary", "fingerprint": "1195750e926b0556", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-ef19b845985d993a", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/components/theme-engine/ComposableRenderer.tsx:149"}, "properties": {"repobilityId": "1f8137a6d209f3c4", "scanner": "scanner-primary", "fingerprint": "ef19b845985d993a", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-763b9dd6040171e3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/CredentialBox.tsx:29"}, "properties": {"repobilityId": "6c2749cb8ba78663", "scanner": "scanner-primary", "fingerprint": "763b9dd6040171e3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1fdb477fd546188b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/page.tsx:179"}, "properties": {"repobilityId": "8d313b2589100140", "scanner": "scanner-primary", "fingerprint": "1fdb477fd546188b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7cb56c728f4207e1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/preview/[pageId]/PreviewBar.tsx:161"}, "properties": {"repobilityId": "d81c5a89566c6934", "scanner": "scanner-primary", "fingerprint": "7cb56c728f4207e1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fbcdd4f3cabdcbca", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/mitra/AdminMitraClient.tsx:95"}, "properties": {"repobilityId": "d7f137eed4180aff", "scanner": "scanner-primary", "fingerprint": "fbcdd4f3cabdcbca", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-62ba09e36d167b95", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/order/briefing/[token]/BriefingForm.tsx:412"}, "properties": {"repobilityId": "b2fd54e4f3c5cddb", "scanner": "scanner-primary", "fingerprint": "62ba09e36d167b95", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9c7202e9b6adecf5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/order/briefing/[token]/BrandingPreview.tsx:77"}, "properties": {"repobilityId": "bf2469e159658b2e", "scanner": "scanner-primary", "fingerprint": "9c7202e9b6adecf5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-74083602d7d3753e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/portal/PortalDashboard.tsx:335"}, "properties": {"repobilityId": "116f9de7a5451358", "scanner": "scanner-primary", "fingerprint": "74083602d7d3753e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2b144f1f40164408", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/template/page.tsx:92"}, "properties": {"repobilityId": "0de627a0ed83713c", "scanner": "scanner-primary", "fingerprint": "2b144f1f40164408", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6370fff22b83d241", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/track/page.tsx:296"}, "properties": {"repobilityId": "50a1a51e26d2a82e", "scanner": "scanner-primary", "fingerprint": "6370fff22b83d241", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-06fe0d54ca3e4bfa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/theme-system/gen-design-rules.test.ts:196"}, "properties": {"repobilityId": "b3746e3181bc1828", "scanner": "scanner-primary", "fingerprint": "06fe0d54ca3e4bfa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-62a471ad558ebf3b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/theme-system/gen-samples.test.tsx:111"}, "properties": {"repobilityId": "683ada485c1940d0", "scanner": "scanner-primary", "fingerprint": "62a471ad558ebf3b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b33d57973ff4a440", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/shoot-chrome.mjs:15"}, "properties": {"repobilityId": "f7e19ca0b6c6622c", "scanner": "scanner-primary", "fingerprint": "b33d57973ff4a440", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/shoot-chrome.mjs"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-197323a1df0bc584", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/ui/chart.tsx:83"}, "properties": {"repobilityId": "52023baf88f4153e", "scanner": "scanner-primary", "fingerprint": "197323a1df0bc584", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/ui/chart.tsx"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-b56cc43d1eeecf27", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/company/CompanyRenderer.tsx:438"}, "properties": {"repobilityId": "4b2bbde5051205e1", "scanner": "scanner-primary", "fingerprint": "b56cc43d1eeecf27", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/company/CompanyRenderer.tsx"}, "region": {"startLine": 438}}}]}, {"ruleId": "scanner-417a972872677f3f", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/sekolah/SekolahRenderer.tsx:449"}, "properties": {"repobilityId": "d10a21cce9ac336e", "scanner": "scanner-primary", "fingerprint": "417a972872677f3f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/sekolah/SekolahRenderer.tsx"}, "region": {"startLine": 449}}}]}, {"ruleId": "scanner-7f75ab876abd401d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/restaurant-lux/RestaurantLuxRenderer.tsx:310"}, "properties": {"repobilityId": "e7f7d409162104f8", "scanner": "scanner-primary", "fingerprint": "7f75ab876abd401d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/restaurant-lux/RestaurantLuxRenderer.tsx"}, "region": {"startLine": 310}}}]}, {"ruleId": "scanner-fb9ea17404f256de", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KesehatanLuxRenderer.tsx:322"}, "properties": {"repobilityId": "b8088f0384379a24", "scanner": "scanner-primary", "fingerprint": "fb9ea17404f256de", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/toko-bespoke/KesehatanLuxRenderer.tsx"}, "region": {"startLine": 322}}}]}, {"ruleId": "scanner-503d61f752e5758f", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KlinikWellnessRenderer.tsx:305"}, "properties": {"repobilityId": "859a7522c0da2f30", "scanner": "scanner-primary", "fingerprint": "503d61f752e5758f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/toko-bespoke/KlinikWellnessRenderer.tsx"}, "region": {"startLine": 305}}}]}, {"ruleId": "scanner-610a0a252d6e4de8", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KecantikanLuxRenderer.tsx:301"}, "properties": {"repobilityId": "b904e1effcbd8af5", "scanner": "scanner-primary", "fingerprint": "610a0a252d6e4de8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/toko-bespoke/KecantikanLuxRenderer.tsx"}, "region": {"startLine": 301}}}]}, {"ruleId": "scanner-611f999ba1e28934", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KlinikUmumRenderer.tsx:344"}, "properties": {"repobilityId": "b5d1933e772a7088", "scanner": "scanner-primary", "fingerprint": "611f999ba1e28934", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/toko-bespoke/KlinikUmumRenderer.tsx"}, "region": {"startLine": 344}}}]}, {"ruleId": "scanner-c94cd954cd9e3374", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/RumahLuxRenderer.tsx:302"}, "properties": {"repobilityId": "1d0b8258696d6b8d", "scanner": "scanner-primary", "fingerprint": "c94cd954cd9e3374", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/toko-bespoke/RumahLuxRenderer.tsx"}, "region": {"startLine": 302}}}]}, {"ruleId": "scanner-e2584337abc20a9e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KulinerLuxRenderer.tsx:441"}, "properties": {"repobilityId": "d15b5c1835834577", "scanner": "scanner-primary", "fingerprint": "e2584337abc20a9e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/toko-bespoke/KulinerLuxRenderer.tsx"}, "region": {"startLine": 441}}}]}, {"ruleId": "scanner-f7007c8647152b3c", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/GadgetLuxRenderer.tsx:323"}, "properties": {"repobilityId": "61e6d32d47e208f2", "scanner": "scanner-primary", "fingerprint": "f7007c8647152b3c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/toko-bespoke/GadgetLuxRenderer.tsx"}, "region": {"startLine": 323}}}]}, {"ruleId": "scanner-41309b2569c0f1ca", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/AnakLuxRenderer.tsx:329"}, "properties": {"repobilityId": "6aec89a4cb6583ef", "scanner": "scanner-primary", "fingerprint": "41309b2569c0f1ca", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/toko-bespoke/AnakLuxRenderer.tsx"}, "region": {"startLine": 329}}}]}, {"ruleId": "scanner-4c9fb9b5a6093437", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KlinikEstetikRenderer.tsx:295"}, "properties": {"repobilityId": "5a341ad45cd2daa5", "scanner": "scanner-primary", "fingerprint": "4c9fb9b5a6093437", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/toko-bespoke/KlinikEstetikRenderer.tsx"}, "region": {"startLine": 295}}}]}, {"ruleId": "scanner-2c3334b4176db38d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/KerajinanLuxRenderer.tsx:256"}, "properties": {"repobilityId": "b88e809c06e52ed1", "scanner": "scanner-primary", "fingerprint": "2c3334b4176db38d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/toko-bespoke/KerajinanLuxRenderer.tsx"}, "region": {"startLine": 256}}}]}, {"ruleId": "scanner-5a50c0723b9f665a", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/SekolahAlmamaterRenderer.tsx:340"}, "properties": {"repobilityId": "4c19098dc135a20f", "scanner": "scanner-primary", "fingerprint": "5a50c0723b9f665a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/toko-bespoke/SekolahAlmamaterRenderer.tsx"}, "region": {"startLine": 340}}}]}, {"ruleId": "scanner-af9e1c58642141e7", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/CafeRenderer.tsx:301"}, "properties": {"repobilityId": "22bd86d2e1eeb3fe", "scanner": "scanner-primary", "fingerprint": "af9e1c58642141e7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/toko-bespoke/CafeRenderer.tsx"}, "region": {"startLine": 301}}}]}, {"ruleId": "scanner-a21179d1b3df3810", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-bespoke/WarungRenderer.tsx:290"}, "properties": {"repobilityId": "a75e39c65d4563eb", "scanner": "scanner-primary", "fingerprint": "a21179d1b3df3810", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/toko-bespoke/WarungRenderer.tsx"}, "region": {"startLine": 290}}}]}, {"ruleId": "scanner-ffde0b0c5b384bec", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/toko-atelier/TokoAtelierRenderer.tsx:524"}, "properties": {"repobilityId": "f293440fa5e35b8a", "scanner": "scanner-primary", "fingerprint": "ffde0b0c5b384bec", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/toko-atelier/TokoAtelierRenderer.tsx"}, "region": {"startLine": 524}}}]}, {"ruleId": "scanner-2d6b18fbc0ba8e26", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/klinik/KlinikCleanRenderer.tsx:594"}, "properties": {"repobilityId": "6611174086a1a286", "scanner": "scanner-primary", "fingerprint": "2d6b18fbc0ba8e26", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/klinik/KlinikCleanRenderer.tsx"}, "region": {"startLine": 594}}}]}, {"ruleId": "scanner-a35a84182a2a4c4d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/rental/RentalRenderer.tsx:206"}, "properties": {"repobilityId": "aa02d71eadaf0bff", "scanner": "scanner-primary", "fingerprint": "a35a84182a2a4c4d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/rental/RentalRenderer.tsx"}, "region": {"startLine": 206}}}]}, {"ruleId": "scanner-6fe3ae40cdd7734c", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/restaurant/RestaurantRenderer.tsx:306"}, "properties": {"repobilityId": "a90c5eb0917dc50a", "scanner": "scanner-primary", "fingerprint": "6fe3ae40cdd7734c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/restaurant/RestaurantRenderer.tsx"}, "region": {"startLine": 306}}}]}, {"ruleId": "scanner-5a73f3a6d32be7b8", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/batik-toko/BatikTokoRenderer.tsx:643"}, "properties": {"repobilityId": "433af0ff6d80f71a", "scanner": "scanner-primary", "fingerprint": "5a73f3a6d32be7b8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/batik-toko/BatikTokoRenderer.tsx"}, "region": {"startLine": 643}}}]}, {"ruleId": "scanner-2944e913edd0c6ae", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/themes/universal/TokenDrivenRenderer.tsx:169"}, "properties": {"repobilityId": "08a874bbfd85a422", "scanner": "scanner-primary", "fingerprint": "2944e913edd0c6ae", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/themes/universal/TokenDrivenRenderer.tsx"}, "region": {"startLine": 169}}}]}, {"ruleId": "scanner-c810e3c40345903b", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/sections/SectionRenderer.tsx:280"}, "properties": {"repobilityId": "f382fd668e4b7b5d", "scanner": "scanner-primary", "fingerprint": "c810e3c40345903b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/sections/SectionRenderer.tsx"}, "region": {"startLine": 280}}}]}, {"ruleId": "scanner-27c616db099be653", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/components/theme-engine/ComposableRenderer.tsx:149"}, "properties": {"repobilityId": "d39d0936432c705f", "scanner": "scanner-primary", "fingerprint": "27c616db099be653", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/components/theme-engine/ComposableRenderer.tsx"}, "region": {"startLine": 149}}}]}, {"ruleId": "scanner-a453834a6543d7ed", "level": "note", "message": {"text": "Very large file: src/app/components/themes/toko-bespoke/KulinerLuxRenderer.tsx (820 lines)"}, "properties": {"repobilityId": "b5544b37b09ff117", "scanner": "scanner-primary", "fingerprint": "a453834a6543d7ed", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-53438a1b1f7cf94b", "level": "note", "message": {"text": "Very large file: src/app/components/themes/toko-atelier/TokoAtelierRenderer.tsx (954 lines)"}, "properties": {"repobilityId": "4a8c2e9814897072", "scanner": "scanner-primary", "fingerprint": "53438a1b1f7cf94b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e6b501c1e47f4bbf", "level": "note", "message": {"text": "Very large file: src/app/components/theme-engine/ComposableRenderer.test.tsx (1049 lines)"}, "properties": {"repobilityId": "2291db93375df405", "scanner": "scanner-primary", "fingerprint": "e6b501c1e47f4bbf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ab535384b4415580", "level": "note", "message": {"text": "Very large file: src/app/components/theme-engine/blocks.tsx (1969 lines)"}, "properties": {"repobilityId": "738a289f63905217", "scanner": "scanner-primary", "fingerprint": "ab535384b4415580", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-74fe0c84dccd9658", "level": "note", "message": {"text": "Very large file: src/app/order/page.tsx (1089 lines)"}, "properties": {"repobilityId": "d9cd5e077b9d4440", "scanner": "scanner-primary", "fingerprint": "74fe0c84dccd9658", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4418f48f2fb63559", "level": "note", "message": {"text": "Very large file: src/app/order/briefing/[token]/BriefingForm.tsx (952 lines)"}, "properties": {"repobilityId": "56753fe8d2fd29f1", "scanner": "scanner-primary", "fingerprint": "4418f48f2fb63559", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-deb5900cc85f9e7c", "level": "note", "message": {"text": "Very large file: src/app/portal/PortalDashboard.tsx (1276 lines)"}, "properties": {"repobilityId": "611b90d6fb009371", "scanner": "scanner-primary", "fingerprint": "deb5900cc85f9e7c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-23dc19567498fda7", "level": "note", "message": {"text": "Very large file: src/lib/theme-system/sample-content.ts (2904 lines)"}, "properties": {"repobilityId": "e5730ee54ffb5e5c", "scanner": "scanner-primary", "fingerprint": "23dc19567498fda7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea3b5e389d8c9c0f", "level": "note", "message": {"text": "Low test-to-source ratio"}, "properties": {"repobilityId": "ef7b2552cc00a375", "scanner": "scanner-primary", "fingerprint": "ea3b5e389d8c9c0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["tests"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "f8bf8cb3f1606dab", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "18113864f87b2d73", "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": "e317430a120ef82b", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "016238223adfb012", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "9d5d4ab7363302c8", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "1ca5250d40ad9908", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "78bcff6607f4ead8", "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": "f178469e2f2ac8ac", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-622654bfc1047f02", "level": "none", "message": {"text": "Commented-code block (6 lines) in next.config.mjs:3"}, "properties": {"repobilityId": "fb98b83e7d6d7a75", "scanner": "scanner-primary", "fingerprint": "622654bfc1047f02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2028c1c13cf9a180", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/gen-lux-entry.tsx:1"}, "properties": {"repobilityId": "fe8282dab049b55b", "scanner": "scanner-primary", "fingerprint": "2028c1c13cf9a180", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3aedc7daa53e94e1", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/gen-wellness-entry.tsx:1"}, "properties": {"repobilityId": "0a60dc20c3d2dcfa", "scanner": "scanner-primary", "fingerprint": "3aedc7daa53e94e1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82d381ccadf07b7e", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/gen-batch3-review-entry.tsx:1"}, "properties": {"repobilityId": "9dd4454e70b42ab6", "scanner": "scanner-primary", "fingerprint": "82d381ccadf07b7e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a485b9d31c9b2f3", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/gen-kesehatan-entry.tsx:1"}, "properties": {"repobilityId": "b6b44a4655e8b925", "scanner": "scanner-primary", "fingerprint": "3a485b9d31c9b2f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6e9495c9735ebb4b", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/gen-kecantikan-entry.tsx:1"}, "properties": {"repobilityId": "c7f7ad64c586bbd2", "scanner": "scanner-primary", "fingerprint": "6e9495c9735ebb4b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9427eb08674b9c07", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/gen-atelier-entry.tsx:1"}, "properties": {"repobilityId": "df3ae350412b303a", "scanner": "scanner-primary", "fingerprint": "9427eb08674b9c07", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-134d2f78b60e5b45", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/gen-estetik-entry.tsx:1"}, "properties": {"repobilityId": "3124c4feae4021f4", "scanner": "scanner-primary", "fingerprint": "134d2f78b60e5b45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e65313f8b26250b", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/gen-rumah-entry.tsx:1"}, "properties": {"repobilityId": "26c6542d6f11d9c4", "scanner": "scanner-primary", "fingerprint": "4e65313f8b26250b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9aa5669501b7b3ab", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/sync-corp-preview.mjs:4"}, "properties": {"repobilityId": "da0da0bb538b00f3", "scanner": "scanner-primary", "fingerprint": "9aa5669501b7b3ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52ae889373e2a700", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/build-theme-registry-entry.ts:8"}, "properties": {"repobilityId": "877d00de417e0f25", "scanner": "scanner-primary", "fingerprint": "52ae889373e2a700", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9ddd7f33149a796a", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/gen-sekolah-entry.tsx:1"}, "properties": {"repobilityId": "dbf3705556057144", "scanner": "scanner-primary", "fingerprint": "9ddd7f33149a796a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca58367a04ac1c78", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/gen-gadget-entry.tsx:1"}, "properties": {"repobilityId": "f682d890d29f88cb", "scanner": "scanner-primary", "fingerprint": "ca58367a04ac1c78", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25c29240212e95b0", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/gen-warung-entry.tsx:1"}, "properties": {"repobilityId": "2dcd0bc32960e9ae", "scanner": "scanner-primary", "fingerprint": "25c29240212e95b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb9b83b581843106", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/gen-cafe-entry.tsx:1"}, "properties": {"repobilityId": "2f1959ceeec35842", "scanner": "scanner-primary", "fingerprint": "eb9b83b581843106", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22501105d39969bb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/proxy.ts:4"}, "properties": {"repobilityId": "3a16aa862b9cfbbb", "scanner": "scanner-primary", "fingerprint": "22501105d39969bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0091e5e002e8de83", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/proxy.ts:74"}, "properties": {"repobilityId": "975a04f71a58f79d", "scanner": "scanner-primary", "fingerprint": "0091e5e002e8de83", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6ecacf75a84391ec", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/booking/create/route.ts:5"}, "properties": {"repobilityId": "193e00a890649c14", "scanner": "scanner-primary", "fingerprint": "6ecacf75a84391ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5909d0798be68d95", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/booking/create/route.ts:97"}, "properties": {"repobilityId": "c58c335a30a8556e", "scanner": "scanner-primary", "fingerprint": "5909d0798be68d95", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-264044cfdb83e4b6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/orders/route.ts:102"}, "properties": {"repobilityId": "8eb4b6dcb409db30", "scanner": "scanner-primary", "fingerprint": "264044cfdb83e4b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-851ac2dd790270e7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/tenants/route.ts:166"}, "properties": {"repobilityId": "0fe9adc23b28f019", "scanner": "scanner-primary", "fingerprint": "851ac2dd790270e7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-71ff55b334e63695", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/portal/landing-page/route.ts:5"}, "properties": {"repobilityId": "b8e04919a0df3238", "scanner": "scanner-primary", "fingerprint": "71ff55b334e63695", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e5663f40366308c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/shop/checkout/route.ts:98"}, "properties": {"repobilityId": "24f3199ba492cf23", "scanner": "scanner-primary", "fingerprint": "2e5663f40366308c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d8b2daa4c4f4a848", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/briefing/route.ts:44"}, "properties": {"repobilityId": "d13f11b0dd986579", "scanner": "scanner-primary", "fingerprint": "d8b2daa4c4f4a848", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25722bcd40d58ed4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/track/route.ts:8"}, "properties": {"repobilityId": "58235714cbcb5719", "scanner": "scanner-primary", "fingerprint": "25722bcd40d58ed4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-687702bd7a8b0bf3", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/payment/webhook/route.ts:32"}, "properties": {"repobilityId": "9b9e6288ef8b5ebc", "scanner": "scanner-primary", "fingerprint": "687702bd7a8b0bf3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-169cf9ad4509bdd1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/payment/confirm/route.ts:37"}, "properties": {"repobilityId": "625165e55ccbf64b", "scanner": "scanner-primary", "fingerprint": "169cf9ad4509bdd1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fa018e7af6212b0e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/payment/retry/route.ts:63"}, "properties": {"repobilityId": "b4656ccee279762c", "scanner": "scanner-primary", "fingerprint": "fa018e7af6212b0e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-da36f06823b606b9", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/payment/create/route.ts:44"}, "properties": {"repobilityId": "68fb0b18baf9bd62", "scanner": "scanner-primary", "fingerprint": "da36f06823b606b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-903918bfd3bf1b71", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/payment/create/route.ts:160"}, "properties": {"repobilityId": "f5b80f47fbe1505b", "scanner": "scanner-primary", "fingerprint": "903918bfd3bf1b71", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a11a7259fee2c14c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/payment/pelunasan/route.ts:64"}, "properties": {"repobilityId": "a41f01d6c03f78d4", "scanner": "scanner-primary", "fingerprint": "a11a7259fee2c14c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3a16eb404260afca", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/components/SiteRenderer.tsx:55"}, "properties": {"repobilityId": "242a20f1b8fe1447", "scanner": "scanner-primary", "fingerprint": "3a16eb404260afca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a52b29155187b22", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/app/components/themes/company/CompanyRenderer.tsx:1"}, "properties": {"repobilityId": "2a1b726f7e118d3c", "scanner": "scanner-primary", "fingerprint": "3a52b29155187b22", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c862399d5d0ee80", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/components/themes/sekolah/SekolahRenderer.tsx:1"}, "properties": {"repobilityId": "2a176f4bf86bf708", "scanner": "scanner-primary", "fingerprint": "6c862399d5d0ee80", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f36a3c07bb190a4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/components/themes/restaurant-lux/RestaurantLuxRenderer.tsx:1"}, "properties": {"repobilityId": "8e412805fb681a77", "scanner": "scanner-primary", "fingerprint": "3f36a3c07bb190a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de6d7a6db71372f4", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/components/themes/toko-bespoke/KlinikUmumRenderer.contrast.test.ts:4"}, "properties": {"repobilityId": "0f2334df71b16623", "scanner": "scanner-primary", "fingerprint": "de6d7a6db71372f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22d34afac24e83e3", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/app/components/themes/toko-bespoke/KesehatanLuxRenderer.tsx:7"}, "properties": {"repobilityId": "f307b95d54872c42", "scanner": "scanner-primary", "fingerprint": "22d34afac24e83e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5b9e1373a5262ec", "level": "none", "message": {"text": "Commented-code block (13 lines) in src/app/components/themes/toko-bespoke/KlinikWellnessRenderer.tsx:7"}, "properties": {"repobilityId": "28abac0fac0a9057", "scanner": "scanner-primary", "fingerprint": "c5b9e1373a5262ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4a03cef02a81a8e7", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/components/themes/toko-bespoke/KecantikanLuxRenderer.tsx:7"}, "properties": {"repobilityId": "8a4bac9e0c835a4c", "scanner": "scanner-primary", "fingerprint": "4a03cef02a81a8e7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb115ccbb0ea68f2", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/components/themes/toko-bespoke/registry.ts:1"}, "properties": {"repobilityId": "6914071d2d7a4a2f", "scanner": "scanner-primary", "fingerprint": "cb115ccbb0ea68f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b171034db823cf5", "level": "none", "message": {"text": "Commented-code block (15 lines) in src/app/components/themes/toko-bespoke/KlinikUmumRenderer.tsx:7"}, "properties": {"repobilityId": "82dc295587e489af", "scanner": "scanner-primary", "fingerprint": "8b171034db823cf5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-537a550c475e6e63", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/app/components/themes/toko-bespoke/RumahLuxRenderer.tsx:7"}, "properties": {"repobilityId": "7241a9b8194d8017", "scanner": "scanner-primary", "fingerprint": "537a550c475e6e63", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05c48b00cc578fda", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/components/themes/toko-bespoke/BespokeLightbox.tsx:1"}, "properties": {"repobilityId": "5408f912a7b53b41", "scanner": "scanner-primary", "fingerprint": "05c48b00cc578fda", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f05b1d3ad86c13b1", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/components/themes/toko-bespoke/KulinerLuxRenderer.tsx:1"}, "properties": {"repobilityId": "de897b8e3d5ab4fe", "scanner": "scanner-primary", "fingerprint": "f05b1d3ad86c13b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ebcac23a4228439e", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/app/components/themes/toko-bespoke/GadgetLuxRenderer.tsx:7"}, "properties": {"repobilityId": "3945c21a01fa3a59", "scanner": "scanner-primary", "fingerprint": "ebcac23a4228439e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e84e3d92d6d5ac8c", "level": "none", "message": {"text": "Commented-code block (11 lines) in src/app/components/themes/toko-bespoke/AnakLuxRenderer.tsx:7"}, "properties": {"repobilityId": "8d4917fe7eb6b7c3", "scanner": "scanner-primary", "fingerprint": "e84e3d92d6d5ac8c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5230dde268b053ad", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/components/themes/toko-bespoke/KlinikEstetikRenderer.contrast.test.ts:4"}, "properties": {"repobilityId": "6e954b90a4318d49", "scanner": "scanner-primary", "fingerprint": "5230dde268b053ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf1cd60b8eca8fb7", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/components/themes/toko-bespoke/WarungRenderer.contrast.test.ts:4"}, "properties": {"repobilityId": "ea40129afa0d95b8", "scanner": "scanner-primary", "fingerprint": "bf1cd60b8eca8fb7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b727f07a55514be8", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/components/themes/toko-bespoke/SekolahAlmamaterRenderer.contrast.test.ts:4"}, "properties": {"repobilityId": "f01a578fb17e536f", "scanner": "scanner-primary", "fingerprint": "b727f07a55514be8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df20fe7659069ebf", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/components/themes/toko-bespoke/variants.ts:11"}, "properties": {"repobilityId": "0741ade5aa75e48d", "scanner": "scanner-primary", "fingerprint": "df20fe7659069ebf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4bbbf00136e09e3", "level": "none", "message": {"text": "Commented-code block (13 lines) in src/app/components/themes/toko-bespoke/KlinikEstetikRenderer.tsx:7"}, "properties": {"repobilityId": "e28a69c2a5527406", "scanner": "scanner-primary", "fingerprint": "d4bbbf00136e09e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab24a6c9a79db6e2", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/components/themes/toko-bespoke/CafeRenderer.contrast.test.ts:4"}, "properties": {"repobilityId": "102f6f91b7433faa", "scanner": "scanner-primary", "fingerprint": "ab24a6c9a79db6e2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bfa5bb3ab4113661", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/components/themes/toko-bespoke/KerajinanLuxRenderer.tsx:7"}, "properties": {"repobilityId": "ccd72ca1277287e1", "scanner": "scanner-primary", "fingerprint": "bfa5bb3ab4113661", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41a53cd8baa145ce", "level": "none", "message": {"text": "Commented-code block (14 lines) in src/app/components/themes/toko-bespoke/SekolahAlmamaterRenderer.tsx:7"}, "properties": {"repobilityId": "2802ab2f5e92028f", "scanner": "scanner-primary", "fingerprint": "41a53cd8baa145ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-884a24b1043f8b15", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/components/themes/toko-bespoke/KulinerLuxRenderer.contrast.test.ts:1"}, "properties": {"repobilityId": "c0417cf3789b2866", "scanner": "scanner-primary", "fingerprint": "884a24b1043f8b15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2405eedc35311cec", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/components/themes/toko-bespoke/RumahLuxRenderer.contrast.test.ts:4"}, "properties": {"repobilityId": "34deed2c7148e398", "scanner": "scanner-primary", "fingerprint": "2405eedc35311cec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef926cd13f47a2ac", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/components/themes/toko-bespoke/KesehatanLuxRenderer.contrast.test.ts:4"}, "properties": {"repobilityId": "f053876075001af8", "scanner": "scanner-primary", "fingerprint": "ef926cd13f47a2ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-585a657d7c51192b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/components/themes/toko-bespoke/KlinikWellnessRenderer.contrast.test.ts:4"}, "properties": {"repobilityId": "e09e3cc4d29ac1e3", "scanner": "scanner-primary", "fingerprint": "585a657d7c51192b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-238d134e1a56d6b5", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/components/themes/toko-bespoke/AnakLuxRenderer.contrast.test.ts:4"}, "properties": {"repobilityId": "9ca422953228f21e", "scanner": "scanner-primary", "fingerprint": "238d134e1a56d6b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a529b318bfbfc55a", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/components/themes/toko-bespoke/types.ts:1"}, "properties": {"repobilityId": "15a3ce452f979b0e", "scanner": "scanner-primary", "fingerprint": "a529b318bfbfc55a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d21cfcc8176fccfd", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/components/themes/toko-bespoke/lux-script.ts:1"}, "properties": {"repobilityId": "520052e0513e1ab7", "scanner": "scanner-primary", "fingerprint": "d21cfcc8176fccfd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9dee4f927993641a", "level": "none", "message": {"text": "Commented-code block (14 lines) in src/app/components/themes/toko-bespoke/CafeRenderer.tsx:7"}, "properties": {"repobilityId": "2ecc19ec02fa10e2", "scanner": "scanner-primary", "fingerprint": "9dee4f927993641a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bcbce6c81fada6ab", "level": "none", "message": {"text": "Commented-code block (13 lines) in src/app/components/themes/toko-bespoke/WarungRenderer.tsx:7"}, "properties": {"repobilityId": "2e35b64c3bfff497", "scanner": "scanner-primary", "fingerprint": "bcbce6c81fada6ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5ad7e905df544bc", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/components/themes/toko-atelier/TokoAtelierRenderer.tsx:1"}, "properties": {"repobilityId": "d603355b49752041", "scanner": "scanner-primary", "fingerprint": "e5ad7e905df544bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c3778f256606ecd", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/components/themes/toko-atelier/atelier-script.ts:1"}, "properties": {"repobilityId": "9e6d68eef8a71f55", "scanner": "scanner-primary", "fingerprint": "1c3778f256606ecd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce5959518371a0ea", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/components/themes/toko-atelier/toko-atelier.contrast.test.ts:1"}, "properties": {"repobilityId": "52d6fd1e0fb9af8a", "scanner": "scanner-primary", "fingerprint": "ce5959518371a0ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f90ab3664e3b6d9", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/components/themes/toko-atelier/TokoAtelierRenderer.test.tsx:1"}, "properties": {"repobilityId": "7da5253ffcd94a34", "scanner": "scanner-primary", "fingerprint": "0f90ab3664e3b6d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-380a7783e1436610", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/components/themes/klinik/KlinikCleanRenderer.tsx:2"}, "properties": {"repobilityId": "d840e5fce2171be7", "scanner": "scanner-primary", "fingerprint": "380a7783e1436610", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bafc0349dad4252d", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/components/themes/klinik/KlinikRenderer.tsx:2"}, "properties": {"repobilityId": "47d70a6e67067cb5", "scanner": "scanner-primary", "fingerprint": "bafc0349dad4252d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f98e7ae01fd063fe", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/components/themes/rental/RentalRenderer.tsx:1"}, "properties": {"repobilityId": "1edd38bc96e19144", "scanner": "scanner-primary", "fingerprint": "f98e7ae01fd063fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-edd1436b831f46b3", "level": "none", "message": {"text": "Commented-code block (13 lines) in src/app/components/themes/restaurant/RestaurantRenderer.tsx:1"}, "properties": {"repobilityId": "6fd54fc242559c00", "scanner": "scanner-primary", "fingerprint": "edd1436b831f46b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ddb9b7f4adb71d5c", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/app/components/themes/batik-toko/BatikTokoRenderer.tsx:1"}, "properties": {"repobilityId": "9605a3783fc21150", "scanner": "scanner-primary", "fingerprint": "ddb9b7f4adb71d5c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2062e9e274b36fca", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/app/components/themes/universal/TokenDrivenRenderer.tsx:1"}, "properties": {"repobilityId": "186e9c1f62720bdf", "scanner": "scanner-primary", "fingerprint": "2062e9e274b36fca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-242ced39a88ff89b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/components/sections/SectionRenderer.tsx:1"}, "properties": {"repobilityId": "fd4a7a83dae409dc", "scanner": "scanner-primary", "fingerprint": "242ced39a88ff89b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38aaed87ac9a6c60", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/components/theme-engine/CeReveal.tsx:2"}, "properties": {"repobilityId": "1d7a04ab7afd6a8f", "scanner": "scanner-primary", "fingerprint": "38aaed87ac9a6c60", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d62a05a0e5321f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/components/theme-engine/blocks.tsx:1"}, "properties": {"repobilityId": "cdab0a3563cb8eb7", "scanner": "scanner-primary", "fingerprint": "7d62a05a0e5321f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad53f055acf06b47", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/components/theme-engine/ce-script.ts:1"}, "properties": {"repobilityId": "fbd34f74c917172c", "scanner": "scanner-primary", "fingerprint": "ad53f055acf06b47", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d41d512ed8109c2c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/components/theme-engine/ComposableRenderer.tsx:6"}, "properties": {"repobilityId": "9ed8133f9f1451fb", "scanner": "scanner-primary", "fingerprint": "d41d512ed8109c2c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1d44481625d0cd18", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/admin/token-lab/TokenLab.tsx:3"}, "properties": {"repobilityId": "ed49152d3d8c1673", "scanner": "scanner-primary", "fingerprint": "1d44481625d0cd18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9be6f2ea8b70eda0", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/order/page.tsx:301"}, "properties": {"repobilityId": "113c151fe9d3f304", "scanner": "scanner-primary", "fingerprint": "9be6f2ea8b70eda0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2462b4b7989b08e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/order/briefing/[token]/ThemePicker.tsx:2"}, "properties": {"repobilityId": "2848f6da9e552831", "scanner": "scanner-primary", "fingerprint": "c2462b4b7989b08e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98e80978a01fd474", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/order/briefing/[token]/SubKategoriPicker.tsx:2"}, "properties": {"repobilityId": "86da40c0d0ef40b9", "scanner": "scanner-primary", "fingerprint": "98e80978a01fd474", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ca29b816d676fa3", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/order/briefing/[token]/ThemeIcon.tsx:2"}, "properties": {"repobilityId": "88c1689561a701e6", "scanner": "scanner-primary", "fingerprint": "5ca29b816d676fa3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-33121550effa333f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/order/briefing/[token]/detail/DetailForm.tsx:216"}, "properties": {"repobilityId": "b586a41defa8d94e", "scanner": "scanner-primary", "fingerprint": "33121550effa333f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ea2ea8f029540061", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/order/briefing/[token]/detail/page.tsx:31"}, "properties": {"repobilityId": "65cadd657db43d12", "scanner": "scanner-primary", "fingerprint": "ea2ea8f029540061", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-638f6c1ca35748f9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/portal/SampleContentBanner.tsx:6"}, "properties": {"repobilityId": "591ab31deac67b24", "scanner": "scanner-primary", "fingerprint": "638f6c1ca35748f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22d72ea33011c2bd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/portal/HeroImageField.tsx:5"}, "properties": {"repobilityId": "585a4dd588a24912", "scanner": "scanner-primary", "fingerprint": "22d72ea33011c2bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2e7a1b5e2e41cbd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/portal/PortalDashboard.tsx:359"}, "properties": {"repobilityId": "51a12d8595fe843a", "scanner": "scanner-primary", "fingerprint": "c2e7a1b5e2e41cbd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97526e897a5688e0", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/portal/KontenBrandPanel.tsx:7"}, "properties": {"repobilityId": "ef3b005fdfc0151a", "scanner": "scanner-primary", "fingerprint": "97526e897a5688e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76490fd316b801b9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/thank-you/page.tsx:46"}, "properties": {"repobilityId": "08443aa5b3a6f690", "scanner": "scanner-primary", "fingerprint": "76490fd316b801b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-790abde71d227baf", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/track/page.tsx:135"}, "properties": {"repobilityId": "aced6a34a0b61d39", "scanner": "scanner-primary", "fingerprint": "790abde71d227baf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a15cd513336dbaf2", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/[slug]/layout.tsx:4"}, "properties": {"repobilityId": "dc42290747d0a53d", "scanner": "scanner-primary", "fingerprint": "a15cd513336dbaf2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2431e063f0b4c677", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/email.ts:1"}, "properties": {"repobilityId": "6cc937aa3b600cf5", "scanner": "scanner-primary", "fingerprint": "2431e063f0b4c677", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1be49c6825a020e4", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/website-variants.ts:6"}, "properties": {"repobilityId": "da0a69f69eda4b84", "scanner": "scanner-primary", "fingerprint": "1be49c6825a020e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-14ac98074b8825c2", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/admin-auth.ts:3"}, "properties": {"repobilityId": "6995d2270d09f62e", "scanner": "scanner-primary", "fingerprint": "14ac98074b8825c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cbecb4f89fe3013f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/tenant-midtrans.ts:1"}, "properties": {"repobilityId": "9a60ddbd54cb9e14", "scanner": "scanner-primary", "fingerprint": "cbecb4f89fe3013f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-945ff2725ac1062d", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/websitebuilder-mapping.ts:37"}, "properties": {"repobilityId": "8e0744972d797422", "scanner": "scanner-primary", "fingerprint": "945ff2725ac1062d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3bbcb327ca81644", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/referrer-account.ts:1"}, "properties": {"repobilityId": "59fc7aa050398450", "scanner": "scanner-primary", "fingerprint": "e3bbcb327ca81644", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f843326e5be4f6a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/referral-tier.ts:1"}, "properties": {"repobilityId": "3434fba6dfca03d4", "scanner": "scanner-primary", "fingerprint": "4f843326e5be4f6a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7c7c44eef52e7b7", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/lib/rate-limit.ts:3"}, "properties": {"repobilityId": "41c8e542897702c7", "scanner": "scanner-primary", "fingerprint": "c7c7c44eef52e7b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-89bb5bccaad8be67", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/wa.ts:1"}, "properties": {"repobilityId": "ad87418bb790efdc", "scanner": "scanner-primary", "fingerprint": "89bb5bccaad8be67", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-191f8850ad2d72ab", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/booking-status.ts:1"}, "properties": {"repobilityId": "a81b0193ec73f11b", "scanner": "scanner-primary", "fingerprint": "191f8850ad2d72ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d6bf126f22e39e1", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/shop-order-status.ts:1"}, "properties": {"repobilityId": "2784ed4839c54f40", "scanner": "scanner-primary", "fingerprint": "5d6bf126f22e39e1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b4c0729d3f226e3", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/client-account.ts:1"}, "properties": {"repobilityId": "492fa22ff6fb8605", "scanner": "scanner-primary", "fingerprint": "0b4c0729d3f226e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42a21ac91f2baf8d", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/security-log.ts:3"}, "properties": {"repobilityId": "1fd9072f8677d7aa", "scanner": "scanner-primary", "fingerprint": "42a21ac91f2baf8d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a245a18c0f29eb7b", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/crypto-secret.ts:1"}, "properties": {"repobilityId": "ca6ac95369be26eb", "scanner": "scanner-primary", "fingerprint": "a245a18c0f29eb7b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-555184f4836cbc80", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/referral.ts:5"}, "properties": {"repobilityId": "1fee13121350f9f4", "scanner": "scanner-primary", "fingerprint": "555184f4836cbc80", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d7762ccf6ed6c85", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/platform-midtrans.ts:35"}, "properties": {"repobilityId": "19b2f0474d46b88a", "scanner": "scanner-primary", "fingerprint": "2d7762ccf6ed6c85", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4aa533282bb30af5", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/lib/addons/catalog.ts:1"}, "properties": {"repobilityId": "d0128ea7733bc362", "scanner": "scanner-primary", "fingerprint": "4aa533282bb30af5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-44b073333ca53bee", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/addons/capabilities.ts:1"}, "properties": {"repobilityId": "4221e8eeb32463c5", "scanner": "scanner-primary", "fingerprint": "44b073333ca53bee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1486b23280dfcea1", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/addons/sections.ts:1"}, "properties": {"repobilityId": "1f2f225f09c4bcfc", "scanner": "scanner-primary", "fingerprint": "1486b23280dfcea1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61ec87e2d2576490", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/addons/catalog.test.ts:9"}, "properties": {"repobilityId": "f74d81b32a7bc125", "scanner": "scanner-primary", "fingerprint": "61ec87e2d2576490", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-044113df03bb82bc", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/addons/portal-tabs.ts:20"}, "properties": {"repobilityId": "d6d885d45ba39026", "scanner": "scanner-primary", "fingerprint": "044113df03bb82bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e198c07e5fd43357", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/supabase/addons.ts:1"}, "properties": {"repobilityId": "dd05e34386ac7842", "scanner": "scanner-primary", "fingerprint": "e198c07e5fd43357", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6580e8e64350bd9", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/theme-system/taxonomy.ts:1"}, "properties": {"repobilityId": "0e4e0617f19671ef", "scanner": "scanner-primary", "fingerprint": "c6580e8e64350bd9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a19eb5e2461f66ec", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/theme-system/manifest.ts:20"}, "properties": {"repobilityId": "595b80b1be3e402a", "scanner": "scanner-primary", "fingerprint": "a19eb5e2461f66ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7587894fda84ade", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/theme-system/sample-content.ts:1"}, "properties": {"repobilityId": "feb118a7912c8b0a", "scanner": "scanner-primary", "fingerprint": "b7587894fda84ade", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9d130c8f9eb59a39", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/theme-system/content-adapter.ts:1"}, "properties": {"repobilityId": "0379d1a6f68bc591", "scanner": "scanner-primary", "fingerprint": "9d130c8f9eb59a39", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa6906fe2f6c9c4a", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/theme-system/gen-design-rules.test.ts:1"}, "properties": {"repobilityId": "5f108fda9e6dd983", "scanner": "scanner-primary", "fingerprint": "fa6906fe2f6c9c4a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d857e42cbf8f865c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/theme-system/gen-samples.test.tsx:1"}, "properties": {"repobilityId": "204183fb969c19ee", "scanner": "scanner-primary", "fingerprint": "d857e42cbf8f865c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d479b5c66a6a34e4", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/theme-system/theme-packs/lux.ts:4"}, "properties": {"repobilityId": "002986defcab97ac", "scanner": "scanner-primary", "fingerprint": "d479b5c66a6a34e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e38de474969102f6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/theme-system/theme-packs/toko.ts:116"}, "properties": {"repobilityId": "465022c0cf3768f1", "scanner": "scanner-primary", "fingerprint": "e38de474969102f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-829c8876df92af7f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/theme-system/theme-packs/index.ts:1"}, "properties": {"repobilityId": "9ebe8ec90a62ad3e", "scanner": "scanner-primary", "fingerprint": "829c8876df92af7f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0768c13b386aa5d5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/theme-system/theme-packs/company.ts:4"}, "properties": {"repobilityId": "75f8921a50201fa7", "scanner": "scanner-primary", "fingerprint": "0768c13b386aa5d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9cdeb4af8b2dedd8", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/theme-system/theme-packs/_fonts.ts:1"}, "properties": {"repobilityId": "c2d2cdf416a99ac4", "scanner": "scanner-primary", "fingerprint": "9cdeb4af8b2dedd8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c3a0d1c5d06e63bb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/theme-system/theme-packs/sekolah.ts:5"}, "properties": {"repobilityId": "1aad6ddc431710b8", "scanner": "scanner-primary", "fingerprint": "c3a0d1c5d06e63bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7aad6e50a5d3433", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/theme-system/theme-packs/personal.ts:4"}, "properties": {"repobilityId": "dddb0d7795bdcd8d", "scanner": "scanner-primary", "fingerprint": "d7aad6e50a5d3433", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7087b10adba0283", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/design-tokens/section-adapter.ts:1"}, "properties": {"repobilityId": "110604f8871c4c6c", "scanner": "scanner-primary", "fingerprint": "b7087b10adba0283", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5150662ba345d4f0", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/design-tokens/packs.ts:1"}, "properties": {"repobilityId": "cceb78ce21718470", "scanner": "scanner-primary", "fingerprint": "5150662ba345d4f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1891b3a5f43cb556", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/pricing/server-price.ts:3"}, "properties": {"repobilityId": "125adbbf8b364283", "scanner": "scanner-primary", "fingerprint": "1891b3a5f43cb556", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-022e6399d1ef2beb", "level": "note", "message": {"text": "12 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "7bf4178327da75a2", "scanner": "scanner-primary", "fingerprint": "022e6399d1ef2beb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}