Skip to content

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.

Terminal window
# Show every version of a shaped thing, newest first
wh thing history Sensor/temp-1
# Shapes have the same version trail
wh shape history Sensor
# JSON output for programmatic consumption
wh thing history Sensor/temp-1 --json

Example 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 ago

Each row shows: pinned wref, operation kind, and relative time. Use --json for the full structured history payload.

{
"name": "warmhub_thing_history",
"arguments": {
"wref": "Sensor/temp-1",
"limit": 20
}
}
await client.thing.history(orgName, repoName, {
wref: "Sensor/temp-1",
limit: 20,
})
FieldMeaning
wrefPinned wref of the version, e.g. Sensor/temp-1@v3
versionMonotonic version number per entity
operationadd, revise, or retract
createdAtTimestamp (unix milliseconds)
dataThe version’s payload (snapshot at that version)
activeWhether this version is active in the current history view
retractReasonOptional reason recorded on a retract operation
thingName, thingKindPresent on every row
shapeNamePresent on every row except those whose target is itself a shape
committerWrefLocal or canonical wref of the committer shape or shaped thing when the originating write recorded one.
aboutWrefThe 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).

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.