docs(kit): pin core 1.20.0; teach onUserDeleting #18

Merged
whitlocktech merged 1 commits from docs/core-1.20.0 into main 2026-10-29 23:47:19 -05:00
Member

This is the kit's part of docs/website/ACCOUNT_DELETION.md §6 step 3. Core side: website#232 (merged, 7bd93b8, MODULE_API 1.20.0). The module halves are Module-Rust#70 and Module-uo#47.

The pin

ci/core-ref.json moves from 69998ec (1.19.0) to 7bd93b8 (1.20.0). The template's coreApi becomes ^1.20.0 for the equality check. The template doesn't register the new hook, so nothing it does changes meaning.

Chapter 2

  • New section: When a member deletes their account. It covers api.onUserDeleting({ userId, deletedBy }). Like every chapter, it teaches and links out; MODULE_API.md stays normative.
    • The hook runs before the row goes.
    • A cascade is not an unlink, so undo game-side state through the module's own unlink.
    • It can't stop the deletion: a throw or 10 s without an answer is logged, and the account is deleted anyway. So a module that talks to a game needs a record, written before the first call and with no FK to users, plus a retry.
    • The hook keeps running after core stops waiting, so don't write anything that needs the user row.
    • It needs coreApi ^1.20.0.
  • The call count becomes twenty-one.
  • One demo bullet that was missing. On a demo, core refuses any multipart body (since 1.18.0) and any write whose JSON body carries a data: URI (website#229, in this pin window). Module routes are covered too, without being listed in demoLocks. The chapter hadn't taught either refusal.

The other core changes in the window (website#225-#231) are the demo's deployment, seed and wipe, which modules never see.

Checked

  • checkLinks, checkRenameSites and checkChapterPaths all pass, and so do their tests (10/10 and 11/11).

  • checkCoreApi --core <7bd93b8>: coreApi ^1.20.0 matches the pinned core's 1.20.0. core-ref.json parses (node -p "require('./ci/core-ref.json').ref").

  • Template:

    • server: check:imports, and npm test 82/82
    • client: build, check:externals, and npm test 20/20
  • A real core run at this ref, with the template as the only module in modules/. Core's loader registered examplegame and generated the route manifest.

  • AI-assisted (Claude Code)

🤖 Generated with Claude Code

https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY

This is the kit's part of `docs/website/ACCOUNT_DELETION.md` §6 step 3. Core side: website#232 (merged, `7bd93b8`, MODULE_API 1.20.0). The module halves are Module-Rust#70 and Module-uo#47. ## The pin `ci/core-ref.json` moves from `69998ec` (1.19.0) to `7bd93b8` (1.20.0). The template's `coreApi` becomes `^1.20.0` for the equality check. The template doesn't register the new hook, so nothing it does changes meaning. ## Chapter 2 - **New section: *When a member deletes their account*.** It covers `api.onUserDeleting({ userId, deletedBy })`. Like every chapter, it teaches and links out; `MODULE_API.md` stays normative. - The hook runs before the row goes. - A cascade is not an unlink, so undo game-side state through the module's own unlink. - It can't stop the deletion: a throw or 10 s without an answer is logged, and the account is deleted anyway. So a module that talks to a game needs a record, written before the first call and with no FK to `users`, plus a retry. - The hook keeps running after core stops waiting, so don't write anything that needs the user row. - It needs `coreApi` `^1.20.0`. - The call count becomes **twenty-one**. - **One demo bullet that was missing.** On a demo, core refuses any multipart body (since 1.18.0) and any write whose JSON body carries a `data:` URI (website#229, in this pin window). Module routes are covered too, without being listed in `demoLocks`. The chapter hadn't taught either refusal. The other core changes in the window (website#225-#231) are the demo's deployment, seed and wipe, which modules never see. ## Checked - `checkLinks`, `checkRenameSites` and `checkChapterPaths` all pass, and so do their tests (10/10 and 11/11). - `checkCoreApi --core <7bd93b8>`: `coreApi ^1.20.0 matches the pinned core's 1.20.0`. `core-ref.json` parses (`node -p "require('./ci/core-ref.json').ref"`). - Template: - server: `check:imports`, and `npm test` 82/82 - client: build, `check:externals`, and `npm test` 20/20 - **A real core run at this ref,** with the template as the only module in `modules/`. Core's loader registered `examplegame` and generated the route manifest. - [x] AI-assisted (Claude Code) 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude added 1 commit 2026-10-29 22:59:27 -05:00
docs(kit): pin core 1.20.0; teach onUserDeleting
Some checks failed
PR Checks / template (pull_request) Successful in 54s
PR Checks / prose (pull_request) Failing after -24s
36f29a9cac
Moves ci/core-ref.json from 69998ec (1.19.0) to 7bd93b8 (1.20.0, website#232,
account deletion). Chapter 2 gains "When a member deletes their account": the
hook runs before the row goes, a cascade is not an unlink, it cannot stop the
deletion, so a module that talks to a game needs a record and a retry. Its call
count becomes twenty-one. The demo section now says core refuses multipart bodies
and data: URIs (website#229) on module routes without them being listed. The
template's coreApi becomes ^1.20.0 for the equality check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
whitlocktech merged commit be767776ac into main 2026-10-29 23:47:19 -05:00
whitlocktech deleted branch docs/core-1.20.0 2026-10-29 23:47:19 -05:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RunicGateway/Integration-kit#18
No description provided.