Everything in here is synthetic. No real match has been traced yet.
The one match present, events/synthetic-001.json, was produced by replaying
phase-trace's own test fixtures through a real MatchState and calling its raw
exporter — see tools/make_synthetic_match.py.
It is a genuine phase-trace export of paths a human never drew. It exists so the
converter has something to run against and so the directory layout is real
rather than described. It is not evidence about rugby, and no number derived
from it means anything.
Every record here carries "synthetic": true. When the first real match lands,
that flag is the thing to grep for.
Follows StatsBomb's open-data convention:
competitions.json array of competition-season objects
matches/<competition_id>/<season_id>.json array of match objects
events/<match_id>.json phase-trace raw export, verbatim
All three are written by tools/make_synthetic_match.py.
The scaffolding files restate values that also live as constants in that script,
so they are generated rather than hand-maintained; tests/test_corpus_files.py
holds the committed copies equal to what the generator produces.
events/ holds the producer's export unmodified rather than converted RADL
rows. That is the division StatsBomb and socceraction use: the corpus is raw,
and the action language is built from it on read.
import radl
actions = radl.read_match("data/events/synthetic-001.json", halftime_minute=40.0)Nothing lossy is committed, and a spec revision re-derives the whole corpus without touching a data file.
| field | where | why |
|---|---|---|
synthetic |
competitions, matches | it must be impossible to mistake seed data for a traced match |
halftime_minute |
matches | fallback source for RADL's period column. phase-trace stamps period on every row it writes now (spec §5), so this only matters for exports predating that field |
source |
matches | which producer and which of its exports wrote the file |
match_id is a string rather than an integer. phase-trace assigns no ids, so
the corpus names them, and synthetic-001 says more than 1 does.
lineups/ — phase-trace records jersey numbers only, with no roster, so there
is nothing to put in one. three-sixty/ — no positional tracking exists.