Versions and updates

Proposal · not yet in the parser

A reader that holds a document wants to fetch only what changed. Each bit gets two version fields for that: a content hash and the date it was last modified.

Today

  • Every bit keeps its ID from one edition to the next, and a bit can also keep the customer's own ID, so a reader matches old and new bit by bit.
  • bitmark diff old.bitmark new.bitmark compares two documents as meaning, not as text, and shows every change as the bitmark an author would write.

Proposed: a hash and a date per bit

Field What it is Written by
Content hash A hash of the bit's content in canonical form, leaving out its IDs and the passport The parser, on output
Last modified The date and time the bit last changed The platform that edits the content

A reader compares the hashes it holds with the new ones and refetches only the bits that differ. Because the hash covers content only, a bit moved to another platform with new IDs keeps its hash. The edition of the whole document belongs in the bit passport, not in each bit.

json
{"bit": {"type": "p", "id": ["a1"], "customerId": "p_4_1", "hash": "…", "lastModified": "2026-11-01T09:30:00Z", "body": "…"}}

The field names are drafts.