# Placeful 2.7.0

## In evidenza

- **Fix dell'audit di capacità** — chiuso l'audit di capacità round-2: 16 risultati corretti su ammissione prenotazioni, finestre flessibili, pool giornalieri, waitlist, contatori e superfici di lettura. Include il dossier completo in `docs/capacity-audit/2026-10-r2/` e una matrice di race InnoDB a 13 scenari (`CapacityRaceMatrixTest`) ora eseguita in CI.
- **Hold promo-review senza scadenza** — i locali possono impostare la finestra di revisione promo a `0` così le prenotazioni `PromoPending` trattengono capacità senza scadenza (`bookings.hold_never_expires`); ogni contatore, sweep di scadenza, settle e ripristino conosce il flag.
- **Bundle privacy & GDPR** — estensioni diritti DSAR (riapplicazione del registro di cancellazione, pipeline di eliminazione verificata, richieste di esportazione), superfici di opt-out marketing, ricevute di consenso, telemetria timbrature opt-in e scrubbing PII pianificato per ordini e metadati delle presenze.
- **Trasparenza del service charge** — i carrelli ordini degli ospiti mostrano ora il service charge del locale e il totale prima del checkout.

## Correzioni

- **Collasso di capacità da figli chiusi** — `calculateCapacity()` vende solo lo spazio sui figli aperti mantenendo la domanda prenotata dei figli chiusi; `capacityIgnoringChildStates()` conserva i valori indipendenti dallo stato per la visualizzazione e `isSoldOut()` non segnala più sold-out quando solo un figlio chiuso ha ridotto la disponibilità.
- **Race nel claim della waitlist** — le transizioni di stato della waitlist sono aggiornamenti compare-and-swap atomici (stati sorgente validi nella `WHERE` SQL, scadenza offerta validata in SQL): due ospiti non possono più reclamare la stessa offerta.
- **FindSlot consigliava aree chiuse** — FindSlot MCP e assistente ora filtrano i candidati su `isEffectivelyOpen()`.
- **Eventi in corso nascosti** — gli elenchi di disponibilità usano `eventNotEnded()` invece di `date >= now()`, quindi gli eventi ancora in corso restano prenotabili.
- **Limiti numerici assistente fail-closed** — input capacità/min/max non validi o fuori range vengono rifiutati invece di azzerare silenziosamente i limiti.
- **Superfici flessibili** — disponibilità OTA, Reserve Google, MCP e assistente leggono ora `flexibleServiceRemaining()` e limiti topology-aware invece di valori cached o duplicati.

## Documentazione

- `docs/capacity-audit/2026-10-r2/` — case matrix, findings, race, regression e dossier di sign-off.


---
> Source: https://placeful-app.com/changelog/2.7.0
