Alice 0.2.5
Alice 0.2.5 — Independent Artifact Storage for DMRG and XTRG
Release Date: August 19, 2026
Version 0.2.5 decouples archived-artifact storage from the checkpoint directory in
both dmrg.run() and xtrg.run(), via a new Options.artifacts_dir. DMRG gains
final-state archiving to match XTRG's existing per-step archiving: on success, the
final Summary is written to state.ckpt under artifacts_dir and the now-redundant
per-sweep dmrg.ckpt is removed. XTRG's mid-run Artifact file is renamed from
progress.ckpt to xtrg.ckpt. Two breaking changes, both to on-disk file names.
📦 artifacts_dir: Decoupled from checkpoint_dir
- New
Options.artifacts_diron bothdmrg.Optionsandxtrg.Options(default
None, resolving toartifacts/undercheckpoint_dir). Passing an explicit path
archives artifacts elsewhere — e.g. faster or larger storage — independent of where
per-sweep/per-step checkpoints themselves live. - XTRG's
save_artifacts/save_artifacts_sincenow writestep_XX.ckptfiles under
artifacts_dirinstead of always undercheckpoint_dir/artifacts. - Both
run()s log the resolved artifacts directory in their startup banner. artifacts_dirround-trips throughto_toml/load_tomllike every other option.
💾 DMRG Final-State Archiving
- Breaking:
dmrg.run()now archives its finalSummaryasstate.ckpt(atomic
write viastate_lock.ckpt→ rename) underartifacts_diron success, then removes
the per-sweepdmrg.ckpt/dmrg_lock.ckptfromcheckpoint_dir, since they are
redundant with the archived artifact. Previouslydmrg.ckptwas left on disk after a
successful run; callers that readdmrg.ckptpost-run must switch to
artifacts_dir/state.ckpt. - Unlike the per-sweep checkpoint, the archived
Summarycarries the correct
convergedflag, since it is built after the sweep loop exits rather than while
still in progress. - New
_save_final_artifacthelper mirrors XTRG's_save_artifact_filepattern.
🏷️ XTRG xtrg.ckpt Rename
- Breaking: the mid-run
Artifactcheckpoint is renamed fromprogress.ckptto
xtrg.ckpt(and its lock file fromprogress_lock.ckpttoxtrg_lock.ckpt),
aligning the name with DMRG'sdmrg.ckptas each algorithm's own per-run checkpoint
file. Behavior is unchanged: written every step, removed on successful completion. run()'s docstring, module docstring, and the resumption example now reference
xtrg.ckptthroughout.
🧪 Tests
- New
TestArtifactclass intest_dmrg.py:state.ckptcreation, lock-file cleanup,
round-trip loading (including a correctconvergedflag on a converged run), default
placement undercheckpoint_dir/artifacts, and anartifacts_dirdecoupled from
checkpoint_dir. TestCheckpointintest_dmrg.pyupdated:dmrg.ckptis now asserted absent after a
successful run rather than present.- New
test_artifacts_dir_defaults_to_none/test_artifacts_dir_toml_round_tripin both
test_dmrg.pyandtest_xtrg.py; new
test_artifacts_dir_decoupled_from_checkpoint_dirintest_xtrg.py. test_progress_removed_after_successrenamed totest_checkpoint_removed_after_success
and updated forxtrg.ckpt.
📚 Documentation
artifact.md's on-disk layout diagram gains theartifacts_dirdirectory and the
progress.ckpt→xtrg.ckptrename;Optionscross-link updated to mention
artifacts_dir.index.md's resumption example and both example scripts' docstrings/CLI help updated
fromprogress.ckpttoxtrg.ckpt.
📊 Statistics
- 954 tests across 29 test modules (up from 946 / 29 modules in v0.2.4).
- 11 commits since v0.2.4.
- 9 files changed, 214 insertions, 69 deletions.
- 28 source modules in four subpackages:
alice.network,alice.physics,
alice.algorithm.dmrg,alice.algorithm.xtrg(unchanged from v0.2.4).
✅ Compatibility
Breaking Changes:
dmrg.run()no longer leavesdmrg.ckpton disk after a successful run; the final
Summarymust instead be read fromartifacts_dir/state.ckpt(default
checkpoint_dir/artifacts/state.ckpt). Mid-run,dmrg.ckptis unaffected.- XTRG's mid-run
progress.ckptis renamed toxtrg.ckpt; callers resuming from a
file loaded by path (rather than viaOptions.checkpoint_dirauto-discovery) must
update the filename. Checkpoints written by v0.2.4 or earlier asprogress.ckpt
still load — theArtifact.loadcall itself is unaffected — butrun()will not
find them under the new name for auto-recovery ofthermal.ckpthistory.
Requirements:
- Python ≥ 3.11
- PyTorch ≥ 2.5
- Nicole ≥ 0.3.7
📝 Notes
DMRG and XTRG previously diverged in how they treated their working checkpoint versus
a durable result: XTRG already separated thermal.ckpt (thermodynamic history, kept)
from progress.ckpt (working state, discarded on success) and archived per-step
Artifacts, while DMRG only ever wrote one file, dmrg.ckpt, and left it behind
regardless of outcome — indistinguishable from a crash checkpoint. Giving DMRG the same
archived-final-state pattern removes that ambiguity, and factoring artifacts_dir out
of checkpoint_dir in both algorithms lets long-running jobs keep small, frequently
overwritten checkpoints on fast local storage while sending durable artifacts to
larger, possibly network-backed storage, without the two being forced to colocate.