{"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-69a2618b74ad732c", "name": "Stray `console.log` in TS/JS \u2014 js/pubblicita-spazi.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 js/pubblicita-spazi.js:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d52061ef08e12912", "name": "Stray `console.log` in TS/JS \u2014 netlify/functions/subappalto-elimina.js:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 netlify/functions/subappalto-elimina.js:53"}, "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-ea06e7e4fd84b2a6", "name": "Stray `console.log` in TS/JS \u2014 netlify/functions/notifica-risposta-preventivo.js:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 netlify/functions/notifica-risposta-preventivo.js:52"}, "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-36e08f310e12ba48", "name": "Stray `console.log` in TS/JS \u2014 netlify/functions/elimina-account.js:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 netlify/functions/elimina-account.js:53"}, "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-c9ada04447d7d787", "name": "Stray `console.log` in TS/JS \u2014 netlify/functions/notifica-preventivo.js:117", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 netlify/functions/notifica-preventivo.js:117"}, "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-9bd2d93659e47498", "name": "Insecure pattern 'direct_innerhtml_assignment' in galleria-video.html:146", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in galleria-video.html:146"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0918112f1f784db5", "name": "Insecure pattern 'direct_innerhtml_assignment' in strumenti-comuni.js:37", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in strumenti-comuni.js:37"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a708a7eaf90db730", "name": "Insecure pattern 'direct_innerhtml_assignment' in offerte-lavoro.html:185", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in offerte-lavoro.html:185"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fb28569451d3d17f", "name": "Insecure pattern 'direct_innerhtml_assignment' in registrazione-candidato.html:420", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in registrazione-candidato.html:420"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-197ec42b2871e68e", "name": "Insecure pattern 'local_storage_auth_token' in registrazione-candidato.html:580", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in registrazione-candidato.html:580"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a330174131ba7da4", "name": "Insecure pattern 'direct_innerhtml_assignment' in registrazione.html:807", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in registrazione.html:807"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bdf315742fae0995", "name": "Insecure pattern 'direct_innerhtml_assignment' in cerca-artigiani.html:263", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in cerca-artigiani.html:263"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8fabed12c6efd844", "name": "Insecure pattern 'direct_innerhtml_assignment' in attiva-profilo.html:99", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in attiva-profilo.html:99"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ffc4c9d15202a0e2", "name": "Insecure pattern 'direct_innerhtml_assignment' in subappalto-offre.html:321", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in subappalto-offre.html:321"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-067d2632cc311eca", "name": "Insecure pattern 'direct_innerhtml_assignment' in cerca-professionisti.html:245", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in cerca-professionisti.html:245"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-89e482243f33facc", "name": "Insecure pattern 'direct_innerhtml_assignment' in cerca-negozi.html:243", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in cerca-negozi.html:243"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d351c069eebad692", "name": "Insecure pattern 'direct_innerhtml_assignment' in subappalto-gestisci.html:95", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in subappalto-gestisci.html:95"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-063cb633a4bed50c", "name": "Insecure pattern 'direct_innerhtml_assignment' in cookie-banner.js:54", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in cookie-banner.js:54"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5c5f1911eed549f5", "name": "Insecure pattern 'direct_innerhtml_assignment' in subappalto-cerca.html:386", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in subappalto-cerca.html:386"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-00df6f0737d4da6b", "name": "Insecure pattern 'direct_innerhtml_assignment' in registrazione-artigiano.html:415", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in registrazione-artigiano.html:415"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-831b576cf418872e", "name": "Insecure pattern 'direct_innerhtml_assignment' in pannello-professionisti.html:2230", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pannello-professionisti.html:2230"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d0bc6105b5af29a", "name": "Insecure pattern 'insert_adjacent_html' in pannello-professionisti.html:3093", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in pannello-professionisti.html:3093"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4ad01a12910b0fd6", "name": "Insecure pattern 'direct_innerhtml_assignment' in login-impresa.html:134", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in login-impresa.html:134"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-28ca42c94960e4a0", "name": "Insecure pattern 'direct_innerhtml_assignment' in pannello-artigiano.html:2243", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pannello-artigiano.html:2243"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6c7c39cb1e224332", "name": "Insecure pattern 'insert_adjacent_html' in pannello-artigiano.html:4464", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in pannello-artigiano.html:4464"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-80b65a298b03b814", "name": "Insecure pattern 'direct_innerhtml_assignment' in cancella-iscrizione.html:133", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in cancella-iscrizione.html:133"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9aa6a472bb195e29", "name": "Insecure pattern 'direct_innerhtml_assignment' in registrazione-impresa.html:311", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in registrazione-impresa.html:311"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1b743b76a5b16755", "name": "Insecure pattern 'direct_innerhtml_assignment' in index.html:1191", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in index.html:1191"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e72966471b531121", "name": "Insecure pattern 'direct_innerhtml_assignment' in strumenti-cantiere.js:15", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in strumenti-cantiere.js:15"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9cdffa06524f74ea", "name": "Insecure pattern 'direct_innerhtml_assignment' in pannello-negozio.html:1971", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pannello-negozio.html:1971"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0f436e7cca35f5d1", "name": "Insecure pattern 'insert_adjacent_html' in pannello-negozio.html:2961", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in pannello-negozio.html:2961"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0f1bd18727768d4e", "name": "Insecure pattern 'direct_innerhtml_assignment' in modifica-profilo.html:808", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modifica-profilo.html:808"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-17feec562fb8ec5c", "name": "Insecure pattern 'direct_innerhtml_assignment' in profilo-impresa.html:574", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in profilo-impresa.html:574"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-80085bba1ae71218", "name": "Insecure pattern 'direct_innerhtml_assignment' in admin.html:726", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in admin.html:726"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-28da5de7ac8e6672", "name": "Insecure pattern 'direct_innerhtml_assignment' in login-candidato.html:139", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in login-candidato.html:139"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2523316499e5055c", "name": "Insecure pattern 'direct_innerhtml_assignment' in registrazione-negozio.html:323", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in registrazione-negozio.html:323"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-94a5f83f6cb040eb", "name": "Insecure pattern 'direct_innerhtml_assignment' in subappalto.html:284", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in subappalto.html:284"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5932e1e82ccd0862", "name": "Insecure pattern 'direct_innerhtml_assignment' in ricerca-offerte.html:422", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ricerca-offerte.html:422"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a615926f5eee7921", "name": "Insecure pattern 'direct_innerhtml_assignment' in offerte-registrazione.html:696", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in offerte-registrazione.html:696"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3aa1bcddeedcc665", "name": "Insecure pattern 'direct_innerhtml_assignment' in registrazione-professionista.html:320", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in registrazione-professionista.html:320"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5f3cc765d38e73f0", "name": "Insecure pattern 'direct_innerhtml_assignment' in cerca-imprese.html:238", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in cerca-imprese.html:238"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dfc0a0807e355664", "name": "Insecure pattern 'direct_innerhtml_assignment' in pannello-candidato.html:264", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pannello-candidato.html:264"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-818d403b2317033b", "name": "Insecure pattern 'direct_innerhtml_assignment' in risultati.html:428", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in risultati.html:428"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-81af37d93c0c132b", "name": "Insecure pattern 'direct_innerhtml_assignment' in pannello-impresa.html:2255", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pannello-impresa.html:2255"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f11c5d0c74693f6c", "name": "Insecure pattern 'insert_adjacent_html' in pannello-impresa.html:3682", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in pannello-impresa.html:3682"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-91b282337a3e837d", "name": "Insecure pattern 'direct_innerhtml_assignment' in pubblicita.html:405", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pubblicita.html:405"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-30a237112abbc5f6", "name": "Insecure pattern 'direct_innerhtml_assignment' in ricerca-candidati.html:376", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ricerca-candidati.html:376"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-41f441b102a7f1f7", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/pubblicita-spazi.js:83", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pubblicita-spazi.js:83"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ba348008308881cf", "name": "Insecure pattern 'cors_wildcard' in netlify/functions/subappalto-elimina.js:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in netlify/functions/subappalto-elimina.js:4"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2f10bae607a26089", "name": "Insecure pattern 'cors_wildcard' in netlify/functions/elimina-account.js:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in netlify/functions/elimina-account.js:4"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fc870366e3533629", "name": "Insecure pattern 'cors_wildcard' in netlify/functions/admin-dati.js:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in netlify/functions/admin-dati.js:4"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d30fed4fadb6dde", "name": "Insecure pattern 'cors_wildcard' in netlify/functions/richiesta-cliente.js:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in netlify/functions/richiesta-cliente.js:4"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 28 source file(s) (ratio 0.00). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-faccb9061e9b52a0", "name": "No README detected", "shortDescription": {"text": "No README detected"}, "fullDescription": {"text": "No README file was found. Generated repos without README context are hard to operate, validate, or safely hand off."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b3ed68815bca2f8c", "name": "Node manifest has dependencies but no lockfile: package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 10 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-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests, operator-readme, lockfile. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "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-3bedd0c9ac3a1307", "name": "Commented-code block (5 lines) in strumenti-comuni.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in strumenti-comuni.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b544d3605730cac4", "name": "Commented-code block (7 lines) in strumenti-cantiere.js:1", "shortDescription": {"text": "Commented-code block (7 lines) in strumenti-cantiere.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6045f045b91876f4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 netlify/functions/notifica-risposta-preventivo.js:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 netlify/functions/notifica-risposta-preventivo.js:57"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d8eb438e5b50e188", "name": "`fetch()` without try/.catch or AbortSignal \u2014 netlify/functions/ai-claude.js:96", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 netlify/functions/ai-claude.js:96"}, "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-37a3ef819f48d010", "name": "`fetch()` without try/.catch or AbortSignal \u2014 netlify/functions/invia-promemoria.js:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 netlify/functions/invia-promemoria.js:91"}, "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-5fc7053b6e421602", "name": "Commented-code block (5 lines) in netlify/functions/invia-email-benvenuto.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in netlify/functions/invia-email-benvenuto.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-51d20b9b7ea8e2cb", "name": "Legacy-named symbol `statoOld` in netlify/functions/notifica-spazio-libero.js:17", "shortDescription": {"text": "Legacy-named symbol `statoOld` in netlify/functions/notifica-spazio-libero.js:17"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8225180718407f28", "name": "`fetch()` without try/.catch or AbortSignal \u2014 netlify/functions/notifica-candidatura.js:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 netlify/functions/notifica-candidatura.js:31"}, "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-cb18ea20348f475a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 netlify/functions/notifica-preventivo.js:122", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 netlify/functions/notifica-preventivo.js:122"}, "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}}]}}, "automationDetails": {"id": "repobility/21649"}, "properties": {"repository": "trovaimpresa/trovaimpresa", "repoUrl": "https://github.com/trovaimpresa/trovaimpresa", "branch": "main"}, "results": [{"ruleId": "scanner-69a2618b74ad732c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 js/pubblicita-spazi.js:19"}, "properties": {"repobilityId": "88a8418da293911d", "scanner": "scanner-primary", "fingerprint": "69a2618b74ad732c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d52061ef08e12912", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 netlify/functions/subappalto-elimina.js:53"}, "properties": {"repobilityId": "2cb2728a751c8245", "scanner": "scanner-primary", "fingerprint": "d52061ef08e12912", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ea06e7e4fd84b2a6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 netlify/functions/notifica-risposta-preventivo.js:52"}, "properties": {"repobilityId": "a696f6530703a1bd", "scanner": "scanner-primary", "fingerprint": "ea06e7e4fd84b2a6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36e08f310e12ba48", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 netlify/functions/elimina-account.js:53"}, "properties": {"repobilityId": "d7d198e8e144e161", "scanner": "scanner-primary", "fingerprint": "36e08f310e12ba48", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c9ada04447d7d787", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 netlify/functions/notifica-preventivo.js:117"}, "properties": {"repobilityId": "7ba159331426dbab", "scanner": "scanner-primary", "fingerprint": "c9ada04447d7d787", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9bd2d93659e47498", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in galleria-video.html:146"}, "properties": {"repobilityId": "9a1baf487d3668fe", "scanner": "scanner-primary", "fingerprint": "9bd2d93659e47498", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "galleria-video.html"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-0918112f1f784db5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in strumenti-comuni.js:37"}, "properties": {"repobilityId": "10f69eb402c8981e", "scanner": "scanner-primary", "fingerprint": "0918112f1f784db5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "strumenti-comuni.js"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-a708a7eaf90db730", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in offerte-lavoro.html:185"}, "properties": {"repobilityId": "9b83a1385e740c4b", "scanner": "scanner-primary", "fingerprint": "a708a7eaf90db730", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "offerte-lavoro.html"}, "region": {"startLine": 185}}}]}, {"ruleId": "scanner-fb28569451d3d17f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in registrazione-candidato.html:420"}, "properties": {"repobilityId": "8273afa9a56f4395", "scanner": "scanner-primary", "fingerprint": "fb28569451d3d17f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "registrazione-candidato.html"}, "region": {"startLine": 420}}}]}, {"ruleId": "scanner-197ec42b2871e68e", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in registrazione-candidato.html:580"}, "properties": {"repobilityId": "940ce2da1a69aada", "scanner": "scanner-primary", "fingerprint": "197ec42b2871e68e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "registrazione-candidato.html"}, "region": {"startLine": 580}}}]}, {"ruleId": "scanner-a330174131ba7da4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in registrazione.html:807"}, "properties": {"repobilityId": "055c7ef6fede676d", "scanner": "scanner-primary", "fingerprint": "a330174131ba7da4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "registrazione.html"}, "region": {"startLine": 807}}}]}, {"ruleId": "scanner-bdf315742fae0995", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in cerca-artigiani.html:263"}, "properties": {"repobilityId": "e714695844cfdcd4", "scanner": "scanner-primary", "fingerprint": "bdf315742fae0995", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cerca-artigiani.html"}, "region": {"startLine": 263}}}]}, {"ruleId": "scanner-8fabed12c6efd844", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in attiva-profilo.html:99"}, "properties": {"repobilityId": "7a018f5254fe37df", "scanner": "scanner-primary", "fingerprint": "8fabed12c6efd844", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "attiva-profilo.html"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-ffc4c9d15202a0e2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in subappalto-offre.html:321"}, "properties": {"repobilityId": "afdd323694b84afa", "scanner": "scanner-primary", "fingerprint": "ffc4c9d15202a0e2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "subappalto-offre.html"}, "region": {"startLine": 321}}}]}, {"ruleId": "scanner-067d2632cc311eca", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in cerca-professionisti.html:245"}, "properties": {"repobilityId": "53d6edc77ca42f3f", "scanner": "scanner-primary", "fingerprint": "067d2632cc311eca", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cerca-professionisti.html"}, "region": {"startLine": 245}}}]}, {"ruleId": "scanner-89e482243f33facc", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in cerca-negozi.html:243"}, "properties": {"repobilityId": "beaa56d149d59e0f", "scanner": "scanner-primary", "fingerprint": "89e482243f33facc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cerca-negozi.html"}, "region": {"startLine": 243}}}]}, {"ruleId": "scanner-d351c069eebad692", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in subappalto-gestisci.html:95"}, "properties": {"repobilityId": "8a5584971a8cf44e", "scanner": "scanner-primary", "fingerprint": "d351c069eebad692", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "subappalto-gestisci.html"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-063cb633a4bed50c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in cookie-banner.js:54"}, "properties": {"repobilityId": "e213ecf328fb6538", "scanner": "scanner-primary", "fingerprint": "063cb633a4bed50c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cookie-banner.js"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-5c5f1911eed549f5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in subappalto-cerca.html:386"}, "properties": {"repobilityId": "61955d6c471ed137", "scanner": "scanner-primary", "fingerprint": "5c5f1911eed549f5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "subappalto-cerca.html"}, "region": {"startLine": 386}}}]}, {"ruleId": "scanner-00df6f0737d4da6b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in registrazione-artigiano.html:415"}, "properties": {"repobilityId": "6e63fb44099cbd0a", "scanner": "scanner-primary", "fingerprint": "00df6f0737d4da6b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "registrazione-artigiano.html"}, "region": {"startLine": 415}}}]}, {"ruleId": "scanner-831b576cf418872e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pannello-professionisti.html:2230"}, "properties": {"repobilityId": "ec33f81501e8beed", "scanner": "scanner-primary", "fingerprint": "831b576cf418872e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pannello-professionisti.html"}, "region": {"startLine": 2230}}}]}, {"ruleId": "scanner-9d0bc6105b5af29a", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in pannello-professionisti.html:3093"}, "properties": {"repobilityId": "72c183d3b3721bfb", "scanner": "scanner-primary", "fingerprint": "9d0bc6105b5af29a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pannello-professionisti.html"}, "region": {"startLine": 3093}}}]}, {"ruleId": "scanner-4ad01a12910b0fd6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in login-impresa.html:134"}, "properties": {"repobilityId": "4d8f08e809576003", "scanner": "scanner-primary", "fingerprint": "4ad01a12910b0fd6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "login-impresa.html"}, "region": {"startLine": 134}}}]}, {"ruleId": "scanner-28ca42c94960e4a0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pannello-artigiano.html:2243"}, "properties": {"repobilityId": "7403cb0536303ede", "scanner": "scanner-primary", "fingerprint": "28ca42c94960e4a0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pannello-artigiano.html"}, "region": {"startLine": 2243}}}]}, {"ruleId": "scanner-6c7c39cb1e224332", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in pannello-artigiano.html:4464"}, "properties": {"repobilityId": "6157f2cb4150982c", "scanner": "scanner-primary", "fingerprint": "6c7c39cb1e224332", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pannello-artigiano.html"}, "region": {"startLine": 4464}}}]}, {"ruleId": "scanner-80b65a298b03b814", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in cancella-iscrizione.html:133"}, "properties": {"repobilityId": "4c7f53b7ec378830", "scanner": "scanner-primary", "fingerprint": "80b65a298b03b814", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cancella-iscrizione.html"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-9aa6a472bb195e29", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in registrazione-impresa.html:311"}, "properties": {"repobilityId": "6afe8d970ce4b04a", "scanner": "scanner-primary", "fingerprint": "9aa6a472bb195e29", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "registrazione-impresa.html"}, "region": {"startLine": 311}}}]}, {"ruleId": "scanner-1b743b76a5b16755", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in index.html:1191"}, "properties": {"repobilityId": "f91708437a3a5445", "scanner": "scanner-primary", "fingerprint": "1b743b76a5b16755", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "index.html"}, "region": {"startLine": 1191}}}]}, {"ruleId": "scanner-e72966471b531121", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in strumenti-cantiere.js:15"}, "properties": {"repobilityId": "77ee24d9d3d880e5", "scanner": "scanner-primary", "fingerprint": "e72966471b531121", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "strumenti-cantiere.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-9cdffa06524f74ea", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pannello-negozio.html:1971"}, "properties": {"repobilityId": "c8c05c80e9de42af", "scanner": "scanner-primary", "fingerprint": "9cdffa06524f74ea", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pannello-negozio.html"}, "region": {"startLine": 1971}}}]}, {"ruleId": "scanner-0f436e7cca35f5d1", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in pannello-negozio.html:2961"}, "properties": {"repobilityId": "8dcf1903a1b6fe90", "scanner": "scanner-primary", "fingerprint": "0f436e7cca35f5d1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pannello-negozio.html"}, "region": {"startLine": 2961}}}]}, {"ruleId": "scanner-0f1bd18727768d4e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in modifica-profilo.html:808"}, "properties": {"repobilityId": "a6b19b0ff3d3959a", "scanner": "scanner-primary", "fingerprint": "0f1bd18727768d4e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "modifica-profilo.html"}, "region": {"startLine": 808}}}]}, {"ruleId": "scanner-17feec562fb8ec5c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in profilo-impresa.html:574"}, "properties": {"repobilityId": "0839242157f04f03", "scanner": "scanner-primary", "fingerprint": "17feec562fb8ec5c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "profilo-impresa.html"}, "region": {"startLine": 574}}}]}, {"ruleId": "scanner-80085bba1ae71218", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in admin.html:726"}, "properties": {"repobilityId": "6ce12d2fb0d90b99", "scanner": "scanner-primary", "fingerprint": "80085bba1ae71218", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "admin.html"}, "region": {"startLine": 726}}}]}, {"ruleId": "scanner-28da5de7ac8e6672", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in login-candidato.html:139"}, "properties": {"repobilityId": "a774f80b61ceb7d5", "scanner": "scanner-primary", "fingerprint": "28da5de7ac8e6672", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "login-candidato.html"}, "region": {"startLine": 139}}}]}, {"ruleId": "scanner-2523316499e5055c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in registrazione-negozio.html:323"}, "properties": {"repobilityId": "e10fec2901c26c13", "scanner": "scanner-primary", "fingerprint": "2523316499e5055c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "registrazione-negozio.html"}, "region": {"startLine": 323}}}]}, {"ruleId": "scanner-94a5f83f6cb040eb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in subappalto.html:284"}, "properties": {"repobilityId": "91f2a30d1ef8d766", "scanner": "scanner-primary", "fingerprint": "94a5f83f6cb040eb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "subappalto.html"}, "region": {"startLine": 284}}}]}, {"ruleId": "scanner-5932e1e82ccd0862", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ricerca-offerte.html:422"}, "properties": {"repobilityId": "d6d86d09aaf2ecca", "scanner": "scanner-primary", "fingerprint": "5932e1e82ccd0862", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ricerca-offerte.html"}, "region": {"startLine": 422}}}]}, {"ruleId": "scanner-a615926f5eee7921", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in offerte-registrazione.html:696"}, "properties": {"repobilityId": "cbe5e5f99c42c67e", "scanner": "scanner-primary", "fingerprint": "a615926f5eee7921", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "offerte-registrazione.html"}, "region": {"startLine": 696}}}]}, {"ruleId": "scanner-3aa1bcddeedcc665", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in registrazione-professionista.html:320"}, "properties": {"repobilityId": "d96c6bf15b374807", "scanner": "scanner-primary", "fingerprint": "3aa1bcddeedcc665", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "registrazione-professionista.html"}, "region": {"startLine": 320}}}]}, {"ruleId": "scanner-5f3cc765d38e73f0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in cerca-imprese.html:238"}, "properties": {"repobilityId": "bef371688da5b09a", "scanner": "scanner-primary", "fingerprint": "5f3cc765d38e73f0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cerca-imprese.html"}, "region": {"startLine": 238}}}]}, {"ruleId": "scanner-dfc0a0807e355664", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pannello-candidato.html:264"}, "properties": {"repobilityId": "c43a15d0805ea6a1", "scanner": "scanner-primary", "fingerprint": "dfc0a0807e355664", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pannello-candidato.html"}, "region": {"startLine": 264}}}]}, {"ruleId": "scanner-818d403b2317033b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in risultati.html:428"}, "properties": {"repobilityId": "ed0f4efaa3a0b61e", "scanner": "scanner-primary", "fingerprint": "818d403b2317033b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "risultati.html"}, "region": {"startLine": 428}}}]}, {"ruleId": "scanner-81af37d93c0c132b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pannello-impresa.html:2255"}, "properties": {"repobilityId": "f56d3b46fab10b8b", "scanner": "scanner-primary", "fingerprint": "81af37d93c0c132b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pannello-impresa.html"}, "region": {"startLine": 2255}}}]}, {"ruleId": "scanner-f11c5d0c74693f6c", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in pannello-impresa.html:3682"}, "properties": {"repobilityId": "1be488d3d9af9590", "scanner": "scanner-primary", "fingerprint": "f11c5d0c74693f6c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pannello-impresa.html"}, "region": {"startLine": 3682}}}]}, {"ruleId": "scanner-91b282337a3e837d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pubblicita.html:405"}, "properties": {"repobilityId": "f48c5bf08fef8b47", "scanner": "scanner-primary", "fingerprint": "91b282337a3e837d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pubblicita.html"}, "region": {"startLine": 405}}}]}, {"ruleId": "scanner-30a237112abbc5f6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ricerca-candidati.html:376"}, "properties": {"repobilityId": "b5a5ffeb93513b50", "scanner": "scanner-primary", "fingerprint": "30a237112abbc5f6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ricerca-candidati.html"}, "region": {"startLine": 376}}}]}, {"ruleId": "scanner-41f441b102a7f1f7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pubblicita-spazi.js:83"}, "properties": {"repobilityId": "cffb42753a970acf", "scanner": "scanner-primary", "fingerprint": "41f441b102a7f1f7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/pubblicita-spazi.js"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-ba348008308881cf", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in netlify/functions/subappalto-elimina.js:4"}, "properties": {"repobilityId": "c44081068fee53d7", "scanner": "scanner-primary", "fingerprint": "ba348008308881cf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "netlify/functions/subappalto-elimina.js"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-2f10bae607a26089", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in netlify/functions/elimina-account.js:4"}, "properties": {"repobilityId": "098be4a94ab36a92", "scanner": "scanner-primary", "fingerprint": "2f10bae607a26089", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "netlify/functions/elimina-account.js"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-fc870366e3533629", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in netlify/functions/admin-dati.js:4"}, "properties": {"repobilityId": "495429856341784c", "scanner": "scanner-primary", "fingerprint": "fc870366e3533629", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "netlify/functions/admin-dati.js"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-2d30fed4fadb6dde", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in netlify/functions/richiesta-cliente.js:4"}, "properties": {"repobilityId": "b7802d0d47f0d10d", "scanner": "scanner-primary", "fingerprint": "2d30fed4fadb6dde", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "netlify/functions/richiesta-cliente.js"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "9eb01a8f42104a31", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-faccb9061e9b52a0", "level": "note", "message": {"text": "No README detected"}, "properties": {"repobilityId": "d2c08ada57610ff0", "scanner": "scanner-primary", "fingerprint": "faccb9061e9b52a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["docs", "readme", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b3ed68815bca2f8c", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: package.json"}, "properties": {"repobilityId": "7edae0550c126386", "scanner": "scanner-primary", "fingerprint": "b3ed68815bca2f8c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "e72f1e63572a5c15", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "1936136b5f02c6d7", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "6127ee637ba24739", "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": "eb1ec855bfdca0ac", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-3bedd0c9ac3a1307", "level": "none", "message": {"text": "Commented-code block (5 lines) in strumenti-comuni.js:1"}, "properties": {"repobilityId": "8610959d9040faf4", "scanner": "scanner-primary", "fingerprint": "3bedd0c9ac3a1307", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b544d3605730cac4", "level": "none", "message": {"text": "Commented-code block (7 lines) in strumenti-cantiere.js:1"}, "properties": {"repobilityId": "edd93175d5d106ef", "scanner": "scanner-primary", "fingerprint": "b544d3605730cac4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6045f045b91876f4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 netlify/functions/notifica-risposta-preventivo.js:57"}, "properties": {"repobilityId": "83f0dff350475e7f", "scanner": "scanner-primary", "fingerprint": "6045f045b91876f4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d8eb438e5b50e188", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 netlify/functions/ai-claude.js:96"}, "properties": {"repobilityId": "0d31aa43d25520d8", "scanner": "scanner-primary", "fingerprint": "d8eb438e5b50e188", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-37a3ef819f48d010", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 netlify/functions/invia-promemoria.js:91"}, "properties": {"repobilityId": "215c813bfa407c71", "scanner": "scanner-primary", "fingerprint": "37a3ef819f48d010", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5fc7053b6e421602", "level": "none", "message": {"text": "Commented-code block (5 lines) in netlify/functions/invia-email-benvenuto.js:1"}, "properties": {"repobilityId": "a5f04c4f2e40f656", "scanner": "scanner-primary", "fingerprint": "5fc7053b6e421602", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51d20b9b7ea8e2cb", "level": "note", "message": {"text": "Legacy-named symbol `statoOld` in netlify/functions/notifica-spazio-libero.js:17"}, "properties": {"repobilityId": "6a4933df1f896769", "scanner": "scanner-primary", "fingerprint": "51d20b9b7ea8e2cb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8225180718407f28", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 netlify/functions/notifica-candidatura.js:31"}, "properties": {"repobilityId": "aca413182498a730", "scanner": "scanner-primary", "fingerprint": "8225180718407f28", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cb18ea20348f475a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 netlify/functions/notifica-preventivo.js:122"}, "properties": {"repobilityId": "81f71e43800f18ee", "scanner": "scanner-primary", "fingerprint": "cb18ea20348f475a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}]}]}