From 499aa0e0388ccd791bb51ac90837f19c7340deea Mon Sep 17 00:00:00 2001 From: Ryth Azhur Date: Tue, 7 Apr 2026 12:18:57 -0400 Subject: [PATCH] =?UTF-8?q?Add=20ISSUES.md=20=E2=80=94=20expert=20review?= =?UTF-8?q?=20findings=20across=207=20domains?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 7 critical, 13 high, 18 medium issues identified by: Cloudflare, Serverless, Vercel, React Query, Django, Laravel, Vue/Svelte Critical: scoped cache purge broken, initSession swallows errors, SSR hydration never injected, SSR bridge thread-unsafe + leaks processes, no loading/error states in kernel, view-path mutations skip cache purge. Co-Authored-By: Claude Opus 4.6 (1M context) --- ISSUES.md | 155 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 ISSUES.md diff --git a/ISSUES.md b/ISSUES.md new file mode 100644 index 0000000..206e61c --- /dev/null +++ b/ISSUES.md @@ -0,0 +1,155 @@ +# Mizan — Known Issues + +Identified by domain expert review (Cloudflare, Serverless, Vercel, React Query, Django, Laravel, Vue/Svelte). + +## Critical + +### C1. Scoped cache purge doesn't pass user_id/rev +**File:** `mizan-django/src/mizan/client/executor.py` — cache_purge call in function_call_view +The scoped purge recomputes the HMAC with `user_id=None, rev=0`, but the entry was stored with the actual user_id and rev. The key never matches. Stale data persists until TTL expires. + +### C2. initSession swallows errors permanently +**File:** `mizan-runtime/src/index.ts` — initSession() +If the session init fetch fails, the promise resolves (catch swallows). Every subsequent call returns the resolved promise. CSRF is broken for the page lifetime with no recovery. + +### C3. SSR hydration data never written +**File:** `mizan-django/src/mizan/ssr/backend.py` — MizanTemplate.render() +Generated code checks `window.__MIZAN_SSR_DATA__` but nothing injects it. The `