Skip to main content

Runtime Patches

A runtime Patch changes the materialized graph of one Run. Patch constructors produce request documents; they do not change the authored Workflow definition or later Runs of that definition.

Wait for application

Patch submission and Patch application are distinct stages. A Task that depends on the changed graph must wait until the Patch reaches Applied.

Address live structure

Runtime operations address graph structure by the short identity code exposed with the live graph, or by its full UUID. Do not copy an identity from another Run: runtime structure belongs to one materialized graph.

Insert a chain

mkChain interposes one or more Tasks after an anchor:

tickr.mkChain {
anchor = "AB12",
steps = [
{ handle = "prepare", task = prepare_task },
{ handle = "publish", task = publish_task },
],
reason = "expand the publishing path",
}

Handles are scope-local author names. Tickr mints runtime node identities for the leaf Tasks and reconnects the anchor's successors.

Fork and rejoin

mkFork grows parallel arms and re-seats the anchor's successors behind a barrier over every arm tail:

tickr.mkFork {
anchor = "AB12",
arms = [
{ handle = "left", steps = left_steps },
{ handle = "right", steps = right_steps },
],
reason = "process both derived partitions",
}

The successor grounds only after all declared arms ground.

Public Patch constructors

ConstructorGraph operation
mkInsertInsert one Task after an anchor
mkChainInsert an ordered scope-tree of Tasks
mkForkInsert parallel arms with a barrier join
mkBranchInsert conditional branch structure
mkExpandExpand selected live structure
mkSwapReplace live structure
mkCutRemove an addressed section and reconnect
mkPruneRemove unreachable or selected structure
mkTrimRemove structure at a boundary
mkTruncateRemove structure beyond a boundary

The exact closed-record fields are release-specific. Use the Core DSL reference for the selected documentation version and validate Patch source with the bundled DSL before submitting it.

Deterministic example

The release archive includes examples/runtime-patch.ncl. Given the same integer seed, it derives the same two arm lengths, applies one mkFork Patch, waits for Applied, and then runs both arms before the final summary Task.