diff --git a/ci/core-ref.json b/ci/core-ref.json index a05c792..0a105f0 100644 --- a/ci/core-ref.json +++ b/ci/core-ref.json @@ -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."