fix!(lua.endpoints): skip-opened tag packs are a dead zone — no-op picks, missing dealt hand, hangs that break the session

Aperta
#233 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
45/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
lua, python
Ambito
api, backend, game-dev

Direzione di ricerca

Inizia dal pack endpoint e dalla sua gestione di BLIND_SELECT, poi confronta il skip-opened flow con il shop pack flow intorno a SMODS_BOOSTER_OPENED, usando il comportamento descritto in #198, #199 e #202. Riesegui i seeds citati con il differential harness o i repro bundles; il lavoro è completato quando i picks validi vengono applicati, gli Arcana/Spectral packs distribuiscono la loro targeting hand o falliscono chiaramente e gli stacked tag packs non si bloccano né danneggiano l'elaborazione degli eventi successivi.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Description

Packs opened from skip tags at BLIND_SELECT misbehave over RPC in three ways.
All three are fine in the vanilla UI; all three were reproduced with a
differential harness replaying identical traces on a vanilla-faithful simulator.

  1. Silent no-op pick. pack returned success for a pick from a skip-opened
    Celestial pack, but nothing happened on live: the pack still had all its
    cards, the planet was unused, no hand was leveled (seed LS5HXL62, step 28).
  2. No dealt hand for Arcana/Spectral tag packs. Vanilla deals a targeting
    hand when these packs open; over RPC at blind select, both sides sit in
    SMODS_BOOSTER_OPENED but live's hand stays empty with an untouched deck
    (seeds LSMWZ3M4 step 21, LSDTVEW6 step 27). In our census across ~400
    organic games, every skip-opened tag pack either diverged or had to be
    truncated — the flow is a complete dead zone.
  3. Hang with lasting damage. Stacked tag packs (Double Tag + a pack tag)
    hang the pack endpoint — related to but distinct from the triggers in #198
    and #199. Worse, after the hang the game's event processing stays broken for
    the remainder of the run even though gamestate still reads consistent
    (probed directly: a round-end mechanic that reliably fired in a fresh session
    stopped firing after the hang, with all RNG streams still matching).

Suspected root cause: the SMODS booster flow at blind select diverges from the
shop pack flow the endpoints were built around (cf. #202, which covers use/sell
during SMODS_BOOSTER_OPENED).

Impact

Skipping a blind for a pack tag is one of the stronger lines in the game.
Over RPC it currently either loses the pack contents silently (worst case for a
bot: the pick "succeeds") or kills the session. Our harness had to veto all
pack-tag skips to keep runs alive, which removes a real strategy from any bot
that wants to be faithful.

Suggested Fix

  • pack should verify the pick actually applied (pack card count / target area
    changed) before reporting success, and return an error otherwise.
  • Deal the targeting hand for Arcana/Spectral tag packs the way the shop flow
    does, or reject the open with a clear error instead of hanging.

Repro bundles available for all seeds cited.

Lingua principale
Python
Stelle
80
Fork
23
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di coder/balatrobot

Tutte le issue di coder/balatrobot

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.