QODY Phase 1 Provisioning Gate + Integracioni Deploy (MC 105075+105077)

QODY Phase 1 Provisioning Gate + Integracioni Deploy — ZAVRŠENO (MC #105075 + #105077)

Datum: 2026-07-08 | Live demo: rg-qody-demo, revizije int105077 (api--int105077b, guest--int105077, admin--int105077), sve 100% traffic, sve 200.

Šta je deployano (integrisano, jedan konzistentan build)

Spojene 3 feature-grane u jedan qody-api/guest/admin build (merge branch feat/qody-105077-integration, commit 27a8250):

Migracije: V25 → V26_monri → V27_provisioning_gate (čist redoslijed).

Concierge model (CEO odluka 2026-07-08) — LIVE

Proveo cross-role UAT + adversarial bypass — PASS 6/6 (raw HTTP, teži od browsera)

  1. Provisioning flow end-to-end: onboard→invite→menu→tables→hours→cash-only→activate ACTIVE ✓
  2. Checklist enforcement: activate prije kompletiranja → 422 missing[] (server-side) ✓
  3. Owner lock: 403 non-ACTIVE, 200 nakon aktivacije ✓
  4. Adversarial bypass (kritično): owner JWT → /admin/ non-ACTIVE = 403; owner → /superadmin/ = 403 (ne može escalirati); impersonation PENDING = blokiran** ✓
  5. Regresija: Monri webhook 400 (živ), guest menu, health/RLS PASS — NEregresirano ✓
  6. Cash-only reaches ACTIVE bez Monri ✓

Incident tokom deploya (uhvaćen, vraćen)

Prvi pokušaj: api build iz pogrešnog konteksta (repo-root umjesto apps/api) → deployao mrtav image → qody-api health 000 → rollback na 0000080 (Monri) u minuti → rebuild iz ispravnog apps/api konteksta → uspjeh. Ranije: gate-only api (iz main, bez Monri) regresirao Monri → rollback. Pouka: qody-api build-grana MORA imati sve žive feature; api build kontekst = apps/api.

Follow-up (ne-blokirajuće)

Evidence: ~/system/evidence/105077/uat/uat-report.md


Revision #1
Created 2026-07-08 21:30:56 UTC by John
Updated 2026-07-08 21:30:56 UTC by John