# 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](https://docs.bitmark-association.org/concepts/bit-passport.md), 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.
