- what work exists?
- what is blocked?
- what is ready?
- who claimed it?
- what evidence supports completion?
- what is terminally done, failed, or cancelled?
work_graph capability is not enough by itself. Every agent build
must also receive a host-issued WorkGraphNamespaceGrant for one exact realm
and one immutable namespace. The service rejects cross-realm, cross-namespace,
and all_namespaces requests through that grant.
Mental Model
WorkItem is a durable commitment. Edges describe topology such as
blocks, parent, related, supersedes, and derived_from. Readiness is
derived by the WorkGraph subsystem from item state, time gates, claims, and
topology.
What WorkGraph Owns
- item lifecycle status
- dependency legality and graph topology
- readiness and claimability
- claim ownership, leases, and revision checks
- terminal state
- evidence references
- direct-child join policy
- event history and current-state projections
Boundaries
Mob Flow Execution Bindings
A WorkGraph item describes durable truth. A Mob Flow run is one bounded attempt to make that truth hold. Meerkat links them through a durable execution binding without merging their state machines. After authority admission, the binding is committed before Flow execution and records the exact mob, Flow, effective run-config digest, deterministic run id, activation parameters, idempotency key, and retry predecessor.WorkExecutionLifecycleMachine owns the cross-system handoff phases. Mob
remains the only owner of run status and outputs. WorkGraph remains the only
owner of evidence and completion policy.
Launch realization has its own durable ordering. The Mob actor first persists
the exact deterministic pending run, then advances the external-delivery
ledger from begun to realizing, then commits the Mob lifecycle transition
and starts execution. Consequently, a valid realizing record always has an
independently observable run. A crash before pending-run persistence leaves a
begun delivery whose absence can be adjudicated. A crash afterward recovers
the same run instead of launching a replacement.
A completed Flow therefore requests an idempotent evidence projection. It does
not directly complete the item. The bridge then asks WorkGraph to close the
item, and WorkGraph either admits closure under its policy or leaves the item
open with the evidence attached. Execution evidence ids are reserved from
general WorkGraph mutations. Recovery consumes an already committed execution
evidence record before requiring the Mob run to remain present.
Ambiguous launch is fail-closed. If the durable Mob delivery intent exists but
the deterministic run is absent, reconciliation records launch_uncertain and
does not blindly execute the Flow again. A realizing record without that run
is a quarantine condition, not retry authority. Resolving it is an explicit
exact-run recovery obligation. The public bridge has no caller-asserted
break-glass transition; it remains fail-closed until the deterministic run is
observed or a future sealed host authority proves a safe resolution.
Namespaces
Every item belongs to a realm and namespace. The standard persistent surfaces grantdefault. An embedding host may issue another namespace, but a session
still receives exactly one grant and must use it consistently. Namespace
renames are unsupported because the namespace is durable identity; archive the
old namespace and mint a new one instead.
Parent And Child Joins
Aparent edge points from child to parent. A parent is not ready while any
direct child is active. Its failed_child_join_policy and
cancelled_child_join_policy independently decide what terminal child failure
or cancellation means:
require_successkeeps the join unsatisfied.propagateterminalizes the parent with the same failure class when a readiness/claim observation reconciles the join.accepttreats that child terminal as satisfying the join.
require_success. blocks edges are stricter:
their source satisfies the edge only by reaching completed.
Durable Facts, Not Timers
WorkGraph commits typed facts such asitem_ready, lease_expired, and
namespace_terminal in the same durable mutation that first observes them.
It never owns a timer or wake loop. Schedule or another trusted host may cause
the observation; WorkGraph revalidates graph state and owns the resulting
fact. An elapsed lease is therefore not silently released by wall-clock time
alone.
Surfaces
Agents mutate general WorkGraph items through WorkGraph tools. Host APIs, REST, and CLI expose observability so humans and UIs can inspect items, ready work, snapshots, events, goal status, and attention bindings. CLI and trusted in-process hosts additionally expose narrow session-goal attention controls; public REST/RPC remain observational for those controls. The public Mob MCP surface exposesmeerkat_workgraph_flow_launch,
meerkat_workgraph_flow_reconcile, and
meerkat_workgraph_flow_abandon_uncertain for managed Flow execution. Typed,
redacted meerkat_workgraph_flow_binding_get and
meerkat_workgraph_flow_binding_list tools expose linkage without activation
parameters, idempotency material, correlation ids, or execution principals.
Ordinary Flow status includes the same redacted reverse binding reference when
the run belongs to a WorkGraph execution. The Mob
host reconciles on startup and on Mob machine-state changes; explicit
reconciliation is an observation/recovery trigger, not the liveness owner. A
slow safety tick retries transient store or runtime failures that do not emit a
watched state change.
Remote members
do not receive a replica of the WorkGraph store. The controlling host owns the
binding, launches local or remotely placed Flow steps, and projects terminal
evidence back into that same WorkGraph authority.
Durable jobs compose through the same ownership rule. DetachedJobMachine
owns execution and terminal result, while a terminal evidence projector adds a
typed reference to the item and asks WorkGraph to close it under its existing
completion policy. A scheduled job likewise leaves time with Schedule and
execution with the jobs subsystem.
