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:
@@ -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
|
||||
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
|
||||
|
||||
**Minor — graduation's integer RFC number is now optional, and RFC
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "rfc-app-frontend",
|
||||
"private": true,
|
||||
"version": "0.32.0",
|
||||
"version": "0.33.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
Reference in New Issue
Block a user