# Phase 4 Checklist — Kitchen / KDS / Notifications

Implemented on top of Phase 3 without replacing existing order history.

- [x] `008_kitchen_kds.sql` additive MySQL migration
- [x] Kitchen devices table for future registered KDS endpoints
- [x] Kitchen tickets and ticket items
- [x] Kitchen ticket status history
- [x] Database-backed notifications
- [x] Item route → category route → restaurant default-kitchen fallback
- [x] Automatic ticket dispatch inside the order transaction
- [x] One guest order may produce multiple kitchen/station tickets
- [x] KDS: NEW / ACCEPTED / PREPARING / DELAYED / READY / SERVED / CANCELLED
- [x] Order status reconciled transactionally across every kitchen ticket
- [x] Delay minutes/reason recorded and ETA extended
- [x] Customer status and delay notifications
- [x] Customer status/ETA polling without page reload
- [x] KDS JSON polling without full-page reload
- [x] Kitchen and custom-station admin configuration
- [x] KDS and kitchen RBAC permissions
- [x] Admin order page shows kitchen tickets
- [x] Hotel dashboard counts active/delayed tickets
- [x] Phase 3 open-order backfill command
- [x] cPanel-compatible operation; no Redis/Node/daemon required

## Required upgrade commands

```bash
composer install --no-dev --optimize-autoloader
php bin/migrate.php
php bin/kitchen-backfill.php   # once, only if Phase 3 has open orders
php tests/smoke.php
```
