facett-helix — crate card
Reverse-engineered (from source — verify, don't trust the name)
- One-line pitch: The TIME-HELIX DAG view — a plan/dependency DAG rendered as a helix advancing ALONG a time axis, with soft rubberband splines, windable coils, multi-helix scenes, an animated traverse, and GPU bloom.
- Does: Each node is a plan item (idea/task/test/crate) on a per-
systemangular strand; the DAG winds forward through time. Edges are soft Catmull-Rom rubberband splines with elastic settle; coils can be wound onto a pin (wind); many coils coexist with inter-helix links; an animated traverse flies a time-cursor along the axis.HelixView(the Facet) binds egui + facett-graph3d for GPU emissive bloom (gpu_scene→ GraphScene). Injected clock (set_clock/Msg::Tick) makes traverse + wobble deterministic (FC-7); aMsg+updatesurface is robot/CLI-addressable; nodes ride AccessKit as Buttons;state_jsonexposes every node's helix coords + wind/level/cursor/tension. - Key deps:
facett-core(Facet),facett-graph3d(GPU bloom lane, featurewgpu),egui,serde/serde_json. Dev:egui_kittest. - Shape: lib, ~2.4k lines. Modules: lib.rs (HelixView, 875), model.rs (Scene/PlanDag, 605), layout.rs (601), stability.rs (300). Key types:
Msg,HelixView,HelixRef,model::{Scene,PlanDag}. - Observed role in the workspace: The
model+layoutcore depends on nothing but serde+std — explicitly the portability seam intended togit mvinto ordning; hosts (nornir's funnel, modgunn) just populate aSceneviaPlanDag::add_idea.
Fill in (one line each — only the human knows these)
- Primary consumer(s):
- Why it exists (vs the obvious alternative):
- Hard constraint (airgap / no-C-deps / no-FFI / pure-Rust / etc.):
- Release cadence & independence (rides a parent? own repo someday?):
- Status (production / prototype / experimental / stubbed):
- Must-NOT-change invariant:
- Biggest known gap or TODO:
- Anything a newcomer would get wrong about it: