Commit graph CultLib/scripts
Author SHA1 Message Date
Meta Vens
89687fceb4 Let the browser sample read the provider's advertisement
Eve refuses to build a command intent for a surface that has not
advertised a command boundary and receipt schema, and the intent it
builds now carries the operation under operation.operationId. The
browser sample did neither: the click was refused inside the page and
the checkpoint saw only a 30 s timeout on the receipt.

The C# provider now publishes its gamecult.eve.provider_advertisement.v1
document with the surface's worldInteraction, and the page leases that
and hands it to the lowering as `provider`. The provider owns the
declaration; the page reads it rather than restating it. The command
sink reads intent.operation.operationId.

The checkpoint now forwards the page's console and pageerror output.
"CultMesh browser operation is required." took one run to find with it
and had been a bare timeout without it.

  scripts/verify-eve-getting-started.ps1 -EveRoot ..\Eve (Eve main)
  -> Eve getting-started verification passed: clean .NET and TypeScript
     artifacts, DOM and headless convergence, real Chromium and C#
     clients, Odin discovery, authority-bound routes, receipts,
     persistence, and route replacement.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-10 13:55:46 +02:00
Meta Vens
f94f5581b0 Let the verse catalog schema say what the reference emits
The C# reference publishes authorityRoutes with certificate: null for
loopback routes, and its own verifier treats null as "no certificate" in
local development. The TypeScript JSON schema only allowed the object,
so the browser client rejected every catalog the getting-started
provider served: "certificate: must be object", Odin could not resolve
the Verse, and the real browser/C# checkpoint has failed since f622ee1
(2026-08-18), behind the sample failure that hid it. TypeScript
consumers already guard route.certificate; the schema now accepts null.

The package-closure smoke also still spelled the browser identity with
providerId; it is authorityRuntimeId since c194bd4.

  npm test --workspace packages/cultnet-ts -> 54 pass
  npm run test:pack:ts -> passed

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-10 13:55:46 +02:00
Meta Vens
830a5d718f Make the Eve onboarding checkpoint run against the contract that exists
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>
2026-09-10 13:55:46 +02:00
Meta Vens
95493862bd Split the Python runtime into cultcache-py, cultnet-py, cultmesh-py
One distribution named cultcache-py carried three libraries. Rust and
TypeScript layer them as cultcache < cultnet < cultmesh; Python now does
the same, one package per layer, module names unchanged so every
`from cultmesh_py import ...` keeps working.

Two imports ran against that layering and are resolved by moving code to
where the dependency direction says it lives, not by adding a shim:

- cultnet_py.interop_peer imported the Verse/peer catalog, authority
  lease, stream, and simulation-fact contracts from cultmesh_py. They are
  wire contracts a bare peer has to speak without owning a node, which is
  why cultnet-rs and cultnet-ts keep them in the net layer. They now live
  in cultnet_py.cultmesh_contracts; cultmesh_py re-exports them.
- cultcache_py.benchmark imported cultnet_py. It measures framed CultNet
  parse beside cache paths, so it and compare_csharp move to cultnet_py.
  verify checks all three packages and moves to cultmesh_py.

The single 6,693-line test module is split by what each test touches: a
test using any cultmesh_py name lands in cultmesh-py, else cultnet_py in
cultnet-py, else cultcache-py. Each suite runs with only its layer and the
layers below on the path, so a test that reaches up fails to import
rather than quietly binding the packages back together. 11 / 53 / 78 =
the same 142.

Workflows install all three; the publish job is one matrix over the
three packages keyed by tag prefix. The TS test harnesses put all three
src directories on PYTHONPATH. cultcache-py bumps to 0.2.0 because it no
longer contains cultnet_py or cultmesh_py; the new packages start at
0.1.0. Nothing was ever published, so no PyPI consumer moves.

  cultcache-py  11 tests, path: cultcache-py/src
  cultnet-py    53 tests, path: + cultnet-py/src
  cultmesh-py   78 tests, path: + cultmesh-py/src
  python -m cultmesh_py.verify -> ok, all five checks
  cultnet_py.interop_peer imports with cultmesh_py absent

Not run here: the cultnet-ts interop ring and cultcache-ts store matrix
need dotnet/kotlin peers; their PYTHONPATH change is four lines.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-10 13:10:47 +02:00
Meta Vens
334e60f192 Recover authority-bound CultMesh and atomic generations 2026-08-26 19:01:24 +02:00
Meta Vens
8a203c165f Publish atomic CultCache Unity package 2026-08-18 23:44:51 +02:00
Meta Vens
99458dbb57 Ship authenticated remote transports in Unity package 2026-08-18 20:23:27 +02:00
Meta Vens
c194bd4cc8 Harden CultMesh route fallback and secure onboarding 2026-08-18 19:41:03 +02:00
Meta Vens
f622ee1b24 Authenticate CultMesh authority routes and replay operations 2026-08-18 19:02:46 +02:00
Meta Vens
6835ea4c10 Make Eve onboarding prove packaged authority routes 2026-08-18 17:39:59 +02:00
Meta Vens
6c848bd6c0 Bind CultMesh authority identity to physical routes 2026-08-18 17:21:58 +02:00
Meta Vens
21163d83fa Make CultMesh identity and route recovery explicit 2026-08-18 10:42:33 +02:00
Meta Vens
c75051017d Make CultMesh session identity explicit 2026-08-18 07:26:55 +02:00
Meta Vens
d4d24385d1 Prove clean .NET Eve package onboarding 2026-08-18 06:33:40 +02:00
Meta Vens
b0a876a220 Add typed CultNet operation dispatch 2026-08-18 05:59:11 +02:00
Meta Vens
bfaf7a8456 Gate retained operation session growth 2026-08-18 03:56:24 +02:00
Meta Vens
e49f93f56d Invoke typed operations through retained clients 2026-08-18 03:49:33 +02:00
Meta Vens
0943128365 Serialize the onboarding sample build 2026-08-18 03:41:47 +02:00
Meta Vens
cb7f9e8fa2 Retain native clients across provider routes 2026-08-18 03:34:59 +02:00
Meta Vens
3c19e54d91 Make Eve onboarding one executable path 2026-08-18 03:17:52 +02:00
Meta Vens
44abedfc9f Measure reactive performance across runtimes 2026-08-18 03:08:01 +02:00
Meta Vens
af4efb8784 Build TypeScript dependencies before reactive verification 2026-08-18 02:54:10 +02:00
Meta Vens
d2a7693611 Make Eve artifact onboarding one command 2026-08-18 02:47:34 +02:00
Meta Vens
913ed627c6 Gate CultMesh portability on Windows and Linux 2026-08-18 02:42:57 +02:00
Meta Vens
fbf93f3570 Measure and bound reactive document cost 2026-08-18 02:37:13 +02:00
Meta Vens
669f638111 Share one scheduler across Python reactive documents 2026-08-18 02:25:22 +02:00
Meta Vens
ba680020b9 Prove reactive scheduling scales with edits 2026-08-18 00:44:41 +02:00
Meta Vens
d563a1ac64 Discover browser providers through Odin 2026-08-18 00:34:44 +02:00
Meta Vens
8eb89e38ec Add real browser CultMesh transport proof 2026-08-18 00:05:57 +02:00
Meta Vens
54e4eacd13 Validate Eve getting-started contracts 2026-08-17 23:18:15 +02:00
Meta Vens
32258f49c3 Add artifact-only Eve two-runtime sample 2026-08-17 20:21:41 +02:00
Meta Vens
1d126f4a35 Add native QUIC realtime transport for Unity 2026-07-19 22:55:06 +01:00
Meta Vens
18cebf740f Add durable TypeScript provider sessions 2026-07-14 23:13:13 +01:00
Meta Vens
26b4d1eadc Release CultLib 1.0.12 with current Unity assemblies 2026-07-14 01:35:18 +01:00
Meta Vens
6528f8ea2f Make TypeScript packages release-packable 2026-07-13 23:47:38 +01:00
Meta Vens
bf9629000a Package CultMesh NuGet dependency closure 2026-07-10 10:41:39 +01:00
Meta Vens
8a4a457dad Build CultLib Unity package 2026-07-10 03:34:49 +01:00