#1372 preview: rank pending historical reconciliation
What to tap
1. Phone app (AFTER)
Open the phone app BEFORE (main)- It opens as your team (display only). Tap the search icon at the top.
- Type Royals, Carter, McLaughlin or Prescott and tap the name.
- Tap Stats. Expect: the 2025 PPG Rk is — for Royals and Carter, with the line “2025 PPG Rk: Rank pending historical reconciliation.” McLaughlin shows 86 and Dak shows 5.
2. Front Office player panel (AFTER, desktop page)
Open Front Office BEFORE (main)- On your Roster, tap McLaughlin, Carter or Prescott. For Royals (Cleon Ca$h), set the team menu to All teams and type royals in the search box first.
- Tap Stats in the panel. Expect — in each held 2025 rank cell (hover shows the note on desktop) and a line under the table naming the season and column.
3. Desktop player profile (AFTER)
Open the profile host BEFORE (main)- Tap a name. This opens the real
shared/player_profile_master.jsmodal, the one the Rookie Draft Hub and Roster Workbench open, on a stand-in host page. - Tap Stats. Same expectation as the Front Office panel.
The seven cases
| # | Case | Player · 2025 | Stored rank (today) | Clean recount | AFTER #1372 shows |
|---|---|---|---|---|---|
| 1 | Affected Pts Rk | Jaleel McLaughlin, RB (your team) | Pts #94 · PPG #86 | 93 · 86 | Pts — · PPG #86 (not held) |
| 2 | Affected PPG Rk | Barrett Carter, LB (your team) | Pts #40 · PPG #54 | 40 · 55 | Pts #40 · PPG — |
| 3 | Both fields | Jalen Royals, WR (Cleon Ca$h) | Pts #211 · PPG #225 | 208 · 224 | Pts — · PPG — |
| 4 | Dak unchanged | Dak Prescott, QB (your team) | Pts #4 · PPG #5 | 4 · 5 | #4 · #5, no note |
| 5 | Earlier season unaffected | McLaughlin 2024 · Dak 2024 | #47 · #54 · #20 · #22 | not held | unchanged |
| 6 | Phone shows —, not 0 | Carter, Royals (PPG Rk column) | 54 · 225 | — + one-line note | |
| 7 | Bundle carries the reason | Royals /api/player-bundle | see below | ||
Points and PPG stay visible in every case. The points shown are today's D1 totals (before Batch 1A); after 1A they become MFL's totals (e.g. Carter 87.5 over 16 wks), and the held ranks stay “—” because the list is keyed by player-season. Clean recount = dense rank within the positional group over every player in src_pointssummary, on MFL Wks 1–17 points and PPG, each rounded to 4 dp.
Case 7: the bundle response (AFTER), Jalen Royals 2025 row
{ "season": 2025, "pos_group": "WR", "games_played": 4, "season_points": 1.8, "avg_ppg": 0.45,
"pos_rank": null, "pos_ppg_rank": null,
"rank_pending": { "fields": ["pos_rank", "pos_ppg_rank"],
"reason": "Rank pending historical reconciliation (#1307)" } }
BEFORE (today's worker): the same row with "pos_rank": 211, "pos_ppg_rank": 225 and no rank_pending. Dak's 2025 row is identical before and after. Full bodies: Royals after · Royals before · Dak after. The AFTER bodies are the recorded production bundles passed through #1372's own applyRankPending, the function the worker calls on its D1 path. Owners' free text (trade comments, trade-block notes) is blanked in every recorded read.
Proof screenshots (from this exact build)
Phone, 375 px





Phone, 320 px


Front Office player panel





Desktop player profile




Covered by tests, not this preview
- Roster Workbench, Rookie Draft Hub and Team Operations:
tests/rank_pending_1307.test.mjsruns each one's rank formatter on a held (null) rank and gets “—”. It also runs the desktop profile, Front Office and phone renderers on held, Dak and earlier-season rows. Full safe suite: 241 passed, 0 failed at39dd5127.
Not verified here
- Real iPhone Safari: checked in Playwright Chromium and WebKit at 375 px, Chromium at 320 px.
- The Front Office inside the MFL page (embed loader) and signed-in owner behavior. The standalone page is used, as your team, display only.
- The deployed worker. The AFTER bundles are the recorded production bundles run through #1372's function offline; a real worker deploy is a separate, later step.
- Post-Batch-1A totals: no production D1 write was made.
Known and left alone
- The phone's 2024 row for Carter and Royals shows 0 because they have no 2024 season at all. That is the existing “no data, zeros” rule (2026-05-15), not a held rank. #1372 doesn't change it; it's flagged as a separate decision.
- The 2026 row's ranks are “—” before and after: current-season ranks aren't in the rank table yet.