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
|
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,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",
|
||||||
|
|||||||
Reference in New Issue
Block a user