Gessa Docs
Generated Reference

Reference

Authoring History / Undo-Redo Contract (generated)

Sources: web_client/spa/src/authoring-history/types.ts, web_client/spa/src/workspace/workbench-surface-contracts.ts, web_client/spa/src/authoring/actionPolicy.ts.
engine v1.0.234Copy for LLM

The launch-grade undo/redo subsystem. Undo/redo is scoped by the active editable document, descriptor-backed (not closures), durable, and re-submitted through the authoritative Project Graph transaction path. See docs/architecture/authoring-history-undo-redo-contract-final-plan.md.

Descriptor schema version: authoring.history.v2.

Descriptor fields (AuthoringHistoryEntryV1)

FieldMeaning
schemaVersionversioned descriptor tag (authoring.history.v2)
idstable entry id
projectId / actorIdowning project + actor (per-actor undo)
scopeKind / scopeKeydocument | workspace | project + the canonical scope key
surfaceId / resourceKind / resourceIdresolved active surface + resource identity
labelhuman-readable history label
forwardOps / inverseOpsgraph ops to redo / undo (op-inverse derived)
forwardScript / inverseScriptscript-IR redo / undo payload (Semantic Patch entries)
baseRevisiongraph revision the entry's state is valid at
baseTargetVersionstargetKey -> the resource version this entry's write produced
idempotencyKeystable key for retry-safe submission
createdAt / committedAt / undoneAt / redoneAtlifecycle timestamps
statuslifecycle status enum (below)
receipt{ transactionId, revision } when known
conflict{ code, message, target } typed conflict when blocked

Status lifecycle

pending, committed, queued, undo-queued, redo-queued, conflicted, undone, redone, rejected

Typed conflict codes (non-destructive, per-actor + per-scope)

authoring_history_conflict_target_changed, authoring_history_conflict_deleted_target, authoring_history_conflict_revision_gap, authoring_history_conflict_scope_unavailable

Per-surface undo scope

SurfaceundoScopeScope key format
designauthoring-historydesign:world:<worldId>
uiauthoring-historyui:ui-panel:<panelId> (or ui)
scriptauthoring-historyscript:<resourceKind>:<resourceId>
workflowsauthoring-historyworkflows:<resourceKind>:<resourceId>
prefabauthoring-historyprefab:<resourceKind>:<resourceId>
material-editorauthoring-historymaterial-editor:<resourceKind>:<resourceId>
model-editornonemodel-editor:<resourceKind>:<resourceId>
datanonedata:<resourceKind>:<resourceId>

authoring-history = the canonical scoped kernel. surface-local is allowed only for genuine native/editor text state. none = read-only/non-authoring.

Operations that MUST produce a descriptor (undoPolicy: required)

entity.create, entity.update, entity.delete, component.put, component.patch, component.field.patch, component.delete, prefab.override.mutate, script.semantic_patch.apply, project.graph.transaction.apply

Was this helpful?Report an issueContact support

On this page