← Sketches · the native app program

The DataNozzle

c1312026-11-10

A page asks a repository, the repository asks the nozzle, the nozzle picks one of three sources. One switch for the whole process, never a per-page flag.

Source: c131 plan.md R1–R3, D3, D5; c130 D6 ruled 2026-11-09 (three sources); the qdash data-interface bible's Transport (R15, R25); the c1 spike in qnative (steps 3 and 4).

▭Page

Inventory, Status, Events, Config, Connect

asks for Harnesses
⬚Repository

one per resource; the same return protocol (bible R25)

asks the nozzle
⬚DataNozzle

--data synthetic | local | plane · QPOINT_DATA · one switch, process-wide

picks one transport
⬓synthetic

the bundled fixture world (Meridian), at a standard path; the same world the web demo uses

◇local

this machine's qcontrol: the qdash socket API first, SQLite if Tyler prefers; honest when absent

◇plane

a running Qplane at --plane-url, with a standardised credential; read-only when connected

R1 · every number is served, derived or synthetic

synthetic flows through the real pipes; the footer names the source: data: plane · hq.acme.example

R2 · views know nothing about the source

no page reads a transport; no per-page flag, ever

R3 · one type per served shape

written from the backend handler into the types crate; compared against qdash's types/api until one generates the other

ours to build in c131the one switchexists today (fixture world, qcontrol)waits on the plane (c134) and its credential (c136)
The problem
Synthetic data and real data must never leak into page code. The qdash bible solved it on the web with a Transport; the native app ports the same idea to Rust so every page runs on the fixture world first and on real data without a change.
What the spike proved
All three sources existed from the third commit (qnative c1 step 3): synthetic and plane show the same rows through a fixture plane, local is honest about an absent qcontrol, a wrong credential is drawn as a state.
Open
Socket API or SQLite for local (Tyler, Q3); the credential's shape and how the app finds its plane (c131 D13, with c134 and c136).

Qpoint Brand Style Guide