Commit graph CultLib/packages/cultmesh-ts
Author SHA1 Message Date
Meta Vens
286435d861 Serialize TypeScript CultCache mutations and validate writes whole
A per-cache promise chain now runs addBackingStore, pullAllBackingStores,
registration and every write and delete one at a time, so validation, the
store call and applying to the cache cannot interleave with another mutation.
Those methods return promises; the builder configures its unreleased cache
synchronously. Reads stay synchronous.

put and putEnvelope resolve the home, check the global key and run the name and
index accessors before the store is touched; applying afterwards has no
fallible step. Each held record keeps the lookup values it produced at
admission, so overwrite and delete run no accessor. A global is only stored
under __global__: any other key is refused, and replacing the global writes
__global__ with no delete-then-push. registerDocumentType, registerNameLookup
and registerIndex check schema-id and schema-name conflicts and derive every
lookup before installing anything.

cultmesh-ts awaits registerDocumentType in createNode.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 11:57:01 +02:00
Meta Vens
8dd5a45378 Give every cultcache-ts document type one home store
Cut 5 (TypeScript). The cache no longer mirrors: StoreRoute and its mirrors
list are gone, #resolveRoute returns the single home store (the store that
claims the type, else the generic store), and put, putEnvelope and delete write
exactly one store.

addBackingStore now refuses a second generic store and a type already claimed
by another store, attaching nothing when it refuses, matching C#. No bytes
change; nothing in CultLib attached more than one store.

Tests: rejects a second generic backing store, rejects a type registered to
two stores, routes each type to its home store. The writer-by-reader interop
test now runs the C# write-routed mode and checks that catalog.cc and run.cc
are each a complete v1 snapshot holding only their own record, and that every
reader (TS, Rust, C#, Python) reads the routed catalog store.

Version 0.13.5 -> 0.14.0; cultnet-ts and cultmesh-ts depend on ^0.14.0 so the
workspace link still satisfies their range.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 00:37:31 +02:00
Meta Vens
8cb3b7282b Publish the non-Rust packages and make the licensing uniform
Rust consumers pin a CultLib revision through cargo git dependencies, which is
how Ghostlight, Epiphany, CodexConnector and Odin already consume the core
stack. npm and pip cannot take a package from a subdirectory of a git repo at
all, which is why the TypeScript and Python consumers vendored forks instead:
there was nothing else to depend on. This gives them a versioned artifact.

Tagging cultcache-ts-v* or cultcache-py-v* builds, tests and publishes. The tag
version must match the manifest version or the workflow refuses rather than
shipping a mislabelled artifact. PyPI uses trusted publishing, so no long-lived
token is stored; npm needs an NPM_TOKEN secret.

cultcache-ts is now @gamecult/cultcache-ts. The scope is not cosmetic: it makes
the package unambiguously org-owned on a public registry, and it is what lets
CultLib hold the name rather than racing for an unscoped one. CultLib's own
cultmesh-ts and cultnet-ts and their imports move with it; all three packages
typecheck and cultcache-ts passes 12 of 13 tests, the exception being the
cross-runtime store test that shells out to Python, which cannot run on this
machine because its Python has no msgpack.

Licensing was inconsistent with the repo. cultcache-py declared itself "Private
GameCult infrastructure" and cultcache-rs and cultmesh-rs declared nothing,
inside a repo whose LICENSE is MIT and whose every other package says MIT. All
three now say MIT. That was load-bearing here: a package that calls itself
private is not one to push to a public registry.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 04:41:44 +02:00
Meta Vens
334e60f192 Recover authority-bound CultMesh and atomic generations 2026-08-26 19:01:24 +02:00
Meta Vens
f4dabfefb0 Bound RUDP reliable transmission windows 2026-08-23 18:35:49 +02:00
Meta Vens
5cefa0db00 Resolve CultMesh URI RUDP bootstraps in TypeScript 2026-08-22 03:25:02 +02:00
Meta Vens
4f6e95bb3d Carry editable field authority in CultMesh bindings 2026-08-22 00:05:57 +02:00
Meta Vens
44abedfc9f Measure reactive performance across runtimes 2026-08-18 03:08:01 +02:00
Meta Vens
ba680020b9 Prove reactive scheduling scales with edits 2026-08-18 00:44:41 +02:00
Meta Vens
425b430fe6 Make CultMesh TypeScript document writes explicit 2026-08-17 19:58:54 +02:00
Meta Vens
693df0901d Release CultLib 1.0.19 2026-07-19 00:54:26 +01:00
Meta Vens
5c075bc212 Fence provider RUDP connection generations 2026-07-19 00:50:20 +01:00
Meta Vens
8965f3c0e0 Authenticate provider session ingress 2026-07-15 01:54:06 +01:00
Meta Vens
d4934233ed Return RUDP application receipts 2026-07-15 01:44:53 +01:00
Meta Vens
ebd8c78c8b Project live publications as typed document handles 2026-07-15 01:37:24 +01:00
Meta Vens
262b5cc53d Add provider session wire transport 2026-07-14 23:47:30 +01:00
Meta Vens
18cebf740f Add durable TypeScript provider sessions 2026-07-14 23:13:13 +01:00
Meta Vens
6528f8ea2f Make TypeScript packages release-packable 2026-07-13 23:47:38 +01:00
Meta Vens
bcb15d461e Add TS publication catalog sync 2026-06-27 23:57:10 +01:00
Meta Vens
7a335b1a11 Add TS typed publication node sync 2026-06-27 23:27:01 +01:00
Meta Vens
743979eca7 Add TS typed peer snapshot node sync 2026-06-27 23:14:18 +01:00
Meta Vens
258a710273 Add TS collection catalogs 2026-06-27 22:38:04 +01:00
Meta Vens
a3d957dad2 Infer TS document aliases from schema versions 2026-06-27 22:20:18 +01:00
Meta Vens
12f819bffe Resolve TS store document aliases by payload 2026-06-27 21:31:48 +01:00
Meta Vens
af2bd4a82d Resolve TS snapshot aliases by payload shape 2026-06-27 21:17:07 +01:00
Meta Vens
a2ec06f90e Resolve Python node document aliases transparently 2026-06-27 20:52:26 +01:00
Meta Vens
d62f35fbae Resolve TS node document aliases transparently 2026-06-27 20:46:39 +01:00
Meta Vens
a2b2f8ea8c Add TS node reactive document shortcut 2026-06-27 20:42:09 +01:00
Meta Vens
8a88ae547d Expand CultMesh reactive sync edge tests 2026-06-27 20:05:56 +01:00
Meta Vens
0af9493ead Track reactive CultMesh reconciliation deltas 2026-06-27 19:06:08 +01:00
Meta Vens
bac41dd5c0 Add reactive CultMesh TS document proxies 2026-06-27 19:02:46 +01:00
Meta Vens
6f610a2908 Add transparent CultMesh TS document mutation 2026-06-27 18:50:35 +01:00
Meta Vens
4189ee0811 Add CultMesh TS publication document catalogs 2026-06-27 18:45:52 +01:00
Meta Vens
47941b5fb3 Add TS configured publication document handles 2026-06-27 17:07:04 +01:00
Meta Vens
e905aa7a0c Type TS store document handles 2026-06-27 16:49:43 +01:00
Meta Vens
a0509f223b Type TS peer snapshot document handles 2026-06-27 16:45:14 +01:00
Meta Vens
52ff632d70 Add CultMesh document catalog mutations 2026-06-27 16:28:42 +01:00
Meta Vens
cb6301e1cf Add TS document prediction submissions 2026-06-27 16:24:08 +01:00
Meta Vens
1753dfbb92 Add CultMesh peer snapshot document handles 2026-06-27 15:56:45 +01:00
Meta Vens
8758a65e8e Add single-file document handles 2026-06-27 15:46:25 +01:00
Meta Vens
8bb85d7c47 Add document surface diagnostics 2026-06-27 15:35:12 +01:00
Meta Vens
a17e10d198 Add CultMesh TS document handles 2026-06-27 15:20:09 +01:00
Meta Vens
6e000a71a9 Mirror CultMesh primitives in TypeScript 2026-06-27 14:35:08 +01:00
Meta Vens
57c9125e10 Add CultMesh RUDP document publisher 2026-06-23 22:45:32 +01:00
Meta Vens
9d5d26d3e8 Add CultMesh RUDP document server 2026-06-23 22:32:58 +01:00
Meta Vens
cc0d52bfc5 Add TypeScript CultMesh RUDP peer helpers 2026-06-17 03:58:12 +01:00
Meta Vens
50ac886fd7 Document TypeScript authorized RUDP peer flow 2026-06-16 17:03:55 +01:00
Meta Vens
0680855925 Mirror authorized RUDP peer sugar 2026-06-16 16:52:20 +01:00
Meta Vens
3deabd706d Add TS CultMesh RUDP factories 2026-06-16 16:37:16 +01:00
Meta Vens
da48d58df7 Add TS CultMesh catalog factories 2026-06-16 16:18:08 +01:00