---
name: v0210-published
description: "v0.21.0 PUBLISHED — endpoint-list redesign + update-apply honesty (F-025), counter 41"
metadata: 
  node_type: memory
  type: project
  originSessionId: d095b3e4-b4dc-4ff4-8597-17c8faaa35fc
---

v0.21.0 PUBLISHED 2026-07-03 02:00:06Z. Counter **41** (recounted published v0.20.0=40, monotonic, rollback floor intact). Tag v0.21.0 → merge **e96f7d0** (PR#45 f025-listredesign→main; tree byte-identical to CI-validated @5694d68, bump-in-PR; code gated by doyle FINAL-GATE @04a3622 1477/1477). **PLAIN PR, NO [twohost]** — all-local surface (endpoint-list UX / apply notices / daemon-status); twohost-a/b skipped correctly. doyle token PUBLISHED-CONFIRMED-C41.

**Content (F-025 list-redesign wave):**
- `spt endpoint list` grouped by MACHINE not subnet (dedups a machine reachable via several subnets; `ENDPOINTS:<n>` line removed); `--show-all` (suspended hidden by default + hidden-count disclosure); `--json` additive `endpoint_type`. Also affects `spt whoami`.
- `spt daemon status` reports running broker image + `broker_image`/`broker_stale` JSON.
- `spt update apply` restart-required notice + no-error-when-already-applied (was access-denied hard fail).
- Race-tolerant fresh-store init (concurrent first-time store init no longer fails with "could not lock config file").

**Publish:** bins verified vs SHA256SUMS (linux 24ba80680141cbcf…, win 9fc3bbb1c01711e0…) → signed both (pubkey 54188f12…) → update-set v41 → PUBLIC+Latest. Both .release.json v41 product 0.21.0. SETTLE-CHECK served update-set==41 attempt 1, NO stale window [[release-updateset-stale-window]].

**AUTHORSHIP SPLIT this cut:** doyle assigned CHANGELOG to todlando (surface author). CROSSED-WIRES: my stale `git fetch` showed origin unchanged so I nearly re-authored; todlando had pushed CHANGELOG @b2b1f86 (shared-checkout moving-tree — todlando operates the SAME working dir). Resolution: reverted my local CHANGELOG+Cargo.toml edits, pulled b2b1f86 (his, with both his accuracy fixes: already-applied→Fixed w/ access-denied detail; node-grouped by-machine-not-subnet), bumped @65261ad on top. GOTCHA [[gate-clean-target-not-incremental]] extended: SHARED CHECKOUT w/ concurrent executor → re-fetch before trusting "origin unchanged"; coordinate tree-ownership handoff (todlando held clear while I bumped).

**doyle PR-gate scope-catch:** flagged missing STORE-INIT-RACE Fixed bullet (0214143 user-facing) → added as new commit @5694d68 (no force-push on shared branch) → doyle CHANGELOG-delta re-vet OK. Structure: 04a3622(wave)+b2b1f86(changelog)+65261ad(bump)+5694d68(store-init bullet).

Clean CI (no flake this cut). Runner contention: Windows build finished fast, Linux build (kitsubito) held the assemble ~long behind docs-publish+backstop ci.

Roles: doyle final gate-verify + release-pings perri (F-025 broker-image fold-in, min_spt_core→0.21.0). deployah = publisher. NEXT: [[f026-pickertruth-triage]] (picker/presence batch, triaged 2026-07-02, doc docs/NEXT-MILESTONE-PICKER-TRIAGE.md uncommitted; dispatch pending operator greenlight + enlyzeam bounce). doyle independent verify PASS 2026-07-03: update-set==41, both platform envelopes v41/0.21.0, monotonic 40→41.
