---
name: v0330-published
description: "v0.33.0 PUBLISHED counter 60 — PROJECT-INDEX milestone, 2nd release on private BigscreenVR/spt-bs-releases"
metadata:
  node_type: memory
  type: project
  originSessionId: 89cc9038-e5d9-429e-b4a9-40fba8af71ee
---

**v0.33.0 PUBLISHED — counter 60** @21a46d5 (merge PR #12, tag v0.33.0), 2026-07-16.
PROJECT-INDEX milestone release. **2nd release on the private channel
`BigscreenVR/spt-bs-releases`** (after v0.32.0/counter-59). Off main @34ae823.

URL: https://github.com/BigscreenVR/spt-bs-releases/releases/tag/v0.33.0
Signed: rel-primary-2026 (54188f12...). Platforms: windows-msvc, linux-gnu, linux-musl.
Live update-set: counter 60, product 0.33.0, channel stable. All 11 assets
(3 bins + 3 `.release.json` + update-set.json + `spt-docs.tar.gz` + SHA256SUMS +
manifest.schema.json + mock-adapter.zip). isDraft=false, releases/latest → v0.33.0.

## What shipped (user-facing surfaces, census v0.32.0..v0.33.0)
1. **Breaking — `spt whoami` is IDENTITY-ONLY**: renders session's own SELF pin
   (was full endpoint list); new committed `--json` `{id, state?, ready?, alive?,
   unbound?, description?}`; unresolved session → `NO_PERCH` stderr / `{"id":null}`,
   exit 1 (was exit 0). Bounded-time, hook-safe. ROOT of the 2026-07-15
   message-delivery incident class.
2. **List-shaped commands FAST**: `endpoint list` (human + `--json`), run picker,
   `api endpoint-info` read the daemon materialized project index — zero git in
   read path. 9-18s → sub-200ms on 13-perch home.
3. **New daemon duty + observability**: `spt daemon status` (+ `--json`
   `project_index` block) reports index writer health; index at
   `$SPT_HOME/index/project-index.json` = derived/rebuildable, safe to delete.
   Presence ≠ health.
4. **Docs corrections**: install snippets name REAL assets (spt-x86_64-windows.exe
   / -linux / -linux-musl) + per-platform download + Linux chmod; `[update.post]`
   adapter contract fully published. Corrected install page rides the docs bundle.
   (#9 thin-CI classifier = repo-internal, omitted from CHANGELOG.)

## Ceremony facts
- Counter verified 60 from PUBLISHED bs-releases update-set metadata (v0.32.0=59),
  never memory — matched doyle's expected.
- Clean first-try: PR #12 CI all-green NO flake (test 14-15min both runners, n1-gate,
  traceability, changes all pass; twohost skipped = no [twohost] tag). Assemble
  success first run. Contrast v0.32.0's applyhost served_broker timeout.
- Sign leg operator-attended: SPT_RELEASE_SEED present in env (raw hex len 64) —
  no operator coordination needed this cut, seed already seated.
- `traceable-reqs check` GREEN pre-commit — all PROJECT-INDEX REQs
  (REQ-WHOAMI-IDENTITY-ONLY, reader-cutover kin) already carried build-wave int
  evidence; NO stage flip rode this release (unlike v0.32.0's REQ-RELEASE-CHANNEL-
  PRIVATE int flip).
- reference.md CRLF churn after `xtask gen` again — `git diff -w` empty, dropped
  via `git checkout --` (same as v0.32.0). Committed only 3 real files.

## Post-publish (field-verify)
Pinged doyle at published + update-set-live (SENT). doyle coordinates HFENDULEAM
(this box) box-update + hertz 6-point field-verify on the live home (the
release-managed daemon restart is itself one check). Field-verify is HFENDULEAM
prompt-apply this time (NOT operator-cutover-gated like v0.32.0 — nodes already on
v0.32.0's gh transport / private channel, so self-update works normally now, per
the one-time channel-move-cost note in [[v0320-published]]).

## Applied on HFENDULEAM (doyle, same day)
Bare `spt update` + `spt daemon refresh` → CLI+brain 0.33.0, **broker deliberately 0.32.0 (N-1 posture)** until the next full bounce (docs server waits on that too — the update output's "daemon stop then start" advice is only needed for those two; refresh sufficed for the index writer). First live index cycle 46ms {1 enum, 0 scans, 0 derivations}, 10 endpoints/4 projects; live-home list 85ms human / 177ms json (was 15-18s). claude-spt post-step printed ✔ VERIFIED (perri's verify-then-notify live). Pre-release gotcha: deployah endpoint was WEDGED (zombie hosted session, stop/run trap) — recovered scoped-tree-reap → daemon refresh → fresh run; seed REQ-ENDPOINT-CYCLE-HONEST in [[spt-core-findings-backlog]]. hertz GO sent; milestone closes on their 6-point verdict.

## Fleet rollout constraints (perri, 2026-07-16)
- **ORDER BINDING: adapter claude-spt 0.24.1 BEFORE core 0.33.0 on every node** — whoami's breaking flat `--json` shape kills the legacy `.self.id` parse in older adapters' harness-hosted fallback identity; 0.24.1 ships receive-both compat.
- Apply needs NO full daemon restart (brain-cycle only, broker+PTYs survive) — but until REDISPATCH-TRUTH ships, the brain cycle can freeze ACTIVE REMOTE `spt rc` attaches (detach first or reattach after; see [[redispatch-truth-progress]]).
- F-042 (stale SaberMage changelog URL in an update notify) = FLEET-LAG, not a 0.33.0 defect: URL relocated in FORKENING W1 @2552ee6 (v0.32.0); a stale notify pins its MINTING node at <=0.31.0.

Related: [[v0320-published]], [[project-index-progress]], [[release-counter-from-published]], [[v0121-published]], [[public-docs-version-not-milestone]].
