Skip to content

Review: validate NBA mirror and task grading (#30) - #101

Merged
Raibows merged 20 commits into
aiming-lab:mainfrom
jackjin1997:review/pr-30-nba
Sep 17, 2026
Merged

Raibows merged 20 commits into
aiming-lab:mainfrom
jackjin1997:review/pr-30-nba

Conversation

@jackjin1997

@jackjin1997 jackjin1997 commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Review takeover

This Review PR supersedes and preserves the NBA mirror contribution in #30. The original mirror commit remains authored by yichao; this branch adds reviewer-owned fixes, task hardening, deterministic verifiers, and a pinned immutable asset candidate.

  • Original PR: Add NBA mirror #30
  • Paired HF PR: https://huggingface.co/datasets/ChilleD/WebHarbor/discussions/88
  • HF candidate commit: 65a85a1494688f3b9e82217e50a1dd3a5c6f1a8a
  • nba.tar.gz SHA-256: 4ade0429edc12ffbfa1ee42a8f0192fc3009647912ff57a8d232d52abe7b349d
  • Current head: 7858a6dac8385d6c4ba7f55886bee34d445e98ee
  • Current base: main at 7ace1c77f67d721d3855bfe54a87d9afb9b68715
  • Site port: 40029, index 29 of the 30-site registry
  • Review conclusion: GO for maintainer review; the code PR is MERGEABLE / CLEAN

Technical gates S0–S7 and the S8 handoff package are complete. The PR is Ready for maintainer review; it is not directly mergeable until the paired HF PR is merged and the asset pin is moved to that merge commit.

Changes in this review branch

  • adds and validates 20 one-to-one task/rubric/verifier contracts;
  • fixes standings rank semantics used by comparison tasks;
  • fixes the Stats More Stats rail so each ranking displays its own metric instead of PPG;
  • removes a homepage teaser that leaked the answer to an article task;
  • hardens read-only and state-changing verification, including exact allowed database deltas;
  • rebuilds the homepage, global header and global footer against measured NBA.com layout values;
  • shows the signed-in account in the header and adds the measured nav hover flyouts;
  • integrates current main, appends NBA without remapping an existing site, and keeps all registry/port declarations in sync;
  • pins the complete HF candidate revision covering all 30 registered sites.

Visual and source-fidelity review

A same-condition comparison against live NBA.com recorded the previous UI as a fidelity failure: the header wrapped into stacked rows and clipped trailing navigation, card rails collapsed into oversized single-column stacks, display typography was generic, and the footer hierarchy differed. NBA.com was measured in a real browser at 1440, 768 and 390 px plus a 1440 → 320 sweep, a bounded difference table was frozen before any edit, and the shared layer was then rebuilt:

  • one 55px header bar at every width, with a no-JavaScript hamburger panel below 1280px and a horizontally scrollable inline menu, so no destination is ever clipped away;
  • the measured media-led hero (948 × 680, right-hand media under a 90deg gradient, 474px copy column, related content, progress-bar slide controls) and the measured 485px media-on-top composition below 768px;
  • 188 × 282 story tiles and fixed 240px content slides in horizontal rails at every width, instead of reflowing grids;
  • condensed uppercase display typography at the measured sizes, plus the measured section-title rule, card radii and vertical rhythm;
  • a five-column footer that collapses into an accordion below 1024px;
  • the header now reflects the signed-in account instead of showing a static Sign In link on every page, and finally renders the cart count the app has always computed;
  • each primary nav item opens a white flyout on hover and keyboard focus, rebuilt on measured values, including the 720px Teams panel with all 30 clubs in six division groups. The panels are CSS-only and default to display: none, so their links stay out of the accessibility tree while closed. Below 1280px they are switched off and the hamburger drawer repeats every one of their destinations.

Homepage document height against NBA.com under identical conditions:

Width NBA.com Before Before ÷ upstream After After ÷ upstream
1440 4782 4178 0.87 4333 0.91
768 6736 7671 1.14 6358 0.94
390 6256 11874 1.90 6328 1.01

Upstream / before / after screenshot sets were captured for 16 page templates at three widths each. The repaired result was reviewed against the live site in a real browser and accepted, so the post-fix bundle is now the approved visual regression baseline for this branch.

The external facts used by the 20 tasks were audited against live NBA.com: player and team statistics, standings, profile details, venues/coaches, and the 2026 Draft dates matched their upstream sources. That audit found one real defect—conflicting Thunder/Nuggets tie-breaking across pages—which is fixed through a shared official seed order and covered by a regression test.

Deliberate differences remain: the deterministic in-season scoreboard is retained while live NBA.com is in an offseason state; advertising, third-party widgets and fake video playback are omitted; benchmark answer-leak protections remain; and the licensed Knockout Wide face is approximated with a condensed fallback stack.

Verification summary

Behavioral S8 checks were made against db46d03, base 7ace1c7, and asset revision 65a85a14. Current head 7858a6d is a documentation/test-only closeout successor: it changes shared count/port documentation, immutable-pin commentary and the regression that rejects stale numeric port ranges. The NBA suite, shared invariants and registry check were re-run after that closeout commit.

  • 38 NBA routes × 4 widths: 152/152 clean—HTTP 200, populated content, no horizontal overflow, broken images or failed subrequests;
  • POST /reset/nba: runtime and seed databases return byte-identical at SHA-256 0c34c5dc…;
  • NBA verifier/contract suite: 25/25 pass in the runtime image, including 118 task subtests and UI/port regressions;
  • shared registry invariants: 6/6 pass, including the asset-pin assertion;
  • registry-port guard: index 29 → port 40029 matches both launchers, Docker exposure, documentation and all 20 task origins;
  • deterministic grading: 20/20 task executions pass their verifiers after re-grading against the current task file;
  • independent read-only review: 20/20 PASS against current evidence—19 verdicts from the frozen full-page packet plus a targeted NBA--4 re-execution and re-review at the candidate head;
  • asset integrity: the pinned revision contains 32 archives covering all 30 registered sites, and its NBA archive is byte-identical to the reviewed archive.

The 20 recorded executions are disclosed guided regressions, not independent agent exploration. The independent reviewer judged the frozen executions without verifier outputs or hidden answers. The full multi-site image was built and smoke-tested at the earlier 26-site candidate; all 26 sites served before and after reset-all. Later upstream integrations did not change the NBA templates, application, seed or verifiers beyond registry/task-origin moves; the current-head checks above cover the resulting 30-site registry and NBA behavior. A full 30-site rebuild was not repeated solely for those upstream integrations.

Upstream integration

main occupied NBA’s provisional slot three times while this review was open. Each upstream version was integrated with the same rule: keep the newly merged site’s slot and append NBA, so no existing site is remapped. NBA now takes 40029 in the 30-site registry. The current branch is 16 commits ahead and 0 behind main; its merge base is the current upstream head 7ace1c7.

Task paths never changed; only their origin port moved. Verifiers match loopback plus path and query, not a fixed port. A regression derives NBA’s slot from both launchers and checks the task rows and shared port declarations, so another upstream insertion fails during testing rather than inside a benchmark run.

Reproduction

gh pr checkout 101
./scripts/fetch_assets.sh
./scripts/build.sh webharbor:review-nba
docker run -d --rm --name wh-review-nba \
  -p 8201:8101 -p 41000-41029:40000-40029 webharbor:review-nba
curl -s http://localhost:8201/health | python3 -m json.tool
curl -X POST http://localhost:8201/reset/nba
docker exec wh-review-nba python /opt/WebSyn/nba/verify/test_verifiers.py
docker stop wh-review-nba

Merge-time handoff

directly_mergeable_now = no, despite GitHub reporting the code branch clean. Maintainer action order:

  1. Review and merge HF PR Review: complete BoardGameGeek environment and grading contract (#35) #88; close HF PR Add Drugs.com mirror + task verifiers (site by @boyugou, verifiers by reviewer) #71 as superseded.
  2. Re-pin .assets-revision and the shared asset-pin assertion to the HF merge commit.
  3. If main moved, integrate it and let the registry-port guard confirm NBA’s final slot.
  4. Merge this code PR.

Known non-blocking limitations

  • reset-all took 59.7s on a host carrying 22 unrelated WebHarbor containers at load 150–306; per-site HTTP and byte-identical reset passed, but no quiet-host timing claim is made.
  • /search is reachable from Stats through a “Quick Links” label, but has no clear global search affordance.
  • The unrelated Beta “Daily Dunk Score Leaders” panel is not sorted by its displayed composite values; no accepted task depends on it.
  • The Stats page retains an inherited vertical gap before the first card.
  • NBA--9’s recorded replay uses an href fallback after an accessible-name locator timeout; the task itself remains solvable and verified.
  • Mirror leaderboards rank within the seeded 28-player roster and must not be presented as complete league leaderboards.
  • Frozen packets do not carry per-capture timestamps, so a reviewer can verify file integrity but cannot independently prove when each screenshot was taken.

No open review finding blocks maintainer review. The open HF PR and any final port move are merge-time coordination items.

@jackjin1997 jackjin1997 mentioned this pull request Sep 12, 2026
7 tasks
@jackjin1997

Copy link
Copy Markdown
Contributor Author

Independent blind review (Claude Code, read-only)claude-blind-v1

  • Model: claude-opus-5 (Claude Opus 5)
  • Candidate per handoff manifest: code eae9ee95450b235d9dbabe186ff948b128a39ace (base 36004932bdf82afbe36dc14e00f66841eccf9946); assets ChilleD/WebHarbor @ 0cfa54bf8e18558f32c44d128fa6ab1f384b5da9 (archive sha256 4ade0429…b349d, seed sha256 0c34c5dc…4a3b2)
  • Coverage: 20/20 tasks reviewed, 0 unexecuted. 20 PASS / 0 FAIL. No failed task IDs.
  • Packet integrity: all 130 enumerated SHA-256 digests (task contract, state evidence, 20 trajectories, 108 screenshots) recomputed and matched.

Checks this pass did not execute or assert

  • Screenshots are 1440×900 viewport captures and no run scrolled, so for NBA--9, NBA--10, NBA--11, NBA--15 the exact answer value sits below the captured fold and rests on navigation plus adjacent on-screen context rather than a captured pixel. Same gap over the standings table for NBA--4 and NBA--19; NBA--16 is missing one of six comparison prices.
  • Runs executed against code shas 6380f319 / df5ed3d9 / 678ae6a8 and asset identities e4003386 / local seed — not the manifest's final candidate commit. The manifest's guided-run reuse claim was not verified here.
  • Observation: on Stats, the right-rail "More Stats" lists are not sorted by their own values, which makes "top player shown" ambiguous for NBA--12.

Scope: a read-only judgment of whether each frozen guided-regression execution completed its frozen task under the supplied non-answer-leaking rubric. It does not certify deterministic-verifier status, verifier correctness, source fidelity, asset provenance, or final readiness.

@jackjin1997

Copy link
Copy Markdown
Contributor Author

NBA--12 blind-review reconciliation complete

  • Root cause: the More Stats rail was ordered by each category's metric but rendered PPG for every category, making Total Assists visually ambiguous.
  • Fix: ac356f97 carries the metric key through the Stats context and renders that same metric. Task text, rubric, verifier, and expected leader were not relaxed or changed.
  • Fresh regression: the Players panel shows Joel Embiid first for Points; Total Assists is now visibly descending as Tyrese Haliburton 11, Luka Doncic 10, Nikola Jokic 9. The deterministic verifier passes and before/after/reset DB hashes remain seed-identical.
  • NBA verifier/contract suite: 18/18 test methods pass, including the new More Stats rendering regression.
  • Targeted independent recheck: PASS, with all frozen input hashes matching (claude-followup-nba-12-v1, SHA-256 149997d4fccc8f8425043147f93385e1b64130d8e0e355f278da60713bd8d505).

The PR remains Draft. Live NBA.com visual/source comparison and the resource-gated full Docker rebuild/all-site smoke are still not verified. The unrelated Beta Daily Dunk panel's ordering is recorded as a non-blocking residual; no accepted task depends on it.

Live same-condition comparison recorded the mirror as a visual-fidelity FAIL:
a header that wrapped into stacked rows, oversized one-column card stacks,
generic loose typography and a footer with a different hierarchy.

Measured nba.com at 1440/768/390 and rebuilt the shared layer against those
values:

- 1280px content column with 28px gutters and a 55px single-row header at every
  width, with a no-JS hamburger panel below 1280px and a horizontally
  scrollable inline menu, so no destination is ever clipped away.
- Media-led hero: right-hand media under a 90deg gradient, 474px copy column,
  related-content list, and slide controls with progress bars; the measured
  485px mobile composition below 768px.
- Stories rail as 188x282 portrait tiles and content rails as fixed 240px
  slides, both horizontally scrollable at every width instead of reflowing
  into full-width stacks.
- Condensed uppercase display typography, measured section-title rules, card
  radii and the image-left Around the NBA row at narrow widths.
- Footer rebuilt into the five measured link columns that collapse into a
  CSS-only accordion below 1024px, plus the social row and legal block.

Upstream breakpoints replace the previous 1080/680 pair, so the narrow
navigation regression test now asserts the invariant it was protecting (the
menu scrolls and the hamburger panel repeats every destination) instead of a
literal breakpoint string. Adds rail and footer regressions; all three fail
against the previous revision.

Verifier and contract suite: 20/20 test methods pass. Reset stays byte
identical to the seed and the seed hash is unchanged.
Two gaps found while reviewing a task trajectory at the rebuilt header.

The bar showed a static Sign In link on every page even while authenticated,
so a signed-in run looked signed out. That has been true since the original
contribution, and the cart count the app computes on every request was never
rendered anywhere. The header now shows the account name linking to the
account page, with a flyout for account, profile, orders, bag (using that
count) and sign out; signed out it keeps Sign In plus create-account.

NBA.com also opens a white flyout under each primary item on hover, which the
mirror did not reproduce. Measured on the live site: panel flush under the
55px bar, 4px padding, links Roboto 600 14px/21px with 12px 16px padding, and
a 720px Teams panel holding all 30 clubs in six division groups with logos at
Roboto 400 13px and 4px 16px padding. Both shapes are rebuilt with the
measured values, opened by :hover and :focus-within with no JavaScript.

Panels default to display:none so their links stay out of the accessibility
tree while closed, which keeps existing by-name locators resolving to the
visible bar. Below 1280px, where the hamburger takes over, the flyouts are
switched off and the drawer now repeats every flyout destination, so nothing
reachable on a desktop becomes unreachable on a narrow screen. The menu
scroller was moved to that same range because a scroll container clips
absolutely positioned panels; between 1280 and 1365 item padding tightens so
the full menu still fits without one.

Adds regressions for the signed-in header and for the flyouts; both fail
against the previous commit. Suite is 22/22. All 38 routes still return 200
with no horizontal overflow at 1440, 1280, 768 and 390.
Upstream main advanced to e7f8a5d while this review was open, merging the
FedEx mirror into the port slot this branch had given NBA.

Registry conflicts in websyn_start.sh and control_server.py are resolved by
keeping the slot FedEx already merged into and appending NBA after it, so
FedEx stays on 40024 and NBA takes 40025. No earlier site moves. The Dockerfile
EXPOSE range and site count, and the shared port-range references in README,
AGENTS, CONTRIBUTING, CLAUDE and the agent_demo README, follow the 26-site
registry.

Task paths are unchanged; only the origin moves, so every row in
sites/nba/tasks.jsonl is re-pointed from :40024 to :40025. A new regression
derives NBA's port from both launchers and asserts the task rows match it,
rather than freezing the number, so the next registry reorder fails there
instead of inside a benchmark run. It fails against the stale port and skips
where the registry is not mounted.

.assets-revision keeps this review's candidate 0cfa54bf rather than main's
68dcbf2c: 0cfa54bf is a superset carrying both fedex.tar.gz and nba.tar.gz,
while 68dcbf2c has no NBA archive. The shared registry test is updated to that
pin with a note that it is still an open Hugging Face PR and must be re-pinned
to the HF merge commit before release.

Registry invariants 6/6 and the NBA verifier suite 23/23.
…signs

main advanced to f20b5ee with the WebMD Doctor mirror, which took the slot this
branch had just been given. Same resolution as before: keep the slot the newly
merged site occupies and append NBA after it, so WebMD Doctor stays on 40025
and NBA takes 40026 with no earlier site moved. The Dockerfile site count and
EXPOSE range, the README site list and range, and the shared port-range
references follow the 27-site registry.

Task paths are unchanged; only the origin moves, so every row in
sites/nba/tasks.jsonl is re-pointed to :40026. The registry-port regression
added in the previous merge caught the drift and now passes against the new
index.

.assets-revision keeps 0cfa54bf. main pins ad6f424f, which carries 27 archives
including webmd_doctor but no nba; 0cfa54bf carries 28 including all three of
fedex, webmd_doctor and nba, so it remains the only pin that lets the
integrated image build. The note that it is an open Hugging Face PR and must be
re-pinned to the HF merge commit before release is retained.

Run evidence is reused rather than re-executed. This merge touches exactly one
NBA file, the web metadata port in tasks.jsonl; no template, stylesheet,
application, seed or verifier code changed. The 20 frozen runs were re-graded
against the updated task file and all 20 still pass, and the verifiers match on
loopback plus path and query rather than on a port.

Registry invariants 6/6 and the NBA suite 23/23.
@jackjin1997

Copy link
Copy Markdown
Contributor Author

Independent blind review — postfix-v3 execution bundle

Model: claude-opus-5 (Claude Opus 5), reviewed in a session isolated from this case's review context.

Bundle: manifest-postfix-v3.json (sha256 6a380075143c6a072bb2c8265c871f29436f863eef9bd608a69aab6701411b6e)

  • runs executed at code 8c38e658caef5ae06467736c150b39811ba6ce8d
  • manifest final_code_sha c66dc67f571a35e3eb70a74896965fb0a3611417
  • asset revision 0cfa54bf8e18558f32c44d128fa6ab1f384b5da9 (ChilleD/WebHarbor)

Integrity: all 130 enumerated inputs (task contract, state evidence, 20 trajectories, 108 screenshots) matched their recorded SHA-256.

Coverage: 20 / 20 tasks reviewed, none unexecuted.
Result: 20 PASS, 0 FAIL. No failed task IDs.

Not established by this pass / unexecuted checks:

  • Screenshots are 1440x900 viewport captures and no run issued a scroll step, so for NBA--3, NBA--9, NBA--10, NBA--11, NBA--15 and NBA--16 the decisive value sits below the captured fold and was judged on trajectory consistency plus cross-run corroboration rather than direct pixel confirmation. NBA--16 ("cheapest" T-shirt) and NBA--15 ("highest-priced" ticket card) are the weakest such comparisons.
  • Trajectories run against 127.0.0.1:53431 while the frozen task contract records http://localhost:40026/; this review takes the manifest's port-only reuse rationale as given rather than verified.
  • Deterministic-verifier status, source fidelity, and similarity to current NBA.com were not inspected and are not established here.

This pass judges frozen-execution completion only. It is not a verifier-correctness, source-fidelity, or final-readiness sign-off.

The standings page ranked Oklahoma City first in the West while team_seed(),
used by the Games page, the game strip and the series page, ranked Denver
first. The same site answered "who is the West top seed" two different ways
depending on which page you were on.

Oklahoma City and Denver both finished 2023-24 at 57-25 and the league seeds
Oklahoma City first. That tiebreaker is not derivable from the seed data, so
the standings page carried a hardcoded published order while team_seed() fell
back to sorting by city, where "Denver" precedes "Oklahoma City".

Hoist the published order into OFFICIAL_SEED_ORDER and a shared seed_sort_key()
so every surface that displays a seed reads one source.

Add SeedingConsistency, which asserts both call sites use the shared key, that
neither sorts by city, and that the West resolves to Thunder then Nuggets on an
identical record. Both tests fail against the previous code. They avoid
importing the app so they run on a bare checkout.

No accepted task changes answer: NBA--4 routes through the standings page,
which was already correct, and no task asks for the seed badge shown on the
Games page.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@jackjin1997

Copy link
Copy Markdown
Contributor Author

Independent blind review — postfix-v5 packet

  • Model: claude-opus-5 (Claude Opus 5, via Claude Code)
  • Manifest: manifest-postfix-v5.json, sha256 0379abd1587d2e4d34203bc7d841ed7f1984d7596bec68df9b3042f78e76f907
  • Candidate code cfec7ce891caa475d5c379411d574ed5a63a0178 (base f20b5ee8377ba31bcb825b4dfe30ad96c416e477); runs recorded at code c66dc67f571a35e3eb70a74896965fb0a3611417
  • Assets ChilleD/WebHarbor @ 0cfa54bf8e18558f32c44d128fa6ab1f384b5da9, archive sha256 4ade0429edc12ffbfa1ee42a8f0192fc3009647912ff57a8d232d52abe7b349d
  • Coverage: 20/20 tasks reviewed, 0 unexecuted. Result: 20 PASS / 0 FAIL.

Packet integrity: all 130 enumerated inputs hash-matched (contract, state evidence, 20 trajectories, 108 screenshots), no missing files, all 20 task texts and rubrics match the frozen contract, and all screenshot dimensions are consistent with the declared full-page capture mode — so no decisive value sat below a fold in this review. Every comparison/superlative claim (NBA--2, --5, --6, --12, --15, --16, --18) was re-checked against the full-page image and none is contradicted by what the page shows.

Disclosure. The manifest's reuse rationale asserts that no image in this packet shows a conference-seed badge for Oklahoma City or Denver. Two images in the packet contradict it — NBA--4/postfix-guided-v4/screenshots/step_001.png and NBA--19/postfix-guided-v4/screenshots/step_002.png — both rendering the Western Conference standings with rank 1 Oklahoma City Thunder and rank 2 Denver Nuggets, exactly the pair the manifest says swaps between c66dc67 and cfec7ce. (Corroborating inside the trajectory: NBA--4 step 1 clicks a link whose accessible name is literally 1 Oklahoma City Thunder.) NBA--4's task turns on that value — "the Western Conference's top seed" — so its PASS attests to frozen-execution completion at c66dc67 and does not transfer to the candidate head. NBA--19 reads only Dallas Mavericks at seed 5 (50-32) and is unaffected.

This blind pass covers frozen-execution completion only. It does not certify source fidelity, deterministic-verifier correctness, current NBA.com similarity, or final readiness. PR left in Draft; no GitHub or Hugging Face PR merged.

jackjin1997 and others added 5 commits September 13, 2026 23:54
Upstream merged healthline (index 26) and kaggle (index 27) while this review
was open. Healthline took 40026, the slot this branch held, so NBA moves to
index 28 and port 40028. No earlier site moves, which is what the shared
registry invariants require.

Nothing under sites/nba changes except the task file's declared port: the
20 rows move from :40026 to :40028. Paths, queries and required routes are
byte-identical, and verifiers match on loopback plus path and query rather
than a port, so no task answer or verdict can change.

Known limitation, recorded rather than papered over: neither asset pin now
covers the 29-site registry. Ours (0cfa54bf) carries nba but predates
healthline and kaggle; main's (64264d06) carries those two but has no nba
archive. This branch keeps its own pin so the NBA site builds, which means a
full image build cannot fetch healthline or kaggle assets until HF PR aiming-lab#71 is
refreshed onto the newer dataset main. That refresh must happen before this
PR is mergeable.

Shared registry invariants pass 6/6 and the NBA suite passes 25/25 in the
runtime image, with the registry-port guard passing on a checkout.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The merge commit moved NBA to index 28 in both launchers but left the task
file declaring :40026, because the rewrite happened after the conflict
resolutions were staged and `git commit` only takes what is staged. The
committed tree was internally inconsistent.

test_tasks_use_the_registered_nba_port, added when the previous merge moved
the site, fails against that tree and passes against this one. That is what
the guard was for: it derives the port from both launchers instead of
freezing a number, so a registry move that the task file misses fails in the
suite rather than inside a benchmark run.

Only the declared origin changes. Paths, queries and required routes are
byte-identical and verifiers match on loopback plus path and query.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Neither previous pin could build the merged registry. This branch's pin
(0cfa54bf) carried nba but branched from an older dataset main and so had no
healthline or kaggle archive; main's pin (64264d06) carried those two but no
nba. A full image build would have failed either way.

Re-cut the same NBA archive onto the current dataset main as
huggingface.co/datasets/ChilleD/WebHarbor/discussions/88, which supersedes aiming-lab#71.
The archive is byte-identical to the reviewed one: sha256
4ade0429edc12ffbfa1ee42a8f0192fc3009647912ff57a8d232d52abe7b349d, 26495947
bytes, confirmed against the remote LFS etag rather than assumed. The new
revision 65a85a1494688f3b9e82217e50a1dd3a5c6f1a8a holds 32 archives and covers
all 29 sites the registry declares.

Re-fetched the NBA assets from the new pin: the seed hashes to
0c34c5dc83c0a0352d3453b39fbe0fef8a41dbcbeceb49e052b187f58594a3b2, unchanged.
Because the bytes are identical, this is a pin change only, so task runs and
independent verdicts stand and are not re-executed.

Shared registry invariants pass 6/6 including the pin assertion, the NBA
registry-port guard passes, and reset byte-identity still holds in the running
mirror.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
NVIDIA merged into index 28, the slot this branch held, so NBA moves to index
29 and port 40029. No earlier site moves.

The asset pin needs no further work: 65a85a14, cut for the previous merge, is a
strict superset of main's b7e605c0. It carries an archive for all 30 sites the
merged registry declares, nvidia and nba included, so one revision builds the
whole image. Verified against the dataset tree rather than assumed.

Nothing under sites/nba changes except the task file's declared port: the 20
rows move from :40028 to :40029. Paths, queries and required routes are
byte-identical, and verifiers match on loopback plus path and query rather than
a port, so no task answer or verdict can change.

Shared registry invariants pass 6/6 and the NBA registry-port guard passes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@jackjin1997
jackjin1997 marked this pull request as ready for review September 14, 2026 16:34
The Schedule page rendered the frozen official schedule, so the query parameters filtered a
Game-table result the template never used. The server now filters the frozen weeks and
recomputes each day count, and the page controls drive that filtering:

- the four filter selects submit on change (onchange="this.form.submit()"), which is what a
  user expects when picking a value; an explicit Apply button keeps the form usable without JS
- Hide Previous Dates is a real stateful control (name/value + aria-pressed + off-state styling)
  and the form re-injects its current state for non-toggle submissions
- the Calendar placeholder reads "All months" because the empty value means no month filter
- Broadcaster Region is display-only: the frozen rows carry no region field
- an empty result renders an empty-state message naming the active filters
…x 34 / 40034 after aiming-lab#89 added imdb

main now ends with imdb at index 33 / port 40033 (PR aiming-lab#89 merged), so the NBA mirror is
appended as the 35th entry at index 34 / container port 40034. The asset revision keeps
main's merged dataset-main pin (it carries imdb, gov_uk and every pre-existing archive) and
adds site.nba for the reviewed NBA candidate commit from HF dataset PR aiming-lab#88, which is still
open; accuweather keeps its existing per-site pin.
@Raibows

Raibows commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Thanks for your contribution! @jackjin1997 @lyc61c

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.

3 participants