fix: lock leftover auto-backend surfaces to fail-closed Rust - #946
cursor[bot] wants to merge 11 commits into
Conversation
Keep the Claude runtime-contract TOML, and stop README, commercial readiness, PRD, TRD, and ADR-0002 from advertising a silent NumPy fallback for backend=auto. Purchasers should install the compiled Rust core or pass explicit backend=numpy for parity testing. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
Close the buyer-facing leftovers that #945 missed: README CLI examples, fit --help, FitConfig comments, commercial Operational Notes, and the auto fail-closed error now name the next action. Contract tests bind to resolve_backend and scan those surfaces. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
The auto-unavailable message uses "reference/parity" as policy language, not a filesystem path. fit --help wraps the next-action clause, so the lock now compares whitespace-normalized help text. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
There was a problem hiding this comment.
Verdict
COMMENT only. Do not merge #946 while these leftover purchaser surfaces still treat Rust as optional or treat NumPy as a valid auto outcome. Do not self-approve.
#946 correctly locked README install/CLI copy, fit --help, FitConfig comments, commercial Operational Notes, and the fail-closed auto error. That slice is sound. The same purchaser walk can still be told the opposite contract in four places that this head does not lock:
docs/buyer_demo_storyboard.mdstill says NumPy is the reference backend and Rust/PyO3 is optional acceleration.- README repository layout still calls
crates/fast-mlsirm-pythe optional Rust backend. scripts/release_acceptance.pystill acceptsnumpyas a recordedfit --backend autoowner.scripts/sales_readiness.py --check-importhelp still says it imports an optional Rust core.
A buyer running the demo or acceptance packet can therefore still conclude that production auto may be NumPy.
Next action
Prefer the successor on cursor/bc-9ea40d9c-829d-4fd3-8383-f346575fc77f-51c7 (495f9565) over this head. That commit fails the four surfaces closed and locks them in tests/test_claude_runtime_contract.py plus behavioral release-acceptance tests. Local evidence on that tip: 52 passed for tests/test_claude_runtime_contract.py tests/test_backend.py tests/test_config.py tests/test_release_acceptance_subprocess_deadlines.py.
Do not merge #945 in parallel. Do not open a fifth competing runtime-contract PR once the successor is the landing vehicle. Control-hardening PRs stay independent.
Hosted exact-head CI/security/package/coverage on the successor is still required before Ready. This review is not an approval.
Sent by Cursor Automation: Fix Issues
|
Superseded by #951. The #951 head |


Scope
Prefer this PR over #945 and #833. Do not merge those in parallel.
#945 locked README Install, CLAUDE.md, commercial Supported Product Surface, and PRD/TRD/ADR-0002 auto sentences. A purchaser could still be told that
autofalls back to NumPy in the same README CLI section,fast-mlsirm fit --help, publicFitConfigcomments, and commercial Operational Notes. The #945 tests locked exact phrases and never importedresolve_backend.This successor keeps the #833/#945 runtime-contract TOML lock and closes those leftover buyer-facing surfaces. The auto fail-closed error now names the next action without reflecting local paths or ABI details.
What a purchaser should do
fast_mlsirm._core.FitConfig(backend="auto")orfast-mlsirm fit --backend autofor production; both fail closed if the Rust core is missing.backend="numpy"or--backend numpyonly when you want the explicit reference/parity path.Machine-readable contract (unchanged)
Verification
Contract tests now import
resolve_backend, scan README/CLI/FitConfig/commercial surfaces for the leftover stale claims, and assertfit --helpplus the auto error name the next action.Advances #621. No formula, estimator, or dependency changes.