Troubleshooting#

Configure And Build#

cipsixx source is missing#

Release snapshots include the pinned source under external/cipsixx. Confirm that the checkout is complete, or configure another compatible pinned source with -DMPPT_CIPSIXX_SOURCE_DIR=/path/to/cipsixx.

If selection is not needed, configure with -DMPPT_ENABLE_CIPSIXX=OFF.

HDF5 is not found#

Use one consistent prefix for CMake and runtime libraries:

cmake -S . -B build \
  -DCMAKE_PREFIX_PATH="$CONDA_PREFIX" \
  -DHDF5_ROOT="$CONDA_PREFIX"

HDF5 is required for every supported build. Do not combine an HDF5-enabled Python environment with unrelated system HDF5 libraries in the same build.

OpenMP configure failure#

OpenMP C++ and Fortran support are required. Install the host compiler runtime or point CMake to the active environment’s libgomp.so.1.

PRIMME cannot be fetched or built#

PRIMME 3.2.3 is a mandatory pinned build dependency. The first configuration requires access to its upstream Git repository plus a C compiler and make. Fix the fetch or compiler error and rerun CMake; DIAGPT and HEFFSO have no alternate eigensolver path.

Tests#

A workflow test cannot find an executable#

Run repository suites through cmake --build build --target test-light so CTest injects exact target paths. A workflow test.sh run directly defaults to the repository’s build/bin; set MPPT_BIN_DIR to select another build tree.

YAML And Direct Runs#

Symmetry is rejected#

The current YAML runtime supports C1 only. Omit molecule.symmetry, set it to false, or use C1.

CASSCF input is incomplete#

A CASSCF run requires both active_orbitals and n_active_electrons. An unconverged SCF is rejected before CASSCF.

Resume ignores YAML edits#

The current YAML must still exist and parse. Resume then restores input.normalized.json for direct PySCF stages, but any automatic downstream workflow uses the current YAML’s mppt section. Start a fresh checkpoint after changing scientific input, external basis/ECP/GRPP files, package/runtime versions, or execution environment. Direct checkpoints do not fingerprint those inputs.

Resume reports completion but the HDF5 dump is missing#

A direct checkpoint records dump completion in stage.json but does not own or validate the HDF5 file. Resuming a completed dump checkpoint can therefore return success after the dump was moved, deleted, or replaced when downstream stages are disabled. If the current YAML enables downstream stages, they can fail when they subsequently open the current YAML’s HDF5 path. Start a fresh direct run to recreate it. Use a managed run when resource hashing and HDF5 input identity are required.

Scratch or integral dump runs out of space#

Direct CLI runs use <workdir>/tmp. Run from a filesystem with enough scratch and destination capacity. Selected-route dumps omit int2e_full, but still store full J/K slices and the required pair-packed ERI blocks. The block-size formulas and remaining limits are documented in the selected-route contract. mppt.max_mem_bytes controls transformation and J/K batching, not final dataset volume.

Managed Runs And Sweeps#

A fresh managed run says the directory already exists#

Fresh managed runs and sweeps require a nonexistent output directory; they do not adopt arbitrary existing files. Use --resume only for the original managed directory with a matching manifest and normalized input. Otherwise choose a new nonexistent path.

A copied or moved managed directory cannot resume#

This is expected for a point: run.json stores its original absolute directory, and point resume rejects a different location. A moved sweep root has no global location check, but every existing point fails its individual location check; missing point directories can start fresh and later points continue. Keep the moved tree as an archive, choose a new nonexistent output path, and start a new run or sweep from the source YAML.

A managed resume reruns SCF or CASSCF#

Direct checkpoint resume is enabled only when all checkpoint payloads are valid and, for a dumping run, the HDF5 output has the matching managed-input hash. That hash is written after a successful managed attempt. An interrupted or downstream-failed attempt can therefore restart the direct calculation even when some checkpoint files exist. Inspect the new command and attempt number in run.json and the separators in run.log.

The managed directory is locked#

Managed roots are single-writer resources. Another active run or sweep holds .pyscf2mppt.lock. Do not delete the lock while a process is active. After an abnormal host failure, confirm no process is using the directory and rerun with --resume; the lock is advisory and is released when the owning process exits. If termination happened after directory creation but before run.json or sweep.json was written, neither fresh run nor resume can adopt that partial directory. Preserve it for diagnosis if needed, then choose a new nonexistent output path.

Sweep dry-run did not find a missing executable#

--dry-run validates the sweep schema, Cartesian expansion, normalized inputs, and file resources, but returns before executable preflight. Run the non-dry command to validate enabled selector, DIAGPT, and HEFFSO executables before the sweep root is created.

One sweep point failed#

Ordinary point failures are recorded and later points continue. Inspect sweep.json, then the point’s run.json and run.log when present. A failure before child launch can have no run.log. Resume the unchanged sweep to attempt failed, interrupted, and completed points through the same revalidation path.

Downstream Workflow#

An executable is not found#

Pass an explicit CLI path, set the corresponding environment variable, or put the executable on PATH. Resolution order is documented in the CLI reference.

Selected DIAGPT contract is incomplete#

Compare the file against the selected-route dataset list. The current loader requires all four pair-packed ERI blocks; older 4D selected blocks are not a substitute.

A stage reruns unexpectedly#

Each stage fingerprint covers normalized configuration, executable identity, and consumed inputs. A separate output_fingerprint covers durable outputs. A changed input or missing/changed output invalidates reuse. Inspect /mppt/workflow/stages/<stage>, both fingerprints, and its log_path attribute.

Print stage metadata without reading large arrays:

python - <<'PY'
import h5py

with h5py.File("calculation.h5", "r") as h5f:
    stages = h5f.get("/mppt/workflow/stages")
    if stages is None:
        print("No workflow checkpoints")
    else:
        for name, group in stages.items():
            print(name, dict(group.attrs))
PY

HEFFSO exits but the workflow reports failure#

The orchestrator requires a nonempty <prefix>_sovec file and the fin heffso log marker, a complete bounded report, and exactly the configured nvectw state rows. Effective-operator runs additionally require a complete mppt_heffso_effective_operators_v1 artifact with the same state count and absolute Hartree energies. Inspect .mppt-workflow/logs/heffso.log and stderr; process exit status alone is not a completion contract.

Reporting A Problem#

Include the configure command, compiler/CMake versions, input YAML, relevant stage attributes, and the bounded .mppt-workflow log. Do not attach an entire large HDF5 file unless a minimal reproducer cannot be made.