Investigated phronmophobic/membrane as an
architectural reference
Same pattern as cositos: platform-agnostic data model + minimal
per-platform seam ("to run on a platform: drawing primitives + event
loop")
Independent validation for cositos' effects-returning lifecycle
reducer (membrane.component handlers are pure, return effects)
Flagged opportunity: a MembraneChannel — render
cositos widget state as membrane UI values → live widgets in
desktop/terminal, outside Jupyter, zero new JS
Investigated scicloj/plotje (Grammar of Graphics
for Clay)
Key discovery: Plotje is built ON membrane
(impl/membrane.clj compiles plans → membrane UI components)
— three-way stack: Plotje (spec) → Membrane (render/events) → cositos
(two-way ClayChannel)
Today Plotje-in-Clay is static SVG (one-way); cositos is the missing
two-way piece
Integration path 1 (recommended, demo-scale): SVG-embed widget +
pointer events over ClayChannel; pixel→data inversion free
via wadogo invertible scales
(impl/scale.clj)
Path 2 (bigger lift): interpret Plotje's serializable malli
plan schema client-side — vega-lite-style; wait for schema
stability (alpha)
Recorded both investigations in wai
Created .wai project investigations (no
active project existed since cositos-core was
archived)