Skip to content

fix(platform): blob read URLs carry no query string; 0.26.2 - #30

Merged
tamashi095 merged 1 commit into
mainfrom
fix/plain-blob-read-url
Sep 9, 2026
Merged

fix(platform): blob read URLs carry no query string; 0.26.2#30
tamashi095 merged 1 commit into
mainfrom
fix/plain-blob-read-url

Conversation

@tamashi095

Copy link
Copy Markdown
Contributor

What

walrusBlobReadUrl now returns the canonical /v1/blobs/{blob_id} with no query string, and @misofm/platform goes to 0.26.2. Cover URLs from the catalog reads change accordingly.

Why the ?strict_consistency_check=false pin goes

  • It was a no-op: false has been Walrus's default since v1.37 (November 2025). Bytes, length and ETag are identical with or without it on the testnet aggregator.
  • Its only failure mode was an outage: the aggregator deserialises read options with deny_unknown_fields, so a future rename of the flag would turn every pinned cover URL into a 400. Without the pin the worst case is a slower read if the default ever flips back.
  • A query string splits every cache (browser, edge, the CDN's canonical transform keys) into one entry per spelling of the same blob.
  • Read policy belongs in the CDN that fronts the aggregator (misofm/cdn), server-side, in one place.

Consumers

All pin 0.26.1 exactly and need a bump once platform-v0.26.2 is published: misofm/app, misofm/cli, and the four services in misofm/api (auth, crank, platform, read). The app has one test fixture carrying the old query string.

Verification

bun run typecheck, bun run test, bun run build, bun run test:consumer pass. codegen:check was not run here: it needs the sibling Move checkouts, and this change touches no generated code.

🤖 Generated with Claude Code

https://claude.ai/code/session_0117boNS2uJCQr7L2n94xx53

`walrusBlobReadUrl` returned `/v1/blobs/{id}?strict_consistency_check=false`
to pin the aggregator's read mode. That pin was a no-op and a liability:

- `false` has been Walrus's default since v1.37, so the bytes, length and
  ETag are identical with or without it (checked against the testnet
  aggregator).
- The aggregator deserialises read options with deny_unknown_fields, so
  the pin's only failure mode is a rename that turns every cover URL
  into a 400. Dropping it trades that outage for, at worst, a slower
  read if the default ever flips back.
- A query string splits every cache into one entry per spelling of the
  same blob: browser, edge, and the CDN's canonical transform keys.

Read policy belongs in the CDN that fronts the aggregator, server-side,
in one place. Cover URLs from the catalog reads are now the canonical
`/v1/blobs/{id}`.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0117boNS2uJCQr7L2n94xx53
@tamashi095
tamashi095 merged commit 8086a7d into main Sep 9, 2026
2 checks passed
@tamashi095
tamashi095 deleted the fix/plain-blob-read-url branch September 9, 2026 07:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant