The portability workflow has been red since 2026-08-22. Three things,
each hidden behind the one before it:
- Eve started refusing to build a command intent for a surface that has
not advertised a command boundary and receipt schema (Eve 4338a42,
2026-08-22). The two-runtime sample never advertised one. It now passes
a provider advertisement with worldInteraction for its surface, which is
the declaration the lowering was right to demand.
- The sample and the package-closure script still imported "cultcache-ts";
the package became @gamecult/cultcache-ts on 2026-09-04 (8cb3b72) and
CI never got far enough to say so. Two READMEs carried the same import.
- The job pinned Eve to codex/eve-browser-host-isolation, a branch that was
never merged and stopped moving on 2026-08-25. The sample is written
against Eve main and passes there; the pin now says so.
The interop workflow's Python step ran one test file by path; it now
discovers the three split suites.
scripts/verify-eve-two-runtime-sample.ps1 -EveRoot F:\Projects\Eve
(Eve main ccc3ffe) -> browserCount 1, headlessCount 1, restartCount 1
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
97 lines
2.7 KiB
YAML
97 lines
2.7 KiB
YAML
name: CultMesh portability and performance
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
- "codex/**"
|
|
pull_request:
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
getting-started:
|
|
name: ${{ matrix.os }} one-command multiplayer onboarding
|
|
runs-on: ${{ matrix.os }}
|
|
timeout-minutes: 30
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [windows-latest, ubuntu-latest]
|
|
|
|
steps:
|
|
- name: Check out CultLib
|
|
uses: actions/checkout@v4
|
|
with:
|
|
path: CultLib
|
|
|
|
- name: Check out the matching Eve contract
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: GameCult/Eve
|
|
# Eve main is the contract this sample is written against; the codex
|
|
# branch this used to pin was never merged and stopped on 2026-08-25.
|
|
ref: ${{ vars.EVE_INTEGRATION_REF || 'main' }}
|
|
path: Eve
|
|
|
|
- name: Set up .NET
|
|
uses: actions/setup-dotnet@v4
|
|
with:
|
|
dotnet-version: 10.0.x
|
|
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 24
|
|
|
|
- name: Run the documented one-command checkpoint
|
|
shell: pwsh
|
|
run: ./CultLib/scripts/verify-eve-getting-started.ps1 -EveRoot ./Eve
|
|
|
|
reactive-and-resource-lifetime:
|
|
name: ${{ matrix.os }} reactive semantics and leases
|
|
runs-on: ${{ matrix.os }}
|
|
timeout-minutes: 30
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [windows-latest, ubuntu-latest]
|
|
|
|
steps:
|
|
- name: Check out CultLib
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up .NET
|
|
uses: actions/setup-dotnet@v4
|
|
with:
|
|
dotnet-version: 10.0.x
|
|
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 24
|
|
cache: npm
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.12"
|
|
|
|
- name: Install TypeScript workspace dependencies
|
|
run: npm install --no-package-lock
|
|
|
|
- name: Install Python CultLib packages
|
|
run: python -m pip install -e packages/cultcache-py -e packages/cultnet-py -e packages/cultmesh-py
|
|
|
|
- name: Verify explicit reactive scheduling across runtimes
|
|
shell: pwsh
|
|
run: ./scripts/verify-reactive-document-scaling.ps1
|
|
|
|
- name: Measure representative reactive workload
|
|
shell: pwsh
|
|
run: ./scripts/measure-reactive-document-performance.ps1 -Quick -SkipRuntimeBuild
|
|
|
|
- name: Churn 100,000 distinct document leases
|
|
run: >-
|
|
dotnet test tests/GameCult.Mesh.Tests/GameCult.Mesh.Tests.csproj
|
|
--filter FullyQualifiedName~Document_OneHundredThousandDistinctLeaseCyclesLeaveNoResourcesOrCallbacks
|
|
--logger "console;verbosity=minimal"
|