Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
acbea8f
Add typed scientific persistence artifacts
mveril Sep 26, 2026
510716b
Harden typed persistence boundaries
mveril Sep 27, 2026
68ef178
Fix private NPY matrix test
mveril Sep 27, 2026
4ebc312
Format persistence paths
mveril Sep 27, 2026
2d0350e
Format NPY persistence tests
mveril Sep 27, 2026
72c218c
Hide persistence manifest internals
mveril Sep 27, 2026
806f51f
Make manifest types crate-private
mveril Sep 27, 2026
f252b12
Add internal persistence storage
mveril Sep 27, 2026
37cabda
Wire persistence storage
mveril Sep 27, 2026
025801b
Route RustiQData through storage
mveril Sep 27, 2026
87047af
Harden persistence storage
mveril Sep 27, 2026
e710341
Prepare RustiQData for multiple storages
mveril Sep 27, 2026
de30a64
Expose selectable persistence storage
mveril Sep 27, 2026
b4a1720
Expose persistence storage selection
mveril Sep 27, 2026
4a74c44
Make RustiQData storage-selectable
mveril Sep 27, 2026
9f1caa9
Use selectable storage in ERI cache
mveril Sep 27, 2026
40b3750
Add NumPy matrix interoperability fixture
mveril Sep 27, 2026
d5312ed
Add NumPy matrix interoperability fixture
mveril Sep 27, 2026
9f9d0c1
Test NumPy matrix interoperability
mveril Sep 27, 2026
b3710ba
Document selectable persistence storage
mveril Sep 27, 2026
503aafd
Make storage enum extensible
mveril Sep 27, 2026
8fb142d
Fix storage-aware persistence tests
mveril Sep 27, 2026
ee04552
Split ile and avoid vector shape
mveril Sep 27, 2026
237d204
Split persistence error domains
mveril Sep 27, 2026
e2cb9ec
Expose focused persistence errors
mveril Sep 27, 2026
a51a79d
Use artifact-specific errors
mveril Sep 27, 2026
963879a
Use artifact errors for AO ERI access
mveril Sep 27, 2026
e4ba9d6
Keep infrastructure errors internal
mveril Sep 27, 2026
5028a08
Keep persistence infrastructure private
mveril Sep 27, 2026
b977d7b
Isolate storage errors
mveril Sep 27, 2026
0682875
Preserve storage callback errors
mveril Sep 27, 2026
3d8e3a6
Refine NPY validation errors
mveril Sep 27, 2026
6824c32
Use NPY-specific errors
mveril Sep 27, 2026
263a5b6
Refine artifact errors
mveril Sep 27, 2026
7d73b3d
Hide storage behind RustiQData
mveril Sep 27, 2026
b8f1664
Keep cache storage internal
mveril Sep 27, 2026
a92f67c
Hide storage errors from artifact API
mveril Sep 27, 2026
e84ecd3
Expose NPY error semantics
mveril Sep 27, 2026
74dd07f
Simplify storage callback propagation
mveril Sep 27, 2026
bccc618
Remove unused storage error variant
mveril Sep 27, 2026
9b8281e
Document internal storage boundary
mveril Sep 27, 2026
ff2b718
Refine persistence API boundaries
mveril Sep 27, 2026
45cc330
Format persistence refactor
mveril Sep 27, 2026
05e2eb6
Fix persistence type inference
mveril Sep 27, 2026
2d027b9
Fix persistence clippy lint
mveril Sep 27, 2026
3b10834
Format NPY clippy fix
mveril Sep 27, 2026
a57855d
Fix NumPy matrix interoperability fixture
mveril Sep 27, 2026
435af65
Fix NumPy matrix interoperability fixture
mveril Sep 27, 2026
91921c3
Decouple RustiQData from cache policy
mveril Sep 27, 2026
49de5b5
Own cache persistence policy in EriCache
mveril Sep 27, 2026
214b2da
Remove stale cache kind re-export
mveril Sep 27, 2026
19a8369
Format cache persistence update
mveril Sep 27, 2026
b242f10
Type known manifest kinds
mveril Sep 27, 2026
66fb6de
Expose known manifest kinds internally
mveril Sep 27, 2026
8a3550c
Test checkpoint persistence boundary
mveril Sep 27, 2026
2ddf063
Test cache persistence boundary
mveril Sep 27, 2026
e6a0413
Preserve unknown manifest kinds
mveril Sep 27, 2026
c9c3e28
Store typed manifest kinds
mveril Sep 27, 2026
cdf0fce
Use typed manifest kind matching
mveril Sep 27, 2026
f7cf240
Remove unsupported checkpoint kind
mveril Sep 27, 2026
0ae3e54
Remove unsupported checkpoint constructor
mveril Sep 27, 2026
7fd4147
Test unknown kind cache rejection
mveril Sep 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ periodic_table = "0.5"
proptest = "1"
rand = "0.10"
rayon = "1"
relative-path = { version = "2", features = ["serde"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1.0.*"
sysinfo = { version = "0.39.6", default-features = false, features = ["system"] }
Expand Down
1 change: 1 addition & 0 deletions crates/rustiq-core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ npyz = "0.9.1"
physical_constants = "0.5"
periodic_table.workspace = true
rayon.workspace = true
relative-path.workspace = true
tokio = { workspace = true, features = ["fs", "io-util"], optional = true }
serde_json.workspace = true
serde.workspace = true
Expand Down
8 changes: 8 additions & 0 deletions crates/rustiq-core/src/persistence/data.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
mod ao_eri_artifact;
mod artifact;
mod rustiq_data;

pub use ao_eri_artifact::AoEriArtifact;
pub use artifact::Artifact;
pub use rustiq_data::RustiQData;
pub(crate) use rustiq_data::AO_ERI_ARTIFACT;
29 changes: 29 additions & 0 deletions crates/rustiq-core/src/persistence/data/ao_eri_artifact.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
use crate::{eri::CompactEri, persistence::ArtifactError};

use super::{
artifact::{private, Artifact},
rustiq_data::{RustiQData, AO_ERI_ARTIFACT},
};

/// AO electron-repulsion integrals in compact storage order.
pub struct AoEriArtifact;

impl private::Sealed for AoEriArtifact {}

impl Artifact for AoEriArtifact {
type Value = CompactEri;

fn get(data: &mut RustiQData) -> Result<Option<&CompactEri>, ArtifactError> {
if data.ao_eri.is_some() {
return Ok(data.ao_eri.as_ref());
}
if !data.manifest.artifacts.contains_key(AO_ERI_ARTIFACT) {
return Ok(None);
}
data.read_eri().map(Some)
}

fn set(data: &mut RustiQData, value: CompactEri) -> Result<(), ArtifactError> {
data.set_eri(value)
}
}
16 changes: 16 additions & 0 deletions crates/rustiq-core/src/persistence/data/artifact.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
use super::rustiq_data::RustiQData;
use crate::persistence::ArtifactError;

pub(crate) mod private {
pub trait Sealed {}
}

/// A known scientific artifact. Only RustiQ's declared artifact markers implement this trait.
pub trait Artifact: private::Sealed {
type Value;

#[doc(hidden)]
fn get(data: &mut RustiQData) -> Result<Option<&Self::Value>, ArtifactError>;
#[doc(hidden)]
fn set(data: &mut RustiQData, value: Self::Value) -> Result<(), ArtifactError>;
}
Loading
Loading