ci/core-ref.json moves from 7bd93b8 (1.20.0) to f13b8fe (1.21.0, website#233, report, block and hide). Chapter 2 gains a section on registerReportTargets, registerGameIdentities and ctx.safety, and its call count becomes twenty-three. template/module.json's coreApi becomes ^1.21.0 for the equality check; the template declares none of the new members. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
131 lines
8.3 KiB
JSON
131 lines
8.3 KiB
JSON
{
|
|
"repo": "https://gitea.whitlocktech.com/RunicGateway/website.git",
|
|
"branch": "main",
|
|
"ref": "f13b8fe1fec9dc330a985430b8bd4f67c9ec26c5",
|
|
"why": [
|
|
"The core this kit is written against, pinned to a commit rather than a branch.",
|
|
"",
|
|
"2026-10-30: moved from 7bd93b8 (1.20.0) to f13b8fe (1.21.0, website#233,",
|
|
"report, block and hide, USER_SAFETY.md). Chapter 2 was read again:",
|
|
"- 1.21.0: api.registerReportTargets, api.registerGameIdentities and",
|
|
" ctx.safety.forViewer / staffAmong (chapter 2 gains a section, and its call",
|
|
" count becomes twenty-three).",
|
|
"website#233 is the only core change in the window. The template declares",
|
|
"none of the new members, so nothing it does changed meaning; module.json's",
|
|
"coreApi becomes ^1.21.0 for the equality check. The real core run was",
|
|
"repeated at this ref, with the template as the only module in the directory.",
|
|
"",
|
|
"2026-10-30: moved from 69998ec (1.19.0) to 7bd93b8 (1.20.0, website#232,",
|
|
"account deletion, ACCOUNT_DELETION.md). Chapter 2 was read again:",
|
|
"- 1.20.0: api.onUserDeleting (chapter 2 gains a section, and its call count",
|
|
" becomes twenty-one).",
|
|
"The other core changes in the window (website#225-#231) are the public",
|
|
"demo's deploy, seed and locks. One reaches a module: website#229 refuses, on",
|
|
"a demo, any write whose JSON body carries a data: URI, beside the multipart",
|
|
"refusal 1.18.0 already had, and neither needs listing in demoLocks. Chapter",
|
|
"2's demo section now says so; it had not taught the multipart one either.",
|
|
"The template declares none of the new members, so nothing it does changed",
|
|
"meaning; module.json's coreApi becomes ^1.20.0 for the equality check. The",
|
|
"real core run was repeated at this ref, with the template as the only",
|
|
"module in the directory.",
|
|
"",
|
|
"2026-10-26: moved from 6890a74 (1.17.0) to 69998ec (1.19.0, website#224),",
|
|
"past 1.18.0 (website#223). Both are the public demo (DEMO_MODE.md), and the",
|
|
"chapters were read again for both versions:",
|
|
"- 1.18.0: demoLocks in module.json, ctx.demoMode and api.onDemoSeed",
|
|
" (chapter 2 gains a section, and its call count becomes twenty);",
|
|
"- 1.19.0: an event action's demoRefuses (chapter 5, a paragraph and a line",
|
|
" in the action listing).",
|
|
"The one other core change in the window (website#221) is a wording fix on",
|
|
"core's Teams panel and nothing a module sees. The template declares none of",
|
|
"the new members, so nothing it does changed meaning; module.json's coreApi",
|
|
"becomes ^1.19.0 for the equality check. The real core run was repeated at",
|
|
"this ref, with the template as the only module in the directory.",
|
|
"",
|
|
"2026-10-23: moved from 0a37a44 (1.12.0) to 6890a74 (1.17.0, website#220,",
|
|
"the cutover that brought Steam sign-in and the Rust last fixes to `main`),",
|
|
"past 1.13.0 to 1.16.0, which reached `main` together on 2026-10-22. The",
|
|
"chapters were read again for all five versions:",
|
|
"- 1.13.0: templates (chapter 5 gains a section), a param's duration, a",
|
|
" lease's example, an option row's note;",
|
|
"- 1.14.0: a param's multiple and max;",
|
|
"- 1.15.0: a retry's retryAfterMs;",
|
|
"- 1.16.0: a dry run's detail.warnings;",
|
|
"- 1.17.0: onIdentityLinking / onIdentityLinked and ctx.identities.list",
|
|
" (chapter 2 gains a section, and its call count is corrected to nineteen).",
|
|
"Two core changes in the same cutover carried no version bump, and both are",
|
|
"taught: a site runs ONE game module, which the loader now enforces at boot",
|
|
"(chapter 1, the reader most likely to be surprised by it), and a resource's",
|
|
"`until` is read at reconcile (chapter 5). The template declares none of the",
|
|
"new members, so nothing it does changed meaning; module.json's coreApi",
|
|
"becomes ^1.17.0 for the equality check. The real core run was repeated at",
|
|
"this ref, with the template as the only module in the directory.",
|
|
"",
|
|
"2026-10-06: moved from 655fbf3f (1.10.0) to 0a37a44 (1.12.0, website#210),",
|
|
"past 1.11.0 (website#209), which this pin had skipped. Chapter 5 was read again",
|
|
"for both versions and gained two paragraphs:",
|
|
"- ctx.events.expired (1.11.0): a thing the game ends on its own schedule is",
|
|
" `expired`, not `orphaned`;",
|
|
"- an action's optional progress() (1.12.0): the live line on a public event",
|
|
" page, which answers for one reader.",
|
|
"The template declares neither, and nothing it does changed meaning. The real",
|
|
"core run below was repeated at this ref.",
|
|
"",
|
|
"Before that move:",
|
|
"This one is the EVENT SYSTEM cutover, the commit MODULE_API_VERSION 1.10.0",
|
|
"reached `main` on (website#199), and 1.10.0 is what template/module.json",
|
|
"declares. It moved here from 66bb3b9a (1.9.0, the engagement cutover) because",
|
|
"the event contract expanded the book by a whole chapter: a module now declares",
|
|
"what its game can DO on request -- event actions, budget dimensions, leases and",
|
|
"option sources -- where every earlier chapter taught only a read path and a",
|
|
"thing to announce.",
|
|
"",
|
|
"Moving this pin is the moment someone re-reads the chapters: CI asserts the",
|
|
"version template/module.json declares still equals this core's",
|
|
"MODULE_API_VERSION, so a contract bump turns this repo red on purpose",
|
|
"(MODULE_SYSTEM.md 2.11.1 d2, 2.10). Note what that means in the other",
|
|
"direction, because it is easy to misread as a safety net: the check clones",
|
|
"THIS ref, so a core that has moved past it does not turn the repo red on its",
|
|
"own. Nothing goes red until someone moves the pin. Between cutovers the kit is",
|
|
"not wrong, it is DATED - and this file is where the date is written down.",
|
|
"",
|
|
"This pin move is a REPAIR as well as a date. Chapter 5 landed (#10) declaring",
|
|
"^1.10.0 while this file still named a 1.9.0 core, so `main` has been red on",
|
|
"checkCoreApi since it merged -- deliberately, and stated in that PR, but the",
|
|
"red belongs to the window and not to the repo. This is the commit that was",
|
|
"always going to close it, and it could not be written until the events sha",
|
|
"existed on `main`. Same shape Teams phase 11 used.",
|
|
"",
|
|
"The mechanism earned its keep again here, and twice. Writing chapter 5 against",
|
|
"the event contract found that an idempotency key on a QUESTION makes every",
|
|
"later read permanently stale -- an at-most-once store answers a repeated key",
|
|
"with the ORIGINAL reply, so the template's second read of a value returned the",
|
|
"first read's answer for ever, and the module could not see a change it had just",
|
|
"made. It also found that a refusal's reason goes in `error`: core's classifier",
|
|
"reads no other name, so a refusal reported under `detail` reached an author as",
|
|
"a bare \"refused\". Neither was found by writing prose. Both were found by",
|
|
"running the template's real declarations through core's real registry and its",
|
|
"real envelopes through core's real dispatcher.",
|
|
"",
|
|
"That is also why this file's own instruction is not enough on its own. The",
|
|
"template job builds and tests the template against fakes and checks this",
|
|
"number; it does not load the module into core. A declaration a fake accepts",
|
|
"and core refuses would ship green, so a pin move is a run against a real core,",
|
|
"not just an edit here. It was run at THIS ref: core's real registries accepted",
|
|
"the template's budget, option source, lease and event action, and apply()",
|
|
"accepted the set.",
|
|
"",
|
|
"The branch said `edge` until 2026-08-12, when the module system cut over and",
|
|
"that branch was deleted (MODULE_SYSTEM.md 2.9). Two later workstreams cut an",
|
|
"`edge` of their own and this pin skipped both; the Event System cut a third,",
|
|
"and this pin skipped that too until it reached `main`. The kit is written",
|
|
"against what shipped, never against what is in flight. Nothing in CI reads the",
|
|
"branch field - it clones the repo and checks out the sha - which is why a wrong",
|
|
"label here would sit unnoticed. It is for the person deciding whether a newer",
|
|
"core is worth re-reading the book for.",
|
|
"",
|
|
"Same convention as Module-uo's ci/core-ref.json, deliberately - one file, one",
|
|
"sha, reviewable in a diff."
|
|
]
|
|
}
|