How it was built

Where the numbers come from, who checked them, and who is responsible.

Where the numbers come from

Nothing on this site or in the test kit was made up. Every expected value in the kit comes from a real answer that CelesTrak gave on 21 September 2026, and each answer’s web address, time and fingerprint (a SHA-256 hash) are written down. The example satellite used on every page here comes from the printed international standard, not from live data.

Who checked it

Before publication the kit went through an independent audit: a separate reviewer, with no access to the notes of the people who built it, recomputed every value from the raw responses with its own code. It found no wrong value, and a list of documentation problems that were then fixed. The audit report is public, including the findings.

AI, under human direction

The kit and this site were built with an AI coding assistant (Anthropic’s Claude) working under written rules and step-by-step human review. The AI was not allowed to invent data, had to record every decision in a public log, and could not publish anything on its own. The auditor was also an AI, in a separate session, told to trust nothing in the repository. This is stated plainly so you can weigh it.

Who is responsible

The corpus and this site are maintained by Honorius Neogy and published by NEOGY LLC under the MIT licence. If you find a mistake, the most useful report names the case, the file’s hash and the field; open an issue on the corpus repository.

What this site will never show

  • No orbit data copied from CelesTrak: only counts, yes/no answers and times.
  • No values from operator-supplied (SupGP) data.
  • Nothing from Space-Track, whose terms forbid passing its data on.
  • No requests to CelesTrak caused by you visiting. A scheduled job fetches a few pages a day; the site only shows what it computed.
  • No trackers, no cookies, no outside scripts. The tools run in your browser and send nothing.

Provenance, verification, the audit, AI assistance under human direction, and the rules this site is built under.

Provenance of the corpus

  • No element set was invented. Every value traces to a CelesTrak response whose URL, retrieval time and SHA-256 are recorded in manifest.json, to a published standard cited by clause, or to a committed, labelled transformation of such a record (derived/, each with a provenance sidecar).
  • Raw provider files are not redistributed. CelesTrak states no redistribution terms and silence is not permission; tools/fetch.py rebuilds the fixtures on your machine under CelesTrak’s own policy, once, cached, never looped, and reports hash drift for stable sources.
  • Verification. Expected values were produced by reference readers written from the format documents and cross-checked record by record against python-sgp4 and Skyfield; the renderer behind the derived TLE lines reproduced 304 of 304 CelesTrak lines byte for byte. Where a specification and provider practice disagree, both are recorded as an ambiguity and neither is silently chosen.
  • Space-Track. Its user agreement prohibits transferring its data, so none is in the corpus or on this site. The maintainer verified the Alpha-5 encoding against their own Space-Track account with a tool that prints verdicts only (decision D-070); a name guard in the repository refuses any Space-Track-named path.

The independent audit

Completed 2026-09-21 before publication, at commit 4db7d2a. The auditor was a separate AI session with no access to the building session’s context, instructed to trust nothing in the repository and to recompute values independently. It made 65,887 field-level comparisons across every record of every case, all agreeing with the frozen expected values, and confirmed all 128 recorded hashes, byte counts, statuses and record counts. It found three false statements in public documentation, several overstated claims, two decisions never implemented and minor inconsistencies; every finding and its resolution is in AUDIT.md and DECISIONS.md (D-054 onward). It was not a human review.

AI assistance under human direction

The corpus was built with Anthropic’s Claude operating as a coding agent under a written decision policy (CLAUDE.md): decide technical matters autonomously, log every non-trivial choice, reversal and correction in an append-only DECISIONS.md, fix weak provenance without asking, and stop for anything involving terms, credentials, publishing, contacting people or spending. Work ran in phases, each ending in the owner’s review. This site was built the same way, with its own DECISIONS.md; the catalog change it documents happened after the model’s training data ends, so nothing rests on the model’s memory of the domain.

Upstream

  • python-sgp4 #171: empty <OBJECT_ID/> import failure, filed from the corpus; the fix is PR #172, submitted at the maintainer’s invitation, awaiting review.
  • python-sgp4 #169 / PR #170: nine-digit ids, reported independently before the corpus existed; the corpus tested the PR across all sixteen cases and reported the result.

This site

  • Static HTML built by a small Python script (Jinja2 templates), served from Cloudflare Pages; no framework, no external scripts, fonts or images; a strict Content-Security-Policy (connect-src 'self', form-action 'none') so the tools cannot send anything anywhere.
  • The tracker and library data are produced by scheduled GitHub Actions jobs that commit computed JSON; the pages are rendered from that JSON at build time and work without JavaScript. Visitors never trigger a request to CelesTrak.
  • Fetch etiquette: at most ten CelesTrak requests per day (five daily endpoints plus at most four weekly drift checks), each URL once per run, a User-Agent naming the project and this site, no redirects, no retries, two seconds between requests. The policy is enforced in code and tested.
  • Shown data: counts, yes/no states, HTTP statuses, byte counts, hashes and timestamps. The only element sets on the site are the CCSDS annex G example and the corpus’s published derived Alpha-5 example.

Responsibility and licence

Maintainer: Honorius Neogy. Publisher and copyright holder: NEOGY LLC. Code, text, vectors, derived files and expected values are MIT-licensed. Provider data is not included. To cite the corpus use its CITATION.cff: concept DOI 10.5281/zenodo.22867654, version DOI 10.5281/zenodo.22867655 for v0.1.0.