git.lucas.co / cce-designer
graphic design tool
git clone https://git.lucas.co/cce-designer.git

commitc1e35e05a35cfba411c1c764810d023a17498a31
parenta1416575f6
authorLucas Galante <[email protected]>
date2026-09-19 06:40
docs(page): verify the reconnect fix, and record how

The page-image fix (6d0e313) shipped correct by construction — I had no
way to force a second renderer in a shadow and said so. cce-1f supplied
it: CCE_UI_FAULT_RECONNECT=<seconds> makes window_runner drop the session
exactly as a transport error would, one-shot, so the app reconnects with
a new VkRenderer and calls renderer_init a second time.

Verified with a control, which is the part that matters. Built the fixed
binary, neutralised renderer_handed_over, built that as a control, and
ran both through the same fault with a page loaded:

- control: the sheet is there before the fault and GONE after;
- fixed: the sheet survives.

So the test reproduces the bug and the fix resolves it, rather than the
test passing for some unrelated reason. cce-1f's own first cce-ui fix
passed a test that never reproduced the symptom, which is why they warned
about the control and why it was worth the extra build.

Judge by the picture, not the log: cce-designer inits no logger, so the
runner's "dropping the session" WARN never appears even when it fired.
The control going blank at the right moment is what proves the fault
works.

Docs only; no behaviour change.

Co-Authored-By: Claude Opus 5 <[email protected]>

 CLAUDE.md | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/CLAUDE.md b/CLAUDE.md
index 5c7a795..8fa8ec2 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -451,6 +451,15 @@ tick to recompose and re-upload — the raster is cheap to rebuild from the node
 graph, and no id can be carried across renderers. Found by cce-1f's audit of
 clients caching vk image ids.
 
+**To test it**, put `CCE_UI_FAULT_RECONNECT=<seconds>` on the binary's
+environment: the runner drops the session that many seconds in, exactly as a
+transport error would, and the app reconnects with a new renderer. Run the OLD
+binary through the same fault first — a fix that passes a test which never
+reproduced the bug is worth nothing. Judge by the picture: the designer inits no
+logger, so the runner's WARN never appears even when it fired. Verified this way
+on 2026-09-19 — with the fix disabled the sheet vanishes at the fault, with it
+the sheet survives.
+
 `gem_graph`, the source family's
 everything-at-once node, is deliberately not ported: it is these four chained,
 and that collapse is the whole premise of "fifty operators, ten nodes".