One deck is written once. A reader opens it for a different job — the bottom line, the story, the data. Lente projects the same source at the altitude a reader picks — but only ever a view a human approved. It is a pure, deterministic, no-DOM function; every beat below runs the real engine live.
Driven by the real engine (@/lib/lente): parseLensRegistry reads the
deck's lenses: block; the fluent
lens(slides).registry(reg).pick(id).project() front door returns the reader's view.
The read path is fail-CLOSED — an unapproved or drifted lens yields
unavailable, never a silent full-deck fallback — and it can never reach the suggester.
The only bridge is a human pressing Approve, which stamps a content hash that any later edit
invalidates. A plain DOM page, no framework — the proof the core is standalone.