{
  "schema": "vibeqc.crystal23-capability-matrix.v1",
  "updated": "2026-10-24",
  "scope": "Ground-state periodic HF/DFT/hybrid capabilities of CRYSTAL23 (User's Manual section 1.2 'CRYSTAL23 Program Features'; Erba et al., J. Chem. Theory Comput. 19, 6891 (2023), DOI 10.1021/acs.jctc.2c00958) against vibe-qc main, for the #593 parity programme. Operational evidence stays in the tracker and in private evidence stores.",
  "states": {
    "implemented": "A public route exists and runs; no focused repository test or reference comparison is claimed for this row.",
    "source-tested": "Implemented and covered by focused repository tests of source functionality, refusals or internal identities; no matched external numerical reference.",
    "numerically-accepted": "A matched reference comparison passed on a recorded source/native runtime within a stated tolerance, for the bounded scope named in the evidence; not whole-method parity.",
    "unverified": "Implemented, but an open numerical defect, a failed or contradictory comparison, or a missing reference comparison is on record.",
    "unsupported": "Absent or explicitly refused; a precise refusal is an acceptable release boundary, not a parity claim."
  },
  "rows": [
    {
      "id": "rhf-3d",
      "group": "Hamiltonian and reference",
      "crystal23": "Restricted Hartree-Fock (RHF), 3D, SHRINK mesh",
      "vibeqc": "BIPOLE `run_pbc_bipole_rhf` / `run_periodic_job(method='RHF', jk_method='bipole')`; GDF and GPW routes",
      "state": "numerically-accepted",
      "evidence": "LiH/STO-3G RSGDF Gamma and 2x2x2 within 1.3e-9 and 4.2e-9 Ha of matched PySCF GDF (#179 notes 50997/51683, runtime 63031b08); MgO/STO-3G BIPOLE 2x2x2 within 0.075 mHa of PySCF exxdiv='ewald' at converged cutoff (docs/periodic_jk_routes.md, 2026-06-16, older build)",
      "gap": "No CRYSTAL23 row at a matched mesh has passed through the #573 harness; the CRYSTAL comparison is exchange-convention confounded at coarse SHRINK and k-mesh confounded at SHRINK 8 8 (+4.7 mHa)",
      "issues": [
        "#573",
        "#593"
      ]
    },
    {
      "id": "uhf-3d",
      "group": "Hamiltonian and reference",
      "crystal23": "Unrestricted Hartree-Fock (UHF)",
      "vibeqc": "BIPOLE `run_pbc_bipole_uhf`; Ewald multi-k UHF; GDF open shell (explicit `jk_method='gdf'`)",
      "state": "numerically-accepted",
      "evidence": "Ewald UHF Cl2 anchors agree with a matched periodic direct-integral reference within 1.5e-9 Ha (#573 description, 6b5e102e); H2 triplet UKS/PBE0 2x1x1 within 3.2e-9 Ha of PySCF AFTDF",
      "gap": "Magnetic-state transport and a CRYSTAL23 open-shell crystal row remain open (#647); no matched CRYSTAL23 UHF total energy yet",
      "issues": [
        "#647",
        "#573"
      ]
    },
    {
      "id": "rohf-roks",
      "group": "Hamiltonian and reference",
      "crystal23": "Restricted open-shell HF (ROHF)",
      "vibeqc": "Ewald `run_rohf_periodic_multi_k_ewald3d`, GDF `run_krohf_periodic_gdf`, GPW Gamma; ROKS Ewald/GPW (maintained preview)",
      "state": "source-tested",
      "evidence": "Preview routes with pinned fixtures (docs/user_guide/periodic_methods.md section 3.8); Fock-unification migration open",
      "gap": "No external reference comparison; GDF/GPW ROHF are previews; little-group and broken-symmetry handling open",
      "issues": [
        "#601",
        "#597",
        "#577"
      ]
    },
    {
      "id": "ghf-soc",
      "group": "Hamiltonian and reference",
      "crystal23": "Generalized HF / two-component spinors, spin-orbit coupling",
      "vibeqc": "none",
      "state": "unsupported",
      "evidence": "No two-component periodic route exists in `python/vibeqc/`",
      "gap": "Outside the #593 ground-state goal; relativistic/noncollinear extensions are a separate roadmap milestone",
      "issues": [
        "#593"
      ]
    },
    {
      "id": "rks-semilocal",
      "group": "Hamiltonian and reference",
      "crystal23": "Kohn-Sham DFT, semilocal LDA/GGA, collinear spin",
      "vibeqc": "BIPOLE `run_pbc_bipole_rks`/`uks`; GDF; GPW/GAPW; libxc-routed functionals",
      "state": "unverified",
      "evidence": "#187: 12 of 12 pure-PBE crystals over-bound against CRYSTAL23 at matched SHRINK 2 2 by 1.5 to 35 mHa (v0.15.114); after the physical-density and XC-domain fixes the LiH13/PBE 2x2x2 fine-grid gap is -8.0 uHa on one fixture (note 43219); diamond Gamma PBE0 XC domain converged to 6.0e-7 Ha (#465, closed)",
      "gap": "Re-measure the twelve #187 crystals at production defaults on current main with a >=4-cell grid ladder; #405 diffuse-basis XC image sum (3.8 mHa) open",
      "issues": [
        "#187",
        "#405",
        "#575"
      ]
    },
    {
      "id": "meta-gga",
      "group": "Hamiltonian and reference",
      "crystal23": "meta-GGA (tau-dependent): SCAN, r2SCAN, Minnesota families",
      "vibeqc": "libxc-routed tau functionals on the periodic KS routes (periodic Becke grids)",
      "state": "unverified",
      "evidence": "#179 compares LDA/PBE/r2SCAN XC increments against CRYSTAL23 SHRINK 2 and finds the increments consistent while the Coulomb block carries the offset; no dedicated meta-GGA acceptance row",
      "gap": "Add an r2SCAN row to the #573 matrix; Minnesota functionals have no periodic acceptance evidence",
      "issues": [
        "#573",
        "#179"
      ]
    },
    {
      "id": "noncollinear",
      "group": "Hamiltonian and reference",
      "crystal23": "Non-collinear spin DFT, spin-current DFT",
      "vibeqc": "none",
      "state": "unsupported",
      "evidence": "No noncollinear density or spin-current functional path",
      "gap": "Separate roadmap milestone, not in #593",
      "issues": [
        "#593"
      ]
    },
    {
      "id": "global-hybrids",
      "group": "Hamiltonian and reference",
      "crystal23": "Global hybrids: B3LYP (VWN5), PBE0, PBESOL0, B1WC, WC1LYP, B97H, PW1PW",
      "vibeqc": "BIPOLE/GDF/GPW with `functional='b3lyp' / 'pbe0' / 'pw1pw'/...`; `vq.define_functional` for custom mixes",
      "state": "unverified",
      "evidence": "B3LYP VWN5 flavour verified against CRYSTAL14 to 1e-9 Ha on H2/STO-3G; diamond PBE0/def2-SVP Gamma GDF within 6.0e-6 Ha of PySCF Becke level 7 at converged cutoff (#163 note 40656); but #163 records a 440.8 mHa BIPOLE-versus-GDF Coulomb disagreement on diamond PBE0 Gamma on v0.15.133 that has not been re-measured",
      "gap": "Re-run the #163 cross-route case on current main (BIPOLE cost was 35 h); add a matched CRYSTAL23 hybrid row",
      "issues": [
        "#163",
        "#573"
      ]
    },
    {
      "id": "screened-hybrids",
      "group": "Hamiltonian and reference",
      "crystal23": "Screened-Coulomb hybrids: HSE06, HSEsol, SC-BLYP",
      "vibeqc": "`functional='hse06'` on BIPOLE, Ewald and slab routes (short-range exact exchange)",
      "state": "source-tested",
      "evidence": "Gamma image-shell erfc exchange gate re-derived in MR !280 (#501); multi-k short-range exchange pinned in the BIPOLE lanes",
      "gap": "No matched CRYSTAL23 or PySCF HSE06 crystal comparison recorded; HSEsol/SC-BLYP untested",
      "issues": [
        "#501",
        "#573"
      ]
    },
    {
      "id": "lc-hybrids-production",
      "group": "Hamiltonian and reference",
      "crystal23": "Long-range / middle-range corrected hybrids: LC-wPBE, HISS, wB97X, CAM-B3LYP",
      "vibeqc": "Corrected 3D physical-pair BIPOLE RKS/UKS implements single-range CAM/LC at Gamma/multi-k; GDF and multiple ranges remain refused",
      "state": "unverified",
      "evidence": "tests/test_periodic_screened_exchange.py: signed-kernel admission, independent fixed-density AFT exchange matrices and RKS/UKS limits; matched CRYSTAL crystal total and cost missing",
      "gap": "Matched CRYSTAL totals and cost, support convergence, GDF and multiple-range HISS remain open (#657)",
      "issues": [
        "#657",
        "#593"
      ]
    },
    {
      "id": "lc-hybrids-rsgapw",
      "group": "Hamiltonian and reference",
      "crystal23": "LC hybrids on the range-separated GAPW route",
      "vibeqc": "`RSGAPW` dedicated entry point, 3D Gamma RHF/RKS",
      "state": "implemented",
      "evidence": "docs/user_guide/periodic_methods.md section 4.7 lists wB97X / CAM-B3LYP on RSGAPW",
      "gap": "Experimental route, no multi-k, no reference comparison",
      "issues": [
        "#593"
      ]
    },
    {
      "id": "sc-hybrids",
      "group": "Hamiltonian and reference",
      "crystal23": "Self-consistent global hybrids (sc-hyb)",
      "vibeqc": "none",
      "state": "unsupported",
      "evidence": "No dielectric-dependent exact-exchange fraction",
      "gap": "Not a #593 deliverable",
      "issues": []
    },
    {
      "id": "skala",
      "group": "Hamiltonian and reference",
      "crystal23": "(no CRYSTAL23 analogue) SKALA machine-learned functional",
      "vibeqc": "checkpoint-backed extension on the common periodic infrastructure",
      "state": "unverified",
      "evidence": "#83 runtime campaign; stub results and common-infrastructure timings are explicitly not checkpoint-backed acceptance (#593)",
      "gap": "Complete RKS/UKS Gamma and multi-k calculations with the actual checkpoint, invariance and provider derivatives",
      "issues": [
        "#83"
      ]
    },
    {
      "id": "dft-d3",
      "group": "Dispersion and composite corrections",
      "crystal23": "DFT-D3 (automated) and DFT-D2 London corrections",
      "vibeqc": "`dispersion='d3' / 'd3bj'` with `compute_d3bj_periodic` (built-in supercell sum or dftd3 backend)",
      "state": "source-tested",
      "evidence": "`python/vibeqc/dispersion_periodic.py` tests; D2 is not offered",
      "gap": "No CRYSTAL23 D3 crystal comparison recorded; D2 unsupported",
      "issues": []
    },
    {
      "id": "dft-d4",
      "group": "Dispersion and composite corrections",
      "crystal23": "(CRYSTAL23 offers D3; D4 listed for completeness)",
      "vibeqc": "molecular D4 generic; periodic D4 not wired into `compute_d3bj_periodic`",
      "state": "unverified",
      "evidence": "#548 propagates generic D4 to molecular optimizers and the FD Hessian; periodic D4 has no entry",
      "gap": "Decide whether periodic D4 is a deliverable",
      "issues": [
        "#548"
      ]
    },
    {
      "id": "gcp-3c",
      "group": "Dispersion and composite corrections",
      "crystal23": "gCP counterpoise and composite 3c methods (HF-3c, PBEh-3c, HSE-3c, B97-3c, sol-3c)",
      "vibeqc": "`vibeqc.composites` registry and `vibeqc.gcp` (molecular)",
      "state": "unverified",
      "evidence": "Composite recipes exist for molecules; periodic 3c/sol-3c execution has no acceptance evidence",
      "gap": "No periodic 3c row in the matrix; sol-3c variants absent",
      "issues": []
    },
    {
      "id": "shrink-mesh",
      "group": "k sampling, occupations and SCF control",
      "crystal23": "SHRINK Monkhorst-Pack net, anisotropic and shifted meshes",
      "vibeqc": "`vq.monkhorst_pack(system, [n1,n2,n3])`, explicit `KPoints`, IBZ reduction with full-mesh provenance",
      "state": "source-tested",
      "evidence": "#645 anisotropic CRYSTAL dimensions and printed-factor admission landed (46103c8b); #129 hexagonal meshes use multiples of 3 (756b5b0a)",
      "gap": "Actual printed reciprocal coordinate and weight qualification against CRYSTAL output still open (#645)",
      "issues": [
        "#645",
        "#129"
      ]
    },
    {
      "id": "gilat-net",
      "group": "k sampling, occupations and SCF control",
      "crystal23": "SHRINK ISP Gilat net for Fermi energy and DOS",
      "vibeqc": "`bz_integration='gilat'` on the multi-k drivers (self-consistent for insulators, post-SCF for metals)",
      "state": "source-tested",
      "evidence": "docs/user_guide/from_crystal.md and metallic_bz_integration.md; pinned fixtures",
      "gap": "Metallic total energies still come from smearing; no CRYSTAL23 metal comparison",
      "issues": [
        "#155"
      ]
    },
    {
      "id": "smear",
      "group": "k sampling, occupations and SCF control",
      "crystal23": "SMEAR Fermi-Dirac smearing",
      "vibeqc": "`smearing_temperature` on BIPOLE/GDF/GPW single points",
      "state": "source-tested",
      "evidence": "Finite-temperature BIPOLE results documented; NOITER entropy from the evaluated density fixed (#649, 9bc34e25)",
      "gap": "Graphene BZ ladder non-convergent (#129); metallic/magnetic rows are explicit #593 coverage rows",
      "issues": [
        "#129",
        "#155",
        "#649"
      ]
    },
    {
      "id": "spinlock-atomspin",
      "group": "k sampling, occupations and SCF control",
      "crystal23": "SPINLOCK and ATOMSPIN",
      "vibeqc": "`spinlock_mode`/`spinlock_value`/`spinlock_iterations` and `atomic_spins` on BIPOLE UHF/UKS",
      "state": "source-tested",
      "evidence": "Spin-schedule recursion pinned in the BIPOLE UHF/UKS lanes",
      "gap": "Genuine charge/spin/magnetic-state transport through the comparison matrix is #647",
      "issues": [
        "#647"
      ]
    },
    {
      "id": "guessp-restart",
      "group": "k sampling, occupations and SCF control",
      "crystal23": "GUESSP density restart, NOITER evaluation",
      "vibeqc": "`initial_guess=READ`/`read_from`, QVF/Molden restarts, `max_iter=0` zero-iteration evaluation",
      "state": "source-tested",
      "evidence": "#649 restricted and unrestricted multi-k NOITER corrected (4f541cb6, 9bc34e25); front-door restart refusals pinned (#656)",
      "gap": "Restart from accepted source-consistent states and conserved charge (#472, #386) remain acceptance items",
      "issues": [
        "#649",
        "#472",
        "#386"
      ]
    },
    {
      "id": "convergence-aids",
      "group": "k sampling, occupations and SCF control",
      "crystal23": "FMIXING, LEVSHIFT, DIIS, Broyden, Anderson",
      "vibeqc": "`fock_mixing`, `level_shift`, EDIIS+DIIS; Anderson/Broyden+Kerker density mixers on GDF and RIJCOSX only",
      "state": "implemented",
      "evidence": "Molecular and periodic convergence lanes; BIPOLE has no Anderson/Broyden mixer",
      "gap": "Same-state convergence on difficult cases (#469, #497 acceptance); mixers absent on BIPOLE",
      "issues": [
        "#469",
        "#497"
      ]
    },
    {
      "id": "convergence-thresholds",
      "group": "k sampling, occupations and SCF control",
      "crystal23": "TOLDEE / TOLDEG / MAXCYCLE",
      "vibeqc": "`conv_tol_energy`, `conv_tol_grad`, `max_iter`; terminal exact-Fock density check",
      "state": "source-tested",
      "evidence": "Exact committed-density confirmation and density-closure gate (#187 note 43205, 184 tests)",
      "gap": "none beyond the method rows",
      "issues": []
    },
    {
      "id": "coulomb-truncation",
      "group": "Electrostatics, exchange and truncation",
      "crystal23": "TOLINTEG T1/T2 Coulomb overlap and penetration thresholds",
      "vibeqc": "BIPOLE physical AO-pair support (`cutoff_bohr`), SR pair-interaction reach (`sr_image_precision`), fold-drift guard, and the #531 omitted-shell Coulomb estimate with opt-in `sr_truncation_budget_ha`",
      "state": "source-tested",
      "evidence": "Relabelling-invariant physical domain is the default (#316 migration); 100-bohr Ne molecular limit coefficient gate < 1e-8 at the shipped default; omitted-shell estimate bounds the measured 9.21e-8 Ha residual (this landing)",
      "gap": "#316 overlap relabelling <= 1e-12 and #531 two-rung vq acceptance on a recorded runtime remain open; #44 native-family migration partial",
      "issues": [
        "#531",
        "#316",
        "#44"
      ]
    },
    {
      "id": "exchange-truncation",
      "group": "Electrostatics, exchange and truncation",
      "crystal23": "TOLINTEG T3/T4 exchange overlap and pseudo-overlap thresholds",
      "vibeqc": "Direct erfc exchange with Schwarz and charge-pair screening; reciprocal long-range exchange; no quartet bipolar replacement",
      "state": "source-tested",
      "evidence": "Screening thresholds recorded in the resolved domain; bipolar quartet far field fails closed",
      "gap": "Measured direct J/K bottlenecks (#186, #490); no CRYSTAL-identical algorithm",
      "issues": [
        "#186",
        "#490"
      ]
    },
    {
      "id": "exchange-zero-mode",
      "group": "Electrostatics, exchange and truncation",
      "crystal23": "(CRYSTAL applies no exchange G=0 correction)",
      "vibeqc": "`exchange_exxdiv='ewald'` probe-charge Madelung correction or `'none'`",
      "state": "source-tested",
      "evidence": "Convention identity at fixed density documented; BIPOLE coarse mesh matches PySCF exxdiv='ewald' (0.075 mHa MgO)",
      "gap": "Comparison with CRYSTAL totals only at k convergence; a CRYSTAL-style uncorrected finite-k mode is out of scope",
      "issues": [
        "#573"
      ]
    },
    {
      "id": "ewald-nuclear",
      "group": "Electrostatics, exchange and truncation",
      "crystal23": "Ewald treatment of nuclear and electron-nuclear electrostatics",
      "vibeqc": "3D Ewald V_ne and E_nn sharing alpha; analytic nuclear source radius on physical support",
      "state": "numerically-accepted",
      "evidence": "Point-charge limit bound per Ye and Berkelbach (2021); 1/L monopole gate on the Ne molecular limit; #457 face-nuclei defect fixed",
      "gap": "#483 2-D/GAPW nuclear images around the origin needs verification; #462/#488 physical 1D/2D Coulomb",
      "issues": [
        "#483",
        "#462",
        "#488"
      ]
    },
    {
      "id": "gdf-coulomb",
      "group": "Electrostatics, exchange and truncation",
      "crystal23": "(no CRYSTAL analogue) Gaussian density fitting Coulomb tails",
      "vibeqc": "`jk_method='gdf'` RSGDF; `fit_source='classic'`; MDF",
      "state": "unverified",
      "evidence": "LiH matched within 1e-7 (#179); dense-core cells still carry a fitted-tail deficit (MgO -0.46 Ha Gamma, #159/#115 historical); #466 classic pairs physical default landed",
      "gap": "Dense-cell default-policy accuracy, #275 component interpretation and #172 MDF definiteness open",
      "issues": [
        "#179",
        "#115",
        "#159",
        "#466",
        "#275",
        "#172"
      ]
    },
    {
      "id": "xc-grid",
      "group": "Electrostatics, exchange and truncation",
      "crystal23": "DFT integration grid and image domain",
      "vibeqc": "Periodic Becke partition, product angular grids, XC density image domain (2 r_ao + span)",
      "state": "numerically-accepted",
      "evidence": "#465 diamond def2-SVP PBE0 within 6.0e-7 Ha of the converged 25-bohr domain on runtime f1ad7714; continuous-grid Becke steps fixed (!230)",
      "gap": "#405 diffuse-basis image sum (3.8 mHa), #381 multi-k GDF Becke radius, #268 ROKS grid weights open",
      "issues": [
        "#465",
        "#405",
        "#381",
        "#268"
      ]
    },
    {
      "id": "symmetry",
      "group": "Electrostatics, exchange and truncation",
      "crystal23": "Point and space-group symmetry exploitation",
      "vibeqc": "spglib space groups; SYM3b atom-pair-orbit Fock reduction; IBZ k reduction with full-mesh expansion",
      "state": "source-tested",
      "evidence": "SYM3b reconstruction bit-identical to the full build (docs/periodic_jk_routes.md); #466 IBZ classic-physical",
      "gap": "#171 NaCl GDF reduction exceeds a 1225 GB guard; #470 little-group invariance at wedge representatives; #577 unified-Fock integration",
      "issues": [
        "#171",
        "#470",
        "#577",
        "#469"
      ]
    },
    {
      "id": "gtf-am",
      "group": "Basis sets and pseudopotentials",
      "crystal23": "Gaussian basis functions s, p, d, f, g",
      "vibeqc": "libint-backed integrals; derivative orders 0/1/2 built with max_am 5/4/4 by default",
      "state": "source-tested",
      "evidence": "`scripts/build_libint.sh` configuration; f functions exercised by def2 bases",
      "gap": "g functions depend on the libint build; no periodic g-function fixture",
      "issues": []
    },
    {
      "id": "pople-bases",
      "group": "Basis sets and pseudopotentials",
      "crystal23": "Standard Pople STO-nG, 3-21G, 6-21G libraries",
      "vibeqc": "255 bundled `.g94` files plus BSE overlays (`BasisSet(mol, 'sto-3g')`)",
      "state": "implemented",
      "evidence": "docs/user_guide/basis_sets.md",
      "gap": "none",
      "issues": []
    },
    {
      "id": "pob-library",
      "group": "Basis sets and pseudopotentials",
      "crystal23": "Internal POB-TZVP library",
      "vibeqc": "Bundled pob-* family (H-Br) and pob-TZVP-rev2 QVF records",
      "state": "source-tested",
      "evidence": "Basis overlay receipts and catalog tests",
      "gap": "Coverage beyond Br and f-in-valence lanthanide/actinide bases absent",
      "issues": []
    },
    {
      "id": "basis-optimizer",
      "group": "Basis sets and pseudopotentials",
      "crystal23": "Internal basis set optimizer",
      "vibeqc": "`vibe-basis` companion package (OPTBASIS-style optimiser)",
      "state": "implemented",
      "evidence": "docs/roadmap.md: shipped and moved to `vibe-basis`",
      "gap": "Separate repository; not part of this parity matrix",
      "issues": []
    },
    {
      "id": "ecp-gdf-ewald",
      "group": "Basis sets and pseudopotentials",
      "crystal23": "Pseudopotentials: Hay-Wadt, Stuttgart-Cologne AREP libraries",
      "vibeqc": "`ecp_library='lanl2dz' / 'ecpNNmdf'` on k-GDF, Gamma RIJCOSX, Ewald open-shell and ROHF/GDF routes (#35)",
      "state": "numerically-accepted",
      "evidence": "Cl2/LANL2DZ UKS PBE Gamma and 3x1x1: molecular offset 6.0e-6 Ha and bond force versus Richardson FD 6.0e-9 Ha/bohr on runtime f1ad7714 (#557 note 53206); NaCl/LANL2DZ GDF RHF within 4.4e-6 Ha of mapped PySCF after the #652 projector-domain repair (note 52563)",
      "gap": "#652 shared UHF driver acceptance and density-grid artifact; general ECP forces/stress (#579); these are same-code controls, not CRYSTAL force parity",
      "issues": [
        "#35",
        "#652",
        "#579"
      ]
    },
    {
      "id": "ecp-bipole",
      "group": "Basis sets and pseudopotentials",
      "crystal23": "Pseudopotentials on the BIPOLE (CRYSTAL-family) route",
      "vibeqc": "`reject_bipole_ecp_options`: BIPOLE refuses ECP-bearing jobs",
      "state": "unsupported",
      "evidence": "docs/user_guide/from_crystal.md TOLINTEG T5 row; explicit refusal in `pbc_bipole_common.py`",
      "gap": "Valence-only ECP operator on the four BIPOLE drivers, reusing the #35/#652 projector kernels (#658)",
      "issues": [
        "#658",
        "#35",
        "#593"
      ]
    },
    {
      "id": "sorep",
      "group": "Basis sets and pseudopotentials",
      "crystal23": "Spin-orbit (SOREP) pseudopotentials",
      "vibeqc": "none",
      "state": "unsupported",
      "evidence": "No two-component route",
      "gap": "Outside #593",
      "issues": []
    },
    {
      "id": "dim-3d",
      "group": "Periodicity and geometry",
      "crystal23": "3D crystals, 230 space groups",
      "vibeqc": "`PeriodicSystem(dim=3)`, spglib symmetry",
      "state": "source-tested",
      "evidence": "All periodic lanes",
      "gap": "none",
      "issues": []
    },
    {
      "id": "dim-2d",
      "group": "Periodicity and geometry",
      "crystal23": "2D slabs and surfaces, 80 layer groups",
      "vibeqc": "`vq.slab_2d`; AUTO selects SLAB_EWALD_2D; explicit closed-shell slab GDF with analytic gradients; BIPOLE refuses dim=2",
      "state": "source-tested",
      "evidence": "docs/user_guide/periodic_methods.md section 5.1",
      "gap": "Physical 2D Coulomb/exchange on the BIPOLE family (#462/#488); layer groups not exploited",
      "issues": [
        "#462",
        "#488"
      ]
    },
    {
      "id": "dim-1d",
      "group": "Periodicity and geometry",
      "crystal23": "1D polymers, rod and helical symmetry, nanotubes",
      "vibeqc": "AUTO and GDF refuse dim=1; model as a dim=3 cell with transverse vacuum",
      "state": "unsupported",
      "evidence": "docs/user_guide/periodic_methods.md section 3.4; #462 physical wires",
      "gap": "Physical 1D route (#462); helical symmetry and nanotube builders absent",
      "issues": [
        "#462"
      ]
    },
    {
      "id": "geometry-editing",
      "group": "Periodicity and geometry",
      "crystal23": "Automated geometry editing: slab cuts, supercells, clusters, nanotubes",
      "vibeqc": "Python/ASE tooling (`make_supercell`, CIF/POSCAR I/O, `vq.slab`)",
      "state": "implemented",
      "evidence": "docs/user_guide/periodic_systems.md",
      "gap": "No CRYSTAL-keyword equivalents; nanorod/nanotube/Wulff builders absent",
      "issues": []
    },
    {
      "id": "forces-analytic",
      "group": "Derivatives, relaxation and lattice dynamics",
      "crystal23": "Analytic nuclear gradients (HF and DFT, all-electron and ECP)",
      "vibeqc": "GDF closed-shell Gamma/multi-k/slab analytic gradients; BIPOLE analytic gradient gated preview; ECP UKS semi-numerical preview",
      "state": "unverified",
      "evidence": "#459 Gamma GDF RKS(PBE) analytic minus FD 3.8e-5 Ha/bohr; #482 multi-k KUKS 2.4e-6 Ha/bohr; Cl2 ECP preview within 6.0e-9 Ha/bohr of FD (#557)",
      "gap": "Per-route derivative capability table (#578); independent force acceptance versus CRYSTAL/ORCA",
      "issues": [
        "#578",
        "#579",
        "#459",
        "#482"
      ]
    },
    {
      "id": "forces-fd",
      "group": "Derivatives, relaxation and lattice dynamics",
      "crystal23": "(production BIPOLE forces)",
      "vibeqc": "Finite-difference forces and fixed-cell atomic relaxation on BIPOLE (`optimize=True`)",
      "state": "source-tested",
      "evidence": "Route-preserving FD optimizer lanes; freeze masks; periodic NEB",
      "gap": "Same-objective references for structural relaxation (#578, #175)",
      "issues": [
        "#578",
        "#175"
      ]
    },
    {
      "id": "stress-cell",
      "group": "Derivatives, relaxation and lattice dynamics",
      "crystal23": "Analytic cell gradients, full cell optimization, constant-pressure optimization",
      "vibeqc": "No analytic periodic stress; FD stress on GPW/GAPW and semiempirical; variable-cell BIPOLE/GDF fails closed",
      "state": "unsupported",
      "evidence": "docs/user_guide/periodic_methods.md section 5.5",
      "gap": "Matched stress and cell relaxation is #578; MANTA stress is #637",
      "issues": [
        "#578",
        "#637"
      ]
    },
    {
      "id": "ts-search",
      "group": "Derivatives, relaxation and lattice dynamics",
      "crystal23": "Transition-state search (periodic)",
      "vibeqc": "Periodic NEB on the BIPOLE force stack; no periodic TS optimizer",
      "state": "implemented",
      "evidence": "#564 NEB process workers",
      "gap": "No periodic saddle-point optimizer",
      "issues": [
        "#564"
      ]
    },
    {
      "id": "frequencies",
      "group": "Derivatives, relaxation and lattice dynamics",
      "crystal23": "Harmonic Gamma frequencies, IR/Raman intensities, phonon dispersion, ADPs, VDOS",
      "vibeqc": "GAPW finite-displacement Gamma dynamical matrix (`periodic_gapw_phonon.PhononCalculator`); molecular Hessians",
      "state": "unverified",
      "evidence": "GAPW route only, on analytic GAPW forces; no BIPOLE/GDF periodic Hessian; no intensities",
      "gap": "Phonons/QHA are a separate roadmap milestone, not #593",
      "issues": [
        "#593"
      ]
    },
    {
      "id": "anharmonic",
      "group": "Derivatives, relaxation and lattice dynamics",
      "crystal23": "Anharmonic X-H, VSCF/VCI",
      "vibeqc": "none",
      "state": "unsupported",
      "evidence": "",
      "gap": "Separate roadmap scope",
      "issues": []
    },
    {
      "id": "elastic-eos-qha",
      "group": "Derivatives, relaxation and lattice dynamics",
      "crystal23": "Elastic tensor, equation of state, quasi-harmonic thermodynamics, piezoelectric and photoelastic tensors",
      "vibeqc": "`vibeqc.eos` fits an E(V) scan; no elastic, QHA or piezo workflows",
      "state": "unsupported",
      "evidence": "EOS fitting is tooling, not an automated workflow with qualified strains",
      "gap": "Separate roadmap scope",
      "issues": []
    },
    {
      "id": "cphf-dielectric",
      "group": "Derivatives, relaxation and lattice dynamics",
      "crystal23": "CPHF/CPKS dielectric and (hyper)polarizability up to fourth order",
      "vibeqc": "Molecular CPHF only",
      "state": "unsupported",
      "evidence": "`vibeqc.cphf` is molecular",
      "gap": "Response spectroscopy is a separate roadmap milestone",
      "issues": []
    },
    {
      "id": "solid-solutions",
      "group": "Derivatives, relaxation and lattice dynamics",
      "crystal23": "Solid-solution configuration tools",
      "vibeqc": "none",
      "state": "unsupported",
      "evidence": "",
      "gap": "Not planned",
      "issues": []
    },
    {
      "id": "bands",
      "group": "Properties and wave-function analysis",
      "crystal23": "Electronic band structure",
      "vibeqc": "`vibeqc.bands`, `band_edges`, QVF/plot output",
      "state": "unverified",
      "evidence": "#176: Si non-converged, 2D h-BN fails closed, negative indirect gap from per-k occupations; 'ewald' gauge default and recorded exchange q0 (!103)",
      "gap": "Bands from accepted source-consistent states (#472, #176)",
      "issues": [
        "#176",
        "#472"
      ]
    },
    {
      "id": "dos",
      "group": "Properties and wave-function analysis",
      "crystal23": "Density of states, band- and AO-projected",
      "vibeqc": "`pdos` on GDF properties; rebuilt operator gated on the 1e-10 Hermitian contract (#547)",
      "state": "source-tested",
      "evidence": "#547 DOS gate and bond orders from the accepted density",
      "gap": "Accepted-state consistency (#176/#472)",
      "issues": [
        "#547",
        "#176"
      ]
    },
    {
      "id": "population",
      "group": "Properties and wave-function analysis",
      "crystal23": "Mulliken population analysis, atomic multipoles",
      "vibeqc": "Mulliken and Mayer bond orders on every non-AICCM periodic route",
      "state": "source-tested",
      "evidence": "#547 bond orders from the accepted density (e3939146, 905f5f1d)",
      "gap": "none beyond accepted-state items",
      "issues": [
        "#547"
      ]
    },
    {
      "id": "density-maps",
      "group": "Properties and wave-function analysis",
      "crystal23": "Charge and spin density maps",
      "vibeqc": "Cube output and QVF BvK density artifact",
      "state": "unverified",
      "evidence": "#386: QVF primitive-cell grid integrates 11.98 instead of 10 electrons",
      "gap": "Fix the BvK density artifact normalisation",
      "issues": [
        "#386"
      ]
    },
    {
      "id": "hirshfeld-periodic",
      "group": "Properties and wave-function analysis",
      "crystal23": "Hirshfeld-I partitioning (periodic)",
      "vibeqc": "Molecular Hirshfeld only",
      "state": "unsupported",
      "evidence": "`vibeqc.properties` is molecular",
      "gap": "Not planned in #593",
      "issues": []
    },
    {
      "id": "qtaim",
      "group": "Properties and wave-function analysis",
      "crystal23": "Topological analysis (TOPOND / QTAIM)",
      "vibeqc": "Molecular `vibeqc.qtaim`; MANTA QTAIM slice (#618)",
      "state": "unverified",
      "evidence": "#618 QTAIM capability slice c6b17b10 posted",
      "gap": "Periodic QTAIM acceptance",
      "issues": [
        "#618"
      ]
    },
    {
      "id": "coop-cohp",
      "group": "Properties and wave-function analysis",
      "crystal23": "Crystal orbital overlap/Hamiltonian populations",
      "vibeqc": "`vibeqc.coop_cohp` on GDF properties",
      "state": "source-tested",
      "evidence": "Pinned fixtures",
      "gap": "Accepted-state gate as for DOS",
      "issues": [
        "#547"
      ]
    },
    {
      "id": "wannier",
      "group": "Properties and wave-function analysis",
      "crystal23": "Localized Wannier functions (Boys)",
      "vibeqc": "`periodic_localise` Boys localisation for local correlation",
      "state": "implemented",
      "evidence": "Used by periodic DLPNO; not a properties-module LOCALWF workflow",
      "gap": "No Wannier-based IR/polarization properties",
      "issues": []
    },
    {
      "id": "other-properties",
      "group": "Properties and wave-function analysis",
      "crystal23": "Electrostatic potential, EFG, Fermi contact, Mossbauer, Compton profiles, structure factors, transport, spontaneous polarization",
      "vibeqc": "none",
      "state": "unsupported",
      "evidence": "",
      "gap": "Properties suite is a separate roadmap milestone",
      "issues": []
    },
    {
      "id": "openmp",
      "group": "Performance and parallelism",
      "crystal23": "OpenMP and MPI parallel SCF and gradients",
      "vibeqc": "OpenMP native kernels; MPI output-cell farming for the BIPOLE direct ERI build; fleet runtimes",
      "state": "unverified",
      "evidence": "#96: GDF thread efficiency saturates near 17 threads (0.27 at 64 cores)",
      "gap": "Measured scaling recommendation (#96); production MPI is a 1.0 milestone",
      "issues": [
        "#96"
      ]
    },
    {
      "id": "time-to-solution",
      "group": "Performance and parallelism",
      "crystal23": "(parity target) Same-accuracy time-to-solution versus CRYSTAL23",
      "vibeqc": "#574 paired full-SCF benchmark manifest; #644 CRYSTAL engine-time extraction",
      "state": "unverified",
      "evidence": "No paired same-accuracy benchmark has been accepted; BIPOLE diamond PBE0 Gamma cost 35 h on 20 cores versus GDF 1.5 h (#163, old runtime)",
      "gap": "Target ratio <= 1 per declared production case with uncertainty (#574)",
      "issues": [
        "#574",
        "#644"
      ]
    }
  ]
}
