contract
6.4.0
Contract 6.4.0
The population's decks against what one player holds (feedback #70, 2026-09-20). A corpus deck sorted by win rate reads as advice, and the payload carried nothing about the caller's collection: an agent recommended a deck the player could not field - two of the top four rows ran a card he did not own, the top row cost him two mean levels at his own card levels. Jamie's call: recommendations come from the player's collection, and the agent must be free to say what a few upgrades would open.
battles_meta_deckstakesfit_for(a player tag with a recorded collection). Every returned row's cards carryheld_level; every row carriesfit:fieldable,missing(each unowned card or locked form with its reason),own_mean_level(the deck at the player's levels),vs_fielded(againstfit_for.fielded_mean_level, the mean level of the decks the player actually played in the window and mode),upgrades(each held card below the fielded level, largest deficit first, with the levels needed) andmean_level_after_upgrades. A row the player cannot field leavesdecks[]forunfieldable[], after sort and limit, so the population's ranking is unchanged and an agent cannot recommend what is not in the array. Afit_forblock says whose collection, as of when, and the benchmark. An unrecorded collection is refused (not_recorded) rather than read as owning nothing.battles_meta_cardstakesfit_fortoo: each row carriesheld(level, forms_unlocked, has_form) or null when the card is not owned.- Without
fit_for, both tools open their notes with the sentence that the rows are the population's and check nothing about any one player, and that a recommendation to a person should passfit_for. With it, the note says whatmean_level_gapis on a meta row - the population's edge, never the caller's - since the same name means the caller's onbattles_decks. players_collectioncarriesfielded-{ days: 30, mean_level, battles }, the mean card level of the decks the player actually played in the last thirty days - so 128 held levels have a benchmark without a second call.
Additive.