---
name: v0480-published
description: "v0.48.0 counter 83 published 2026-07-31T10:16:13Z @0f90431 — WAN-truth milestone (releases#50); intake gate moved the head off doyle's e09c96b; hashes for ledger"
metadata: 
  node_type: memory
  type: project
  originSessionId: 19af1a2f-5196-41e5-8233-8bb5241f8280
  modified: 2026-07-31T12:40:11.990Z
---

v0.48.0 (counter **83**) published 2026-07-31T10:16:13Z @`0f90431754dd20fb20aeaf1c4c82490135c83960` (== main, ff-only by doyle; golden run 30618050586 green attempt 1, all 9 jobs; release.yml 30621839529 green; thin main ci 30621774087 **green** — no contradiction to refer this cut, unlike [[v0470-published]]).

WAN-truth milestone `releases#50`: cross-site address-refresh (#40), dial-path observability + degraded-partial verdict (#41), install firewall verify/repair (#43, Linux verify-only, L1 half relocated to #54), rotation loudness explicit handles (#48). Lane PRs #136–139 all auto-closed MERGED by the ff.

Counter re-decoded at signing from v0.47.0's published `update-set.json` → `metadata_json.version` = 82, so 83. **That decode path is the reusable one:** the asset is `{metadata_json, signature_hex}`; parse `metadata_json` as JSON and read `version` (`artifacts` is a dict keyed by target triple, not a list). Published via hex-env fallback per [[release-seed-machine-env-ruling]].

**Timestamp caveat — the release page disagrees with this record on purpose.** Signing/publish happened at **10:16:13Z**; the page now reads `publishedAt` **12:35:31Z** because doyle re-dated it with a draft→published toggle so the board's ACCEPTANCE closes would satisfy the alchemy `release` verb's `closedAt < publishedAt` gate. Tag, assets and body survived. Cite 10:16:13Z as the publish moment; the page's date is the repair. Same day the operator ruled the release body carries **no** milestone/request links section (one was tried on this cut and stripped) — association lives on the board, per reshaped runbook step 6 (PR #140).

Hashes: win `77d5fce5e7edcde2235ad33c7746153cc7d5c9f069c10c3637dcf5da2863e88d` · linux `53b688df172333d430ad67addeaeeb8c009a87d6ff2fa44f94053405febefea6` · musl `1017fc0ce65b0979b4249161945e565c6f779b725882386cbe89c9aa76fd1b30`. update-set v83, key `rel-primary-2026`, channel stable, sig 128 hex. Verified after publish: `isDraft=false`, 11 assets, and `/releases/latest` resolves to v0.48.0.

**The intake gate paid for itself this cut** — see [[wan-truth-golden-green]]. It moved the head e09c96b → 0f90431 by catching two changelog defects that no diff would show: a daemon log token sold as an Added user feature, and a bullet claiming novelty for a notice that already existed on main. Verified the corrected body actually shipped by grepping the published release body for the banned nouns before signing.

Coordination note worth keeping: flagging a *pending* collision (doyle and todlando both parked to land the same CONTEXT.md knock-grill rulings) got it ruled in one round — doyle owns it, single direct commit, gated on publish-confirm AND grill close. Surface duplicate-payload waits while both parties are still parked, not after one fires.
