fix(core): the last fixes' core half (W1 W2 W5 W19) #219
Reference in New Issue
Block a user
No description provided.
Delete Branch "fix/last-fixes-core"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What & why
Stage 4 of
docs/modules/rust/PLAN_LAST_FIXES.md(docs#366): core's fixes, built to the org lead's decisions of 2026-10-22.startup_failedat themanifeststage before any of its code is required, with the reason: this site already runs the module "rust", and a site runs one module. Remove "uo" or "rust" from the modules directory; the one that sorts first by name is the one that starts. Before, Module-uo and Module-Rust side by side failed the second with "extension slot … is already filled by "rust"". The org lead chose this over a clearer slot-collision message. Loader, lifecycle, schema and event-contract tests that loaded several fixture modules now load each case alone. The two module-against-module collision tests (prefix and table) are gone, because that case can no longer happen. The checks stay in the code as a second line behind the rule.untilasexpired, notorphaned. It writes the sameresource.expiredline thatctx.events.expired()writes, and a finished run whose last row it was is marked complete. Before itsuntil, or with none, gone is stillorphaned. A row past itsuntilthat the game still has stays in force. Module-Rust#56 makes zones senduntil. No MODULE_API bump (org lead):untiland reconcile's answer are unchanged.event_definitions. Publish stamps the new version verified, with that dry run's reviewer and time, when the spec it freezes has the same fingerprint, and writesversion.verifiedon the occurrences it re-pins. An edit to the spec after the dry run means nothing carries over. A title edit does not change the spec, so the pass still carries.POST …/verifyanswersdraftRecorded, andPOST …/publishanswersverified. The editor says kept, so publishing this draft unchanged makes a verified version and Published as v1. The dry run that passed on this draft counts for it.OpenAPI regenerated (
MODULES_DIRempty). It also picks up the Steam provider description from #218, which the committed spec had missed.Docs come in stage 5, as the plan says: MODULE_API (one module at boot,
untilread by reconcile), EVENTS §K and §L, and BACKEND_DESIGN's three columns.How it was tested
npm test(server): 2167 pass.routeManifestfails locally because of this machine'swebsite/modulesdirectory, and it fails on plainedgetoo. It passes withMODULES_DIRempty, which is what CI has.publicVersionfailed once at file level in the parallel run and passes alone.npm test(client): 430 pass.npm run buildpasses.untilgone → expired, before → orphaned, past but held → in force, last row completes the run, a laterexpired()finds nothing); W5 (pass carries, an edit breaks it, a title edit keeps it, findings keep nothing, re-pinned occurrences get the line); the fingerprint ignores key order but not array order.Walked on the walk site (
:3270, DBrustwalk, this branch with Module-Rustedgeplus its W1 change), signed in in the browser as the walk admin:website/modulesholdinguoandrust.ruststarted.uowas refused with the message above, in the log and in itsinstalled_modulesrow (startup_failed,manifest).verified_atandverified_byfrom the dry run.expiredat 05:57:24 with the line the game ended it at its deadline. There was noresource.orphanedline and no secondresource.expiredline. The core log has no "event resource expired" from the module'sexpired()path, which shows the reconcile did it.world.expiredreached core first, because the module waits for the world to load before it reconciles. The log showsresource.expiredonly.Checklist
AI-assisted contributions (required)
Claude Code (Claude Opus 5.5). I have reviewed and understand every change, and take responsibility for it. AI-authored commits are marked with aCo-Authored-By/Assisted-Bytrailer.🤖 Generated with Claude Code
https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY