Contract
3.14.0
Tool contract 3.14.0
The fourteen verified defects of the interface review (docs/reviews/2026-09-19-INTERFACE-REVIEW.md), Phase 1.
war_historywithseason_idandsection_indexanswers the whole week's roster (up to 60member_weeks) in one pass instead of timing out the Lambda; it is under the analytical query budget, and every read-only tool now races the Lambda's own deadline, so a call that would have died as a bare HTTP 500 answersquery_timeoutwithmeta.request_idand an audit row.war_current.next_war_day_opens_at(top level and inperiod) is the next war day to open after the current period on war days too, equal togame_clock's at the same instant; it was null on every war day.war_history.history_starts_atis the oldest war week the record holds for the clan whatever window was asked for (it was the window's own oldest row).battles_queryrows carryarena_idbesidearena(the name; the docs said id), null on a row the 0131 backfill never reached.clans_standingsranked members carrypercentile(1 - (rank - 1) / ranked_members, the formula the note always stated).players_profile.snapshot.lifetimecarries the snake_case keys (battle_count,three_crown_wins,star_points,exp_points,collection_level) beside the camelCase ones with equal values: one lifetime shape withclans_rosterandplayers_timeline; the camelCase set is retired at 4.0.0.- A
live_pendingrefusal carrieserror.retry_after_sas an integer beside the hint (a consumer regexed the seconds out of the English). clans_timeline'smembers_seennote says the count includes members who left that day and can read abovemembers.meta.completeness_notefires: on a player subject whose window ends inside the last seven days, when the newest profile interval (the two latest profile polls and the recorded battles between them) reads under 0.9, or is not comparable with more than 48 hours since the last profile poll; it names the counts and points atelixir_coverage. It was promised by the instructions and the docs and set by nothing.rankings_timeline's description says one snapshot a day since the afternoon of 2026-09-11 (that day holds sixteen).- Six descriptions over the 600-character convention (
elixir_timeline,players_timeline,clans_roster,war_current,clans_participation,battles_query) are trimmed to what they are, their default, what compact drops and the one caveat; what moved is on the docs page each tool's docs pointer names, and the registry test now holds the line at 600. elixir_coverage.completeness_last_7_days.average_ratiois documented as the string it is (three decimals) until 4.0.0 makes it a number.
Additive.