From 0dfef0e5ebc4e785cad0e250df90fd151d02068d Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 17:40:39 +0200 Subject: [PATCH] Run the TypeScript authority tests in CI, on both operating systems Nothing ran `npm run test --workspace packages/cultnet-ts` in CI. The shared route verifier's tests, which are the whole TypeScript side of the CultMesh authority contract, ran only on a developer's machine, and the browser client's tests ran nowhere. `cultnet-interop.yml` is windows-latest and triggers on main only, so even that would not have covered Linux or a pull request. Both now run in `cultmesh-portability.yml`'s `reactive-and-resource-lifetime` job, beside the step that verifies the same vectors with the C# reference. That job already matrixes windows-latest and ubuntu-latest, already triggers on main, codex/** and pull requests, and already installs the TypeScript workspace dependencies, so the steps cost two npm runs and no new setup. Co-Authored-By: Claude Fable 5.1 --- .github/workflows/cultmesh-portability.yml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cultmesh-portability.yml b/.github/workflows/cultmesh-portability.yml index 55d2bea8..9f088e95 100644 --- a/.github/workflows/cultmesh-portability.yml +++ b/.github/workflows/cultmesh-portability.yml @@ -96,12 +96,25 @@ jobs: --filter FullyQualifiedName~Document_OneHundredThousandDistinctLeaseCyclesLeaveNoResourcesOrCallbacks --logger "console;verbosity=minimal" + # The TypeScript side of the CultMesh authority rules. This job is the + # only one that runs on both Windows and Linux for main, codex/** and + # pull requests: cultnet-interop.yml is windows-latest and main-only, so + # until these steps existed the shared verifier's tests never ran on + # Linux at all, and the browser client's never ran in CI on any OS. + # packages/cultnet-ts verifies both vector files; cultmesh-browser proves + # the browser client reads the shared rules rather than its own. + - name: Verify the CultMesh authority rules with the TypeScript verifier + run: npm run test --workspace packages/cultnet-ts + + - name: Verify the browser client against the shared TypeScript verifier + run: npm run test --workspace packages/cultmesh-browser + # Both directions of the CultMesh authority vectors: the C#-written # file (contracts/cultmesh/authority-route-vectors.json) and the # TypeScript-signed file (authority-route-vectors.ts-signed.json) are # verified by the C# reference here; the TypeScript side verifies both - # in `npm test --workspace packages/cultnet-ts`. CULTMESH_WRITE_VECTORS - # is never set in CI: the committed files are the contract. + # in the step above. CULTMESH_WRITE_VECTORS is never set in CI: the + # committed files are the contract. - name: Verify the CultMesh authority vectors with the C# reference run: >- dotnet test tests/GameCult.Mesh.Tests/GameCult.Mesh.Tests.csproj