git.lucas.co / cce-ui
GPU-accelerated UI toolkit (Vulkan)
git clone https://git.lucas.co/cce-ui.git

commit457b486732379505ea65ca094f77114fd3c384df
parentdf1daea3a5
authorLucas Galante <[email protected]>
date2026-07-12 07:20
docs(rfc): record Phase 6ay — JsonLayoutWidget moved app-side

Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_018u7qTwzX95dd5ysAkaSCLk

 docs/rfc-core-rebuild.md | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/docs/rfc-core-rebuild.md b/docs/rfc-core-rebuild.md
index 1925164..23365a2 100644
--- a/docs/rfc-core-rebuild.md
+++ b/docs/rfc-core-rebuild.md
@@ -1648,12 +1648,20 @@ Constraint respected: **each crate still builds standalone** — the new core is
     interaction rounds alive on both builds. One UNREPRODUCED
     bogus-alloc seen once on the new build — dm's known latent
     stale-pointer signature, 0/3 repro on either binary; watch it.
-  - Then the remaining raw-`Element` surface — JsonLayoutWidget (cloud's
-    host), Canvas (designer + preview), ButtonStrip (ctx-registered
-    embed of MenuBar/Paginator, load-bearing in the tree), Viewport3D
-    (designer), and the app-local impls — either dissolves app-side or
-    converts, the `*mut dyn Element` tree/context machinery gets
-    retyped, and `Element` + `Adapted` die last.
+  - **JsonLayoutWidget moved into cce-cloud (6ay).** The KDL/JSON
+    launcher-layout host had one consumer; it cannot be demoted off
+    `Element` (cloud feeds it to the paint walk as `&dyn Element`), so
+    the file moved app-side verbatim — the impl dies with the machinery
+    retype. `Justification` stayed in cce-ui (Button/files/settings
+    share it), same path. A/B: content-identical renders (raw diff =
+    the overlay's run-to-run spawn position + wallpaper bleed through
+    the translucent plate); live checkbox click toggles.
+  - Then the remaining raw-`Element` surface — Canvas (designer +
+    preview), ButtonStrip (ctx-registered embed of MenuBar/Paginator,
+    load-bearing in the tree), Viewport3D (designer), and the app-local
+    impls — either dissolves app-side or converts, the `*mut dyn
+    Element` tree/context machinery gets retyped, and `Element` +
+    `Adapted` die last.
 
 Order rationale: each phase is independently valuable and reversible, and no phase requires the
 next to compile. Phase 0 can land immediately regardless of the rest.