You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+18Lines changed: 18 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,24 @@ All notable changes to this project. The format follows
4
4
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project
5
5
adheres to [Semantic Versioning](https://semver.org/).
6
6
7
+
## [1.7.1] / Rust crate 0.3.1 — 2026-05-18
8
+
9
+
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).
10
+
11
+
### Added
12
+
13
+
-**MCP tool surface advertises complexity** (ADR-001 #4). `solve` and `solveTrueSublinear` JSON schemas now carry an `x-complexity` extension with `class`, `default`/`worst` for Adaptive solvers, `detail`, and `edgeSafe`. Clients can read it at `tools/list` time.
14
+
-**`max_complexity_class` input arg + server-side enforcement.** Both solver handlers reject the call with a structured `InvalidRequest` when 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 Rust `Complexity` impls.
15
+
-**New `estimateComplexityClass` MCP 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.
16
+
- README's new "🧮 Complexity as a First-Class API Surface" section explaining the type-level + wire-level contract.
17
+
18
+
### Fixed
19
+
20
+
-**`[profile.bench]` now sets `panic = "unwind"`** so criterion's transitive deps (regex_syntax, aho_corasick, memchr, log, humantime, is_terminal, termcolor) can link. Without this, criterion's `catch_unwind`-using measurement loop fails the CI bench-smoke job after a recent dep drift tightened panic-strategy requirements.
21
+
- Cargo.toml gains an explicit `include` list 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.)
Every public solver, sampler, and analyser in this crate declares its **worst-case complexity class at the type level** (`Complexity` trait, compile-time `const CLASS`) and at the **MCP wire level** (`x-complexity` JSON Schema extension on every tool). Callers with a J/decision budget — Cognitum reflex loops, RuView change detection, Ruflo agentic inner loops — can refuse anything over budget at *tool-list time*, not after the call returns.
55
+
56
+
The 12-tier taxonomy (`Logarithmic` → `DoubleExponential`, plus `Adaptive { default, worst }` for solvers that degrade on hard inputs) lives in `src/complexity.rs`. The decision rationale and full 6-item roadmap is in [`docs/adr/ADR-001-complexity-as-architecture.md`](docs/adr/ADR-001-complexity-as-architecture.md).
57
+
58
+
Headline classes in v1.7+:
59
+
60
+
| Solver | Class | Per-call cost |
61
+
|---|---|---|
62
+
|`SublinearNeumannSolver` (single entry) |`Adaptive { Logarithmic, Linear }`|`O(log n)` on DD systems; `O(n)` base case |
63
+
|`OptimizedConjugateGradientSolver`|`Linear`|`O(k · nnz(A))`, k ≈ √κ(A) |
64
+
|`NeumannSolver`|`Linear`|`O(k · nnz(A))` per iter |
65
+
|`solve_on_change(prev, sparse_delta)`|`Linear` (in `nnz(A)`, with `k_warm ≪ k_cold`) | Steady-state cost for streaming workloads |
|`coherence_score(matrix)`|`Linear`|`O(nnz(A))` — refuses near-singular solves before they run |
68
+
69
+
Runtime introspection via `dyn ComplexityIntrospect`, or `mcp__sublinear__estimateComplexityClass` over the wire. Energy numbers (`J/solve`) — the metric that actually matters on a Pi Zero — captured via `examples/joules_per_decision.rs` (Linux RAPL / hwmon / time-only fallback).
70
+
52
71
## 🎯 What Can This Do?
53
72
54
73
This is a revolutionary self-modifying AI system with 40+ advanced tools:
0 commit comments