Commit graph

20 commits

Author SHA1 Message Date
DeFiDude
58909b23b1 ci: preserve library lockfile policy 2026-08-06 23:58:55 -06:00
DeFiDude
a3da010b5c ci: enforce strict Clippy across game targets 2026-08-06 18:49:06 -06:00
DeFiDude
60d570dd22 ci: respect library lockfile policy 2026-08-06 12:35:59 -06:00
DeFiDude
e9aaa53a16 ci: add Rust quality gate 2026-08-06 12:29:03 -06:00
DeFiDude
3d4bed6770 games: add Four in a Row 2026-08-05 20:03:09 -06:00
DeFiDude
28d1b9270d games: centralize built-in registry 2026-08-05 14:37:51 -06:00
DeFiDude
0d2598109c lrgp: harden protocol and align 0.4.0 2026-08-05 08:04:56 -06:00
DeFiDude
0b55361ebf docs: absolute lrgp-py link in README 2026-07-17 08:37:50 -06:00
DeFiDude
2b9aba5e48 games: fail closed on unset turn; SPEC covers claim and turn validation 2026-06-10 05:01:38 -06:00
DeFiDude
221af53678 chess: emit and validate 0-based ply per SPEC 2026-06-10 04:47:32 -06:00
DeFiDude
8cd997483d fix Tic-Tac-Toe ownership 2026-05-06 10:11:01 -06:00
DeFiDude
f8eb1b7a8d lrgp: reject invalid local game moves 2026-05-02 22:29:44 -06:00
DeFiDude
f2bc17e761 lint: clippy + fmt cleanup
- Convert file-level /// doc comments to //! (clippy::empty_line_after_doc_comments)
- Drop unused meta_bool helper in tictactoe
- Replace redundant |v| value_as_*(v) closures with bare fn pointers
- Remove useless .into() / format!() wrappers
- #[allow(too_many_arguments)] on save_session — every column load-bearing
- cargo fmt --all
2026-05-01 19:32:17 -06:00
DeFiDude
1194430e51 router: add snapshot_before_outgoing + rollback_outgoing helpers; release 0.3.1 2026-05-01 17:47:31 -06:00
DeFiDude
69922035c2 docs: README + SPEC.md cover Chess and replay-protection nonce
SPEC.md bumps to v0.3:
- Section 3 envelope schema lists the 5th key `n` (8-byte msgpack bin)
- New section 3.1 documents the replay-dedup cache (per-session LRU,
  512 entries, 600s TTL, Fresh|Replay verdict)
- New appendix B documents the Chess reference game: UCI-only wire,
  state-by-replay, terminal reason codes, the dual-context `w` key
- Removed sections covering legacy rlap.v1 / ratspeak.game markers
- Removed manifest fields min_players, genre, turn_timeout (which
  no real consumer used)

README adds Chess to the Quick Start, mentions replay-protection in
the feature list, and updates the architecture tree to include
dedup.rs and apps/chess.rs.

CHANGELOG entry for 0.3.0 enumerates the additions, renames, and
removals.
2026-05-01 15:58:20 -06:00
DeFiDude
4c2d6188f6 chess: add example + binary test vectors (challenge/accept/move/promotion/checkmate/resign/draw_offer)
Hand-crafted msgpack vectors with deterministic 8-byte nonces. They live
in tests/chess_*.bin and are byte-identical to the copies in lrgp-py
under tests/vectors/ — that cross-language fixture is what enforces
wire compatibility between the two reference implementations. msgpack
maps are unordered by spec, so the vector tests assert decode-correctness
(field values match expected) rather than byte-identity round-trip.

The example demonstrates challenge -> accept -> first move with two
LrgpRouter instances. Full-game simulation needs a richer two-peer
state-sync harness than this single-process demo provides.
2026-05-01 15:55:08 -06:00
DeFiDude
35a22d8b44 apps: add Chess game; drop pre-release legacy code paths
Port the Chess implementation from the Ratspeak local source of truth:
UCI-only wire format, board state replayed locally via cozy-chess,
two-side validation, terminal reasons coded as 2-3 chars (cm, sm, ins,
3fr, 50m, rsn, agr).

Drop pre-release legacy code: rlap.v1 / ratspeak.game protocol-marker
recognition, LegacyNoNonce dedup verdict, optional-nonce handling. The
nonce is now required at the wire boundary, simplifying dedup to
Fresh|Replay.

Rename GameManifest -> AppManifest (matches Ratspeak naming) and add
default snapshot_session / rollback_session methods to GameApp so apps
that need transactional rollback (chess) opt in by overriding.

Also adds the test-helpers feature gate exposing per-app force_coin
hooks for deterministic test-vector generation.
2026-05-01 15:50:05 -06:00
DeFiDude
3ac61cb7df License: align LICENSE+README to MIT, refresh copyright to Ratspeak 2026-05-01 15:07:34 -06:00
DeFiDude
0ffd09fca9 envelope: add optional per-envelope nonce + replay-dedup cache 2026-04-23 21:53:24 -06:00
DeFiDude
13585eb542 LRGP v0.2.0 — Lightweight Reticulum Gaming Protocol 2026-03-13 02:22:44 -06:00