Skip to content
This site is continuously updated. Last updated:

The Watch · Structured Data

The record, as data.

Everything this site asserts is downloadable — the graph, the timeline, the corrections — in the same shape the site itself renders from. Take it, check it, build on it. If you find an error in it, the reporting line is on the About page and the fix will land here first.

/graph.jsonGET · static · CORS open · ~1.5 MB

The full public knowledge graph: 954 nodes and 1861 edges — every person, organization, claim, event, and document, each with its verification tier and sources. Actor nodes map to dossier pages via the routes table.

curl -s https://projectjupiter.watch/graph.json | python3 -c "import json,sys; d=json.load(sys.stdin); print(d['counts'])"
/timeline.jsonGET · static · CORS open · ~150 KB

All 138 dated entries with sources, tiers, and each entry’s “why this matters” — plus the interpretive clusters, the proximity runs, the margin notes, and the full Friction Ledger.

curl -s https://projectjupiter.watch/timeline.json | python3 -c "import json,sys; [print(e['display'],'·',e['head']) for e in json.load(sys.stdin)['data']['entries'][:5]]"
/corrections.jsonGET · static · CORS open · ~15 KB

The 19 public corrections, newest first, each with a stable anchor id — what the site said, what is correct, and how the error was caught.

curl -s https://projectjupiter.watch/corrections.json | python3 -m json.tool | head -40
/entities.jsonGET · static · CORS open · ~1 MB

Every person and organization, one flat record each — structured profile, sources, the timeline entries that involve them, and every relationship resolved to one of 32 canonical predicates with its inverse. The ontology itself ships in the same file.

curl -s https://projectjupiter.watch/entities.json | python3 -c "import json,sys; d=json.load(sys.stdin); [print(e['id'],e['name'],len(e['relations'])) for e in d['data']['entities'][:5]]"

How to read the tiers

Every claim, node, and timeline entry carries a verification tier. The ladder, canonically:

tiermeaning
primary-sourceRead off the primary document itself
confirmedTwo independent accounts agree
caveatedTrue with a stated limit on it
contestedDisputed by a named party; both positions carried
correctedWas published wrong; the correction is logged at /corrections

A tier the data will never contain: to-verify. Entries at that tier are withheld from publication entirely rather than shipped with a caveat.

Field reference

endpointfieldnotes
graph.jsonnodes[]id, type, label always; verification, summary, sources, tags, role_line, date, quote, status as available. sources entries are label · url · kind.
graph.jsonedges[]source · target · type — node ids on both ends; type is a relationship verb.
timeline.jsonentries[]id doubles as the page anchor (/timeline#id). node and actors reference graph node ids. ledger marks Friction Ledger membership.
timeline.jsonproximity_runs[]Entries close together in time. The phrase states the closeness — deliberately nothing else.
entities.jsonentities[]id, type, name, url, verification, profile, summary, sources, relations, timeline, updated. profile is null until written; its src arrays index into the same record's sources.
entities.jsonrelations[]predicate (canonical) · raw (the graph's own verb) · direction (out = this entity is the subject) · target, target_type, target_name, target_url.
entities.jsonontologyThe predicate list with inverse labels, and every controlled vocabulary a profile may use.
corrections.jsoncorrections[]id is permanent — cite /corrections#id. said, now, how: what was published, what is correct, how it was caught.

Terms

License: Creative Commons Attribution 4.0 (CC BY 4.0). Reuse, republish, and build on this data — with attribution.

Cite as: “the Project Jupiter Watch, projectjupiter.watch”

The data reflects the record at build time and changes as the record does — corrections land here as fast as they land on the site. Anyone named holds a standing right of reply. If you republish something this record later corrects, the corrections log is how you find out.

The hearing has passed
The Watch stands.

The decision was due July 21. Instead: a public hearing — first set for October, then moved up to September 14 at the applicant’s request — and a ruling due by November 23. A $165B question for one desert county, on a schedule that keeps moving. The clock above always shows the next date that matters. Until the ruling, and after, this is the public watch on how it’s being made.