Results & Standings

Recording a result

A match's result is edited in the Match Result screen for that match. Every result has a status_code — the match starts as draft and is marked final when confirmed (a finalized_at timestamp is set automatically the first time a result is saved as final). Which status codes are actually available depends on the sport profile assigned to the project (result_status_codes in the profile).

The score itself is not a single fixed field — its shape is defined by the sport profile's match.score contract:

  • type is one of numeric_score, nested_score, time_result or decision_result.
  • value_type is integer, decimal or duration (or structured for decision_result).
  • The profile can define a tree of score segments (segment_types, each with a code, parent_code and ordinal) — for example a result that's built up from multiple periods rather than a single number. This is profile-defined, not hard-coded to any one sport.

If the profile defines aggregation rules for the score, the editor either derives the overall result from its segments automatically, or validates that the segments you enter add up to the overall result you entered, depending on the profile's aggregation.mode (derive or validate). This can be limited to only apply once the result is final (aggregation.final_only).

Saving a final result automatically triggers a standings recalculation for the affected project/stage.

Standings

Standings are computed per project, optionally scoped to a single stage, and further scoped by a scope code (e.g. an overall table vs. some other split) — the set of valid scopes for a project is defined by its sport profile's calculation.scopes; a project's profile must define at least one scope. Current standings are cached and can be explicitly recalculated from the admin standings screen.

Standing adjustments

Standing adjustments let you manually alter a specific entry's standing — for penalty point deductions, corrections, etc. Each adjustment records:

  • project_entry_id — which entry the adjustment applies to.
  • scope_code — which standings scope it applies to (defaults to all).
  • metric_code — which metric is being adjusted (the available metrics come from the project's sport profile, similar to scopes).
  • adjustment_value — the numeric amount (positive or negative, decimals allowed).
  • reason — a required explanation, up to 500 characters.
  • effective_date — an optional date the adjustment applies from.

Adjustments are ordinary published/unpublished records, so one can be disabled without deleting it.