release: 0.33.0 — §22 M3 backend Plan A (registry mirror + runtime config)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Ben Stull
2026-06-04 00:13:42 -07:00
parent 8004b2a123
commit a2dc29af9c
3 changed files with 69 additions and 2 deletions
+67
View File
@@ -23,6 +23,73 @@ skip versions are the composition of each intervening adjacent
release's steps in order — no A-to-B path is pre-computed beyond release's steps in order — no A-to-B path is pre-computed beyond
that. that.
## 0.33.0 — 2026-06-04
**Minor (breaking) — §22 M3 backend Plan A: project registry mirror +
runtime config. The framework now learns its projects from
`REGISTRY_REPO/projects.yaml`; `META_REPO` is retired. Migration `027`
runs automatically on deploy.**
Added:
- **Project registry mirror** (`app/registry.py`): the framework reads
`projects.yaml` from `REGISTRY_REPO` and mirrors its `deployment:`
block and `projects:` entries into the `projects` table + a new
`deployment` singleton. The mirror runs at startup (reconciler) and
on every §4 webhook push to the registry repo.
- **`GET /api/deployment`** — returns `name`, `tagline`, and the list
of visible projects. Replaces the build-time `VITE_APP_NAME` as the
authoritative runtime config source (the frontend cut lands in
M3-frontend).
- **`GET /api/projects/:id`** — returns `name`, `type`, `visibility`,
`initial_state`, and `theme` for a single project.
- **§22.4b `initial_state`** honored at propose time: new RFCs enter
the state named by the project's `initial_state` field (default:
`draft`).
- **§22.4c `unreviewed` flag**: newly proposed RFCs are flagged
`unreviewed = true`. Owners clear it via
`POST /api/projects/:id/rfcs/:slug/mark-reviewed`. The catalog
accepts `?unreviewed=true` to filter to the review queue.
- **Migration `027`** (additive): adds `projects.type` /
`projects.initial_state`, the `deployment` table, and
`cached_rfcs.unreviewed` / `reviewed_at` / `reviewed_by`.
Breaking:
- `META_REPO` is retired. The app **refuses to start** if `REGISTRY_REPO`
is unset. The corpus mirror now reads each project's `content_repo`
from `projects.yaml` rather than from the `META_REPO` env var.
Upgrade steps:
1. **MUST** create a registry repo under your deployment's Gitea org.
2. **MUST** author `projects.yaml` at its root with a `deployment:` block
(`name`, `tagline`) and one `projects:` entry for your existing corpus:
```yaml
deployment:
name: <your deployment name>
tagline: <your tagline>
projects:
- id: default
name: <your project name>
type: document
content_repo: <your old META_REPO value>
visibility: public
```
Keep `id: default` for this release; the pretty-slug re-stamp lands in
the next backend slice, before any `/p/` URL is public.
3. **MUST** set `REGISTRY_REPO=<your registry repo name>` and **MUST**
remove `META_REPO` (or leave it unset — it is ignored but its presence
may cause confusion).
4. **MUST** add a Gitea webhook on the registry repo pointing at
`/api/webhooks/gitea` (same secret as the corpus webhook).
5. **MUST** deploy. Migration `027` runs automatically at startup; the
registry mirror reconciles immediately after. Verify
`GET /api/deployment` returns your project and `/api/health` is green.
6. **SHOULD** rebuild the frontend (no new env var is required until
M3-frontend lands, but the frontend currently still reads
`VITE_APP_NAME` for the display name).
## 0.32.0 — 2026-06-01 ## 0.32.0 — 2026-06-01
**Minor — graduation's integer RFC number is now optional, and RFC **Minor — graduation's integer RFC number is now optional, and RFC
+1 -1
View File
@@ -1 +1 @@
0.32.0 0.33.0
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"name": "rfc-app-frontend", "name": "rfc-app-frontend",
"private": true, "private": true,
"version": "0.32.0", "version": "0.33.0",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",