Skip to main content

Module error

Module error 

Source
Expand description

Unified error family for the solver’s public API surface.

Reconciled from grand-audit Pass 2 prototype 14 (api-error-taxonomy) onto the Pass-3 composed tree (Pass 3 py-module-reconciliation, T9).

Before this, the crate had two independent, incomplete error shapes: Unsatisfiable (a bare unit struct, lib.rs) and AssignmentError (builder/assignment.rs, five variants scoped to the assignment-problem builder only, and — per the Pass-1 rust-cop-builder finding — conflating budget-exhaustion with genuine infeasibility). Every downstream binding (py/, wasm’s isomorphic.rs) re-derived its own ad hoc mapping of “something went wrong” onto a bare PyRuntimeError/JsError string, which is exactly the “silent/conflated handling” the audit’s fail-explicit precept bans (Pass-1 ledger R15, B0).

CspError is the one family every layer should map 1:1 rather than reinvent: PyO3 via create_exception! (py/errors.rs) and wasm via a typed WasmCspError that stamps a .code onto a genuine Error instance (wasm/src/errors.rs, not reconciled in this pass — see report). code() is the one string all downstream layers agree on.

Tests: tests/error.rs.

Enums§

CspError
Unified error family for Csp/Sudoku/Futoshiki operations exposed across the PyO3 and wasm boundaries.