Contracts and Salary
Purpose
This page defines contract and salary rules that are currently enforced by contract models, forms, and transaction flows.
Policy
- Active contracts are stored in
ContractLogand includestart_season,length,current_year,current_payment, and active status fields. - Per-year terms are stored in
ContractYearrows linked to each contract. - Contract-year option types are limited to:
NonePlayer OptionTeam OptionRookie Option- Contract form constraints enforce:
- contract length between 1 and 4 years
- current year between 1 and 4
- current year cannot exceed contract length
- Contract-year form constraints enforce:
- each entered year must include both year number and payment
- at least one complete contract year is required to save
- year numbers must be unique per contract form submission
- Standard offer creation endpoints are restricted to the
FREE_AGENCYphase. - Offer acceptance for non-extensions is restricted to
FREE_AGENCY; extension acceptance is exempted from that specific gate. - Offer target season selection is phase-aware:
- during
MORATORIUMorFREE_AGENCY, offers target the current season record - otherwise, offers target the next season record
- Team and rookie option decisions are restricted to
MORATORIUMorFREE_AGENCY. - Player option decisions are owner-scoped; declining a final pending option during
MORATORIUMcan release the player and set extension rights to the prior team. - Salary payment logging enforces a seasonal SP ceiling through configured
MAX_SP_SEASON.
Operational Notes
- The player record tracks contract linkage and rights states (
rights_holder,extension_rights_team) used by option and free-agency flows. - Option decision visibility and behavior are phase-dependent and validated in views/tests.
Known Gaps (TBD)
- Public-facing cap-table policy and hard/soft cap interpretation.
- Offer expiration windows and expiration-reason policy text.
- Clause policy details (
no_trade_clause,no_release_clause) for enforcement and exceptions. - Contract invalidation and correction/remediation policy text.
- Dispute and audit policy for contract data changes.
Change Log
- 2026-03-15: Initial scaffold created.
- 2026-03-18: Replaced scaffold with repository-backed contract and salary policy baseline.