Write History
WarmHub records the full version history of every shape and shaped thing. There is no separate commit log and no repo-wide commit list. Use the per-entity version trail instead.
Per-Entity History
Section titled “Per-Entity History”Via CLI
Section titled “Via CLI”# Show every version of a shaped thing, newest firstwh thing history Sensor/temp-1
# Shapes have the same version trailwh shape history Sensor
# JSON output for programmatic consumptionwh thing history Sensor/temp-1 --jsonExample output:
History: Sensor/temp-1 thing Sensor/temp-1@v3 revise 1m ago Sensor/temp-1@v2 revise 10m ago Sensor/temp-1@v1 add 1h agoEach row shows: pinned wref, operation kind, and relative time. Use
--json for the full structured history payload.
Via MCP
Section titled “Via MCP”{ "name": "warmhub_thing_history", "arguments": { "wref": "Sensor/temp-1", "limit": 20 }}Via SDK
Section titled “Via SDK”await client.thing.history(orgName, repoName, { wref: "Sensor/temp-1", limit: 20,})What’s In The Result
Section titled “What’s In The Result”| Field | Meaning |
|---|---|
wref | Pinned wref of the version, e.g. Sensor/temp-1@v3 |
version | Monotonic version number per entity |
operation | add, revise, or retract |
createdAt | Timestamp (unix milliseconds) |
data | The version’s payload (snapshot at that version) |
active | Whether this version is active in the current history view |
retractReason | Optional reason recorded on a retract operation |
thingName, thingKind | Present on every row |
shapeName | Present on every row except those whose target is itself a shape |
committerWref | Local or canonical wref of the committer shape or shaped thing when the originating write recorded one. |
aboutWref | The assertion’s pinned about-target, e.g. Target/secret@v1 (assertion rows only) |
More on aboutWref. An assertion’s target is fixed when the assertion is created, so every history row for one assertion carries the same value — it does not track a target that moved between writes. The field is absent on non-assertion rows, and on assertion rows whose target lives in a repo that has been deleted or hidden. If the target’s repo still exists and you simply lack access to it, you do still get the field — a pinned reference to the target. To browse assertion version trails directly, use wh assertion history (see the CLI reference and the assertion data model).
Filtering
Section titled “Filtering”wh thing history accepts --limit to bound the page and --cursor for
pagination. There is no committer filter today — filter the JSON output
client-side if you need it.
Per-entity history is the source of truth for write history. Each entry is a versioned snapshot for one entity — whether a shaped thing or a shape itself — so audit and rollback workflows start from the affected wref rather than a repo-wide commit envelope.
Shapes have the same immutable version trail through wh shape history and
client.shape.history(...). A shape’s current name addresses all of its
historical versions; after a rename, old name spellings — even old @vN
spellings — no longer resolve.