Skip to content

docs: clean up README - #36

Merged
MDA2AV merged 1 commit into
mainfrom
fix-readme-ui
Mar 16, 2026
Merged

docs: clean up README#36
MDA2AV merged 1 commit into
mainfrom
fix-readme-ui

Conversation

@BennyFranciscus

Copy link
Copy Markdown
Collaborator

Stripped emojis, centered divs, and fluff. Plain structured data.

@BennyFranciscus
BennyFranciscus requested a review from MDA2AV as a code owner March 16, 2026 01:17
@MDA2AV
MDA2AV merged commit eb84516 into main Mar 16, 2026
@MDA2AV
MDA2AV deleted the fix-readme-ui branch March 16, 2026 01:24
MDA2AV added a commit that referenced this pull request Jul 24, 2026
Closes #702. Each profile's 100-point reference was computed over the rows
left after filtering, so filtering changed the scores themselves. Because
every profile's leader moves by a different factor when a subset is
selected, the sum could reorder — the reported case, reproduced exactly:

                     main                        this branch
  unfiltered    rage 265 (#33)  roda 233 (#36)   rage 265 (#33)  roda 233 (#36)
  filter ruby   rage 678 (#3)   roda 775 (#1)    rage 265 (#1)   roda 233 (#2)

Rage outscores Roda overall but placed below it as soon as the board was
filtered to Ruby, with both scores inflated ~2.9x.

The predicate that decided which rows to show was also deciding what to
normalize against. Those are two different questions, so they are now two
predicates:

  outOfLeague  is this entry ranked somewhere else entirely? Types are
               separate leagues — engine entries are scored on their own
               subset of profiles, so an engine result must never set the
               reference for a framework entry.
  hidden       is it merely filtered out of view? The search box and the
               tuned toggle are display filters and now have no effect on
               any score.

Normalization uses only the first, so the numbers are a property of the
framework rather than of the current view. This covers the per-profile
maxima, the memory-efficiency maxima, and the json-comp bytes-per-response
reference, which had the same problem.

Per the discussion on the issue, the old behaviour is still worth having —
comparing a subset against itself is a real use case — so it becomes an
explicit "Rescale to selection" toggle next to the memory one, off by
default, carried in the URL as rescale=1. With it on, the filtered view
reproduces the previous numbers exactly (678 / 775 above). The header blurb
states which rule is active, so a screenshot is never ambiguous.

Verified in headless Chrome against the real data, on this branch and on
main: unfiltered ordering is unchanged, filtering to Ruby now leaves both
scores untouched, and toggling rescale on reproduces main's filtered output
value for value.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants