From 9c148e58dc1f3d421d271c78d95e138d01fe6d27 Mon Sep 17 00:00:00 2001 From: giles Date: Mon, 29 Jun 2026 23:17:04 +0000 Subject: [PATCH] plan: note the live serving-JIT iteration gotcha (Slice 2) Co-Authored-By: Claude Opus 4.8 --- plans/relations-as-posts.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plans/relations-as-posts.md b/plans/relations-as-posts.md index 72e819f5..5af06deb 100644 --- a/plans/relations-as-posts.md +++ b/plans/relations-as-posts.md @@ -52,6 +52,12 @@ the relation's object-end declaration from the anchor**, which includes the root EMPTY (the load trigger fills each) — only the relate/unrelate FRAGMENT server-renders candidates (`with-cands` flag), so one page render doesn't do `candidate-get × every picker`. Benign single-perform suspend/resume still logs `VmSuspended` but returns 200. +- **Live JIT gotcha (cost real time):** the serving-mode JIT drops all-but-first when + `map`/`for-each`-ing a *function-produced* list — building `rel-kinds` that way rendered + only 1 of 4 editors live, while conformance + the ephemeral server passed. So + `host/blog-rel-kinds` is a VALUE the boot populates and the cache loads are UNROLLED. + **Conformance green ≠ correct live — verify the rendered edit page.** (Re-fold the + enumeration once plans/jit-bytecode-correctness.md lands.) - **Follow-up (Slice 2.5):** `relate-candidates` does a `host/blog-get` per pool member (O(posts) for `related`). A boot-time **title cache** (updated on put!/delete!) would make the picker O(1)-perform and cut the suspend/resume churn. Subject-end declarations + a