perf: project imported matches to slim structs in standings import#7654
Open
Rathoz wants to merge 1 commit into
Open
perf: project imported matches to slim structs in standings import#7654Rathoz wants to merge 1 commit into
Rathoz wants to merge 1 commit into
Conversation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1751355 to
29e107e
Compare
hjpalpha
approved these changes
Jun 12, 2026
hjpalpha
left a comment
Collaborator
There was a problem hiding this comment.
seems reasonable on phone
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.
Summary
StandingsImportMatchstruct —{matchId, finished, winner, opponents (by ref), slim games}— at import time inParse/Lpdb.lua. Tiebreakers (Buchholz,Game/Util,Game/Rounds/Util) are the only consumers and read exactly these fields. This dropsbracketData,extradata, and full game payloads per match (big memory win on large group stages), andmatchFromRecordnow runs once permatch2record instead of once per(match, round).mergeOpponentsDatainTable.luanow uses a name-keyed opponent index (O(1) fast path, one linear-scan fallback for renamed teams viaOpponent.same) and an explicit allocation-safe merge that reproducesdeepMerge's output without mutating imported structures. TheTablemodule import is removed as it is no longer needed.TiebreakerOpponent.matchesandStandingTableOpponentData.rounds.match/matchesnow referenceStandingsImportMatchinstead ofMatchGroupUtilMatch.How did you test this change?
busted --run=ci: 605 successes / 0 failures / 0 errors (standings_import_spec, standings_table_merge_spec, standings_tiebreaker_spec all pass)luacheckon all three touched files: 0 warnings / 0 errorsstandings-tests-ai(PR test: add integration tests for standings #7647) whose import/merge/tiebreaker specs lock the observable semantics; no test files were modified.🤖 Generated with Claude Code