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

commitf893aeabe9fbf9ec90c3a278571c7d01eac67f0d
parent994da2d0cc
authorLucas Galante <[email protected]>
date2026-07-12 11:13
docs(rfc): Phase 6az COMPLETE — Element has one production implementor

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

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

diff --git a/docs/rfc-core-rebuild.md b/docs/rfc-core-rebuild.md
index 99fb5cb..8bed1f6 100644
--- a/docs/rfc-core-rebuild.md
+++ b/docs/rfc-core-rebuild.md
@@ -1662,10 +1662,11 @@ 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
+  - **App-local impls onto the narrow traits (6az) — COMPLETE:
+    `Element` has exactly ONE production implementor (`Adapted<W>`).**
+    Each remaining raw `impl Element` converted to
     `Layout`/`Paint`/`Input` + `Adapted<W>` ahead of the machinery
-    retype, shrinking `Element`'s implementor set toward exactly one.
+    retype; only test mocks still implement the trait directly.
     Done: cce-colors' ColorSlider (constructor returns the wrapper, so
     construction and direct-dispatch sites are untouched; A/B AE=0,
     click/wheel live-verified); settings' ScrollBar (now plain data —
@@ -1693,11 +1694,20 @@ Constraint respected: **each crate still builds standalone** — the new core is
     as_any downcasts; inline_label keeps the adapter's label machinery
     out of all four. Gallery + child-window A/Bs pixel-parity, cross-
     build sequences identical — cce-test-interface is raw-impl-free.
-    Remaining: dm ×3 (LoginCard/StatusLabel/SessionList) and cce-ui's
-    ButtonStrip (ctx-registered embed — may need the container hooks).
+    The greeter's three followed (part 7: labels fold into paint off the
+    laid-out rect; the display list's card-skip moves from base-pointer
+    equality to id comparison; cursor-only diffs, 3/3 click rounds alive
+    on both builds, after-state byte-identical). ButtonStrip closed the
+    sweep (part 8): embedders hold `Adapted<ButtonStrip>`; two wrapper-
+    shadowing collisions (`set_selected`, `take_click` — Element's bool
+    signatures vs the model's `Option<usize>` ones) route through
+    `inner_mut()`; presses stay ungated so a tab press lands under an
+    open dropdown popover; LI's Paginator strip and email's MenuBar
+    strip both cross-build byte-identical after identical clicks.
   - 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), and `Element` +
+    dispatch loops, window_runner's render plumbing) — with one
+    implementor the pointer type can collapse — and `Element` +
     `Adapted` die last.
 
 Order rationale: each phase is independently valuable and reversible, and no phase requires the