From 07f1c7842c75bca1103445c3c9166d68c03d9b47 Mon Sep 17 00:00:00 2001 From: Ryth Azhur Date: Tue, 7 Apr 2026 12:30:52 -0400 Subject: [PATCH] =?UTF-8?q?Update=20ISSUES.md=20=E2=80=94=2016=20fixed,=20?= =?UTF-8?q?22=20remaining?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 (1M context) --- ISSUES.md | 151 +++++++++++++++++------------------------------------- 1 file changed, 48 insertions(+), 103 deletions(-) diff --git a/ISSUES.md b/ISSUES.md index 206e61c..4324e94 100644 --- a/ISSUES.md +++ b/ISSUES.md @@ -2,154 +2,99 @@ Identified by domain expert review (Cloudflare, Serverless, Vercel, React Query, Django, Laravel, Vue/Svelte). -## Critical +## Fixed -### 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. +- ~~C1~~ Scoped cache purge now passes user_id +- ~~C2~~ initSession retries 3x, resets on failure +- ~~C3~~ SSR backend injects `__MIZAN_SSR_DATA__` script tag +- ~~C4~~ SSR bridge uses _write_lock for stdin +- ~~C5~~ SSR bridge registers atexit handler +- ~~C7~~ View-path mutations now purge origin cache +- ~~H1~~ pendingScoped is Array, not Map (no overwrite) +- ~~H2~~ stableKey() sorts JSON keys (order-independent) +- ~~H3~~ mizanFetch retries 2x on 5xx/network errors +- ~~H4~~ Named contexts skip refetch if SSR data exists +- ~~H6~~ refreshContext uses GET /ctx/ not POST /call/ +- ~~H10~~ _meta always fresh dict +- ~~H11~~ Python normalizes True→"true" for cross-language HMAC +- ~~H13~~ isValid checks all required fields are touched +- ~~M11~~ execute_function return type includes HttpResponseBase +- ~~M18~~ registerContext cleanup uses ?. (no crash) -### 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 `