Latest Results
Normalize model errors at the Python boundary (#1105)
## Summary
- route decision-variable insertion, substitution, content-factor, and
OneHot/SOS1 construction failures through the shared `OmmxPyResult`
boundary with direct `?` propagation
- preserve narrow Rust SDK signals for duplicate decision-variable IDs,
decision-variable/parameter ID collisions, invalid substitutions,
content-factor failures, and empty structural constraints across
equivalent builders and setters
- retain nested causes at outer ownership boundaries: exact
integer-slack errors keep their `ContentFactorError` source, v1/v2
ParametricInstance parsing keeps `ParameterIDCollision` beneath
`ParseError`, and v2 structural parsing keeps OneHot/SOS1 validation
sources beneath `ParseError`
- compute the content-factor denominator LCM with reduced checked
multiplication so `MultiplierOverflow` is emitted only when the true LCM
exceeds the `i64` range
- map caller-correctable model failures to Python `ValueError` while
leaving untyped defensive invariant failures on the `RuntimeError`
fallback
- update focused Rust and Python regression coverage, generated stubs
and API metadata, and the English/Japanese Python plus Rust release
notes
## Error ownership
- duplicate decision-variable rows retain
`DecisionVariableError::DuplicateID`
- `ParametricInstance` decision-variable/parameter collisions use the
narrow `ParameterIDCollision` signal in construction and insertion paths
and as a nested source during semantic parsing
- substitution retains the existing `SubstitutionError`, ordered before
its nested coefficient cause at the Python boundary
- `Function.content_factor` retains `ContentFactorError`;
`MultiplierOverflow` means the reduced denominator LCM does not fit in
`i64`
- empty OneHot and SOS1 constraints retain `OneHotConstraintError` and
`Sos1ConstraintError`
- exact integer-slack conversion and protobuf parsing remain the outer
owners when they wrap those narrower causes
- untyped defensive invariant failures continue to fall back to Python
`RuntimeError`
## Workstream
- follows the merged evaluation slice #1104
- advances #1091
- precedes the stacked sample-validation slice #1107 Latest Branches
N/A
claude/sleepy-wilbur-9b1170 N/A
codex/slim-benchmark-workflow N/A
codex/instance-into-partial-evaluated © 2026 CodSpeed Technology