{ "date": "2026-08-17", "change": "removed tradeState:'inactive' projection from /tradePile and /trade/status", "why": "RE of the FUT front-end: the action gate is in the APT/ActionScript layer; only rows classified as auctions (getCardsInAuction/isInActiveAuction) reach PreCheckCardOptions -> handleTradeCardAction, so an 'inactive' row renders and can never be acted on. The corpus already said 'do not emit it' (plan-2026-08-06-transfer-market.md:731-733).", "before": { "total": 7, "by_state": { "expired": 1, "inactive": 6 }, "credits": 29843976, "trade_status_returned": 7 }, "after": { "total": 1, "by_state": { "expired": 1 }, "credits": 29843976, "trade_status_returned": 1 }, "club_invariant": { "formerly_inactive_members_visible_in_club": 6, "of": 6, "stranded": 0, "club_items": 1965 }, "not_fixed_here": { "itemState": "listFS", "finding": "0 occurrences in CardsDLL (md5 4de3493131d7d2ff7f8b360c5ac9b655) and 0 in 4.26 GiB of process memory; decodes to -1. FIFA 17 value is forSale (5).", "reason_deferred": "CARD_OFFERSTATE is one of three unresolved action-gate candidates; every actionable row observed carried itemState -1, so changing it could perturb the working expired -> Return-to-Club flow. Ships alone with its own live A/B." }, "gate_status": "Category C, STRONGLY SUPPORTED. Gate term NOT PROVEN: STATE, CARD_OFFERSTATE and RESERVEDPRICE/MAX_CREDITS all differ together in every observable row. Proof needs AVM1 disassembly of tradepile.isInActiveAuction." }