1. Brand
RIRO Burger is a fictional burger chain created for this E2E. It is not a real restaurant.
- Restaurant slug riro-burger, id=4, on D1 essenauts-orders-dev only.
- Marketplace listing: https://dev.essenauts.com (unauth homepage lists three Filialen).
- Owner: Dirk Duggens (chain-wide). Rick (rick@essenauts.com) is the platform bootstrap only. Do not operate RIRO as Rick.
- Cash only. No Stripe account. Card checkout will refuse.
- Default locale German. Times Europe/Berlin. Money integer cents, EUR.
2. Locations
Exactly three published Filialen. Hours 11:00-23:59 every day. Delivery fee 2,49 EUR. Min order 10,00 EUR.
| Branch | Slug | Public URL | Address | PLZ zones |
|---|---|---|---|---|
| Mitte | riro-burger-mitte | dev.essenauts.com/riro-burger-mitte/ | Niedernstrasse 12, Bielefeld | 33602, 33604, 33605 |
| Schildesche | riro-burger-schildesche | dev.essenauts.com/riro-burger-schildesche/ | Joellenbecker Strasse 88, Bielefeld | 33613, 33611, 33615 |
| Brackwede | riro-burger-brackwede | dev.essenauts.com/riro-burger-brackwede/ | Hauptstrasse 41, Bielefeld | 33647, 33649 |
PLZ search: /lieferung?plz=33602 hits Mitte; 33613 Schildesche; 33647 Brackwede. PLZ 33699 is outside every RIRO zone.
Draft leftovers (do not publish): riro-mitte, riro-schildesche, riro-brackwede. They 302 home. Do not INSERT restaurants again.
3. Menu and images
Category Burger (id=26). Four published items, same catalogue on all three Filialen. Images are live /media/uploads/ on dev.
Image URLs (HTTP 200 on 2026-09-02):
- /media/uploads/24c4e62ee1ab98fdcda759fa.png
- /media/uploads/5e3ae644a3c45a2c66b2d1c3.png
- /media/uploads/45239f66f6ac992db1a008d7.png
- /media/uploads/868013516d1d51ae289d0991.png
4. Account matrix (TEST ONLY)
Staff login: https://dev.essenauts.com/admin/login. Customer: /konto. Operating guide: chain facts and FLOW live in the ticket 5 README on the engineering workspace (data/shared-knowledge/dirk-operating.md). Passwords below are TEST ONLY.
Staff (restaurant_id=4 except Rick)
| Name | Role | Branch | PIN | Password | |
|---|---|---|---|---|---|
| Rick | rick@essenauts.com | super-admin bootstrap | platform (restaurant_id NULL) | none | seed SUPER_ADMIN_PASSWORD (not for RIRO ops) |
| Dirk Duggens | dirk@riro-burger.test | owner, chain-wide | all canonical | none | RiroDirk-TestOnly-22 (TEST ONLY) |
| Mira Keller | mira.keller@riro-burger.test | manager | Mitte | none | RiroMgr-Mitte-22 (TEST ONLY) |
| Jonas Berg | jonas.berg@riro-burger.test | manager | Schildesche | none | RiroMgr-Schild-22 (TEST ONLY) |
| Lena Hoffmann | lena.hoffmann@riro-burger.test | manager | Brackwede | none | RiroMgr-Brack-22 (TEST ONLY) |
| Tim Krueger | tim.krueger@riro-burger.test | staff | Mitte | 4411 | RiroStaff-Mitte-22 (TEST ONLY) |
| Sibel Yilmaz | sibel.yilmaz@riro-burger.test | staff | Mitte | 7744 | RiroStaff-Sibel-22 (TEST ONLY) |
| Aylin Demir | aylin.demir@riro-burger.test | staff | Schildesche | 5522 | RiroStaff-Aylin-22 (TEST ONLY) |
| Paul Richter | paul.richter@riro-burger.test | staff | Brackwede | 6633 | RiroStaff-Paul-22 (TEST ONLY) |
Isolation: Mira sees Mitte people and Mitte orders only. Tim cannot open People (/admin/staff 302 /admin). Kitchen cannot cancel. Dirk sees all RIRO, not Rick, not Dinos. Dirk login lands /admin, not platform.
Registered customers
| Name | Password | |
|---|---|---|
| Anna Vogel | anna.vogel@riro-guest.test | RiroCust-Anna-22 (TEST ONLY) |
| Cem Kaya | cem.kaya@riro-guest.test | RiroCust-Cem-22 (TEST ONLY) |
| Hanna Lorenz | hanna.lorenz@riro-guest.test | RiroCust-Hanna-22 (TEST ONLY) |
Guests (no account): Klaus Niemeyer, Obernstr. 9, 33602 (ordered Mitte). Elif Sahin is artifact-only and did not order.
5. Order log
Placed 2026-09-02 via live POST /api/v1/orders on dev. Cash. Origin + Referer. No SQL order seeds. Canonical codes below. Track pages GET 200.
| id | Code | Who | Branch | Items (ex fee) | Total | Final | Staff |
|---|---|---|---|---|---|---|---|
| 5 | Z7K4HA | Klaus Niemeyer, guest | Mitte 33602 | RIRO Classic + Double Cheese | 25,47 EUR | completed | Tim: received to completed |
| 6 | EHCGF9 | Anna Vogel, registered | Schildesche 33613 | Chicken Smash + Green Dream | 25,47 EUR | completed | Aylin: received to completed |
| 7 | 3BFJ24 | Cem Kaya, registered | Brackwede 33647 | Double Cheese + Chicken Smash + RIRO Classic | 37,46 EUR | cancelled | Paul cancel 403, Lena cancel 200 |
Out of zone: POST delivery to Mitte with PLZ 33699 returned 400 {"error":"Diese Postleitzahl liegt außerhalb des Liefergebiets."}. No row inserted. That refuse is required, not a bug.
Mira GET admin orders: Mitte only (Z7K4HA + leftover C3SKEF). Dirk sees all six RIRO rows. Glueckspilz order id=1 untouched.
Leftover trio (not extra work)
A concurrent client placed the same scenario ~90s earlier. Same people, same end states. Left in place. Do not delete. Do not treat as extra ticket work.
| id | Code | Branch | Actor | Status |
|---|---|---|---|---|
| 2 | C3SKEF | Mitte | guest Klaus | completed |
| 3 | BTQ9C2 | Schildesche | Anna | completed |
| 4 | DNKFAE | Brackwede | Cem | cancelled |
D1 orders.restaurant_id=4: 6 rows (canonical 5-7 plus leftover 2-4).
6. Pass/fail tickets 1-5
| Ticket | Result | What passed |
|---|---|---|
| 1 Discover live UI | PASS | Admin/customer paths on dev. Artifact ui-map.md. |
| 2 RIRO chain | PASS 22:33 CEST | 3 Filialen, 4 items + images, PLZ match. Ghosts draft. No restaurant re-INSERT. |
| 3 People via real UI | PASS 22:43 / accepted 22:46 | Dirk owner, 3 managers, 4 staff, 3 customers. Isolation holds. 0 RIRO orders at accept. |
| 4 Orders + staff lifecycle | PASS 22:56 / accepted 23:03 | Z7K4HA completed, EHCGF9 completed, 3BFJ24 cancelled. 33699 400 required. Mira Mitte only. 0 SQL seeds. |
| 5 Dirk operating README | PASS 22:57 / accepted 23:03 | Human can log in as Dirk on dev and operate menu, hours, staff, orders. TEST ONLY passwords. |
Isolation holds. No SQL order seeds. No prod / apex / www / .de deploys for this E2E.
7. Bugs and leftover fixes
- PIN-only staff is 400. Live create requires email. Kitchen staff have email + password + PIN. Not a fail; documented.
- Draft short slugs riro-mitte / riro-schildesche / riro-brackwede left unpublished. Do not publish.
- Kitchen cannot cancel. Paul PATCH cancelled returned 403. Lena (manager) 200. By design (orders.cancel).
- Concurrent leftover orders C3SKEF / BTQ9C2 / DNKFAE left in place. Same scenario, not extra work.
- Prod menu 500s on essenauts.com /bielefeld/ and /glueckspilz-altstadt/ are out of scope. Do not ship dev to prod to "fix" them. Do not touch prod storefront/API.
- No create-restaurant UI; restaurant id=4 was a one-shot INSERT on dev D1 only. Do not repeat.
- No dedicated admin page for machine delivery zones; PUT /api/v1/admin/delivery is the live path.