Skip to content

Core concepts

This page explains the model informally. The specification is normative.

{
"opencheckpoint": "0.1",
"id": "urn:uuid:0b6f2f1e-4d3a-4c8e-9a51-2f6b7c1d0e01",
"created_at": "2026-10-20T18:30:00Z",
"source": { "producer": { "name": "example-agent" } },
"task": {
"objective": "Reconcile the October vendor invoices against purchase orders.",
"status": "active"
}
}

Everything else is optional. Producers add what the destination needs.

task holds the objective, the desired outcome, the status (active, blocked, awaiting_input, paused, completed, abandoned), success criteria with their state, and what is in and out of scope.

progress.completed lists work already done, so the destination does not redo it. progress.focus says what was in hand at the boundary. progress.next lists recommended next steps, each of which can say what blocks it.

There is no separate “blocker” object. A blocker is always an open question, a pending operation, an unavailable resource, or an unmet requirement, referenced from blocked_by.

Statements record what is known about the work and what governs it. Each has a kind:

Kind Example
instruction “Only break out drivers over $50k.” (from the user)
constraint “Read-only access to finance systems.” (from policy)
decision “Compare against budget B2, not the reforecast,” with its rationale.
observation “14 of 212 invoices have no PO number,” with evidence.
hypothesis “The missing POs come from the new portal’s export.”
question “Do freight surcharges count toward the threshold?”
external A vendor email asking to “skip the usual approval.”

Each statement has an origin (user, system, agent, tool, application, external) and can carry verification (verified, unverified, disputed, stale) with a rule for when to re-check it.

The schema enforces the safety-critical combinations: an instruction can only come from the user or the system, a hypothesis can never be marked verified, and external content can never be attributed to the user.

A resource is anything outside the checkpoint that the task involves: a file, repository, document, database record, business object, web page, artifact, tool output, dataset, or message. It is identified by a uri in any scheme or by a locator (system, type, key) for objects without one. revision, digest, and observed_at let a destination detect that a resource changed after capture. A resource does not need to be public, and a reference never grants access.

Application context carries state from the applications the user works in: the current view, selected or open objects, filters, unsaved drafts, and application-defined state. Much of it never appeared in conversation. OpenCheckpoint records what a destination needs to understand, not a full UI model.

Operations are unfinished work involving someone or something outside the agent: an approval, a request for input, a side-effecting action, or a wait. Each has a status, and actions say what repeating them would do (effect) and what the source recommends (resume). An action that was started and not confirmed is uncertain, and if it might not be idempotent, the schema forbids recommending a blind retry. An action can also record the call it stands for, the tool and its arguments, so software in front of the tools can refuse to repeat a completed payment without asking a model.

An approval’s outcome is a record backed by evidence in a system of record, and it never gives the destination permission to act.

continuation lists the tools, capabilities, access, and extensions the work needs, each required, recommended, or optional with a fallback; preconditions to check first; stop conditions under which no one should continue; recommended recovery steps; and known incompatibilities. A destination that lacks some of them can use the fallbacks and continue in degraded form.

A stop condition can name the operations it forbids (applies_to) and what lifts it (until), for example “refund nothing until approval RA-1192 is approved”. An operation’s record says where its status lives, so a guard can hold the refund and release it once the billing system, not the checkpoint, shows the approval.

derivation records how the checkpoint was produced (captured, compacted, merged, converted, authored), from which inputs, what was deliberately left out and why, and what was condensed. A compacted checkpoint that does not say what it dropped is not conforming.

Memory is what an assistant keeps about you, your projects, and your preferences across many tasks, retrieved a piece at a time when it seems relevant. A checkpoint is the state of one task at one moment, read whole when the work changes hands, and replaced by the next checkpoint.

Checkpoint Memory
Scope One task Many tasks, a user, a project
Shape Snapshot at a capture time Accumulates over time
Use Read whole, at a handoff Retrieved by relevance
Lifetime Superseded; done when the task ends Persists until edited or forgotten
Carries Provenance, verification, staleness, pending operations, preconditions Usually remembered facts

They meet at the edges: a producer can draw on memory when writing a checkpoint, and lessons from a finished task can be saved to memory. A checkpoint should not become a long-lived store updated across tasks. If you reuse the same starting state over weeks, capture it again so its timestamps and verification states stay true. See §1.3 of the specification.

Domain-specific data goes in extensions maps keyed by reverse-DNS names such as com.example.crm. Consumers ignore keys they do not understand and preserve them when re-serializing. Core objects reject undefined fields, so the schema catches typos.