Draft board with VOR/ADP, live draft mode, 2026 defaults - #24
Merged
Conversation
Adds `draft-board`: ranks the pool by value over replacement derived from the league's own scoring and starting lineup, cross-referenced with ESPN ADP. `--live`/`--watch` track picks and remaining roster needs. Fixes: - Position conflated ESPN's defaultPositionId and lineupSlotId spaces, so server-side position filtering pulled the wrong slots - League position filter was a silent no-op (zero-count slots counted) - League settings cache read was left commented out - Injury status round-tripped through Display with duplicated parsers Efficiency: - Narrow player requests to rosterable slots (~56% smaller responses) - update-all-data fetches each week once instead of twice - Roster updates write only rostered players, not every known player - Request pacing, 429/5xx backoff, and TTLs on live-season caches - SQLite upserts via ON CONFLICT, batched in transactions Season default now derives from the date. Removes `--refresh-positions`, which was parsed but never read. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Resolves 8 cargo-audit failures in transitive deps (bytes, crossbeam-epoch, quinn-proto, rustls-webpki). Also bumps lru 0.12 -> 0.18, clearing two unsoundness advisories. We only use get/put/clear/len, so no code changes were needed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
espn-ffl draft-board— ranks the draft pool by value over replacement, derived from the league's own scoring settings and starting lineup, cross-referenced against ESPN's ADP.--livehides drafted players and shows remaining roster needs;--watch <secs>follows a draft in progress.Fixes
Positionconflated ESPN'sdefaultPositionIdandlineupSlotIdspaces, so server-side position filtering requested the wrong slots (-p Kasked for WR/TE)Displayand re-parsed by two duplicated hand-written matchesEfficiency
Measured against a live league:
update-all-data(18 wks)draft-boardPlus request pacing, 429/5xx backoff honouring
Retry-After, cache TTLs scoped to the live season, and SQLite upserts viaON CONFLICTbatched in transactions.Breaking
--refresh-positionsremoved (parsed but never read)--seasonnow defaults to the season in progress instead of a hardcoded 2025Verification
161 tests passing (was 128), clippy clean,
cargo fmt --checkclean. All commands exercised against a live 2026 league.