CultLib/unity/org.gamecult.cultlib
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens 64b86e0a27 write-ownership-cs: a write owns a record by the written type; one-batch retype is eviction then add (squash of hands/variants-write-ownership a4eae905..8c7252ea)
A write owns the record at its key when the written type declares the
record's schema id, or reads an older undeclared id of its own schema name
whole (ruling own-entry-reads-whole); every other registered type's record
is refused, in every cache, with or without a backing store
(cache-refuses-retype).

Removing a record and adding one of another type in a single batch is
staged as the held record's eviction then the add, so validators, Claim,
the store judges and the change journal see what they see staged apart
(one-batch-retype-is-eviction-then-add); Watch<old> gets Removed and
Watch<new> Added. A one-batch retype across home stores is refused by the
batch-spans rule and must be staged apart. A variant rebase changes type
exactly where a plain write may (variant-rebase-follows-plain-write).
Store kinds outside the library get one protected per-key judge
(store-kind-per-key-judge), exercised by tests/GameCult.Caching.OutsideStoreTests.

Spec variants:cut_spec:cut-write-ownership-cs.r1; reports h1-h5;
Soul s5 clears the merge (verdict variants:verdict:cut-write-ownership-cs.s5).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 08:22:20 +01:00
..
Runtime org.gamecult.cultlib 2.0.1: plugins regenerated by build-unity-package.ps1 -UpdateTemplate 2026-10-22 22:42:28 +02:00
Third Party Notices Correct stale Schannel/40,448-byte claims, ship OpenSSL's license notice 2026-09-17 19:49:14 +02:00
CHANGELOG.md write-ownership-cs: a write owns a record by the written type; one-batch retype is eviction then add (squash of hands/variants-write-ownership a4eae905..8c7252ea) 2026-10-28 08:22:20 +01:00
CHANGELOG.md.meta Track the new CHANGELOG.md.meta files (force-added like other tracked .meta) 2026-09-17 20:11:48 +02:00
package.json Caching: a reference gained on an otherwise identical slot is compatible drift (1.0.x ref-list stores open); 2.0.1 2026-10-22 22:16:14 +02:00
package.json.meta Preserve Unity package import metadata 2026-07-10 12:02:52 +01:00
README.md Release prep: org.gamecult.cultlib 2.0.0 and org.gamecult.caching.unity 2.0.0 versions, changelogs, install docs 2026-10-22 15:44:39 +02:00
README.md.meta Preserve Unity package import metadata 2026-07-10 12:02:52 +01:00
Runtime.meta Preserve Unity package import metadata 2026-07-10 12:02:52 +01:00
Third Party Notices.meta Add native QUIC realtime transport for Unity 2026-07-19 22:55:06 +01:00

CultLib for Unity

This package is generated from the CultLib .NET projects. It carries the same CultCache, CultNet, and CultMesh assemblies consumed through NuGet by normal .NET applications, staged as Unity-compatible managed plugins. Windows x64 builds also receive the native MsQuic realtime connector, built against OpenSSL (Microsoft.Native.Quic.MsQuic.OpenSSL 2.5.9, not Schannel — Schannel's MsQuic refuses the PKCS12 credential type both platforms share); the Microsoft and OpenSSL license notices are included under Third Party Notices.

Build it with scripts/build-unity-package.ps1. Do not edit generated plugin assemblies in the package output.

Install version 2.0.0 through Unity Package Manager with:

https://github.com/GameCult/CultLib.git?path=/unity/org.gamecult.cultlib#cultlib-unity-v2.0.0

The package depends on org.gamecult.cultmath (exactly 0.5.0) and does not carry its own CultMath.dll. Unity Package Manager resolves git packages only from the project manifest, so add CultMath beside CultLib in Packages/manifest.json:

"org.gamecult.cultmath": "https://github.com/GameCult/CultLib.git?path=/packages/cultmath/unity/org.gamecult.cultmath#cultmath-unity-v0.5.0"

CultMesh chooses mapped memory for reachable same-machine bodies and advertised QUIC for remote realtime state. Applications register the packaged CultMeshNativeQuicRealtimeTransportConnector; they do not load or configure MsQuic directly. Schemas, commands, receipts, and immutable content remain on their typed control/content planes.