Generated streamers for stats/parlor data + narya 1.22 (Epic A1 Phase 5)

vilya's wire-value classes streamed reflectively, which breaks on Android/ART
(nondeterministic Class.getDeclaredFields order): a Stat read on-device pulled
a Place object into Stat._type and desynced the game-object subscription.
Generated explicit declaration-ordered read/writeObject for stats/data (Stat
subclasses + StatModifier pass-through substitution), parlor/data (Table &
co.) and parlor/game/data via bang's genStreamableLibs task — byte-identical
on HotSpot, deterministic on ART.

narya 1.17 -> 1.22 (generated code references com.threerings.io.GenStreamUtil)
+ explicit jsr250 provided dep (@Generated no longer supplied transitively).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HhfHCXYp2ctWi76Z91y9Ut
This commit is contained in:
2026-07-06 22:55:46 +12:00
parent d4a1665550
commit 86aa1cef69
21 changed files with 393 additions and 3 deletions
+11 -1
View File
@@ -21,7 +21,17 @@
<dependency>
<groupId>com.threerings</groupId>
<artifactId>narya</artifactId>
<version>1.17</version>
<!-- 1.22: the Epic A1 Phase 5 generated streamers reference
com.threerings.io.GenStreamUtil (added in narya 1.21) -->
<version>1.22</version>
</dependency>
<dependency>
<!-- javax.annotation.Generated on the genservice-generated sources (SOURCE retention, so
compile-only); narya 1.17 supplied it transitively, 1.22 no longer does -->
<groupId>javax.annotation</groupId>
<artifactId>jsr250-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.threerings</groupId>