write-the-rules-page-for-the-new-v3-ui-517 #521

Merged
johnsturgeon merged 5 commits from write-the-rules-page-for-the-new-v3-ui-517 into main 2026-09-12 21:01:33 +02:00
Owner
No description provided.
Also added the 'score' simulator
Fixed an SVG issue and cleaned up the last rules
All checks were successful
Claude Code Review / claude-review (pull_request) Successful in 1m52s
Python FastAPI Jinja Linting / build (pull_request) Successful in 34s
Tests / pytest (pull_request) Successful in 17s
3700e90b00
Author
Owner

This is a well-scoped, content-only PR: a new v3 rules page template, a regenerated Tailwind CSS bundle to cover the new utility classes it uses, and the accompanying minor version bump. I verified the scoring simulator's twelve outcome tables against the described rules and against the actual autopick behavior in app/picks.py, and they're all correct.

Summary

The rules page renders through the existing v3_rules route (app/routers/v3.py:134) and the CSS/version changes are consistent with it. The only thing I'd flag is a small markup slip; everything functional checks out.

Nits

  • app/templates/v3/rules.html:257 — the first <p> in the "Autopick explained" section is never closed before the next <p> opens on line 259. Browsers auto-close it so it renders acceptably, but it's malformed markup and worth tidying:
    <p class="pb-2">
        <span class="italic">What happens if you don't get your picks in before kickoff? Autopick to the rescue.</span>
    <p class="pb-2">
    
    Add the closing </p> after the span.

Notes (non-blocking, verified fine)

  • Scoring simulator: I checked all twelve group-has-[...] result tables (rules.html:139-253) against the stated rules — mandatory lock (+1/−1), optional upset (+1/no penalty), straight-up win. Every Win/Loss/Bonus/Total combination is consistent, including the lock-and-upset compound cases.
  • Autopick copy accurately matches the code: _append_auto_picks defaults to game.home_team_id (app/picks.py:137), and the underdog-only upset restriction is reflected by giving the favored-team (49ers) upset select a "None"-only list.
  • Using name="scenario" on the two <details> elements makes them a mutually-exclusive accordion, which is the intended behavior — good.
  • Version bump 2.35.0 → 2.36.0 with matching uv.lock update follows the per-PR versioning convention in CLAUDE.md.

Looks good to merge once the stray <p> is closed.

<!-- claude-code-review --> This is a well-scoped, content-only PR: a new v3 rules page template, a regenerated Tailwind CSS bundle to cover the new utility classes it uses, and the accompanying minor version bump. I verified the scoring simulator's twelve outcome tables against the described rules and against the actual autopick behavior in `app/picks.py`, and they're all correct. ## Summary The rules page renders through the existing `v3_rules` route (`app/routers/v3.py:134`) and the CSS/version changes are consistent with it. The only thing I'd flag is a small markup slip; everything functional checks out. ## Nits - `app/templates/v3/rules.html:257` — the first `<p>` in the "Autopick explained" section is never closed before the next `<p>` opens on line 259. Browsers auto-close it so it renders acceptably, but it's malformed markup and worth tidying: ```html <p class="pb-2"> <span class="italic">What happens if you don't get your picks in before kickoff? Autopick to the rescue.</span> <p class="pb-2"> ``` Add the closing `</p>` after the span. ## Notes (non-blocking, verified fine) - Scoring simulator: I checked all twelve `group-has-[...]` result tables (`rules.html:139-253`) against the stated rules — mandatory lock (+1/−1), optional upset (+1/no penalty), straight-up win. Every Win/Loss/Bonus/Total combination is consistent, including the lock-and-upset compound cases. - Autopick copy accurately matches the code: `_append_auto_picks` defaults to `game.home_team_id` (`app/picks.py:137`), and the underdog-only upset restriction is reflected by giving the favored-team (49ers) upset select a "None"-only list. - Using `name="scenario"` on the two `<details>` elements makes them a mutually-exclusive accordion, which is the intended behavior — good. - Version bump 2.35.0 → 2.36.0 with matching `uv.lock` update follows the per-PR versioning convention in CLAUDE.md. Looks good to merge once the stray `<p>` is closed.
[skip review] Updated version for prod release
All checks were successful
Claude Code Review / claude-review (pull_request) Successful in 3s
Python FastAPI Jinja Linting / build (pull_request) Successful in 30s
Tests / pytest (pull_request) Successful in 15s
faf748ed8e
Removed unused text-heading
All checks were successful
Claude Code Review / claude-review (pull_request) Successful in 2m13s
Python FastAPI Jinja Linting / build (pull_request) Successful in 31s
Tests / pytest (pull_request) Successful in 16s
c3d491f95f
removed unused border
All checks were successful
Claude Code Review / claude-review (pull_request) Successful in 1m18s
Python FastAPI Jinja Linting / build (pull_request) Successful in 29s
Tests / pytest (pull_request) Successful in 16s
Release on merge / release (pull_request) Successful in 0s
0b3369909e
johnsturgeon deleted branch write-the-rules-page-for-the-new-v3-ui-517 2026-09-12 21:01:33 +02:00
Sign in to join this conversation.
No description provided.