Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion src/simlin-engine/src/common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -702,7 +702,7 @@ pub enum ErrorKind {
Variable,
}

#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[derive(Debug, Clone, PartialEq, Eq, Hash, salsa::Update)]
pub struct Error {
pub kind: ErrorKind,
pub code: ErrorCode,
Expand Down
6 changes: 5 additions & 1 deletion src/simlin-engine/src/db.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,11 @@ mod dep_graph;
mod element_graph_proptest;
mod invariance;
pub(crate) use invariance::model_flows_invariant;
mod ltm_ir;
// `pub(crate)` (not private-to-`db`) so the Track-A classifier-agreement gate,
// mounted under `crate::ltm_augment`, can reach the production Expr2 walker
// (`collect_all_reference_sites`) and the reference-site IR entry
// (`model_ltm_reference_sites`) it compares the Expr0 partial builder against.
pub(crate) mod ltm_ir;
mod macro_registry;
mod units;
mod var_fragment;
Expand Down
2 changes: 1 addition & 1 deletion src/simlin-engine/src/db/ltm_ir.rs
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,7 @@ struct WalkCtx<'a> {
/// left-to-right DFS over the AST, matching `enumerate_agg_nodes`, so the
/// per-source site `Vec`s are deterministic (a salsa requirement on the
/// cached IR result).
fn collect_all_reference_sites(
pub(crate) fn collect_all_reference_sites(
target_var: &crate::variable::Variable,
variables: &HashMap<Ident<Canonical>, crate::variable::Variable>,
dim_ctx: &crate::dimensions::DimensionsContext,
Expand Down
11 changes: 11 additions & 0 deletions src/simlin-engine/src/ltm_augment.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5908,3 +5908,14 @@ fn generate_nonlinear_partial(
#[cfg(test)]
#[path = "ltm_augment_tests.rs"]
mod tests;

// The Track-A differential gate: the Expr2 and Expr0 access-shape classifier
// families must agree per non-reducer reference occurrence, so the
// ceteris-paribus live reference survives PREVIOUS-wrapping instead of
// silently zeroing the link score. Mounted here (not in `ltm_ir`) so it sees
// this module's private Expr0 classifier (`classify_expr0_subscript_shape`)
// and `IteratedDimCtx`; it reaches the Expr2 side through `pub(crate)`
// `db::ltm_ir`.
#[cfg(test)]
#[path = "ltm_classifier_agreement_tests.rs"]
mod classifier_agreement_tests;
Loading
Loading