steid

@jamesgill /

steid/plans/releases.md
Markdown2.2 KBRendered·Source·Blame·History·Raw
1# Releases
2
3What each release shipped, so **"the previous release's schema"** is a fact rather than
4a guess. Every migration must be one the previous release's binary can run against —
5the rule, and why, is in [`architecture.md`]architecture.md#migrations.
6
7Add a row when a release is cut, in the same commit that bumps `Cargo.toml`.
8
9| Version | Date | Commit | Migrations it shipped |
10|---|---|---|---|
11| 0.1.0 | 2026-07-31 | `1111df1` | *(none — no `migrations/` directory yet)* |
12| 0.2.0 | 2026-09-04 | `7fb0b5e` | `…093030_create_orgs` · `…093031_create_users` · `…093032_create_memberships` · `…093033_create_sessions` · `…093034_add_org_bio` · `…093035_create_repositories` · `20260828120000_create_tokens` · `20260829090000_add_repository_recency` |
13| 0.3.0 | 2026-09-06 | `768d679` | *(none new — same set as 0.2.0)* |
14| 0.4.0 | 2026-09-06 | `219c396` | `20260906120100_add_repository_import` · `…120200_create_issues` · `…120201_create_issue_comments` · `…120300_create_push_events` · `…120301_create_webhooks` · `…120302_create_webhook_deliveries` · `…120400_add_repository_archived` · `…140100_add_token_lifecycle` · `…140200_create_labels` · `…140201_create_issue_labels` · `…180100_create_pull_requests` · `…180101_create_pull_request_comments` · `…190000_create_pull_request_labels` |
15| 0.5.0 | 2026-09-10 | *(this commit)* | `20260906120200_create_issues` · `20260908090500_create_password_resets` |
16
17The `…` stands for the leading `202609061` / `20260804` of the timestamp; the full file
18names are in `migrations/`.
19
20## Unreleased
21
22Nothing: every migration in `migrations/` shipped with 0.5.0.
23
24## Where the last release's set actually lives
25
26The **cumulative** file list of the newest released version is a `const` —
27`RELEASED_0_4_0` in `src/infrastructure/database_compat_tests.rs`. That is what the
28replay test reads, so it is the authoritative copy; a test asserts it is a prefix of
29`migrations/` in timestamp order, which catches a typo and catches a migration
30back-dated in front of a released one.
31
32The table above is the human record and must be updated to match. When 0.5.0 is cut:
33add its row, rename the `const` and replace its contents with the full cumulative list
34at that tag.