Research collected from outside sources and what this site derives from them; every fact links to a saved copy of its source Research or story?
The story as a graph
1554 nodes and 1900 edges in 15 verbs: 515 captures, 454 sources, 363 parties, 70 claims, 68 events, 20 exploitation signals, 17 numbers, 16 advice, 12 tensions, 8 topics, 8 phases, 3 CVEs. Each is drawn from the same rows as the pages, so the picture cannot disagree with the text. Start anywhere, follow a link, and the graph re-centres on it; a node with a thick ring opens a graph of its own.
The interactive graph needs JavaScript. Every node is also on a page: the claims, the sources, the parties, the timeline, the tensions; the whole graph is data/graph.json.
Read it as sentences
Every edge is a verb, and read from the other end it has a different name: Wiz states a claim, the claim is stated by Wiz. There is no edge that only says two things are related. The verbs, with how many edges use each:
| Verb | Inverse | Reads | Edges | Where it comes from |
|---|---|---|---|---|
cites | cited_by | A cites B | 378 | inherited from altitudes.json edge_registry |
states | stated_by | A states B | 146 | proposed here |
relays | relayed_by | A relays B | 46 | proposed here |
counts | counted_by | A counts B | 6 | proposed here |
published_by | publishes | A is published by B | 422 | inherited from governance-beat-ontology |
syndicates | syndicated_in | A syndicates B | 9 | proposed here |
captured_in | captures | A is captured in B | 515 | inherited from portugal-ontology |
appears_in | carries | A appears in B | 140 | inherited from altitudes.json (Concept to Unit) |
flags | flagged_by | A flags B | 25 | inherited from altitudes.json edge_registry |
advises | advised_by | A advises B | 16 | proposed here |
classified_as | classifies | A is classified as B | 138 | proposed here |
names | named_in | A names B | 14 | proposed here |
part_of | has_part | A is part of B | 13 | inherited from governance-beat-ontology |
member_of | has_member | A is a member of B | 29 | proposed here |
works_for | employs | A works for B | 3 | proposed here |
How many voices, not how many pages
A claim is as strong as the number of independent parties that state it, not the number of pages that carry it. A person is counted with the organisation they speak for, and an outlet that passes a statement on is a relay, not a second origin. The fact-check desk grades the same claims by reading their captures (the spectrum of evidence); this is the reading the graph gives from its edges alone.
Echoes: one origin, many relays (4)
- 'Where immediate remediation is not feasible, organisations should consider taking the system offline until it can be fully mitigated' (3 relays)
- watchTowr sees active exploitation attempts and lists the flaws as exploited in the wild (3 relays)
- The Dutch government took NCSC.nl offline as a precaution, with no active misuse seen yet; Dutch press reported DigiD, MijnOverheid and Overheid.nl offline too (3 relays)
- The Wikimedia Foundation took down a number of systems 'as a precautionary measure until they can be safely patched' (4 relays)
Unnamed origins (3)
Stated only by sources a page does not name: a gap in the evidence, not a party.
- The flaws are CVSS 10.0 (0 relays)
- The 8.5.12 fix may be incomplete, or there is a third, different bug (1 relays)
- Criminals are using AI to 'vibe code' an attack method (1 relays)
Every claim
Zooming in: the fractal layers
- A CVE opens the code. The two CVE nodes open the review graph of the fix, which has its own ontology (the flaws, the design of the patch, the files and functions changed) and its own verbs, joined to this one by a named bridge. This is the estate's test of a fractal graph: going down opens a new vocabulary under the same grammar.
- A source opens its captures, and each capture lists its files with their SHA-256. A claim appears in a capture where the fact-check desk found its words there. This step is addressing rather than a new ontology, and is described as such.
- A party opens what it said and what it passed on: the claims and numbers it states, the ones it relays, the sources it publishes, the organisation it is part of. Every party.
- A party steps across into the risk graph. The risk desk keeps its own graph (the risk graph), where parties appear as stakeholders, mostly as classes (WAF vendors, local councils, national governments). data/crosswalk.json declares the bridges: a party is a stakeholder, or is among a class of them; a CVE is the same anchor in all three graphs. Bridges, not a merge: each graph keeps its words.
- A tension opens the claims it flags: the contradiction ledger of the fact-check desk, one node per row, because two claims that disagree are not one edge with the same name both ways.
The ontology
Kinds of node:
| Kind | Altitude | Nodes | What it is |
|---|---|---|---|
| Claim | story | 70 | One sentence this site carries, with its sources and a status word (data/claims.json). |
| Number | story | 17 | A figure someone published, with what it measures (data/numbers.json). |
| Event | story | 68 | A dated moment on the timeline (data/timeline.json). |
| Exploitation signal | story | 20 | One party's report of exploitation, attempts or none seen (data/exploitation.json). |
| Advice | story | 16 | What one agency told operators to do, chiefly whether to take systems offline (data/agencies.json). |
| Tension | story | 12 | A row of the fact-check desk's contradiction ledger: claims that measure differently, dispute or contradict each other. A node, because the grammar has no self-inverse edge. |
| Topic | story | 8 | A class in the topic taxonomy of claims. |
| Phase | story | 8 | A class in the phase taxonomy of the timeline. |
| Party | world | 363 | A person, organisation, agency, outlet, group, registry, platform or project (data/entities.json); its class is in 'class'. |
| Source | evidence | 454 | A page in the evidence vault's manifest (data/sources.json). |
| Capture | evidence | 515 | One time the vault saved a source: its files and their hashes. The first fractal layer below a source. |
| CVE | anchor | 3 | An anchor node: a CVE identifier, where the story graph joins the code-review graph (data/review.json) and the outside world (cve.org). It has no authority of its own. |
Verbs this graph will not use, and why:
related_to: a generic association edge says nothing; the estate bans it outrightmentions: say what the mention does: cites, names, states or relaysassociated_with: genericcontradicts: self-inverse; a contradiction is a node that flags both claimsmeasures_differently: self-inverse; recorded as a contradiction node with tension 'measures-differently'agrees_with: self-inverse, and agreement is read from independent states edges, not asserted
The grammar is the estate's, from graphs.sgit.ai; the files are data/ontology.json (kinds, verbs, taxonomies, formulas), data/entities.json (one node per party, whatever a page calls it) and data/attribution.json (who states each row). The graph is data/graph.json. Kept by the ontologist. The component that draws it is documented for every agent on the graph component page.