Commit Graph
7 Commits
Author SHA1 Message Date
DevEnv nis2-agileandClaude Opus 4.8 69873e21be [FEAT] Epic C / C5 — chiusura open-items: email gated + fonti + provenienza 92/87
- #7 (go-live ready): send() aggancia l'invio email del questionario/firma-lettura via
  EmailService, GATED dal kill-switch EMAIL_SENDING_ENABLED (oggi=false → ZERO invii;
  pronto al go-live). Magic-link assoluto via APP_URL; invio solo ai target con email
  valida; i link restano sempre disponibili per la condivisione manuale. Smoke prod:
  email_sent=0, email_enabled=false (nessun invio).
- #2 (prevale Simon): nis2_sources.php — aggiunta NOTA DI PROVENIENZA sul 92 vs 87
  (prodotto usa 92 = file referente; ACN ufficiale 87; divergenza nota/accettata).
  Numero NON modificato per decisione confermata.

Note operative (host, fuori repo):
- #8: EMAIL_MS_URL spostato sul path interno http://172.21.0.1:8081/api/emails
  (verificato 400 con X-Internal-Key = funzionante; pre edge-strip). Rollback: URL pubblico.
- #9: pre-equip PHP-CA del DB CONFERMATO (CA presente, app connessa in TLS 1.3); enforce
  ALTER USER nis2_user REQUIRE SSL resta azione DB coordinata con VIGILE (utente @%).

v1.21.3. Additivo.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 23:32:27 +02:00
DevEnv nis2-agileandClaude Opus 4.8 3051983003 [FIX] Epic C / C5 open-items — upload ripristinato + fonti ACN aggiornate + UI
- UPLOAD ALLEGATI RIPRISTINATO in prod (causa: il sito è servito da php-fpm HOST e
  public/uploads era git:git senza ACL per www-data → move_uploaded_file falliva;
  fix host: setfacl -R -m u:www-data:rwx -m d:u:www-data:rwx public/uploads). Collaudato:
  upload interno+portale .pdf 201, .html→422. Risolve anche evidence_files/visure.
- nis2_sources.php (fonti-certe): Determina 333017/2025 datata 22 settembre 2025 e marcata
  STORICA/superata; aggiunta entry VIGENTE 379887/2025 (efficace dal 31/12/2025); URL ACN
  autorevoli (date-giorno marcate [da confermare sul testo ufficiale], verifica nis2-expert).
- UI attività: create+assign non lascia più attività orfane su errore (no duplicati su retry,
  messaggio chiaro) + assegnazione individuale richiede almeno un destinatario; blocco PWA di
  stakeholder-activities allineato (favicon-16/status-bar/application-name). v1.21.2.

ESCALATION (decisione di Simon, non modificata): nis2_sources.php riga 79 riporta "37 misure /
92 requisiti" per gli importanti (dato file Simon), ma la pagina UFFICIALE ACN indica "37/87".
Da riconciliare con Simon (open item #2). NON cambiato per rispettare la decisione bloccata.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 23:11:40 +02:00
DevEnv nis2-agileandClaude Opus 4.8 45e6c3599c [FIX] Epic C / C1 — correzioni post-verifica flotta (1 major + 5 minor)
Flotta di verifica (14 agenti): sicurezza pulita, fedeltà del dato perfetta (codifica
Simon intatta, 0 scostamenti). Corretti i 6 finding confermati:
- MAJOR: PolicyController::ensureFrameworkProcedures ora in transazione + SELECT...FOR UPDATE
  sulla riga org -> no procedure duplicate su fallimento parziale (rollback) o richieste concorrenti.
- MINOR: importer idempotente committato application/cli/seed_framework.php (DDL + upsert da
  nis2_framework_seed.json) -> re-seed riproducibile/versionato (verificato 2 run = 0 duplicati).
- MINOR: allineato '92 requisiti' importanti (dato autoritativo Simon) in help.js + nis2_sources.php
  (era 87, contraddizione interna); coerente '24 requisiti aggiuntivi essenziali' (116-92).
- MINOR (UI): troncamento anteprima valutazione sul RAW prima di esc() (no entita HTML spezzate).
- MINOR (UI a11y/AGID): modale valutazione con focus iniziale, ripristino focus, focus-trap.
Cache-buster ?v=20260623, version 1.18.2, SW nis2-shell-v1.18.2.
NB residuo da verificare: data esatta Determinazione 333017/2025 (mese senza giorno) in nis2_sources.php.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 18:40:31 +02:00
DevEnv nis2-agileandClaude Opus 4.8 06c94b3c05 [REVISIONE] Progetto revisione conformità+UI + 2 agenti esperti + correzioni R3 (audit NIS2/ISO)
Progetto di revisione unificato (docs/PROGETTO_REVISIONE_NIS2.md) che fonde:
- docs/PRINCIPI_AI_E_CONFORMITA_NORMATIVA.md (cyber + AI Act/GDPR/L.132 + principi AI)
- docs/VERIFICA_GAP_UI_AGID_BOOTSTRAP_ITALIA.md (gap UI vs AGID/Bootstrap Italia)
Agenti esperti: .claude/agents/nis2-expert.md + iso-27001-expert.md (read-only/advisory).

Audit R1 (NIS2) + R2 (ISO SGSI) = conformi, riserve minori. Correzioni R3 applicate
(lint + login reale OK, app su container TLS):
- IncidentController: final_report_due +30gg fissi -> +1 mese calendario, ancorato alla
  notifica reale in sendNotification (Art.23.4 lett.d).
- AIService prompt "report 30d" -> "1 mese dalla notifica 72h".
- help.js: GV.SC Allegato 2 -> Allegati 1 e 2 (Art.21.2(d)).
- nis2_sources.php: esplicitato Allegato 3=importanti / 4=essenziali.
- IsmsModelController export: nota PII.* = codifica interna (non numeri ufficiali 27018).
A4 (label whistleblowing "Art.32") DEFERITO: cita Art.32 D.Lgs.138/2024, da verificare sul testo.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 09:54:14 +02:00
DevEnv nis2-agile 3f74165531 [FEAT] Modello Organizzativo SGSI (ISO 27001/27017/27018) + SoA pre-popolato da NIS2
Nuovo modulo guidato in 6 step (cl. 4-10 + Statement of Applicability):
- migration 037 (isms_models/roles/soa/documents) + 038 (dataset 111 controlli:
  93 Annex A:2022 + 7 CLD/27017 + 11 PII/27018) + runner scripts/migrate-isms.php
- IsmsModelController (16 endpoint) registrato in index.php
- SoA pre-popolato dalle risposte Gap Analysis NIS2 (mapping iso27001_control)
- estensioni cloud condizionali 27017/27018 via flag uses_public_cloud/
  is_cloud_provider/processes_pii_in_cloud
- AIService::generateIsmsDocument + fonti ISO in nis2_sources.php
- frontend isms.html/isms.js + api client + sidebar + help + i18n IT/EN
- ingest KB ISO (scope SYSTEM, solo titoli/sintesi: no testo coperto da copyright)
- version.json 1.14.0; doc studio + deploy handoff

Strumento di supporto/pre-audit (non certificazione). Migration DA APPLICARE su host.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 11:32:42 +02:00
DevEnv nis2-agileandClaude Opus 4.8 4caaa97c60 [DOCS] guida.html: recepite note tester con fonti certe ACN (soglie/Agile, requisiti ACN, terminologia incidenti, sanzioni FAIR)
- cap-2: ambito size-independent (DNS/TLD/cloud/data center/CDN/IXP/comunicazioni/servizi fiduciari/MSP-MSSP) + Agile caso reale (servizi gestiti B2B). Fonte: Dir.(UE)2022/2555 art.2 + Ambiti NIS2.
- cap-5: livello requisiti operativi ACN. Determina 164179/2025 + Framework Nazionale 2025 (GV/ID/PR/DE/RS/RC). Importanti 37 misure/87 req (All.1); essenziali 43/116 (All.2), codifica identica + requisiti aggiuntivi. Esempi GV.RR-04 (adeguatezza al ruolo)/GV.PO-01. Chiarito framing 80 domande.
- cap-6: FAIR collegato alle soglie sanzionatorie (NIS2 art.34: essenziali 10M/2%, importanti 7M/1,4%; GDPR art.83 20M/4%).
- cap-7: terminologia normativa IT (preallarme/notifica/relazione finale) accanto ai termini EN.
- nis2_sources.php: nuova fonte certa acn_specifiche_base_2025 (numeri allegati + URL ACN).
Numeri 37/87 e 43/116 verificati su fonti ACN concordanti (acn.gov.it).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-31 07:49:01 +02:00
DevEnv nis2-agileandClaude Opus 4.8 5c545ea3d0 [FEAT] Integrazione analisi docs/nis2 v1.7.0 — scoring asset, tassonomia incidenti, PIR, NIST CSF, fonti certe
Fase 1 - Asset Relevance Scoring NIS2 (GV.OC-04): metodologia 0-100 a 6 criteri,
  AssetScoringService + endpoint scoringGrid/score/relevantSystems + UI assets.html + registro stampabile.
Fase 2 - Tassonomia incidenti Determina ACN 164179/2025: IS-1..4 + regime essenziale/importante (Allegati 3/4).
Fase 3 - Post-Incident Review (5-Whys) + metriche TTD/TTC/TTR + timestamp di fase.
Fase 4 - Mapping NIST CSF 2.0 (43 controlli) reference-only.
Fonti certe: registry config/nis2_sources.php + grounding AI (vieta riferimenti inventati) +
  citazioni help.js + ingest PDF normativi nella KB RAG (scripts/ingest-nis2-sources.php).
Migrazioni 020/021/022 (additive idempotenti). Fix VectorService IP Qdrant (drift .5->.3).
Analisi concorrenza Evix (docs/EVIX_ANALISI_CONCORRENZA.html, gap-driven).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 17:15:13 +02:00