v1.7.1 — ADR-001 SOTA: MCP advertise + budget enforcement + J/solve CI
1.7.1 / Rust crate 0.3.1 — 2026-05-18
Closes the ADR-001 roadmap. With this release the package is functionally SOTA per the ADR's own criterion (6 of 6 roadmap items shipped; README cites complexity classes as a first-class API surface; only CI J/solve integration remains, blocked on GH Actions exposing power counters).
Added
- MCP tool surface advertises complexity (ADR-001 #4).
solveandsolveTrueSublinearJSON schemas now carry anx-complexityextension withclass,default/worstfor Adaptive solvers,detail, andedgeSafe. Clients can read it attools/listtime. max_complexity_classinput arg + server-side enforcement. Both solver handlers reject the call with a structuredInvalidRequestwhen the chosen method's worst-case class exceeds the caller's budget. No-op when the arg is absent (wire-compatible). Per-method class table mirrors the RustComplexityimpls.- New
estimateComplexityClassMCP tool. O(1) lookup against the per-method class table. Returns class + detail + edgeSafe so an agent can decide between 'spend the J/decision'and 'cache lookup' before invoking a solver. - README's new "🧮 Complexity as a First-Class API Surface" section explaining the type-level + wire-level contract.
Fixed
[profile.bench]now setspanic = "unwind"so criterion's transitive deps (regex_syntax, aho_corasick, memchr, log, humantime, is_terminal, termcolor) can link. Without this, criterion'scatch_unwind-using measurement loop fails the CI bench-smoke job after a recent dep drift tightened panic-strategy requirements.- Cargo.toml gains an explicit
includelist so future npm/WASM artifact directories cannot silently push the crate tarball past the 10 MB crates.io cap. (The v1.7.0 publish narrowly avoided this; the v1.7.1 cycle hit it head-on. Fixed forward.)