§22.13 step 1: default-project-id re-stamp (v0.39.0)
projects.restamp_default_project(config): at startup after the registry mirror, renames project_id from the M1 bootstrap 'default' to the configured DEFAULT_PROJECT_ID across every project-scoped table (discovered by column) and drops the stale 'default' projects row, so a deployment's original corpus lands at a meaningful /p/<id>/ and 'default' is never a public URL. FK off for the rename (parent+children move together) + foreign_key_check backstop. Idempotent; no-op unless DEFAULT_PROJECT_ID is set to a non-'default' value. test_restamp_default_project.py (3 tests). 450 backend green. This is the last framework piece for OHM's clean /p/ohm/ cutover. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -23,6 +23,36 @@ 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.39.0 — 2026-06-04
|
||||
|
||||
**Minor — §22.13 step 1: the default-project-id re-stamp. A deployment can
|
||||
move its original corpus off the bootstrap `default` id onto a meaningful slug
|
||||
(e.g. `ohm`) so it lands at `/p/<id>/` and `default` is never a public URL.
|
||||
No-op unless `DEFAULT_PROJECT_ID` is set to a non-`default` value.**
|
||||
|
||||
Added:
|
||||
|
||||
- **`projects.restamp_default_project(config)`** — at startup, after the
|
||||
registry mirror, if `DEFAULT_PROJECT_ID` resolves to a non-`default` id and
|
||||
bootstrap-stamped rows still exist, it renames `project_id` from `default` to
|
||||
the configured id across **every** project-scoped table (discovered by
|
||||
column, so it stays correct as the schema grows) and drops the stale
|
||||
`default` `projects` row (its data has moved to the configured row the
|
||||
registry mirror created). The rename runs with FK enforcement off — parent
|
||||
and child rows move together, so the composite FKs stay consistent — with a
|
||||
`foreign_key_check` backstop before commit. Idempotent.
|
||||
- **Tests:** `test_restamp_default_project.py` — data + composite-FK children
|
||||
move to the new id, the stale row is dropped, FK integrity holds, the second
|
||||
call is a no-op, and an unset `DEFAULT_PROJECT_ID` leaves `default` in place.
|
||||
450 backend green.
|
||||
|
||||
Upgrade steps:
|
||||
|
||||
1. **MAY** set `DEFAULT_PROJECT_ID=<slug>` in the backend overlay and add the
|
||||
matching project (same `id`) to `projects.yaml`. On the next deploy the
|
||||
re-stamp moves the original corpus onto `<slug>` once; `default` URLs never
|
||||
become public. Leave it unset to keep the `default` id (no change).
|
||||
|
||||
## 0.38.0 — 2026-06-04
|
||||
|
||||
**Minor — §22 M3-backend Plan B (write path, propose): a new entry can be
|
||||
|
||||
Reference in New Issue
Block a user