initial-prompt.md
c5. Status
The brief, verbatim, as the c130 session handed it to this one on 2026-11-11. It produced CYCLE.md and the page recorded there.
Background (from the session that started this one):
../qnative (this folder) is Qpoint's native desktop app for the endpoint, a Cargo workspace on GPUI Kit, driven by the design repo at ../design (its cycle c131 "Native App V1" is the build plan; c130 the program). Cycles here: c0 naming (open), c1 the spike, c2 Expressive Range (the Inventory section and the Tour guide; closed 2026-11-11, see HISTORY.md), c3 Developer Mode (design c138; another session works on it in this tree), c4 the messaging slice (design c137 Phase 3; another session works on it in this tree). You start c5: the Status page, the app's first page, which design's cycle c132 ran through its loop in the lab as the worked example (brief, mock on four worlds, review) and hands to this repo as the loop's push: a page and a story per state. Rules: read CLAUDE.md first; one DataNozzle switch, three sources (synthetic, local, plane); types written from the backend contract and generated from qdash's TypeScript; honest states (a fact that is not served is said to be not served, never faked); stories are the tests; the budget measured with strobe; the tree is shared, so commit only your own paths with messages naming the cycle, pull before editing a shared file (router.rs, the shell's navigation, main.rs, Cargo.toml) and message the other sessions when you touch one; qnative has no remote, never push. The design repo you may edit only for the captures step named in the brief.
Task: Create qnative cycle c5, the Status page, build it from design's brief and mock, and stop at a review stop.
Read first: CLAUDE.md, cycles/CYCLES.md and cycles/HISTORY.md (c2's Outcome names this hand-on), crates/app/src/pages/landing.rs, harnesses.rs and pages/mod.rs (how a page loads through pages::load and draws every state), crates/app/src/{router.rs,shell.rs,tray.rs,dev.rs}, crates/nozzle/src/{lib.rs,repo.rs} (the sources, NozzleError::NotRunning, Repo::stats, endpoint(host), installations, agents), crates/fixtures/src/lib.rs (the four worlds: fresh, minimal, meridian-day90 = nina-mbp, pilot = priya-x1), crates/stories/, and scripts/publish-stories.py. Then design's hand-on: ../design/cycles/c132.native-design-prototyping/status-brief.md (the page, the five states with the sentence each says and where its data comes from, the fork on the sensor's own facts, S1–S6), review-phase4.md, the mock ../design/app/pages/pages/native/status.vue with its pieces under ../design/app/components/native/, ../design/cycles/c131.native-app-v1/synthetic-data.md §Per page (Status) and §Rulings, and ../design/cycles/c132.native-design-prototyping/process.md (the loop; step 5 is this push).
Stage 1: cycles/c5.<kebab-name>/initial-prompt.md (this brief verbatim) and CYCLE.md (Why, Objective, Scope, Key Changes, Outcome; mode: evolution), the c5 line in cycles/CYCLES.md.
Build, each step its own commit:
- The page
crates/app/src/pages/status.rs, drawn on our layer crate as the other pages are, with the two bands the brief describes: the sensor's own facts (SensorState, Resources, EffectiveConfig, LogLine, PlaneConnection) as an honest "not served yet" block naming the qdash routes that will serve them (/api/sensor,/api/config,/api/plane; c131 D17: engineering's, not ours to invent; the block disappears row by row as routes land), and what was found here from the worlds: sessions, agents, events, tokens and spend (24 h and all) as micros, the harnesses here with monitored or shadow, the oldest event, the database size, the coverage counters. - The five states, each with the brief's sentence:
off(thelocalsource answers NotRunning: "qcontrol is not running on this machine", the last activity dimmed),starting(transient, facts filling in),on-local(the local sentence and the facts),on-connected(sourceplane: the connected sentence, the plane's base URL and last sync, Config read-only elsewhere),degraded("qcontrol is on, but part of what runs here is out of its sight", derived from/api/statscoverage:pilothas 5 injection failures and 3 uninspectable connections,meridian-day902 uninspectable,minimalandfreshnone). The state comes from the source and the data, never from a flag in the page; for stories of the states no world carries (off, starting), add a Dev-section switch (dev.rs) that forces the process state, marked as dev chrome. - S1: Status first in the rail as its own item under a "This machine" group above Inventory; the route, the landing's link; pull
router.rsand the shell's navigation right before editing, keep the diff small, and message the c3 and c4 sessions that you touched them. - Stories, one per state:
app-status,app-status-degraded(pilot),app-status-off,app-status-starting,app-status-connected(plane source againstfixture-plane), per world where the world changes the page; captured off-screen by the existing path. - Captures into design: from
../design, write a shot programscripts/shot-programs/c131-status-native.jsonmodelled on the existing--nativeprograms (c132 wrote the mode:npm run shots -- --native <program.json>runs the stories binary per world and files the PNGs withsurface: nativeinto the qnative atlas and a copy into design's atlas under the cycle's thread; use threadp2-status), run it, and commit in design only your program file and the captures it produced, with a message naming c131 and c5; do not push design. - The budget: strobe reading with Status open at rest, beside c2's figures (62 MB at rest, 116 MB after every page), in the record.
Record as you go (c5 CYCLE.md Key Changes, CYCLES.md), then stop at a review stop with review-1.md: what to look at per state and world, the figures, the wipe against design's mock where the two differ, and the calls for Mark (S1–S6 confirmed or changed, anything the sentences need). Do not push anywhere.
Shared notes folder for this group of sessions (outside the repo; read siblings' notes there, leave hand-over notes or large findings there instead of pasting them into messages): /Users/mark/Library/Application Support/Claude/side-session-notes/local_48dcacbb-6e97-49e9-b5dd-cdec294ad88f