basissetdev handover — 2026-05-22

Tip: 330b2fb3 on origin/main (Milestone 1 landed). Last main sync: b5b6b9ee..fd42c39f (20 commits, clean fast-forward).

Completed — Milestone 1: emit_crystal CRYSTAL14 format fix

Commit: 330b2fb3fix(basis): emit_crystal format for CRYSTAL14 compatibility

Three format fixes discovered during basis comparison testing on planetx with CRYSTAL14 public 1.0.2:

  1. 99 0 only at very end of multi-element basis (not after each element)

  2. No trailing END from emit_crystal (deck template provides it)

  3. Scale hardcoded to 0.0 (CRYSTAL14 convention)

  4. emit_input_inline uses END not ENDGEOM after geometry

Tests: 113 passed, 6 skipped (nlopt/iminuit not on macOS).

Next — Milestone 2: Land the vibe-basis infrastructure

All files are on basissetdev branch and need to be reviewed, split into small landable chunks, and pushed to main:

Known-good, ready to land:

  • vibe-basis/src/vibe_basis/recipes/pob_parity.py — Stage 0 driver (tested, 17 tests)

  • vibe-basis/src/vibe_basis/recipes/remote.py — Remote recipe via vq (tested, 9 tests)

  • vibe-basis/src/vibe_basis/recipes/run_d12.py — Run pre-existing .d12 files (tested, 12 tests)

  • vibe-basis/src/vibe_basis/io/references.py — PT2013 reference energies

  • vibe-basis/src/vibe_basis/io/library_bridge.py — qc-input-library discovery

  • vibe-basis/src/vibe_basis/optimize.py — NLopt/scipy/iminuit wrappers (tested, 10 tests)

  • vibe-basis/src/vibe_basis/backends/crystal14_atom.py — Isolated-atom .d12 emitter

  • vibe-basis/src/vibe_basis/transports/vq.py — Multi-host support (host=”mars”)

  • vibe-basis/tests/test_pob_parity_recipe.py (17 tests)

  • vibe-basis/tests/test_remote_recipe.py (9 tests)

  • vibe-basis/tests/test_run_d12.py (12 tests)

  • vibe-basis/tests/test_optimize.py (10 tests, 6 skipped)

  • vibe-basis/tests/fixtures/d12/ — MgO/CaO/LiF .d12 test fixtures

  • vibe-basis/RECIPE_PATTERNS.md — Recipe conventions doc

  • vibe-basis/TUTORIAL.md — Full optimization tutorial

  • docs/basisset_dev/GOAL4_DESIGN.md — Superseded banner

  • docs/basisset_dev/STAGE0_IMPLEMENTATION_PLAN.md — Plan traceability

  • scripts/submit_basis_comparison.py — Basis comparison submission script

In vibe-qc (needs vibeqc C++ extension to test):

  • python/vibeqc/basis_optimization/calculators.py — Calculator ABC + CRYSTAL14Calculator

  • python/vibeqc/basis_optimization/ld_diagnostics.py — LD penalty via vibe-qc overlap

  • python/vibeqc/basis_optimization/recipes/crystal_objective.py — Objective factories

  • python/vibeqc/basis_optimization/recipes/crystal_stage1.py — Stage 1 H atom

  • python/vibeqc/basis_optimization/recipes/crystal_stage2.py — Stage 2 LiH

  • python/vibeqc/basis_optimization/recipes/crystal_stage3.py — Stage 3 multi-compound

  • python/vibeqc/basis_optimization/recipes/objective.py — Calculator-based objectives

  • python/vibeqc/basis_optimization/recipes/production.py — Production optimizer

Pending: basis comparison run

  • The basis comparison script ran 9/9 pob-TZVP decks on planetx but the energy extraction via grep needs fixing (field 6 vs field 7). The format fix (Milestone 1) makes the decks runnable.

  • Seg basis parsing needs debugging (only pob decks regenerated).

Blockers

  • None for Milestone 2 (vibe-basis infrastructure) — all tests pass, no C++ rebuild needed.

Gated / deferred

  • VibeQcCalculator — periodic SCF not ready (per REQUIREMENTS-PERIODIC.md) Crystal evaluation raises NotImplementedError; atom evaluation untested.

  • Stage 3 production run — needs NLopt + iminuit on target machine.

  • LD diagnostics — needs vibe-qc C++ extension (not testable on macOS).