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

commitbaa609290c44e15d24c533b633dc5c07bcb7fa2f
parent03a6f0d87f
authorLucas Galante <[email protected]>
date2026-07-12 09:06
docs(rfc): record Phase 6az start — app-local Element impls onto narrow traits

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

 docs/rfc-core-rebuild.md | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/docs/rfc-core-rebuild.md b/docs/rfc-core-rebuild.md
index 92317e5..bbef438 100644
--- a/docs/rfc-core-rebuild.md
+++ b/docs/rfc-core-rebuild.md
@@ -1662,11 +1662,20 @@ Constraint respected: **each crate still builds standalone** — the new core is
     production type: ButtonStrip, the ctx-registered embed of
     MenuBar/Paginator — load-bearing in the tree, pinned to the
     machinery retype.
+  - **App-local impls onto the narrow traits (6az, in progress).** The
+    finale's first motion: each remaining raw `impl Element` converts to
+    `Layout`/`Paint`/`Input` + `Adapted<W>` ahead of the machinery
+    retype, shrinking `Element`'s implementor set toward exactly one.
+    Done: cce-colors' ColorSlider (constructor returns the wrapper, so
+    construction and direct-dispatch sites are untouched; A/B AE=0,
+    click/wheel live-verified). Remaining: settings ScrollBar, dm ×3,
+    cloud Fuzzel + JsonLayoutWidget, designer PassivePlate/Canvas/
+    NodePalette/Viewport3D, TI's four lookalikes, and cce-ui's
+    ButtonStrip (ctx-registered embed — may need the container hooks).
   - Then: the `*mut dyn Element` tree/context machinery gets retyped
     (context.rs propagation/spatial-grid/focus, the app rosters and
-    dispatch loops, window_runner's render plumbing), the app-local
-    impls and ButtonStrip convert with it, and `Element` + `Adapted`
-    die last.
+    dispatch loops, window_runner's render plumbing), 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.