Repository navigation
perf(home): demote the footer odometer, the half the beacon change missed - #184
Merged
Merged
Conversation
…ssed #175 moved /hit?tick=1 to priority:low and left /hit?n=1 at fetch's High default. Measured on a cold incognito load, 2026-07-30: idle fired at 153ms on a page whose photo tiles start at 178ms, so the odometer went out ahead of all twelve of them. requestIdleCallback was doing less work here than it looks. It sets WHEN the request fires, never what it outranks once it does, and on a page this fast idle arrives inside the window that decides when photos start rather than safely after it. The tiles are deliberately fetchpriority=low (#156 measured the intro prose as the LCP element at 390px and 1280px alike), which is the reason this matters: on a page that has explicitly demoted its own images, anything still defaulting to High is outranking content by accident rather than by decision. counter.js has said it plainly since the odometer moved off the render: a footer odometer is the last thing on the page that matters. Browsers without priority hints ignore the option and land exactly where they are today. 74 contract tests, perf budget green. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
aadhar-sh | dcb6ba5 | Jul 31 2026, 06:04 AM |
Contributor
Understanding-first reviewThis is a prompt, not a score or merge gate. Before approving, reconstruct the change:
For docs and dependency changes, a compact answer is enough. For behavior or production changes, include the causal path and one concrete counterexample. The author’s claim card belongs in the PR description; this prompt is for the reviewer’s independent reconstruction. |
oddharsh
added a commit
that referenced
this pull request
Jul 31, 2026
Six releases landed after the last roll (#179 through #184), and between them they reminted nav.js, luna.css and tooltip.js. Those three were live with no matching candidate, so anyone loading the site right now would have gone into the next release with nothing to diff against. Adopted 3 shell candidates and 40 page snapshots; pruned 2 and 36 by the keep-3 / keep-2 rules. All nine shell assets carry their current hash again. This roll also makes the PREVIOUS one measurable, which is the thing #178's claim card listed as unprovable at the time. Its candidates are what the new shell diffs against, and they are carrying almost the whole file: nav.js vs 1df49c71 226 B against 13341 B plain brotli 98.3% off luna.css vs 76d1dbd8 75 B against 8479 B plain brotli 99.1% off tooltip.js vs 549f1cd0 351 B against 2651 B plain brotli 86.8% off A visitor who loaded the site during the 4f09a42 window now pays 226 bytes for a nav.js that would otherwise cost 13 KB. That is the whole point of the committed dictionary set, and it only becomes observable one release later. Rolled from 984804e, which is where origin/main and origin/production both point. `npm ci` first, then verified all six /a/ URLs referenced by the live pages reproduce byte-exact before adopting anything — the oxc-minify version skew that nearly poisoned #178 is still an unguarded footgun, so the check stays manual until roll-shell-dictionary.mjs does it itself. Gates: 74/74 contract tests, 78 routes, page contracts, perf budget. Co-authored-by: Aadharsh Pannirselvam <19518661+oddharsh@users.noreply.github.com> 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.
Follow-up to #175, which demoted
/hit?tick=1topriority:"low"and left/hit?n=1at fetch's High default.From the cold incognito HAR, 2026-07-30:
Idle fired at 153 ms on a page whose tiles start at 178 ms, so a High-priority footer odometer went out ahead of all twelve of them.
Why
requestIdleCallbackwasn't already covering thisIt sets when the request fires, never what it outranks once it does. On a page this fast, idle arrives inside the window that decides when photos start rather than safely after it.
Why it matters on this page specifically
The tiles are deliberately
fetchpriority=low— #156 measured the intro prose as the LCP element at 390px and 1280px alike, so no photo is on the critical path. That's exactly what makes a stray High request a problem: on a page that has explicitly demoted its own images, anything still defaulting to High is outranking content by accident rather than by decision.counter.jshas said it plainly since the odometer moved off the render: a footer odometer is the last thing on the page that matters.Browsers without priority hints ignore the option and land exactly where they are today.
74 contract tests, perf budget green. Verified the hint survives minification into
.build/.🤖 Generated with Claude Code