[DOCS] Contesto: open-item C5 risolti (upload via setfacl host, fonti ACN) + escalation 92vs87 a Simon

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
DevEnv nis2-agile
2026-06-16 23:16:02 +02:00
co-authored by Claude Opus 4.8
parent 3051983003
commit 6992bdcf14
+6 -3
View File
@@ -20,9 +20,12 @@ Chiuso l'ultimo punto di Simon. Memoria: [[project-epic-c-simon]]. Tutto deploya
- Fix principali: **XSS allegati chiuso** (blocklist→**ALLOWLIST** estensioni, no html/svg/js same-origin) + nome file random; **scadenza magic-link** (`token_expires_at`, 410) + rate-limit portale + guard scritture su attività chiuse; **send() non azzera i destinatari già responded/acknowledged**; assign individuale "replace"; update conserva assign_mode; editor opzioni domande a scelta; etichette stato i18n; risposte inline (no alert); ARIA; escAttr portale; voce sidebar in common.js.
- KB SYSTEM ingerita (uuid `2c7ec47b`). Cache-buster `?v=20260629`, SW `nis2-shell-v1.21.1`.
### 🐛 OPEN ITEM (ambientale, NON regressione C5)
- **Upload allegati → `UPLOAD_ERROR` in prod**: `move_uploaded_file`/`is_uploaded_file` fallisce nella topologia proxy→fastcgi. **Stesso problema dell'upload `evidence_files`/`AuditController`** (la dir `public/uploads/evidence` non è mai stata creata = mai funzionato). `rename`/`copy` come www-data funzionano. Da investigare lato infra (php-fpm/proxy upload). Il resto di C5 (questionari, firma-lettura, commenti, calendario, portale, registro, matrice) è pienamente operativo.
- 92 vs 87 requisiti importanti (file Simon vs All.1): da riconciliare con Simon. Determinazione 333017/2025: data esatta da verificare. E2E browser di C1–C5 da far esercitare ai tester.
### Follow-up open-items (commit `3051983`, v1.21.2)
- ✅ **Upload allegati RISOLTO.** Causa: il prod **non** è servito dal container nis2-app ma da **Apache host → php-fpm HOST** (`/run/php/php8.4-fpm.sock`, DocumentRoot `public/`); `public/uploads` host era `git:git` con ACL che concedeva write solo a `git`, NON a `www-data` (utente fpm host) → `move_uploaded_file` falliva. **Fix host (NON in repo, da ri-applicare se il dir viene ricreato):** `setfacl -R -m u:www-data:rwx -m d:u:www-data:rwx /var/www/nis2-agile/public/uploads`. Collaudato: upload interno+portale .pdf 201, .html→422. **Risolve anche evidence_files/visure** (rotti per lo stesso motivo). ⚠️ Nota architetturale: il prod gira su **php-fpm host** (opcache.validate_timestamps=On → prende i .php in automatico); per reload immediato `systemctl reload php8.4-fpm` sull'host (il `docker exec nis2-app kill -USR2 1` reload SOLO la dev-API del container).
- ✅ **Fonti ACN aggiornate** (`nis2_sources.php`, verifica nis2-expert): 333017/2025 = 22 settembre 2025, marcata STORICA/superata; aggiunta 379887/2025 VIGENTE (efficace 31/12/2025); 164179/2025 (14 apr 2025) confermata vigente (base misure/requisiti). Date-giorno marcate `[da confermare sul testo ufficiale]`.
- 🔴 **ESCALATION a Simon — 92 vs 87 requisiti importanti**: la **pagina ufficiale ACN** ("nis-avviata-la-seconda-fase") indica **37 misure / 87 requisiti** per gli importanti; il prodotto usa **92** (file Simon) in `nis2_sources.php:79` + `help.js`. NON modificato (decisione bloccata "prevale il file Simon"). Riconciliare con Simon sul testo ufficiale. Resto del codebase (Gap Analysis, MEMORY) usa già 87 → c'è incoerenza interna da sanare con la decisione.
- ⏭️ #6 nginx Content-Disposition su /uploads/: **skip motivato** (l'allowlist chiude già la XSS; forzare il download regredirebbe la preview inline dei PDF). nginx.conf è bind-mount (→ restart applica) se in futuro si volesse.
- ⏸️ **Held (coordinati/outward-facing)**: #7 aggancio email a go-live (kill-switch off); #8 `EMAIL_MS_URL`→path interno (coordinare VIGILE, pre edge-strip); #9 TLS DB `nis2_user` (coordinare VIGILE). #4 collaudo E2E browser C1–C5 = task tester.
**Prossima migrazione = 055.**