docs(modules): record the cutover, and retire what it makes untrue #149

Merged
whitlocktech merged 1 commits from docs/module-system-cutover into main 2026-08-12 23:05:58 +00:00
Member

The docs half of the module-system cutover (website#150). Merges alongside it — this is the pass that stops two plans describing a branch that no longer exists.

The stale claims, closed

  • MODULE_SYSTEM.md's status banner still announced "in implementation — Phase 2's core scaffolding is landing, PRs 1–7 of 9 done", three whole phases behind. Now SHIPPED, with the shape of what landed: 166 public + 2 internal core routes, 72 arriving from Module-uo, contract at 1.5.0.
  • Phase 5 was listed as STARTED in the phase list, though §2.11.1 already recorded slice 3 closing it. Now COMPLETE.
  • Decision 11 carries its landing date and the branch deletion.
  • §2.11.1's "the pin is one of the things the cutover has to revisit" is resolved in place — and worth reading, because the resolution is smaller than the warning implied: the sha never moved, only the branch label, so the coreApi equality assertion stays armed at 1.5.0 and no chapter needed re-reading.
  • §1's protocol-3 one-shot note said the defect was latent "only because edge has not cut over". That condition expired at this merge — every existing instance is exactly the case it described, which is why the fix landing in slice 3 rather than after it is the reason there was nothing to notice.

The substantive addition: §2.9 "The cutover, as landed"

The four decisions that settled it, none of them a code question — the released Android gate, declaring the module before the merge rather than installing after it, the docs pass riding along, and the kit pin. Plus what the merge does to a live deployment, which was nowhere in writing before:

  • No DROP TABLE anywhere — core stops creating the 27 shard_* tables and never drops them; the module's fragment is CREATE TABLE IF NOT EXISTS, so the extraction is invisible to the data.
  • One destructive statement in 228 changed files, phase 2 PR 4's guarded announce_jobs column drop, verified against the live uomm-db when written.
  • No newly-required env var.
  • A declared module starts on that same first boot — a fresh row lands installed and lifecycle.boot() skips only an explicitly disabled one, so no operator click stands between the deploy and a working shard.

That paragraph is the one a future cutover will actually want.

The Android note — the one that changes meaning, not tense

android/PLAN.md said the gameAccountSignup fix "must land before that cutover". It didn't, and the org lead released the gate rather than holding a finished workstream for one field. So the note now records a live regression — against main, the shipped app hides game-account creation from every user, silently and without crashing — rather than a scheduling item. The fix is unchanged and small; what changed is that it is now a bug against production.

An accepted break and a forgotten one differ only by whether someone wrote it down.

Risk

Documentation only. No contract text changed — MODULE_API.md is untouched, and MODULE_API_VERSION stays 1.5.0.


🤖 AI-assisted: written with Claude Code (Claude Opus 5).

The docs half of the module-system cutover ([website#150](https://gitea.whitlocktech.com/RunicGateway/website/pulls/150)). Merges alongside it — this is the pass that stops two plans describing a branch that no longer exists. ## The stale claims, closed - **`MODULE_SYSTEM.md`'s status banner** still announced *"in implementation — Phase 2's core scaffolding is landing, PRs 1–7 of 9 done"*, three whole phases behind. Now **SHIPPED**, with the shape of what landed: 166 public + 2 internal core routes, 72 arriving from `Module-uo`, contract at 1.5.0. - **Phase 5** was listed as `STARTED` in the phase list, though §2.11.1 already recorded slice 3 closing it. Now `COMPLETE`. - **Decision 11** carries its landing date and the branch deletion. - **§2.11.1's** *"the pin is one of the things the cutover has to revisit"* is resolved in place — and worth reading, because the resolution is *smaller* than the warning implied: the sha never moved, only the branch label, so the `coreApi` equality assertion stays armed at 1.5.0 and no chapter needed re-reading. - **§1's protocol-3 one-shot note** said the defect was latent *"only because `edge` has not cut over"*. That condition expired at this merge — every existing instance is exactly the case it described, which is why the fix landing in slice 3 rather than after it is the reason there was nothing to notice. ## The substantive addition: §2.9 "The cutover, as landed" The four decisions that settled it, none of them a code question — the released Android gate, declaring the module before the merge rather than installing after it, the docs pass riding along, and the kit pin. Plus **what the merge does to a live deployment**, which was nowhere in writing before: - **No `DROP TABLE` anywhere** — core stops *creating* the 27 `shard_*` tables and never drops them; the module's fragment is `CREATE TABLE IF NOT EXISTS`, so the extraction is invisible to the data. - **One destructive statement in 228 changed files**, phase 2 PR 4's guarded `announce_jobs` column drop, verified against the live `uomm-db` when written. - **No newly-required env var.** - A declared module **starts on that same first boot** — a fresh row lands `installed` and `lifecycle.boot()` skips only an explicitly `disabled` one, so no operator click stands between the deploy and a working shard. That paragraph is the one a future cutover will actually want. ## The Android note — the one that changes meaning, not tense `android/PLAN.md` said the `gameAccountSignup` fix **"must land before that cutover"**. It didn't, and the org lead released the gate rather than holding a finished workstream for one field. So the note now records a **live regression** — against `main`, the shipped app hides game-account creation from every user, silently and without crashing — rather than a scheduling item. The fix is unchanged and small; what changed is that it is now a bug against production. An accepted break and a forgotten one differ only by whether someone wrote it down. ## Risk Documentation only. No contract text changed — `MODULE_API.md` is untouched, and `MODULE_API_VERSION` stays 1.5.0. --- 🤖 AI-assisted: written with Claude Code (Claude Opus 5).
wtclaude added 1 commit 2026-08-12 23:04:00 +00:00
The module system reached `main` on 2026-08-12 (website#150) and `edge` was
deleted. Several present-tense claims across two plans became false at that
merge; this is the pass that closes them.

MODULE_SYSTEM.md's status banner was the loudest: it still announced "in
implementation - Phase 2's core scaffolding is landing, PRs 1-7 of 9 done",
three phases stale. It now says SHIPPED and gives the shape of what landed.

The substantive addition is 2.9's "as landed" section: the four decisions that
settled the cutover (none of them a code question), and what the merge does to a
LIVE deployment - no DROP TABLE anywhere, one guarded and already-verified
column drop in 228 changed files, no newly-required env var, and a declared
module starting on the same first boot rather than waiting for an operator
click. That paragraph is the one a future cutover will want, and none of it was
written down anywhere before.

Phase 5 is marked COMPLETE in the phase list (2.11.1 already recorded slice 3
closing it), decision 11 carries its landing date, and 2.11.1's "the pin is one
of the things the cutover has to revisit" is resolved in place - the sha did not
move, only the branch label, so the coreApi equality assertion stays armed.

The Android note is the one that changes meaning rather than tense. It said the
`gameAccountSignup` fix "must land before that cutover"; the org lead released
that gate instead, so the note now records a LIVE regression - the shipped app
hides game-account creation from every user - rather than a scheduling item. An
accepted break and a forgotten one differ only by whether someone wrote it down.

Co-Authored-By: Claude <noreply@anthropic.com>
whitlocktech merged commit 02fd9f4c2d into main 2026-08-12 23:05:58 +00:00
whitlocktech deleted branch docs/module-system-cutover 2026-08-12 23:05:59 +00:00
Sign in to join this conversation.
No description provided.