-
v1.35.0 — budget contract consumer: ledger lanes, exit-7 honesty
StableAll checks were successfulChecks / Functional checks (push) Successful in 20sreleased this
2026-10-02 03:16:47 +00:00 | 82 commits to main since this releaseThe observatory becomes the FIRST consumer of the zcode-dispatch budget contract (docs/BUDGETS.md, v1.0.16+) — docs-first, every derivation mirrored so the panel can never disagree with the guardrail.
- Quota scope 2 — Lanes / trees: the dispatcher usage ledger aggregated by tree with the contract used-formula, config soft/hard limits + ok/soft/hard state, ⟲ override badges, a global budgets line, limit-only ghost lanes, honest empty states. Two honestly-labeled scopes, no double counting; the v1.33 cwd-lane table became the tree table (cwd in tooltips).
- Exit 7 rendered honestly everywhere: budget-refused dispatches (terminal but sessionless) join the pending strip with the refusal own numbers until dismissed; genesis classifies terminal with the budget detail; the steer status line and the optimistic echo settle with the ceiling numbers.
- Soft warnings: budgetWarning on steer + genesis surfaces; infra.budget-warning SSE flashes the fuel chip and toasts the lane numbers (one per burst).
- Freshness: ledger + config fingerprints in the poll-cache source key; usage.station-day + per-lane rollups + budget-warning map to a coalesced quota refresh.
Tests: 269 (57 new) — hand-computed ledger fixtures, staged-refusal surface tests, a live rig over the verbatim stream.py bridge, node harnesses, and a 28-check fixture CDP smoke at 1177 px.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.34.1 — steer-unread hardening
StableAll checks were successfulChecks / Functional checks (push) Successful in 19sreleased this
2026-10-02 02:19:00 +00:00 | 83 commits to main since this releaseValidation follow-ups from the v1.34.0 ACCEPT-WITH-FINDINGS round.
- V-1 (MED): non-dict JSON payloads in steer result files are inert (isinstance guard) — one malformed file can no longer dark
/api/sessionsfor the unread window. - V-2 (LOW): S-6 pre-fix narrative corrected — the stale window was the protocol-level POST→refresh race across the source-key micro-cache (default 250 ms), not the 8 s body TTL (outer bound only). No behavior change.
- V-3 (LOW): STEER_DIR result files join the poll-cache source key — a steer completion flips the unread badge on the NEXT poll (fixture CDP: 2.4 s against a 30 s TTL).
- V-4 (LOW): stream-history glow documented as DELIVERY-time approximation.
Suite: 212 tests green (207 + 5 new); Super-Linter green (6 lanes); live install verified.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- V-1 (MED): non-dict JSON payloads in steer result files are inert (isinstance guard) — one malformed file can no longer dark
-
v1.34.0 — owner fixes trio: steer unread watermark, session-scoped favorites, genesis reasoning picker
StableAll checks were successfulChecks / Functional checks (pull_request) Successful in 21sChecks / Functional checks (push) Successful in 18sreleased this
2026-10-02 01:17:05 +00:00 | 84 commits to main since this releaseThree owner-reported fixes that were originally steered into the CC round mid-flight (single-turn dispatch, no boundary) — delivered here as a bounded fixes round.
S-5 — unread badge for steer-driven sessions. Turns driven through the observatory own steer spawn complete WITHOUT anything writing the tasks-index row (live-verified: the repro session row sat 9.6 h stale while steers completed an hour earlier) — so the tasks-only unread approximation could never see them and those sessions rendered no unread badge while externally-driven ones did. v1.34.0 derives the same fresh-completion glow from the observatory own artifacts (steer result files with terminal status + finishedAtUtc; stream-history steer deliveries), OR-red into the unread map with the same 10-minute decay. No new state, restart-safe, read-only.
S-6 — session-scoped favorite star. The favorite/pin/hide POSTs never dropped the cached sessions body, so the dashboard post-toggle refresh could read a stale pre-toggle body and revert the toggle in-page; with the push feed healthy-but-quiet (polls idle) the star then kept stale state on the other surface — selected only in the view where it was toggled. v1.34.0 drops the cached sessions body on every flag POST and re-syncs both panel headers at every surface open.
S-7 — reasoning picker in the New Session dialog. A compact select beside the model picker: default = the dispatcher config default_reasoning (max on this station), options from ZDO_GENESIS_REASONING_OPTIONS > config reasoning_options > the documented max/high/medium/low/none ladder; the review summary lists the chosen value; the spawn argv carries it as the eighth positional (empty omits --reasoning entirely — the dispatcher default; hostile values stay inert argv passengers).
Suite: 207 tests green (183 baseline + 24 new). Super-Linter station recipe green. Fixture CDP smoke green including the 1177 px one-row header band and the v1.33.0 quota chip.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v1.33.0 — quota & cost observability (fuel gauge) + header control band
StableAll checks were successfulChecks / Functional checks (push) Successful in 19sreleased this
2026-10-01 23:48:05 +00:00 | 85 commits to main since this releaseThe 2026-10-01 quota outage killed every in-flight pinky — the deck had no fuel gauge. This release adds it: ceiling via ZDO_QUOTA_TOTAL_TOKENS / ZDO_QUOTA_WINDOW_H (unconfigured hides forecasts honestly while burn stats stay), burn measured from every model_usage request (input+output+reasoning), a labeled rolling-average forecast. Surfaces: the ⛽ chip (amber <4 h, red <1 h or exhausted), the Quota & cost section (burn-down bar, hourly sparkline, per-lane table grouped like the genesis picker), the genesis review forecast with an amber tight-headroom warning that NEVER blocks, and the response modal per-round token strip. Steer #13 fold-in: the view/filter cluster joined the status chips in ONE right-aligned control band — single line at the 1177 px ideal window (measured band 1012 px, first wrap at 1060), degraded push chip fixed-width. Suite 183 (18 new forecast/scan/lane tests), Super-Linter green, fixture CDP rig 44/44.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v1.32.0 — Pinky BB: gallery of the completed deck
StableAll checks were successfulChecks / Functional checks (push) Successful in 18sreleased this
2026-10-01 18:14:43 +00:00 | 87 commits to main since this releaseThe completed command deck, documented truthfully.
- Gallery: every README shot recaptured on the fixture world at EXACTLY 1177 px inner width (Xvfb real-window rig); the main shot shows the push chip mint over a live SSE bridge, brain-glyph rows, the dispatch strip, hydration prediction, graph and dock. New shots: the 🌱 genesis review step and the delegation backbone in the History table. Truthful captions (width + fixture provenance), programmatic PNG verification, capture-time DOM probes.
- Docs: Installation curl bumped to v1.32.0; push-feed cutover wording matches the live station.
- VGF-1..5: newline-strict genesis slug charset; deterministic recreated-DB memo regression; setUp-patch restore in the doorbell-lineage cases; bounded doorbell memo (TTL + cap); promptFile restricted to ~/.zcode/tmp/.
- Suite 165 OK; Super-Linter green on the repo's six lanes.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.31.0 — Pinky AA: session genesis
StableAll checks were successfulChecks / Functional checks (push) Successful in 20sreleased this
2026-10-01 17:20:12 +00:00 | 88 commits to main since this releaseBirth dispatched sessions END-TO-END from the deck: the 🌱 New Session modal (project picker with live placement-law suggestion, model/role pickers, optional bell wiring, review step) spawns zcode-dispatch scope-isolated with every user value riding argv positionals of a fixed script. Rails: placement-law cwd guard, prompt + rate caps. Live status: spawning → created → turn-running → completed. Also fixes brain-child doorbell lineage edges and the doorbell memo inode-reuse staleness; v1.30.0 follow-ups VZF-1 (coalesced dropped refresh+toast) and VZF-4 (pure pollTimerIntent) land.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v1.30.0 — Pinky Z: SSE consumer
StableAll checks were successfulChecks / Functional checks (push) Successful in 20sreleased this
2026-10-01 15:31:26 +00:00 | 89 commits to main since this releasePush-driven dashboard: EventSource consumption of the events bridge (zcode-dispatch v1.0.8, zcode/events/v1 envelope) with honest degradation to polling.
- ZDO_EVENTS_URL knob + GET /api/config (empty/off = pure v1.29 polling world)
- Typed event→UI mapping, ~200 ms burst coalescing, envelope digest trusted
- Single-owner poll governance: healthy push idles the main cycle + dock poll; degradation re-arms with the ⚠ push offline chip; bridge.hello resyncs from state
- bridge.dropped: keep-connection deviation (close() provably never reconnects — probed) + one-shot fresh-guard for the restarted-bridge skip window
- Validation: 110 tests green, Super-Linter 10.00/10, fixture rig 0-poll/40 s window with 0.26 s event reflection, CPU A/B 0.97×
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.29.0 — Pinky Y: UI polish quintet
StableAll checks were successfulChecks / Functional checks (push) Successful in 17sreleased this
2026-09-26 11:04:17 +00:00 | 90 commits to main since this releaseOwner UI polish quintet + v1.28.0 validation follow-ups.
- U-1: ONE header grouping — view/filter cluster under the title (window selector, brain toggles, vpw + ideal-window button); feed controls on the right with the status-chips row (canary + residency) beneath; one 8 px gap rhythm.
- U-2/U-4: ideal viewport width = 1177 px as ONE global constant (IDEAL_W in dashboard.html, single definition point; indicator text and thresholds, popup width, tooltips and README all derive from it; zero stray width literals).
- U-3: popup snap authoritative — fresh popup self-corrects after the opener-width quirk, re-click re-snaps, the button inside the popup snaps the popup itself.
- U-5: brain-role titles render delegation glyphs (⚡️🧠 masterbrain, 🍼🧠 sub-brain, 🧠 plain/de-differentiated, ⚡️🍼🧠 middle brain) instead of the redundant worktree prefix — display only; the pinned DB title stays untouched outside the dashboard.
- FV-1: provider-config rules memo reloads lazily on content fingerprint change (no process restart). FV-2: README PATH note.
Unit suite 100/100 (16 new), fixture CDP proofs 47/47 (Xvfb real-window recipe), Super-Linter green.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.28.0 — Pinky X: service robustness
StableAll checks were successfulChecks / Functional checks (push) Successful in 17sreleased this
2026-09-26 10:17:15 +00:00 | 91 commits to main since this releaseTwo owner-reported defects from the 2026-09-26 station reboot, fixed in one round.
Reboot-proof steering (S-1)
After a reboot the user manager starts the service with the default PATH — which lacks ~/.local/bin, where the zcode-dispatch launcher symlink lives — and every steer died with "zcode-dispatch not found on PATH". Fixed at BOTH layers:
- the systemd unit ships Environment="PATH=%h/.local/bin:…" (%h home-dir specifier, no hardcoded username; verified live via /proc//environ under a stopgap-free fresh-boot manager environment)
- the steer spawn resolves the launcher PATH-independently (resolve_dispatcher): ZDO_DISPATCH_BIN override (a set-but-missing override is a loud error, never a silent fall-through) → absolute ~/.local/bin/zcode-dispatch → the tracked install dirs (observatory sibling checkout, ~/tools/zcode-dispatch, ~/.local/share/zcode-dispatch) → bare PATH lookup as the last resort; the 503 refusal lists every candidate tried. Both spawn sites use it (steer console + fastlane turn-boundary delivery).
Boot-start baked into install/update (S-2)
install.sh now runs systemctl --user enable --now after daemon-reload (owner decision 2026-09-26) — the dashboard comes back after a reboot without a manual step; README documents it.
Validation
84/84 unittests (+15: resolution-precedence units; a real boot-env integration rig — server under the scrubbed fresh-boot environment on a free port, steer spawns via the absolute candidate, override wins; station-unit contract for the Environment line + enablement; v1.27.0 validation follow-up F1 — the missing invalidation mutation tests: stream-history delivered flag, stream-dropped rewrite, provider-config touch, live-driver/alive-steer digest flips). Pinned Super-Linter green (BASH, BASH_EXEC, MARKDOWN, PYTHON_PYLINT, PYTHON_RUFF, YAML). G5 CPU envelope re-check: 0.72 % of one core over 22 poll cycles on a 120-session fixture rig (pre-v1.27.0 failure mode ~170 %). Fixture CDP probes green (page builds, version marker v1.28.0). Station: install triple-checked, unit enabled (G3), service PATH proven via /proc, dashboard live on 127.0.0.1:8767 at v1.28.0.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.27.0 — Pinky W: cheap poll cycles
StableAll checks were successfulChecks / Functional checks (push) Successful in 17sreleased this
2026-09-26 08:52:57 +00:00 | 92 commits to main since this releaseRound W — the P0 CPU fix: one open dashboard used to cost ~170 % of a core (station 90–95 °C); now ~2.7 % measured live (G1 2.77 % over a 590 s soak with the tab polling every 3 s; G2 2.65 % under active turns; both far under the 10 %/35 % gates). 67/67 unittests (15 new cache-invalidation tests, one per source class), Super-Linter green, fixture rig E2E PASS (new session + running→terminal each visible in ~1.03 s, ≤ 2 cycles).
Response cache
- /api/sessions + /api/usage serve cached bodies behind a change key over EVERY source (session DB + tasks index via stat incl. -wal/-shm + data_version probe, dispatcher ledgers, contract report, questions side-channel, state file, provider config, live /proc digests). Any mutation rebuilds on the NEXT poll; TTL 8 s (ZDO_CACHE_TTL_S) refreshes time-derived fields; both endpoints share ONE fetch per cycle; ZDO_CACHE=0 opts out.
Hot-path memoization
- Per-session facts (context, pending questions, activity, hydration, models) keyed on session.time_updated (flushes together with parts/turns — verified live); re-derived only for changed/new/hot sessions; doorbell lineage scan rowid-incremental. Idle rebuild 45 ms (was 2189 ms); old-vs-new payloads identical.
Visibility governor
- Hidden tab pauses the main/drawer/modal/dock poll timers; visible re-arms exactly what was armed + one immediate refresh. Default cadence stays 3000 ms.
Asset: byte-reproducible
git archive --format=tar.gz --prefix=zcode-dispatch-observatory/ v1.27.0.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads