Skip to content

spec: release trim — status → state, publishedAt replaces firstPublishedAt — release v0.10.0 - #36

Merged
bvalosek merged 1 commit into
mainfrom
resync-release-trim
Sep 8, 2026
Merged

spec: release trim — status → state, publishedAt replaces firstPublishedAt — release v0.10.0#36
bvalosek merged 1 commit into
mainfrom
resync-release-trim

Conversation

@bvalosek

@bvalosek bvalosek commented Sep 8, 2026

Copy link
Copy Markdown
Member

What

Spec re-sync for the release trim (metalabel/metalabel-dfos#3266, migration 0575). Generated with pnpm update-spec against that branch's checkout; no hand edits.

Wire changes on GET /spaces/{space}/releases, GET /spaces/{space}/releases/{slug}, GET /releases:

  • status (presale | live | closed) → state (upcoming | live | ended, open enum; derived from the release's dates, never stored)
  • firstPublishedAt: string | nullpublishedAt: string (non-null: an unpublished release is a 404 on this surface)
  • releaseDate removed
  • releasesAt: string | null, closesAt: string | null added (the two optional window edges the state reads)
  • The product release context chip (slug + name) is unchanged; prose only.

Breaking for any consumer reading status, firstPublishedAt, or releaseDate. First-party consumers only today. Pre-1.0 → minor bump, 0.9.2 → 0.10.0.

Landing

  • Draft until metalabel/metalabel-dfos#3266 is on main — the snapshot tracks merged contract, and this describes a contract that has not merged yet.
  • Release after merge per this repo's governance: tag v0.10.0, push the tag.

Checks

pnpm typecheck, pnpm test (2 files, 11 tests), pnpm build, and pnpm generate leaving a clean diff — all green locally.

🤖 Generated with Claude Code

https://claude.ai/code/session_01DCHmjpTNWYZawWbytTECNC

…hedAt, releaseDate dropped — release v0.10.0

Resync against metalabel/metalabel-dfos#3266 (migration 0575, the release
trim). On the three release routes `status` (`presale | live | closed`) becomes
`state` (`upcoming | live | ended`, still an open enum), `firstPublishedAt`
becomes `publishedAt` (now non-null on this surface — an unpublished release is
a 404), `releaseDate` is gone, and two optional window edges `releasesAt` /
`closesAt` arrive. The product `release` context chip keeps its shape. Prose
updates describe the derived state and the two-fact visibility rule.

Breaking for a consumer reading `status` / `firstPublishedAt` / `releaseDate`
— pre-1.0, so a minor bump (0.9.2 → 0.10.0).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DCHmjpTNWYZawWbytTECNC
@bvalosek
bvalosek marked this pull request as ready for review September 8, 2026 12:33
@bvalosek
bvalosek merged commit 1c455d1 into main Sep 8, 2026
1 check passed
@bvalosek
bvalosek deleted the resync-release-trim branch September 8, 2026 12:34
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