Execution, storage and continuation¶
Plans and completion¶
plan validates and compiles a higher-degree request without sampling.
It returns a deterministic RunPlan with a content hash, capability report,
resource estimate, measurement inventory and fixed update schedule. Give
observables explicit dictionary names to obtain stable readable result keys
such as Z:loop_a. An unnamed iterable receives obs0, obs1, etc.
run(job, output=...) returns a result object. Require
result.execution_status == "completed" before using completed-run results.
Inspect result.receipt on failure. scientific_status is separate:
current summaries normally report diagnostics_unresolved or unassessed;
available diagnostic numbers are not promoted automatically to convergence.
The Higher-degree planning and execution page defines the result and plan attributes.
run_vertex instead returns a workflow receipt dictionary. Require
receipt["terminal_reason"] == "completed". Load arrays with
read_vertex_records only after completion. Do not interpret intermediate
files or a child-success message as the authoritative completion result.
Each operation uses a fresh output directory outside the installed package. The general workflow can accept an existing empty directory; a new nonexistent directory is the safest portable convention and also works for vertex runs. Audit and continuation outputs must be disjoint from their input run: neither inside it nor its ancestor. Input runs remain read-only.
What is retained?¶
Control |
Higher-degree interface |
Vertex interface |
|---|---|---|
Sampling clock |
One sweep is exactly the measurement model’s spacetime spin count attempted mixture updates, including stays and rejected proposals. |
One step is exactly one cluster attempt, including lazy attempts. |
Warmup |
|
|
Measurement retention |
Every |
Every |
Snapshots |
|
|
Checkpoints |
|
Every completed chain has a final checkpoint. No separate public checkpoint-cadence control or bounded resume operation is supplied. |
Choose general snapshot cadence no larger than the retained history if you
want a replayable run. A run with no saved snapshots can complete, but replay
and verified load refuse to certify it. General snapshot cadence and retention
phase remain absolute across continuation; a continued segment can therefore
retain a different count than the simple floor formula for an initial run.
RunPlan.measurement_inventory and the stored manifest describe the schedule.
General storage layout¶
A completed higher-degree run includes:
run/
manifest.json
workflow-request.json
workflow-result.json
parent-receipt.json
sampling-receipt.json
result.json
checkpoints-index.json if continuation storage enabled
group-z/ if Z operators requested
measurements/<chain-id>.jsonl
configurations/<chain-id>-retained<index>.json
configurations/<chain-id>-retained<index>.npz selected snapshots
checkpoints/<chain-id>-sweep<index>.json/.npz
... group inventory / completion metadata
group-x/ if X operators requested
... same layout for the dual ensemble
result.estimates pools all retained records of a completed segment. For a
connected observable it includes a,b,d,mean,abs_f,n,chains,chain_ids and
per_chain_n. mean is the signed connected functional; abs_f is its
absolute value after aggregation. n counts correlated records, not
independent draws. Raw JSONL records preserve joint columns and decoder metadata.
Vertex storage and loading¶
A completed vertex run contains manifest.json, inventory.json,
workflow-request.json, workflow-result.json, progress.json,
chain-<id>.npz and checkpoint-<id>.json. Each NPZ holds the complete
measurement array, selected spin bitsets and snapshot indices.
read_vertex_records verifies implementation identity, completion binding,
hashes, exact schedules and selected snapshot measurements before returning
(metadata, samples). It is an in-process, byte-capped reader; its default
cap is 256 MiB. It is not a hard process-isolation executor.
audit_vertex_run performs an audit through the bounded executor with a
caller-supplied fresh output and resource budget. Both audit only stored
configuration snapshots; scalar-only records cannot reveal unsaved states.
Replay and verified load¶
replay(run_path, output=..., budget=...) recomputes the higher-degree
measurements from stored configurations. It reports the exact audited subset,
not a regeneration of the entire Markov chain. Require status == "passed".
load_result validates the inventory and reconstructs summaries, returning
the usual result object; it raises a validation error when verification fails.
If audit output is omitted, a fresh sibling audit directory is created.
The default replay/load budget is 120 seconds, 1 GiB tree memory, 16 MiB output
and one BLAS thread. Supply a ResourceBudget for explicit limits.
These operations may need substantially more resources on large histories.
Continuation¶
Use resume(parent, "checkpoints-index.json", output=..., additional_sweeps=k).
The run-level index binds the latest complete checkpoint set for all requested
basis groups and chains. A lone NPZ is insufficient. The operation restores
bits, cached face signs and sheet sums, RNG state, counters and absolute
measurement cadence. It adds k measurement sweeps per chain without repeating
the parent’s warmup. seed must be omitted or None: reseeding is refused.
The result contains only the new segment’s records. Parent and continuation are dependent parts of the same chain; do not count them as independent starts. Combining their histories is an explicit analysis step, retaining their absolute order and any discarded tails. The new operation inherits the parent’s resource limits. A budget applies per operation, so a study with many runs or continuations must impose its own aggregate allocation.
The vertex low-level VertexSampler.checkpoint / restore pair permits
controlled in-process continuation. There is no public resume_vertex and
no automatic conversion of those checkpoints into a general run checkpoint.
Software identity and failed attempts¶
Run manifests freeze the distribution version and hashes of every runtime module. They also record numerical-library and representation information. Changing code invalidates the freeze even when a change appears cosmetic. Keep the exact wheel/source artifact and the dependency environment with your study. Install that identity to audit an old run; do not edit its hashes to make a new installation accept it.
The executor monitors the complete workflow tree, including preparation, sampling, replay and result assembly. Late resource failures override child success. Failed attempts can retain partial or over-quota files for diagnosis; their existence is not evidence of completion. Preserve the original attempt and use a distinct directory for any explicitly planned follow-up.
Command-line interface¶
The CLI uses the higher-degree API and canonical manifests written by
RunPlan.write. It does not accept arbitrary hand-written convenience
configuration JSON or expose the vertex API.
hcphases capabilities
hcphases plan --spec my-project/plan.json
hcphases run --spec my-project/plan.json --output my-project/runs/cli-run
hcphases replay --run my-project/runs/cli-run
hcphases inspect --run my-project/runs/cli-run
hcphases resume --run my-project/runs/cli-run --checkpoint checkpoints-index.json --output my-project/runs/cli-next --additional-sweeps 4
Do not run the CLI example on an output already created by the Python example.
inspect is an unverified receipt view; it does not replace replay or
verified load. Successful commands exit zero; invalid/failed operations exit
nonzero. Standard argument parsing can also fail before execution.