MiscSubjects

The Graph

The Graph

One store. Every object in it is stored once, under one slug, and every page is a rendering of its object. A page embeds other objects by reference; editing the referenced object changes every page that embeds it. Nothing is copied between pages.

Writes go through one REST contract (linked below): add, read, edit, delete, query. Every edit is checked against the object's current hash. Every object carries a SHA-256 hash, and the export manifest lists all of them.

The demo — two objects, four surfaces

Below are two stored objects embedded by reference: a person and a house. On the person's own page, the house appears under "Prior address." On the house's own page, the person appears under "Prior resident." One person object, one house object, one stored relationship — rendered from both sides. The house's Zillow, Redfin, and realtor listings are three further objects, stored separately from the house.

Person
CG

Cyrus Geav Massoumi

First name
Cyrus
Middle name
Geav
Last name
Massoumi
Property

337 Melrose Avenue, Mill Valley

A three-bedroom home in Mill Valley, with listings, a photograph, its associated parcel and two county permit records.

Scale — measured 2026-11-04

Canonical layer: 582 published objects in 61 kinds. Largest kinds: standard 88, procedure 85, article 58, essay 35, technical 32, life-event 24, publication 24, collection 21, systems 21, social_profile 18.

Atlas layer, counted by kind through the query API: permits 356,695 · parcels 96,253 · people 6,658 · organizations 938 · counties 59 · cities 27.

Total queryable objects: 461,212 or more — the Atlas has no kind census, so its kinds were counted by querying 30 kind names; any kind not queried is not in this sum. Draft and unpublished records are excluded from every count above.

Live queries — these pages are query results, not documents

The contract

POST /api/jarticles adds an object (201; duplicate slug 409). GET /api/jarticles/<slug> returns the record and its hash. PATCH /api/jarticles/<slug> edits it, carrying the current hash in If-Match (stale hash: 412). DELETE removes it under the same rule. POST /api/jarticles/query queries by kind, by field, and by typed relationship — for example, people connected by resides_at to houses on a named street, current relationships only.

Full contract: graph-rest-contract/1. The same operations run from any Google Sheet: the Sheets guide.

Receipt — the write cycle, executed 2026-11-04

A test person was added through the contract (HTTP 201, version 1, hash issued), read back, appended to by PATCH (HTTP 200, version 2, new hash; the appended fact verified in the record), deleted under its hash (HTTP 200), and read again (HTTP 404). Add, read, append, delete — each step confirmed by the next.