Add language-only opponent personas
This commit is contained in:
@@ -75,6 +75,11 @@ export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
|
||||
and coach analysis run on different coroutines. History is non-critical: an
|
||||
unreadable/newer schema or failed commit falls back to in-memory counters and
|
||||
disables persistence for that process rather than crashing or overwriting data.
|
||||
9. **Personas can speak, never act.** `PersonaCue` contains only an opponent's
|
||||
already-accepted public action and public table totals. It has no cards,
|
||||
equity, decision context, legal actions, or mutation callback.
|
||||
`PersonaNarrator` returns only nullable text; `PersonaArbiter` rate-limits,
|
||||
times out, bounds, and sanitises that text with a deterministic offline voice.
|
||||
|
||||
## Testing notes
|
||||
|
||||
@@ -130,6 +135,10 @@ export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
|
||||
Live status copy may carry it into the next decision only when the event's
|
||||
`street` matches the snapshot, or the first flop actor resurrects a pre-flop
|
||||
action.
|
||||
- `TableSnapshot.actionNumber` is the authoritative identity of `lastAction`.
|
||||
Persona output is accepted only beside the exact hand, street, and action
|
||||
number that requested it; a late response is dropped rather than shown against
|
||||
a newer decision.
|
||||
- Android is playable in Compose. Engine snapshots are paced through a
|
||||
rendezvous channel, human decisions are matched by engine-owned tokens, and a
|
||||
completed hand stays on screen until the player explicitly starts the next one.
|
||||
@@ -147,6 +156,11 @@ export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
|
||||
ten coached decisions; smaller samples are labelled as insufficient. Schema
|
||||
reads go through an explicit migration dispatcher; add the migration branch
|
||||
before incrementing `PLAYER_HISTORY_SCHEMA_VERSION`.
|
||||
- Opponents have deterministic offline table voices behind the language-only
|
||||
persona arbiter. A future network narrator implements the same nullable-text
|
||||
interface and inherits its timeout, fallback, output bounds, and stale-action
|
||||
checks without gaining access to poker decisions.
|
||||
- Gradle emits an `archives` deprecation from the Kotlin Multiplatform plugin's
|
||||
own `jvm()` target registration — upstream in Kotlin 2.2.10, not our build.
|
||||
- Not built yet: LLM persona layer.
|
||||
- Not built yet: network-backed LLM narrator. The persona boundary and offline
|
||||
fallback are built.
|
||||
|
||||
Reference in New Issue
Block a user