Research pipeline for The International 2026, Dota 2's annual world championship. It traces a compendium prediction card—a one-shot, locked assignment of teams to placement categories—from match data through ratings and simulation to tournament postmortems. Its contribution is an auditable chain from inputs to decisions, including negative results. Maintenance is retrospective only; repeat-event predictive skill remains unproven.
The frozen corrected card matches a plain strength sort, and some assignments change across simulation seeds; see card provenance for both diagnostics.
Use a full-history checkout. Setup may download the locked dependencies; the verification command reads committed inputs offline. Release verification targets Python 3.13, while the package floor is declared in pyproject.toml.
uv sync --locked --python 3.13
.venv/bin/python -m ti26.cli_provenance verify-run \
--bundle reports/runs/frozen-output-oracle-baseline/61c63f4aa32c573cdbc7e4abe48e08308801f1ff3cb8e5629a4ae446d5d22b6b \
--repo-root . --at-source-revisionThis checks the bundle's declared inputs as Git blobs at its recorded source revision and checks the current output bytes. It does not attest original execution or undeclared runtime dependencies. The reproduction guide covers store reconstruction, postmortem replay, artifact bindings, and the optional full forecast replay.
| Evidence | What it supports |
|---|---|
| Frozen corrected forecast and card provenance | The retained Swiss-stage assignment and the assumptions used to generate it. Map calibration does not establish card calibration. The group replay manifest binds this card for retrospective evaluation, not original-run provenance. |
| Historical bundles | Source revisions, declared inputs, output hashes, producer arguments, and recorded randomness. New descriptors bind the lock; older manifests retain their original scope. |
| Group postmortem, playoff postmortem, and replay manifests | Retrospective diagnostics. Group results feed playoff strengths, so they are not independent replications; replay manifests do not prove original execution. |
| External playoff cards and frozen LLM evidence | Owner-generated comparisons with consumer AI apps, not a controlled model benchmark. Prompts and settings are not recorded; see data sources. |
| Known weaknesses | Raw ratings did not clear the constant baseline; calibrated Glicko cleared the narrowly registered D3b gate. Simulated category marginals condition on point strengths and assumed rules, without propagating Glicko rating-deviation uncertainty. |
| Series scoring | Positive historical diagnostic; shared tournament conditions limit its nominal significance calculation. |
Registered gates remain immutable. Diagnostics cannot promote, demote, or change the shipping card.
flowchart TD
A[Hashed OpenDota snapshots] --> B[Rebuilt SQLite store]
B --> C[Roster ratings and calibration]
T[Team and alias configuration] --> C
D[Rules configuration] --> E[Simulation and constrained assignment]
C --> E
E --> F[Frozen corrected forecast card]
F --> G[Group postmortem]
H[Observed tournament outcomes] --> G
The OpenDota explorer and Steam news take injectable transports; release runs read pinned bytes. Roster identity follows the five-player roster rather than the organisation, internal simulation labels follow strength rank, and producers write reports before release orchestration adds bundle references.
The project layout keeps implementation in src/ti26/, registrations in config/, inputs in data/, generated evidence in reports/, and research history in docs/.
- Documentation index distinguishes current guides, research evidence, specifications, and plans.
- Correction register records corrections to earlier unsupported claims.
- Release checklist records the release history and continuing verification conditions.
Read CONTRIBUTING.md for mutation evidence, bound measurements, and offline checks.
Local tests deny Python socket connections and transmissions; CI isolates verification commands from the network. See the reproduction guide for details.
.venv/bin/python -m pytest -q
.venv/bin/python -m ruff check .Code and original documentation use MIT. Third-party data and text retain separate rights; see data sources. Player identifiers are not anonymous. See the security policy and citation.