An update and its states
c1392026-11-11Nine states from up to date to managed elsewhere, three preferences, one trace, and the same page in two eras: build partners now, a structured rollout later.
Source: c139 initial-prompt.md (Mark's words, 2026-11-11); c139 plan.md §The shape (what is updated, the feed, the states, the preference, the trace, two eras), §Rules R1–R7, D1–D16 (proposed, for review-1), T1–T6 (Tyler); c139 prior-art.md; c130 research/platform.md §5 (qupdate, Zed's status machine); c137 plan D9 and inventory row 24; c62 and /partner-digest (the notes' sources).
CI's sidecar beside each binary: version, git_sha, ref, published_at, artifact, sha256; asked for now: channel, notes, size; later: rollout, min_version, pulled (T3)
qupdate grown bundle-aware, or the app's own (T2); download, checksum, stage, replace; elevates only for qcontrol (T4)
the app and qcontrol, each with its own state, on one page with one Update (D9)
the state, the versions, the preference, the channel, the notes
the trace: updated, 0.2.0 ready, Restart to update
the newest on the channel; checked hourly, or Check now
asking the feed
the current and new version, published, size, the notes; Update
download · verify (the checksum) · stage beside the running app; cancellable until staged
qcontrol keeps watching while the app restarts (R2); Restart now · When I quit
restarted into it, quietly or by the person; the notes lead the page
a download, checksum or replace did not complete; nothing changed and the page says so. Three failed tries reach the tray as one line (R3's exception).
the feed is unreachable; not our error and not the person's problem: last checked, and when it tries again.
a package manager now (Homebrew: the command to run); later the organisation's policy from the plane (a pinned version, Contact IT). The preference is shown, locked, with the reason (D10).
| Install updates | Downloads | Installs | What you see |
|---|---|---|---|
| Automaticallythe default (D1): invisible, never untraceable | in the background | at quit, at restart, or idle with the window closed (D3) | the trace, afterwards |
| Ask me first | in the background | when you say Restart | the tray's dot and line; the footer's "0.2.0 ready" |
| Manually | when you press Update | when you say Restart | the Updates page and the tray's "Update available" |
- The footerv0.2.0 · updated, for seven days; a click opens Settings › Updates. It already names the source and the version (c131 R1).
- Updates pageleads with "Updated to 0.2.0 yesterday at 18:02" and what's new; the history says how each version came.
- The trayone line while there is something to do; the version line says "updated". A dot only where the person asked to be asked.
- Notno inbox message (c137 row 24 stands), no OS notification, no toast, no dialog. A quiet install never asks for a password: qcontrol's part waits on the page.
every build CI publishes with a tag reaches every partner at once; a pulled release is the only brake (T3)
what changed, sharp edges fixed, known ones, each line with its source; drafted from the cycle records at release time, gated by whoever cuts it (D6, D7); the trail one link away
0.2.0 · a3f9e12, and Copy version info for a bug report (D5)
partners on Beta, with internal notes; back to Stable waits until Stable passes your version
each install draws a stable number; a bad signal halts the rollout; min_version is the security floor
three lines and the changelog; from the plane (c134): the channel allowed, a pinned version, an update window. Never a person's skip (R6, D8).