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

commit07a4d29b4c1edbf9cad2f04c978d27ebaf19e940
parent1dde836c4d
authorLucas Galante <[email protected]>
date2026-08-25 12:50
rfc: Phase 7 — droplet push-constant coupling noted as an invariant

From the droplet author's session: Prim::Droplet reuses the plate
push-constant block by mode-10 reinterpretation and deliberately does not
ride PlateSpec; reshaping the plate block in 7b means re-checking the
droplet arm, and any future fold-in must preserve the droplet spec-string
idiom and the compositor's scenefx droplet node contract.

 docs/rfc-core-rebuild.md | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/docs/rfc-core-rebuild.md b/docs/rfc-core-rebuild.md
index 762db63..19ae20c 100644
--- a/docs/rfc-core-rebuild.md
+++ b/docs/rfc-core-rebuild.md
@@ -2390,6 +2390,14 @@ Constraint respected: **each crate still builds standalone** — the new core is
     subtlest part of the phase — it gets its own design note before code.
   - *No root container widget.* `PlateSpec` is data consumed by the paint path, not a node that
     owns the window.
+  - *The droplet family rides the plate PUSH-CONSTANT block, not the plate concept.*
+    `Prim::Droplet` (shader2d `MODE_DROPLET`) reuses the plate block's fields by mode-10
+    reinterpretation only — it deliberately does not consume `PlateSpec` or the backplate
+    getters. 7b may reshape how plates are DESCRIBED, but the shader-side field packing is
+    shared: changing the plate block means re-checking the droplet arm. If droplets are ever
+    folded into a generalized plate role, two external contracts must survive: the
+    `module { droplet "k=v" }` spec-string idiom, and the compositor's scenefx droplet node,
+    which parses the same `DropletSpec`.
 
   **Stages.**
   - **7a — Vocabulary.** `style.surface.plate.*` becomes the canonical config namespace;