Same name is not always the same measure.

Use this contract when comparing a saved forecast, an event map and a retrospective match review. Definitions were traced to the implemented database and model code on 30 September 2026.

Eligibility is specific to the source

Repository definitions checked 2 October 2026; deployed database settings were not re-audited for this documentation change. A frontend minimum is not proof of a database eligibility rule.

Player percentiles: six nineties in the committed definition
mv_player_percentiles in the 31 August baseline and generated cup-isolation SQL requires six nineties and a non-null metric. It partitions by league, role pool and metric. This is the view queried by Player Fingerprints.
Separate player percentile view: three nineties
mv_player_pct, defined in the 7 August multileague migration, uses three nineties. It is a different source; the two thresholds must not be described as one universal site rule.
Other samples
Chain-role profiles require 120 involvements in their documented source. Team insights use their returned club-match threshold. Worked searches can deliberately use stricter filters, including six nineties. Check the actual returned cohort and metric coverage; eligibility alone does not establish reliability.

Expected threat: two valid totals

Net successful-pass xT · all phases
For every successful pass with an endpoint, subtract grid value at the start from grid value at the end. Keep negative changes. Aggregate across every phase. The saved sequence-based team measure uses this definition.
Positive successful-pass xT · open play
Use only open-play successful passes, discard negative gains, and sum the rest. Some maps show only gains above 0.02: that display threshold is not the total's filter. Inferred carry xT is separate and must not silently be added to pass xT.

Historical worked example — Brighton–Arsenal, 19 September 2026, audit captured 30 September: net all-phase pass xT is 2.997–3.431; positive open-play pass xT is 3.073–4.405. These saved totals reconcile under their own definitions; they are not a live feed.

Expected goals: fitted version matters

The live shot view uses distance/angle/header/big-chance bins, with a 20-shot base-rate smoothing term; penalties use 0.76. Its bin pool includes all available non-penalty shots and can change after refresh. These are FutScout fitted estimates, not provider-branded xG.

Always retain the observation date and snapshot. A freshly fitted value for an old shot is retrospective evidence, not proof of what was available before kickoff. Point-in-time training requires its own cutoff-controlled fit.

The saved Brighton–Arsenal report has non-penalty xG of 1.7225–1.0978. The captured shot feed totals 1.7156–1.0923. Neither snapshot has been overwritten to hide the difference.

Feature effects: not extra goals

The Poisson models estimate log goal rates. A numeric feature's contribution is its transformed value multiplied by its coefficient. The displayed directional balance subtracts the away contribution from the home contribution. It is not literal goals, probability points, or causality.

Rolling suffixes 3, 5 and 10 mean trailing-match windows. New explanations retain the raw input, model input, scaled value and coefficients. Legacy explanations that lack this ledger remain clearly marked; they are not reconstructed with newer data.

Research versus frozen evidence

Same fixture names alone do not make a fair live comparison. Frozen candidates need matching fixture manifests, feature bundles and source-row hashes, capture within the declared cutoff window, complete eligible fixture coverage, and a successful tournament audit. Research comparisons do not establish promotion eligibility.

Postponements remain explicitly accounted for. Missing leagues, duplicate identities, changed kickoffs and late backfills fail validation. A genuinely empty week is not a new scored weekend.