CH-001: Reliable Rumble ranking publication - #12
Merged
Conversation
flemming-n-larsen
marked this pull request as ready for review
September 13, 2026 11:42
The dashboard now drops leaderboard responses that belong to a superseded selection, so the table, status, archive notice and bot links always match the selected period. The snapshot immutability check now also requires every existing history.json snapshot entry to remain unchanged, so a pull request can no longer remove or rewrite an archived month from the period selector. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TumFGXBzSvL3FFd6SWiZt6
12 tasks
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.
Acceptance brief
CH-001; reliable change-aware ranking publication and cumulative monthly history remain wanted.VIS-001— Public, verifiable Tank Royale Rumble rankings.RDA-006(verifies): “Given eligible facts for the current behavior version and the catalog's active bot versions / When a game type's leaderboard is generated / Then each battle contributes the participant's share of that battle's total score, repeated battles are averaged within their exact participant pairing, and APS is 100 times the mean of those pairing averages / And each distinct pairing has equal weight regardless of its battle count / And superseded versions and facts from another behavior version do not contribute, while an active version with no samples has APS zero.”RDA-007(verifies): “Given a current leaderboard and its publication timestamp / When publication regenerates the current leaderboard / Then a visible ranking change advances lastUpdatedAt to the publication time / And identical ranking output preserves the previous lastUpdatedAt / And creating a history snapshot alone does not advance lastUpdatedAt.”RDA-008(verifies): “Given the current cumulative leaderboard and the month in which it was last rolled over / When a serialized writer first runs in a later UTC month / Then it copies the current leaderboard and bot detail JSON byte for byte into a snapshot for every completed month before accepting new input / And its first run initializes the current month without inventing earlier snapshots / And it adds each snapshot to the history manifest without resetting the live cumulative ranking / And it refuses to alter, delete, or overwrite an existing snapshot.”RDA-009(verifies-something-adjacent): “Given the publication history manifest and current and archived leaderboard data / When a viewer selects Current or a completed month and a game type / Then the dashboard loads the corresponding leaderboard and bot details / And it shows when that ranking data last changed / And an archived month is clearly identified as a read-only month-end snapshot.” Static site contract tests cover paths and labels; hosted browser behavior remains deployment-observed.RBC-005(verifies-something-adjacent): “Given the normalized local catalog and the reviewed source catalog / When the hourly synchronization runs / Then changed source content is stored and immediately regenerated into current rankings / And identical source content is not rewritten, aggregated, committed, or deployed / And catalog and result writers cannot overlap their publication sections.” Python integration tests cover change detection and workflow contract tests cover orchestration; actual scheduling remains hosted behavior.ADR-003supersedes deletedADR-001, retaining immutable facts and disposable current projections while adding cumulative immutable month-end publication snapshots, active-pool matchup filtering, and ranking-tree-based freshness. No unaccepted base is involved.Summary
Verification
python -m unittest discover -s tests -v— 39 passed.python scripts/check_snapshots.py --base origin/main— additive snapshot changes only.python scripts/aggregate.py --root .plus generated-data diff — clean.clue validate --forbid-changes— OK (16 artifacts).git diff --check origin/main HEAD— passed.verifyandvalidate / validate— passed on80c52ac5a980cec59727cf3ffaa035797a6a3c66..idea/; the scoped change worktree is clean and that directory is not part of this PR.Cliewen proposal
CH-001G-001,G-002,CAP-001, andCAP-002./changes/CH-001-reliable-rumble-publication/proposal.mdin the proposal commit; removed by digest.80c52ac5a980cec59727cf3ffaa035797a6a3c66; 4 passes.80c52ac5a980cec59727cf3ffaa035797a6a3c66.Traceability and Decisions
RDA-006,RDA-007,RDA-008,RDA-009, andRBC-005; existing Python-backed criteria are explicitly@draftbecause Cliewen does not classify Python evidence, while their tests remain hosted and passing.ADR-003, supersedingADR-001.C-001held byclue validate;C-002retained through CI-only writers and generated-data verification;C-003retained with standard-library scripts and repository-native GitHub facilities;C-004retained because no accepted raw fact or rollup changed.Cliewen checklist
@draftplus focused hosted Python evidence.[Unreleased]inCHANGELOG.md./changes/workspace remains.Review boundary
mainand does not build on unmerged work.HEAD.