pub struct ResumeOptions {
pub stop: CancellationToken,
pub platform: Option<String>,
pub old_flow_ir: Option<FlowIR>,
pub supervise: Option<SupervisePolicy>,
pub vision: Option<Arc<dyn VisionVerifier>>,
pub force_reexecute: Vec<String>,
pub allow_mutating_reexec: Vec<String>,
pub clock: Option<Arc<dyn Fn() -> u64 + Send + Sync>>,
}Expand description
Options of Runner::resume.
Fields§
§stop: CancellationTokenCooperative stop token (see RunOptions::stop).
platform: Option<String>env.platform, when known.
old_flow_ir: Option<FlowIR>The FlowIR the run originally executed — optional, and worth
supplying. Alignment reads the archived execution-time per-step
hashes from the checkpoint’s StepRecords (harvested from
stepEntered, spine §6.1 M1 note), so cross-IR resume works
without it; supplying it additionally unlocks the preflight-only
sub-domain comparison (07 §5.3 / 02 §12.3 ruling 6) — a
judgeDirty step whose only change is preflight adopts its
archived verdict outright instead of re-judging or re-executing.
Verified against the checkpoint’s irHash
(RunnerError::OldIrMismatch); a mismatch is a caller error,
surfaced not ignored.
supervise: Option<SupervisePolicy>This segment’s supervision policy (R13, spine §6.9): recorded in
runResumed.supervisePolicy (explicitly null when absent).
Per segment, never inherited — an unset value means this segment
runs unsupervised regardless of previous segments; a supervision
request already pending still settles by its arbitrated response.
vision: Option<Arc<dyn VisionVerifier>>The vision verifier of this segment (see RunOptions::vision);
None is stub-equivalent — vision tails degrade to unknown.
force_reexecute: Vec<String>Step ids the author FORCES back to execution this segment
(07 §5.3, the CLI’s repeatable --force-reexecute <stepId>):
each named step classifies effectDirty regardless of its hashes,
so the resume point rolls back to the earliest of them and they
re-run against the live world.
The escape hatch for a re-judge the author rejects — an offline
re-judge that can only reach unknown because the archive lacks
the observation channel the new assertion needs (「缺料 →
unknown」), or an adopted result the author no longer trusts. It
upgrades the CLASSIFICATION only: a forced step that is mutating
and already effective still walks the 07 §5.4 gate and needs
--allow-mutating-reexec besides — forcing says “run it again”,
authorizing says “yes, even though the world holds its effect”.
Like the authorization list it covers this resume only, and it is
cross-IR vocabulary: a same-IR resume has no classification to
upgrade.
allow_mutating_reexec: Vec<String>Step ids the author explicitly authorized for mutating
re-execution this segment (07 §5.4 step 2, the CLI’s repeatable
--allow-mutating-reexec <stepId>).
Each id releases exactly one requiresConfirmation entry; there is
no wildcard, and the authorization covers this resume only —
nothing about it is persisted, so the next resume re-gates from
scratch. An id naming no gated step is refused rather than ignored:
silently accepting it would let an author believe they had cleared
something they had not.
Releasing the gate does not skip the world check: the step still
enters probing and evaluates its preflight (§5.4 step 3), which
is what meets the residue of the earlier effect.
clock: Option<Arc<dyn Fn() -> u64 + Send + Sync>>Injectable wall clock (see RunOptions::clock).