About
What is here
The catalogue is a graph of objects, each with its own page: seasons (first regional to World Finals, with the advancement tree), series (a line of editions under one name, renamings recorded as lineage), contests (the edition: date, sites, what it advances to and who feeds it, CMS ids, its sources and problem set), sources (every catalogued address), problem sets and problems (what the ICPC Problem Archive holds), online judges and locations (one tree: country › region › city › institution). The coverage pages, the grid, the wanted list and the two appendices (CMS id ledger, non-mainline registry) are views over the same data. Every list page filters client-side on its columns and sorts by clicking a header.
Words
A source is an address (URL) the catalogue knows, with the roles it serves (website, scoreboard, frozen scoreboard, standings, rankings, ICPC standings, problem set, judge page, teams) and a health (live, changed, replaced, dead, unknown — the verdict of the last live check, hover any chip for the rule). A snapshot is that address at one time: a Wayback snapshot, or our own live fetch. A capture is our stored copy of a snapshot, with provenance (what was fetched, when, sha256, size, type). The catalogue holds sources; the archive holds captures. Links on a result row: live = the address as is; wayback = pinned to the time meant (as_of) when known, the calendar otherwise; archived (time) = our capture on the public replay; raw = the capture file untouched. A contest advances to its parent; its feeders are the contests whose parent it is. The year in a contest id is the season label (fall regionals carry the season-start year, finals the season-end year), not the date — pages always show both. Nothing about a contest's problems is public before it has run; problems kept private afterwards show name and uuid only. Full definitions: DEFINITIONS.md.
Local archive
Besides the result pages published on the replay site, this project holds a much larger private archive: raw captures of every result page and full crawls of 1708 contest websites (2345 contests with raw captures in all). That is far too big for GitHub Pages, so it is not published yet.
Links marked like this
point at a small server on your own machine (http://127.0.0.1:8123).
They work only if you have the archive repository checked out next to
contests and the server running; for everyone else they give
"unable to connect". Nothing is probed in the background — a link is just a link.
# in your checkout of the contests repo (archive checked out alongside it)
python3 tools/index_websites.py # after new site crawls
python3 tools/serve.py # rebuilds the site with local links, serves on 127.0.0.1:8123
Then browse the catalogue at http://127.0.0.1:8123/ — the same pages as the
public site, with every local link live. The public site's local links point at the same
address, so they work in any browser while the server is up.
- archived site / play back (on a contest's website line): the crawled website, played back page by page from the capture with in-site links kept inside the capture. Links to pages that were not captured go to the Wayback Machine (for crawls taken from a snapshot) or to the live site. The wayback link next to it is pinned to the exact snapshot the crawl used.
- raw (on a result row or a capture row): the captured file exactly as fetched, no banner, no rewriting.
- raw files: the contest's folder in the archive repository — every capture as stored (hashed filenames, manifests), results and website alike; for inspection, not for reading.
When the archive gets a public home the only change is the host these
links point at (LOCAL_ARCHIVE_BASE in tools/build_site.py).