# RWAL Build a Roster — validation & limitations

Reviewed: October 19, 2026. Planning season: 2027.

Update: incoming trades now use MLB player lookup and sourced contract details rather than manual identities. See the [player lookup and market validation addendum](./market-validation.md) for refreshed-source boundaries, missing-data behavior and the expanded 29-test suite. Earlier manual-entry descriptions below document the preceding release.

## Scope and data coverage

This is a browser-local payroll sandbox, not a roster transaction service or a wins projection. It starts with 19 notable controlled players, reserves the full salary of three pending mutual options, exposes 17 additional salary/status-unverified players, and offers six potential free agents. The 45-player interactive pool is intentionally limited.

The official dated MLB roster returned 46 records: 40 active and six 60-day IL. All 46 are accounted for in the archived player-stat snapshot. Seven expiring contracts are excluded from the starting 2027 commitments and the limited market menu: Jalen Beeks, Cal Quantrill, Jordan Montgomery, Tyler Alexander, Elias Díaz, Nicky Lopez and Trevor Williams. Their exclusion does not predict their departure or rule out re-signing. Josh Smith is absent from the current roster; his paid 2026 obligation remains in the benchmark.

Unknown salaries on reserve players are not known zero-dollar obligations. Adding such a player uses an editable $850,000 full-season MLB assumption. Off-roster minor-league obligations remain unitemized; the editable $2M reserve is a planning cushion, not a verified valuation. The tool does not claim to reconstruct the entire organization’s 2027 payroll.

## Payroll definition and reconciliation

Season-attributed non-CBT payroll assigns annual salaries, allocated signing bonuses, buyouts, earned incentives, paid obligations and credits to the baseball season. It excludes benefits and CBT. It is not bank-account cash flow.

The 42-entry [2026 ledger](./payroll-ledger.json) totals $188,049,238, exactly matching [FanGraphs RosterResource](https://www.fangraphs.com/roster-resource/payroll/rangers):

| Component | Dollars |
|---|---:|
| Guaranteed salaries | 158,484,947 |
| Arbitration salaries | 15,700,000 |
| Pre-arbitration and reserve | 11,057,500 |
| Departed-player obligations | 6,788,074 |
| Earned incentives | 775,000 |
| Other payments and credits | -4,756,283 |
| Total | 188,049,238 |

Independent comparison is incomplete: [Baseball Cube](https://www.thebaseballcube.com/content/payroll_year/2026/) reports $202,378,541 on its Opening Day basis, a $14,329,303 difference. Midseason coverage and signing-bonus allocation differ; Eovaldi is $25M there versus $29M attributed in RR, and Seager $31M versus $31.5M. These explain some differences but not the full net discrepancy. No claim of independent numerical agreement is made.

2027 begins with $121M of five reported guarantees, $38.225M of [published arbitration estimates](https://www.justbaseball.com/mlb/arbitration-salary-projections-for-2027/), $3.4M of explicit pre-arb assumptions, $30.5M of pending-option reserves, the -$250,000 Nimmo bonus adjustment, and a $2M cushion: **$194,875,000**. This is deliberately not FanGraphs’ incomplete future headline of $161.3M, which omits pre-arb salaries and assumes buyouts instead of full pending-option reserves.

2026 uses earned costs; 2027 future incentives and replacements are uncertain. Consistent accounting definition does not remove this actual-versus-planned asymmetry.

## Contract cross-checks and deferrals

Underlying reporting is linked in the ledger. Jansen’s $8M attributed 2027 cost comprises $7.25M salary plus $750,000 allocated bonus. Eovaldi’s $24M comprises $20M base plus $4M allocated bonus. His bonus cash dates differ from this attribution. Nimmo’s separate -$250,000 adjustment remains even if removed from the proposed roster.

Robertson’s $1M deferred cash due in 2027 relates to previous service and is not charged again. Martin’s deferred bonus is payable in 2028–29 and already attributed to 2026. These are disclosures, not missing additions to 2027 season-attributed payroll.

Pederson’s option buyout is unknown, not confirmed $0. Declining it without an assumption changes the headline to **known subtotal / incomplete**. Higashioka’s $1M and Junis’ $1.25M buyouts replace, rather than supplement, their exercised-option salary. Mutual-option exercise assumes both parties agree.

## Performance and identity

The [statistics snapshot](./player-stat-snapshot.json) preserves MLB IDs, MLB birth-date sources, FanGraphs IDs, full-precision 2024/2025/2026 WAR and source query definitions. Age is calculated on March 25, 2027. WAR combines batting and pitching contributions for the full regular season across all teams; display rounds to one decimal. Missing records are null, not zero. No projected wins are calculated from historical WAR.

Missing records include Bradford’s 2025 season and several reserve players without MLB leaderboard entries. Such rows intentionally show a dash rather than fabricated performance.

## Free-agent pricing check

The [comparable ledger](./free-agent-comparables.json) includes 13 named historical contracts. Six candidates use explicit role-based min/max AAV envelopes. Default annual salary is the midpoint rounded to $250,000. Term is a separate editorial assumption, not a regression output. The hypothetical contract uses equal annual salary; actual contracts may be front/back-loaded or deferred.

Three held-out signings are excluded from their respective comp envelopes, and each comp predates the tested deal. However, the exercise was selected retrospectively, not blinded or preregistered:

| Held-out deal | Reference AAV range | Actual AAV | Result |
|---|---:|---:|---|
| Michael Wacha | $17–21M | $17M | Inside |
| Jurickson Profar | $14.5–18M | $14M | Below |
| Jeff Hoffman | $10.5–11.5M | $11M | Inside |

Absolute midpoint errors: $2M, $2.25M and $0. Mean absolute error: $1.4167M/year for these three examples only. **This is not an accuracy estimate.** Wacha was an extension/restructured deal. Grisham’s own qualifying offer is a constrained-contract upper anchor, not an open-market comp. No age, injury, inflation, scarcity or WAR adjustment is fitted. Actual prices may fall outside the ranges.

## Automated and manual calculation checks

The roster-specific test suite covers 13 groups of assertions, alongside three existing offseason tests:

- Itemized and grouped benchmark sum to $188,049,238.
- Starting plan equals $194,875,000 and +3.629773% versus 2026.
- Removing deGrom changes on/off-roster allocation but leaves total unchanged.
- Removing Langford retains salary; explicitly non-tendering reduces total to $191,350,000.
- Removing Leiter retains his full-season assumption.
- Exercising an option does not add a buyout; removing that player afterward still retains the salary.
- Declining Higashioka and Junis reduces total to $185,125,000; declining Pederson without a buyout remains unresolved.
- Adding Gallen at $23M for four years gives $217,875,000 annual plan and $92M new commitment; two years changes commitment to $46M, not annual payroll.
- Invalid numbers are rejected; zero overrides remain explicit user assumptions.
- Reset returns new initial state; IDs are unique; DOB cutoffs and null WAR are preserved.
- Published FA envelopes and default values recompute from named contracts.
- Held-out players do not leak into comp sets; the historical miss stays visible.
- Official roster records are either in the tool or explicitly listed as expiring above.

Desktop/mobile functional checks exercised search, add/remove, option decline, unknown buyout override, non-tender, salary/term editing and reset. The visible totals matched reference calculations. At 390px and 320px the document did not overflow horizontally; desktop was inspected at 1280px. No browser console errors were observed. These are developer usability checks, not an independent human user study.

## Lineup and hypothetical-trade extension · October 19, 2026

The field diagram uses editable editorial assignments, not an announced lineup or certified defensive eligibility. Each player occupies one planning slot. The template has nine batting/fielding positions, five starters, eight relievers and four bench players. Unassigned players and vacant slots are shown separately; the mound repeats SP1 and does not count twice. The starting plan fills 9/9 lineup spots, 5/5 rotation slots, 3/8 bullpen slots and 1/4 bench slots, with Bradford unassigned. This is not a complete 26-player roster.

Trades explicitly transfer modeled 2027 salary, with user-selected Texas retention and manually entered incoming salaries. Ordinary removal still retains obligations. Incoming players are labeled unverified assumptions and start unassigned. Trade value, consent, actual cash consideration and future-year obligations are not modeled. Nimmo's accounting credit transfers proportionally as an explicit simplification.

The extended suite has 20 roster tests plus three offseason tests (23 total). Added checks cover full/partial/zero salary relief, duplicate outgoing players and incoming IDs, invalid retention, pending options, lineup vacancies, unique assignments and incompatible pitcher/position-player assignments. Manual references using the $194,875,000 starting plan:

- Seager at $31.5M, 0% retained, $5M incoming: $168,375,000 payroll, saving $26.5M.
- Same return with 25% retained: $176,250,000 payroll; $7.875M remains owed to Seager.
- 100% retained with $5M incoming: $199,875,000 payroll.
- Full Nimmo transfer with no MLB return removes $20.25M net after his accounting credit.

Browser checks verified full and partial Seager trades, the resulting shortstop vacancy, assigning the incoming player, undo, and repeated reset. A duplicate React key issue discovered during reset testing was corrected; repeated resets now leave exactly one lineup board. Desktop at 1280px and mobile at 390px/320px were inspected; neither mobile width overflowed. These remain developer checks, not an independent user study.

## Operational boundaries

All edits are local to the open page; reload resets the plan. There is no account data, no saving to the club, no email triggering, and no new background job. Existing game, standings and forecast schedulers remain unchanged/off. Source snapshots are dated and require review after transactions or contract decisions.

Unresolved: full independent payroll bridge; Pederson buyout; Silseth status conflict; 17 reserve-player salary/service classifications; 2027 minimum/CBA; unreported incentives and cash considerations; remaining roster spots and positional legality. Do not interpret this sandbox as a complete or final payroll statement.
