chore(release): cut edge over to main — Steam sign-in (MODULE_API 1.17.0) and the last fixes' core half #220

Merged
whitlocktech merged 5 commits from edge into main 2026-10-22 05:29:23 -05:00
Member

What & why

Stage 6 of docs/modules/rust/PLAN_LAST_FIXES.md: the release and cutover. Website goes first, because Module-Rust's
coreApi is ^1.17.0 and a 1.16.0 core refuses to load it.

edge → main, three non-merge commits, all reviewed and merged into edge already:

  • 5e398d8 feat(auth): sign in with Steam (MODULE_API 1.17.0: ctx.identities.list, api.onIdentityLinking,
    api.onIdentityLinked; additive schema). website#218, docs#364.
  • 0289703 test(auth): a linked Steam account signs in through the mobile bridge.
  • f40dd76 fix(core): the last fixes' core half (W1 W2 W5 W19). website#219, docs#367. One game module per site at
    boot; a reconcile files a resource past its until as expired; a draft's passing dry run carries over by spec
    fingerprint (three nullable columns on event_definitions); the phase-waiting copy. No MODULE_API bump.

main has nothing that edge lacks. Merging publishes the production app + bot images (build-images.yml).

Order for the rest of stage 6 (please merge in this order; I check each release before the next merge):

  1. this PR;
  2. a Module-Rust PR into edge moving ci/core-ref.json to the sha this PR merges as;
  3. Rust-Plugins, Rust-Link and installer edge → main, together. Bundle v2/rust/current.json composes at protocol 14;
  4. Module-Rust edge → main, only after that bundle composes.

How it was tested

Each commit's own PR ran the server tests, client build and bot install, and was walked on the walk site
(Steam sign-in on steamwalk; W1/W2/W5/W19 on the end-walk core, PLAN_LAST_FIXES §8). This PR's checks run the
same suite on the combined tree.

Checklist

  • I have read CONTRIBUTING.md.
  • The change builds and existing tests/checks pass locally.
  • I have added or updated tests/docs where it makes sense.
  • My commits are reasonably scoped with clear messages.

AI-assisted contributions (required)

  • No AI tools were used to produce this contribution.
  • AI tools were used. Tool(s): Claude Code (Claude Opus 5.5). I have reviewed and understand
    every change, and take responsibility for it. AI-authored commits are
    marked with a Co-Authored-By / Assisted-By trailer.

License

  • I agree that my contribution is licensed under this project's license
    (GNU GPL v3.0 or later), and I have the right to contribute it.

🤖 Generated with Claude Code

https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY

## What & why Stage 6 of `docs/modules/rust/PLAN_LAST_FIXES.md`: the release and cutover. Website goes **first**, because Module-Rust's `coreApi` is `^1.17.0` and a 1.16.0 core refuses to load it. `edge` → `main`, three non-merge commits, all reviewed and merged into `edge` already: - `5e398d8` feat(auth): sign in with Steam (**MODULE_API 1.17.0**: `ctx.identities.list`, `api.onIdentityLinking`, `api.onIdentityLinked`; additive schema). website#218, docs#364. - `0289703` test(auth): a linked Steam account signs in through the mobile bridge. - `f40dd76` fix(core): the last fixes' core half (W1 W2 W5 W19). website#219, docs#367. One game module per site at boot; a reconcile files a resource past its `until` as `expired`; a draft's passing dry run carries over by spec fingerprint (three nullable columns on `event_definitions`); the phase-waiting copy. No MODULE_API bump. `main` has nothing that `edge` lacks. **Merging publishes the production `app` + `bot` images** (`build-images.yml`). **Order for the rest of stage 6** (please merge in this order; I check each release before the next merge): 1. **this PR**; 2. a Module-Rust PR into `edge` moving `ci/core-ref.json` to the sha this PR merges as; 3. Rust-Plugins, Rust-Link and installer `edge` → `main`, together. Bundle `v2/rust/current.json` composes at protocol 14; 4. Module-Rust `edge` → `main`, only after that bundle composes. ## How it was tested Each commit's own PR ran the server tests, client build and bot install, and was walked on the walk site (Steam sign-in on `steamwalk`; W1/W2/W5/W19 on the end-walk core, PLAN_LAST_FIXES §8). This PR's checks run the same suite on the combined tree. ## Checklist - [x] I have read [CONTRIBUTING.md](CONTRIBUTING.md). - [x] The change builds and existing tests/checks pass locally. - [x] I have added or updated tests/docs where it makes sense. - [x] My commits are reasonably scoped with clear messages. ## AI-assisted contributions (required) - [ ] No AI tools were used to produce this contribution. - [x] AI tools were used. Tool(s): `Claude Code (Claude Opus 5.5)`. I have reviewed and understand every change, and take responsibility for it. AI-authored commits are marked with a `Co-Authored-By` / `Assisted-By` trailer. ## License - [x] I agree that my contribution is licensed under this project's license (**GNU GPL v3.0 or later**), and I have the right to contribute it. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude added 5 commits 2026-10-22 05:19:14 -05:00
Steam is a built-in provider beside Google and Discord (STEAM_SIGNIN.md,
D392-D396). OpenID 2.0: the assertion is verified server to server with
check_authentication, return_to must match byte for byte, and the claimed id
must be a 17-digit SteamID64. A Steam Web API key is required to enable it
(D394); persona name and avatar are stored on the identity and refreshed at
each sign-in, and a failed lookup never blocks one. Steam never signs anybody
up (D395), on the web or the mobile bridge. Several Steam accounts may be
linked; DELETE /auth/me/account/identities/:provider takes ?id= to unlink one.

MODULE_API 1.17.0: ctx.identities.list, api.onIdentityLinking (refuse-only,
fails closed, module text never shown) and api.onIdentityLinked. No unlink
hook (D393). Schema additive; OpenAPI, routes and engagement manifests
regenerated with no modules installed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
test(auth): a linked Steam account signs in through the mobile bridge
All checks were successful
PR Checks / bot-tests (pull_request) Successful in 39s
PR Checks / client-build (pull_request) Successful in 54s
PR Checks / server-tests (pull_request) Successful in 12m40s
02897030e5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
Reviewed-on: #218
fix(core): the last fixes' core half (W1 W2 W5 W19)
All checks were successful
PR Checks / bot-tests (pull_request) Successful in 49s
PR Checks / client-build (pull_request) Successful in 1m4s
PR Checks / server-tests (pull_request) Successful in 6m6s
f40dd765c3
Stage 4 of docs/modules/rust/PLAN_LAST_FIXES.md, with the org lead's
2026-10-22 decisions.

W19: one module per site at boot, as at install. The first module
directory by name holds the site, whether or not it then loads; every
other is recorded startup_failed at the manifest stage, before a line of
its code is required, with a reason naming the module that holds the
site. Module-uo and Module-Rust side by side used to fail the second
with a slot collision. Loader, lifecycle, schema and event-contract
tests that loaded several fixture modules now load each case alone.

W1: a reconcile files a resource the game no longer has, and that is
past its `until`, as expired rather than orphaned, with the same log
line expired() writes. No MODULE_API bump: `until` and reconcile's
answer are unchanged.

W5: a dry run that passes on the draft is kept with the fingerprint of
the validated spec (three nullable columns on 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 writes
version.verified on the occurrences it re-pins. Verify answers
draftRecorded and publish answers verified; OpenAPI regenerated.

W2: the run console says "Phase p1: steps done, waiting to advance" and
"Why this phase has not advanced", not "has not started".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
Merge pull request 'fix(core): the last fixes' core half (W1 W2 W5 W19)' (#219) from fix/last-fixes-core into edge
All checks were successful
PR Checks / client-build (pull_request) Successful in 1m10s
PR Checks / server-tests (pull_request) Successful in 6m15s
PR Checks / bot-tests (pull_request) Successful in 7m21s
56c6a279dc
Reviewed-on: #219
whitlocktech approved these changes 2026-10-22 05:22:27 -05:00
whitlocktech scheduled this pull request to auto merge when all checks succeed 2026-10-22 05:22:33 -05:00
whitlocktech scheduled this pull request to auto merge when all checks succeed 2026-10-22 05:25:28 -05:00
whitlocktech merged commit 6890a74c7c into main 2026-10-22 05:29:23 -05:00
Sign in to join this conversation.
No description provided.