# Phase 8 Release Checklist

## Database
- [x] `012_integrations.sql`
- [x] integration connections
- [x] integration event journal
- [x] external entity links
- [x] durable POS/ERP outbox
- [x] Mock PMS guests
- [x] Mock PMS room-charge posts
- [x] database-driven integration permissions

## PMS
- [x] `PMSAdapterInterface`
- [x] `verifyGuest()`
- [x] `getRoomStatus()`
- [x] `getGuestByRoom()`
- [x] `postRoomCharge()`
- [x] `getCheckoutStatus()`
- [x] Mock PMS implementation
- [x] health check
- [x] explicit mock check-in
- [x] PMS-sourced room session
- [x] checkout invalidates old customer sessions
- [x] checkout revokes room-charge authority/PIN
- [x] PMS guest verification for room charge
- [x] PMS external charge reference
- [x] checkout reconciliation command

## POS / ERP
- [x] POS adapter interface
- [x] ERP adapter interface
- [x] Null adapters
- [x] Mock adapters
- [x] order-to-POS outbox
- [x] paid-payment-to-POS outbox
- [x] paid-payment-to-ERP outbox
- [x] retry/backoff
- [x] external entity mapping
- [x] integration event logging
- [x] cPanel cron processing

## Administration
- [x] Integration dashboard
- [x] adapter enable/disable/configuration
- [x] health diagnostics
- [x] recent event log
- [x] mock PMS guest lifecycle
- [x] manual outbox processing
- [x] RBAC

## Security
- [x] room QR alone still grants no payment authority
- [x] mock PMS verification hash only
- [x] sensitive-looking integration log fields redacted
- [x] tenant-scoped adapter settings
- [x] old room/customer sessions invalidated on checkout
- [x] external POS/ERP work decoupled from guest request
- [x] no production vendor credentials bundled

## Release verification
- [x] PHP lint
- [x] Phase 8 smoke tests
- [x] Composer JSON
- [x] migration/FK structural sanity
- [x] route duplicate check
- [x] front-controller HTTP boot
- [x] secret/private-key scan
- [x] ZIP integrity
