diff --git a/docs/parked-features.md b/docs/parked-features.md new file mode 100644 index 00000000..e9d3bec3 --- /dev/null +++ b/docs/parked-features.md @@ -0,0 +1,21 @@ +# Parked Features + +A parked feature was built for a stated reason, has no consumer, and was +removed from the tree. Its last working form lives at an annotated tag so it +can be restored instead of reinvented. + +## CultCache SoA table + +- Tag: `parked/cultcache-soa` +- Intent: ECS-style structure-of-arrays columns over cached documents, for + hot-loop performance without giving up POCO document ergonomics. +- Span at the tag: `src/GameCult.Caching/CultManagedDocument.cs:133-414` + (`CultSoaTable`, `CultSoaColumn`, `CultCacheSoaStore`, + `CultCacheSoaTypeTable`, `CultCacheSoaMember`); `CultCache.Soa()` and the + `_soa` field with its upsert/remove hooks in `CultCache.cs`; the SoA tests in + `tests/GameCult.Caching.Tests/BackingStoreTests.cs` and + `tests/GameCult.Mesh.Tests/CultMeshStreamingTests.cs`. +- Consumers when parked: none outside tests. +- Restore: `git show parked/cultcache-soa:src/GameCult.Caching/CultManagedDocument.cs`, + take the SoA types, and re-hook a `CultCacheSoaStore` into the cache's single + admission and eviction paths (`Admit`/`Evict`). diff --git a/docs/runtime-parity-scope.md b/docs/runtime-parity-scope.md index 515a8428..44715c7c 100644 --- a/docs/runtime-parity-scope.md +++ b/docs/runtime-parity-scope.md @@ -21,9 +21,11 @@ Cross-runtime parity has three layers: transport helpers instead of assembling raw maps and channel strings. SoA performance parity is deliberately not a cross-runtime requirement. C# -owns the shared-memory streaming body path. The C# CultCache SoA table is not a -supported surface: nothing outside tests consumes it, and it is being parked at -a tag rather than carried. Other runtimes may add native hot paths when their +owns the shared-memory streaming body path. The C# CultCache SoA table (ECS-style +structure-of-arrays columns over cached documents) is parked at the tag +`parked/cultcache-soa`: it was built for hot-loop performance, had no consumer +outside tests, and is restorable from that tag (`docs/parked-features.md`). +It is not a supported surface in the current tree. Other runtimes may add native hot paths when their runtime role earns them, but they do not need to mimic Unity/C# memory layout to speak CultNet or participate in CultMesh. @@ -35,7 +37,7 @@ to speak CultNet or participate in CultMesh. | Python | Package runtime, local daemon endpoint, raw interop peer, typed state participant | CultCache/CultNet/CultMesh package surface, branded CultMesh node/schema/shard/Verse/peer/authority/stream/RUDP ergonomics, authorized peer lookup, shard catalogs/logs, schema-transport factory for raw client request/subscription flows, local TCP and RUDP CultMesh server listeners, Python interop RUDP serve/dial path, session/prediction/simulation fact helpers, RUDP codec/session/socket transport, RUDP reconnect policy/controller and reconnect-loop helper, schema-v0 MessagePack over RUDP evidence, benchmark evidence against C# cache paths | Universal C# throughput, full C# daemon/server stack, and RUDP as the only public service pipe | | TypeScript | Node/browser-adjacent projection and interop runtime | CultCache parity tests, CultNet schema-v0 peer, advertised schema/shard catalog wire contracts plus request/sync helpers, transport profiles, TCP-framed transport port and peer helper, shared RUDP socket transport, RUDP interop serve/dial path, RUDP reconnect policy/controller, RUDP reconnect-loop helper, branded CultMesh node/schema/shard/Verse/peer/authority/stream/RUDP ergonomics, authorized peer lookup | Full C# game session/server stack | | Rust | Low-level cache/transport/runtime substrate | CultCache/CultNet interop lane, schema and shard catalog helpers, typed same-schema alias hydration from raw snapshots, transport profiles, TCP-framed port, shared RUDP codec/session/socket transport, Rust interop RUDP serve/dial path, connected RUDP CultMesh client helpers, RUDP reconnect policy/controller and reconnect-loop helper, schema-v0 MessagePack over RUDP evidence, small CultMesh facade for schema registry, shard catalog, peer cards, authority leases, authorized peer lookup, RUDP endpoint parsing, and peer-card/authorized-peer RUDP client construction | Full CultMesh game-session/server facade or production game-session server. `packages/cultmesh-rs` now holds a Rust stream and session surface -- node, document sets, RUDP document publication, stream descriptors, negotiation, stream catalog, and shared-memory frame rings -- but no interop lane exercises it, so it carries no cross-runtime parity claim | -| Kotlin | JVM/Android client substrate | Typed MessagePack cache, one-call typed snapshot document sync through local same-schema aliases, built-in schema catalog advertisement, schema/shard catalogs with shared schema-message transport fetch/sync helpers, authority leases, authorized peer lookup, stream catalog, branded `CultMesh` facade, WebSocket transport profile/connection helper, RUDP client/server sugar, connected RUDP CultMesh client helpers, Kotlin interop RUDP serve/dial path, RUDP reconnect policy/controller and reconnect-loop helper, schema-v0 MessagePack over RUDP evidence | C# SoA store, full C# server daemon, or Unity hot-loop memory layout | +| Kotlin | JVM/Android client substrate | Typed MessagePack cache, one-call typed snapshot document sync through local same-schema aliases, built-in schema catalog advertisement, schema/shard catalogs with shared schema-message transport fetch/sync helpers, authority leases, authorized peer lookup, stream catalog, branded `CultMesh` facade, WebSocket transport profile/connection helper, RUDP client/server sugar, connected RUDP CultMesh client helpers, Kotlin interop RUDP serve/dial path, RUDP reconnect policy/controller and reconnect-loop helper, schema-v0 MessagePack over RUDP evidence | C# SoA store (parked at `parked/cultcache-soa`), full C# server daemon, or Unity hot-loop memory layout | ## Evidence Gates