chore(ci): pin the kit to the Event System core, and go green (Phase 16b)
`ci/core-ref.json` moves from 66bb3b9a (MODULE_API 1.9.0, the engagement cutover) to 655fbf3f -- the commit 1.10.0 reached `main` on, website#199. This closes a red `main` rather than only dating the book. Chapter 5 landed in #10 declaring `coreApi ^1.10.0` while this file still named a 1.9.0 core, and `checkCoreApi` asserts EQUALITY, so the repo has been red on that check since it merged. That was deliberate and said so in the PR, but the red belongs to the cutover 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. A pin move is a RUN, not an edit -- the template job checks this number and tests the template against fakes, and a fake accepts what core refuses. So the template's real declarations went through core's real registries at this exact ref: the budget, the option source, the lease and the event action were all accepted, and `apply()` accepted the set. Nothing else here needed to move; `template/module.json` has declared ^1.10.0 since #10. Verified against a core at this ref: checkCoreApi coreApi ^1.10.0 matches the pinned core's 1.10.0 registry rig all four declarations accepted, apply() accepted template server 82 pass, 0 fail check:imports OK template client 20 pass, 0 fail check:externals OK, build OK prose checks checkLinks, checkRenameSites, checkChapterPaths all OK their own tests 10 pass, 11 pass Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016wDDVXWMDz82WqE1i969r4
This commit is contained in:
@@ -1,14 +1,16 @@
|
||||
{
|
||||
"repo": "https://gitea.whitlocktech.com/RunicGateway/website.git",
|
||||
"branch": "main",
|
||||
"ref": "66bb3b9a3fad01112c06f32d931c9bae56d22de6",
|
||||
"ref": "655fbf3f69a6a1fd650ecbc81afd6cf9c2ad9f66",
|
||||
"why": [
|
||||
"The core this kit is written against, pinned to a commit rather than a branch.",
|
||||
"This one is the engagement cutover, the commit MODULE_API_VERSION 1.9.0 reached",
|
||||
"`main` on, and 1.9.0 is what template/module.json declares. It moved here from",
|
||||
"1.6.0 (the Teams cutover) because engagement expanded the contract the book",
|
||||
"teaches by three registrations and two calls: a module now declares what its",
|
||||
"game can announce and never who is told.",
|
||||
"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",
|
||||
@@ -19,29 +21,40 @@
|
||||
"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.",
|
||||
"",
|
||||
"The mechanism earned its keep again here. Writing chapter 2's engagement",
|
||||
"section against 1.9.0 found that the seeded body a module ships is the one",
|
||||
"thing registerEngagementSeeds does not validate - it checks that `blocks` is a",
|
||||
"non-empty array and stops - so the template's own example body had a heading",
|
||||
"level of 2 where the block registry takes 'h2', and no block ids at all. It",
|
||||
"would have registered, seeded, and failed the first time an operator opened it.",
|
||||
"Caught by running the template's register() through core's real registry at",
|
||||
"this ref, which is what a re-read is for; both the fix and the gap are now in",
|
||||
"the chapter and beside the code.",
|
||||
"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.",
|
||||
"",
|
||||
"That gap is also why this file's own instruction is not enough on its own. The",
|
||||
"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.",
|
||||
"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 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.",
|
||||
"`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."
|
||||
|
||||
Reference in New Issue
Block a user