A deck select's decision stays open for the rest of a shop visit, and three emitters stamp it onto rows that aren't its resolutions.
Live, stock v1.0.15 / replay_version 4 — floor 39 puts seven rows under one card-removal screen:
https://spire-codex.com/runs/df80caabdba3872b/replay?floor=39
{"t":"decision","s":2900,"decision_id":47,"decision_type":"deck_select_remove",
"n_presented":27,"gold_on_hand":1170}
{"t":"remove","s":2901,"decision_id":47,"option_index":26,"c":547,"id":"DECAY"}
{"t":"buy","s":2902,"decision_id":47,"kind":"removal_service","cost_current":100}
{"t":"relic","s":2904,"decision_id":47,"id":"TINGSHA"}
{"t":"buy","s":2905,"decision_id":47,"kind":"relic","id":"TINGSHA","cost_current":205}
{"t":"acquire","s":2907,"decision_id":47,"source":"shop","c":607,"id":"SPEEDSTER"}
{"t":"buy","s":2908,"decision_id":47,"kind":"card","id":"SPEEDSTER","cost_current":74}
{"t":"buy","s":2911,"decision_id":47,"kind":"potion","id":"LIQUID_BRONZE","cost_current":77}
Only the remove and the removal service belong to decision 47.
Four things follow from it on the run page, all on that one panel: Tingsha renders as a taken option of the card-removal screen, Speedster is counted as evidence for it, removing Decay is priced at Liquid Bronze's 77 gold rather than the 100 on the shop row, and the
stray evidence that resolves to no option index earns the panel a "Some picks not recorded" badge. The site is reading the data correctly; the ambiguity is in the capture.
There are three emitters:
ItemPurchased - ?.Set("decision_id", _decision > 0 ? _decision : (int?)null). The
removal service is the only buy kind that is a select's paid half; slot already
names which stock entry a purchase took.
RelicObtained - same unconditional stamp.
CardAcquired - already guards this class for granted cards
(source == "granted" ? (int?)null), but "shop" falls through to the open decision.
The guard against decision_id: 0 is in place everywhere; what's missing is a guard against a decision that is still open.
A deck select's decision stays open for the rest of a shop visit, and three emitters stamp it onto rows that aren't its resolutions.
Live, stock
v1.0.15/replay_version4 — floor 39 puts seven rows under one card-removal screen:https://spire-codex.com/runs/df80caabdba3872b/replay?floor=39
Only the
removeand the removal service belong to decision 47.Four things follow from it on the run page, all on that one panel: Tingsha renders as a taken option of the card-removal screen, Speedster is counted as evidence for it, removing Decay is priced at Liquid Bronze's 77 gold rather than the 100 on the
shoprow, and thestray evidence that resolves to no option index earns the panel a "Some picks not recorded" badge. The site is reading the data correctly; the ambiguity is in the capture.
There are three emitters:
ItemPurchased-?.Set("decision_id", _decision > 0 ? _decision : (int?)null). Theremoval service is the only
buykind that is a select's paid half;slotalreadynames which stock entry a purchase took.
RelicObtained- same unconditional stamp.CardAcquired- already guards this class for granted cards(
source == "granted" ? (int?)null), but"shop"falls through to the open decision.The guard against
decision_id: 0is in place everywhere; what's missing is a guard against a decision that is still open.