forgotten-lily / docs /STATE.md
SucksToBeAnik's picture
Docs: align CONTRACT/STATE/PLAN/README/todo with the story pivot + 27 tones
cc400af
|
Raw
History Blame Contribute Delete
4.3 kB

A newer version of the Gradio SDK is available: 6.20.0

Upgrade

Game State Machine

Deterministic rules the server enforces per session. Derived from PLAN ยง4 and ยง6.3. The model never decides act transitions โ€” the server does, from these rules.

Session state object

{
  "session_id": "uuid",
  "turn": 0,
  "act": 1,
  "tones_seen_count": {},    // tone id -> times Lily has emitted it (tones_seen = its keys)
  "lexicon": {},             // tone id -> { guess: str, confidence: "red|amber|teal|green" }
  "notes_unlocked": [],      // note ids, in unlock order
  "empathy": 0,              // rises on caring/personal player questions (see below)
  "finale_played": false
}
  • lexicon_size = count of lexicon entries with a non-empty guess.
  • A tone is "active" this turn if its act_active <= act (see data/tones.json).
  • Per-act tone cap (ACT_TONE_CAP in app/game.py): Lily's reply is trimmed to at most {Act I: 3, Act II: 5, Act III: 7} tones, so early phrases stay short and decodable. The prompt also asks for the matching count per act.
  • empathy rises by 1 on any turn whose message hits a caring cue (EMPATHY_CUES) or a personal-question cue (PERSONAL_CUES) โ€” heuristic in app/game.py, upgradable to Nemotron (Phase 6). Gates the empathy evidence notes.

Tone activation tiers (PLAN 6.3; Act I widened for learnability)

Tier Active from Tones Count active
Act I start act 1 โ—ˆ โ—‰ โ–ณ โˆฟ โ™ญ โ™ฎ โ† โ€” โˆŽ โ–ก 10
Transition + Act II act 2 + โ—‡ โ–ฝ โŒ’ โ‰ˆ โ–ฃ โ—ซ โ™ฏ โ†’ 18
Act III act 3 + โ—ป โ† โ‰‹ โ†‘ โ†“ โˆ… 24

(In tones.json: act_active is 1, 2, or 3. time_now (โˆฟ) and act_stay (โ†) were promoted from Act II to Act I so Lily has enough vocabulary to be coherent early โ€” she can ground feeling in the present and express intent ("you / stay / now"). The total still reaches 18 by Act II and 24 by Act III, so the later gates are unchanged.)

Act transitions

Evaluated after each turn. Forward-only; never regress.

Act I โ†’ Act II when BOTH:

  • lexicon_size >= 5 (at least 5 lexicon entries โ€” PLAN 4.2), AND
  • at least max(5, len(ACT1_TONES) - 3) Act-I tones have been seen โ‰ฅ 2ร— (currently 7 of 10). Relaxed from "every Act-I tone twice" so widening Act I vocabulary doesn't stall progression; a couple of rarely-used tones are tolerated.

Act II โ†’ Act III when BOTH:

  • len(tones_seen) >= 18 (18 of 27 tones seen โ€” PLAN 4.3), AND
  • note N07 (travel fund + passport) is unlocked.

Finale โ€” within Act III, when len(tones_seen) == 27 AND N10 unlocked: the server may trigger the ending sequence (special: "finale"), set finale_played = true. After that, normal input is closed; the ending plays out (PLAN 4.5).

Note unlocks (see data/notes.json) โ€” 15 notes

Re-evaluated every turn (act >= note.act always required):

  • threshold notes unlock when lexicon_size >= unlock_value.
  • topic notes unlock when the turn's topic_signal == note.unlock_value. Signals: music, university, relationship, family, travel. The family and travel signals also have server-side keyword fallbacks (FAMILY_CUES, TRAVEL_CUES) when the model misses them.
  • empathy notes unlock when empathy >= unlock_value โ€” the vulnerable backstory (friend's statement, mother's voicemail, wellbeing slip, the reconstructed evening), gated behind the detective showing care. Thresholds: N15=2, N12=3, N13=4, N14=5.
  • N10 requires every tone seen (len(tones_seen) == 27, per PLAN 7.3) โ€” special-cased.

Each note also carries found (investigation provenance, shown on the card), an optional hint ({tone_id, text} surfaced in the lexicon once that tone is heard โ€” evidence helps decode the language), and summary/order (the "Her Story" tab assembles found summaries into a narrative, sequenced by order).

Atmosphere coupling (Phase 7)

Act drives the UI color temperature (Tailwind CSS vars on body[data-act]):

  • Act I โ€” warm cream / amber. Act II โ€” gray-amber. Act III โ€” near-monochrome cold.

Note: ambient background music was removed by design โ€” only the tones make sound. The PLAN 6.5 "music EQ shift per act" no longer applies; color temperature is the remaining act-coupled atmosphere (Phase 7.2).