## s4wave/spacewave — v0.57.22…v0.57.23

_398+ commits._

### Features
- **session: add the service session type** (90bb80f)
- **kvtx: add OrderedStore** (1acc6bf)
- **packfile: add signed upload and read grant messages** (61eb3a8)
- **feat(cli): list and remove space members** (c8216da)
- **forge/execution: add claim leases and fenced reclaim of dead claimants** (7431801)
- **core/provider/spacewave: send one enroll-member per new Session** (4372f3c)
- **feat(world): stage writes outside World transactions** (720bc9a)
- **feat(volume): own staged writes under leased stage nodes** (039704e)

### Fixes
- **provider/spacewave: fix push retry and goscript route tests** (665c38a)
- **fix(release): drop the static page manifest from the handoff** (df8d570)
- **fix(space): scope the plugin bridge to the Space's World and volumes** (d3805f9)
- **fix(provider): retain generation buses and readable sync packs** (7c390a2)
- **fix(resource): abandon unadopted children of failed calls** (6908940)
- **fix(forge/execution): wait on an invalid stored execution** (2a99d05)
- **fix(resource): release unpublished RPC children** (56ea748)
- **fix(hooks): run the pre-commit checks without GIT_DIR** (f5b8e7a)
- **fix(provider): delete a shared object whose genesis write fails** (31f0055)
- **fix(forge): self-fence execution claims before reclaim** (4ed5087)
- **fix(world): report typed acquisition grant retirement** (b250dbf)
- **fix(db/sql): keep the auto transaction open until query rows close** (efea69c)
- **fix(deps): update protobuf-es-lite to 1.1.5** (1031168)
- **fix(cli): report git-lfs agent startup failures and resolve Space names** (9619ff8)
- **sobject: fix the GoScript replay check and regenerate the manifest** (8ec351a)
- **fix(world): dispose retired typed factory results** (055d74e)
- **fix(world): cancel typed factories before closing handles** (f9246bf)
- **fix(git): initialize HEAD when creating a repository** (559261e)

### Backend
- **Update all dependencies** (10a6fa8)
- **release: v0.57.23** (fdbe767)
- **provider/spacewave: restore EnrollSpacePeer for service sessions** (6f2084f)
- **provider/spacewave: keep test handlers async and bodies optional** (a36ea37)
- **store/s3: count reclaim checks atomically in the schedule test** (50ccae4)
- **cdn_sharedobject: refresh the World engine to the published head** (027a9d0)
- **block_store_s3: scan every block of a pack store** (830c600)
- **sobject: let a state host run the World engine** (34dc0aa)
- **provider/spacewave: read public Spaces from their published base URL** (f0a6c23)
- **provider/spacewave/api: name where a public Space is published** (8e3134f)
- **provider/spacewave: drop the facets runtime protocol** (70ba4f6)
- **session: stop registering invite beacons** (d7ac242)
- **core/rbac: rename the checkpoint verb from validate to checkpoint** (c659735)
- **provider/spacewave: sign shared object writes without write tickets** (2365651)
- **prerender: report funnel visits from the website** (b3c649f)
- **session: accept targeted invitations across account changes** (e48f8b9)
- **provider/spacewave: bill storage overage under offer cloud-monthly-v3** (fdacf4b)
- **provider/spacewave: hold the stop drain for the cloud's Retry-After** (165a7ba)
- **packfile/store: retry rate-limited range reads after Retry-After** (7d663e9)
- **provider/spacewave: read packs through granted read URLs** (86eeb10)
- **provider/spacewave: upload packs to signed storage URLs** (8894351)
- **cli: let a manual serve take over a daemon started for a command** (a628c7b)
- **provider: record missing participant accounts as owner** (9d00e27)
- **go.mod: update cli to parse the command chain before Before hooks** (86ce840)
- **go.mod: update cli to keep aliased flags with ancestor flags** (b2f4b54)
- **space: show and choose the backfill choice in the UI and CLI** (5f92c51)
- **world/engine: read Worlds on demand and make backfill a per-device choice** (1a9bd6f)
- **resource/space: give the chat test channel a thread index** (7dcc341)
- **gitignore: stop ignoring the hydra command source** (961e259)
- **world/block/engine: release the testbed when each test ends** (537c842)
- **webrtc: replace the session when the remote peer restarts** (09dc455)
- **gen: regenerate for protobuf-es-lite 1.1.5 and starpc** (e935e89)
- **provider/local: seal low-cost test PIN locks with AES-256-GCM** (2e03160)
- **dex/solicit: wait for a peer before reporting a read miss** (335b0fd)
- **dex/solicit: cancel withdrawn block requests** (846c820)
- **dex/solicit: report a failed block exchange as an error** (a4640f3)
- **provider/local: retain Space participants on the owner** (d018679)
- **web: remove legacy canvas and rename readers** (49378fb)
- **all: remove remaining legacy readers and selectors** (eee8f4f)
- **core: remove legacy stored-data readers** (a8a49b8)
- **Update all dependencies** (5604877)
- **app: delete the unused window chrome prototype** (48ece11)
- **sobject: describe missing blocks and invites without validators** (020c74d)
- **space: show who controls the Space and the group's waiting changes** (db25dbd)
- **lean: prove group decisions agree under locks** (34b3f98)
- **sobject: rotate the key under group control** (98a5d9c)
- **sobject: take a proposal only from the round's proposer** (916a033)
- **spacewave: relay group control messages through the cloud** (68874ca)
- **sobject: verify group decisions in TypeScript** (da3fe1d)
- **sobject: let a group of voters decide membership and checkpoints** (282fd3d)
- **sobject: count only edits as waiting for order** (be7a3f3)
- **space: choose how edits sync** (441f27b)
- **sobject: sequence as the main device** (f5a43eb)
- **sobject: sequence operations under an appointed sequencer** (7b2d1e9)
- **sobject: model signature lists, object binding and envelopes in Lean** (fa6f910)
- **sobject: prove the stable point safe in Lean** (fc01bb9)
- **lean(sobject): let a peer relay a roster change** (c3e31c8)
- **sobject: drop devices from the trimming roster** (a0fa215)
- **sobject: report a checkpoint whose World differs from replay** (532f3fd)
- **sobject: trim history below the point every roster device built on** (c6fdc66)
- **core/provider/spacewave: share recovery keypairs across session clients** (9d3d389)
- **e2e/installedapp: refuse to clear an unmarked state root** (8ce21f1)
- **e2e/runtime: remove the unused space list readiness event** (0dfcaee)
- **core/resource/layout: stop the walk from nested rows** (2a036ee)
- **forge/execution: drop the unused allowFailed from execution outputs** (979a95f)
- **net/http/listener: stop the server with the controller** (48b6e3b)
- **db/bucket/setup: finish when every submitted bucket config is idle** (9957cae)
- **core/sobject: tell a member when replay rejects its applied edit** (b3e5712)
- **core/e2e/browser: stop the resize goroutine when the PTY run ends** (86dfc2d)
- **db/block/byteslice: drop the nil receiver check in UnmarshalBlock** (80f892d)
- **db/unixfs/watch: retry from fresh handles after a lookup is released** (11bdfa4)
- **net/link/hold-open: release the hold when the last link goes early** (554a03f)
- **db/block, db/world: follow written blocks in reachable drains** (98931af)
- **db/world, db/volume, sdk: own every write a staging scope makes** (1c53390)
- **db/bucket/lookup/concurrent: write cache fills without ownership** (45320e3)
- **db/packfile/order, db/coord/bolt, db/world/control: comment code paragraphs** (6638577)
- **forge/daemon, core/resource/cdn, conn: comment code paragraphs** (cd95343)
- **bldr/web/bundler, db/cli, crashtest: comment code paragraphs** (23cd8ad)
- **db/block/msgpack: return decode errors from BlockToObject** (ea5d7fa)
- **db/block/store/kvfile: report StatBlock read errors** (4db7671)
- **db, forge/job, net/transport/websocket: comment code paragraphs** (846052d)
- **db/util/billyhttp: continue Readdir across limited calls** (60175e1)
- **forge/worker, db/block/transform, billyhttp: comment code paragraphs** (94f628a)
- **core/space: count Space name length in characters** (f3ebe7b)
- **quic, forge/lib/git/clone, core/space: comment code paragraphs** (6a340ff)
- **bldr/prototypes/webworker-rpcstream: bound the app1 stream by a context** (a9e5705)
- **db/volume/world, db/kvtx/vlogger, listener: comment code paragraphs** (b63aae1)
- **bldr/platform: reject unsupported ARM versions with an error** (a5f40d0)
- **bldr/platform, db/packfile/writer, datagram: comment code paragraphs** (e7c335f)
- **memtable, space plugin runtime, sdk worlds: comment code paragraphs** (5008dd1)
- **db/block/rpc/client, forge/value, lz4: comment code paragraphs** (02dc922)
- **kvtx/ristretto, bldr/web/view, web pkg rpc client: comment code paragraphs** (c1b4020)
- **registration, sdk/device/world, signaling frame: comment code paragraphs** (fdf3a33)
- **net/peer, net/sim/graph, db/volume/sqlite: comment code paragraphs** (0c4891e)
- **db/unixfs/access, db/kvtx/iterator, listening: comment code paragraphs** (c2fc5c0)
- **core/resource/sobject, db/block/store, git/commit: comment code paragraphs** (89c3ecc)
- **forge/cluster/controller, db/examples/common: comment code paragraphs** (9bee3ac)
- **net/cmd/bifrost, forge/cmd/forge: stop the daemons on SIGINT and SIGTERM** (fc0b9e8)
- **net/cmd/bifrost, forge/cluster, db/cdc/jc: comment code paragraphs** (b4a985d)
- **db/block/store/bucket, db/volume/direct: comment code paragraphs** (1411d8f)
- **net/util/rwc, net/pubsub/controller, db/testbed: comment code paragraphs** (5c7281a)
- **db/store/kvtx/inmem: return the iterator error from Seek** (05e6c38)
- **db/store/kvtx/inmem, publisher, forge/lib/docker: comment code paragraphs** (062a7a7)
- **db/block/viz/dot: report write and close errors from PlotToFile** (d4f453e)
- **core/git, db/block/viz/dot: comment code paragraphs** (46d2381)
- **net/stream, identity/domain: comment code paragraphs** (e1a8b2f)
- **db/dex/solicit, core/trace/capture: comment code paragraphs** (8bdc594)

### Tests
- **test(resource): reproduce canceled published child leak** (2b0433f)
- **test(web): drop render-only tests and fix vacuous assertions** (a7d4b72)
- **test: drop duplicate and never-running tests** (8e6cf57)

### Chore
- **chore(licenses): update generated license data** (f9bae08)
- **chore(licenses): update generated license data** (14aced4)
- **chore: mark lock files as generated** (dd38f91)
- **chore(licenses): update generated license data** (304111a)
- **chore(licenses): update generated license data** (8e6ead7)
- **style: separate code paragraphs in the session resources** (c65fb1e)
- **style: separate code paragraphs across 159 packages** (3768b21)
- **chore(licenses): update generated license data** (a0e6288)
- **chore(licenses): update generated license data** (95f5490)
- **style: separate code paragraphs across 138 packages** (6df1c58)
- **ci: run the E2E suites only in the hourly full run** (0ada338)
- **ci: dispatch the hourly run on the branch name** (5e59200)
- **ci: run every job on every push** (1375e5c)
- **refactor(world): make engine storage read-only and stage every build** (3c66c7e)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/s4wave/spacewave?utm_source=github-action)._