← Sketches · the native app program

Developer mode and its gates

c1382026-11-11

What the sensor serves today and what it does not, the nozzle that carries it, the pages that show it, and the three gates between a customer and its cost.

Source: c138 plan.md (§ The shape, § The gate, § Sensor; rulings 1, 2, 3, 6 and 8, walked with Mark on 2026-11-11); qcontrol main of 2026-11-10 (the monitor TUI, #782, and qdash's event stream); qnative at c2's review stop 3.

The sensor · qcontrol's monitor
◇events

Every public event, as SSE on loopback. One JSON record per frame; no replay, no cursor.

◇snapshots

Installations and matched processes, on the same bus, sent again when a viewer joins.

◇monitor view

Workers, health, the last error, targets and behaviors. Held inside the monitor's process; the TUI reads it there.

◇resources · log

CPU and memory samples, the log tail. No producer and no stream; the TUI samples them itself.

served
asked for
The nozzle · one switch for the process
⬚fetch

A request and its answer. Exists: the Inventory pages read through it.

⬚subscribe

New: a stream of frames, bounded, for Events and Live.

⬚monitor

New: the monitor's view, samples and log, for Monitor.

⬚The source

synthetic | sensor. Two positions on the Sensor page; never a per-page flag.

synthetic

a world, a condition, a stream

sensor

this machine, or an address through a tunnel

one stream

two altitudes

The app · what a person opens
▭Events

An ordinary page, in every build. The layer of meaning: rows are activities, volume becomes a count, each row opens to its evidence.

Dev · developer mode, seven pages
▭Tools

exists

▭Sensor

the source, the connection

▭Config

Manual · Qplane · Endpoint

▭Components

exists

▭Live

the raw stream

▭Monitor

after the TUI

▭Guide

the contracts, for Kamal

The three gates
1Allowed?

Decided outside the interface. The lean build: never, the code is absent. The full build: by --dev or QPOINT_DEV=1. Not allowed means no presence at all.

2On?

The person's toggle, shown only where it is allowed, remembered. Off means no Dev group, no thread, no socket, no timer.

3Open?

A feed lives only while its page is open. Leaving closes the stream, drops the buffer and stops the sampler. This gate holds for Events too.

What a build carries
▣The lean build

What a customer runs. Inventory, Events and the stream core. No developer code: one optional crate left out, checked in CI. Reads the sensor on this machine.

▣The full build

What we, Kamal and build partners run. The same app plus the devmode crate, behind the first two gates. Open to a Rust expert's review (ruling 1).

exists todayours to build in c138not served outside the sensor yet: asked of Kamalthe one switchmissing today
The problem
Two developer tools leave with the roadmap. The live viewer goes with qdash, and the monitor TUI lives inside the sensor's process, in dev builds only. Some clients measure the app's CPU and memory, so what replaces them must cost a customer nothing they did not ask for.
The core idea
Developer mode is an extension the app does not know about: one crate, one optional dependency, one line. Three gates stand between a customer and its cost. One stream feeds two altitudes: Live shows it raw, Events gives it meaning. The plan carries the nine rulings.
What is open
Half of what the TUI shows has no surface outside its process, so that feed is an ask to Kamal, written down in the Guide. The gate is recorded as a decision for a Rust expert to review. Phase 0 takes readings before the lean build is confirmed, and the Events page waits for Mark's design.

Qpoint Brand Style Guide