# FrankenSciPy — Technical Due-Diligence Assessment

**The hook:** A 613,565-line, zero-unsafe Rust reimplementation of SciPy whose own scorecard file opens by telling you that not one figure in it clears the project's evidence gate.

**Tier legend (Rulebook §1):** **[Verified]** direct inspection of the pinned clone or a live page read by the analyst — flavors **[Counted]** (I ran the count), **[Git-observed]** (git metadata), **[Code-verified]** (source read). **[CI-observed]** is Tier 2 (seen executing on live CI pages — attests the suite *runs*, not that it is green). **[Maintainer claim]** asserted in README/docs, not independently executed. **[External]** independent sources. **[Inference]** analyst judgment, always labeled. Confidence: **High** / **Medium** / **Low**.

## TL;DR

FrankenSciPy is a genuinely enormous, rigorously evidence-governed clean-room Rust reimplementation of SciPy: 19 crates, 613,565 lines of first-party Rust under `crates/*/src` (766 files), 10,174 inline `#[test]` functions, 795 conformance integration-test files, 16 live-SciPy oracle scripts, 96 fuzz targets, zero `unsafe` blocks (workspace `#![forbid(unsafe_code)]`), a real tagged release (v0.2.0, 2026-09-12) published to crates.io for all 19 crates, and CI Gates G1–G9 green at the pinned commit. Its most original contribution is **CASP (Condition-Aware Solver Portfolio)** — runtime algorithm selection by Bayesian expected-loss minimization against calibrated loss matrices, with audit certificates and conformal-calibration fallback — now claimed across five numerical domains, plus a **strict/hardened mode split** with fail-closed semantics. **TRL 5. NODUS ring: Explore.** Strongest strength: the evidence discipline — a 44,078-line negative-evidence ledger, a discrepancy catalog with IDs, a documented fleet-wide finding that harness disagreement is as large as worker disagreement, and a scorecard that disavows its own numbers. Strongest ceiling: bus factor 1 (6,395 commits by a `claude` contributor, 158 by the human owner), behavioral parity that is name-census rather than assertion coverage (the maintainer admits "referenced is weaker than compared"), zero independent validation, trivial crates.io downloads (11–45 per crate), and a non-OSI MIT+OpenAI/Anthropic-rider license that denies all rights — including benchmarking and analysis — to OpenAI, Anthropic, their affiliates, and their agents.

## Quick Links

- Repository: https://github.com/Dicklesworthstone/frankenscipy
- README: https://github.com/Dicklesworthstone/frankenscipy/blob/HEAD/README.md
- Parity census (regenerated 2026-09-15, 1,300 of 1,300 name-matched): https://github.com/Dicklesworthstone/frankenscipy/blob/HEAD/docs/planning/PARITY-COVERAGE.md
- Negative evidence ledger (worker/harness-unidentified notice, 2026-08-15): https://github.com/Dicklesworthstone/frankenscipy/blob/HEAD/docs/NEGATIVE_EVIDENCE.md
- Gauntlet release scorecard (self-disavowing): https://github.com/Dicklesworthstone/frankenscipy/blob/HEAD/docs/GAUNTLET_RELEASE_SCORECARD.md
- Conformance divergences catalog: https://github.com/Dicklesworthstone/frankenscipy/blob/HEAD/crates/fsci-conformance/DISCREPANCIES.md
- License (MIT + OpenAI/Anthropic rider, read verbatim): https://github.com/Dicklesworthstone/frankenscipy/blob/HEAD/LICENSE
- Changelog (scope window ends 2026-08-19 — stale): https://github.com/Dicklesworthstone/frankenscipy/blob/HEAD/CHANGELOG.md
- Release v0.2.0 (2026-09-12, tag + GitHub release): https://github.com/Dicklesworthstone/frankenscipy/releases/tag/v0.2.0
- CI — CI Gates (G1–G9), green at pin: https://github.com/Dicklesworthstone/frankenscipy/actions/workflows/ci.yml
- Crate on docs.rs (registry presence verified via crates.io API; the crates.io web UI 404s for these crates as of 2026-09-22 despite the API serving them — noted in §4.3): https://docs.rs/fsci-linalg

## Did you know?

The repo's own negative-evidence ledger records that frankenlibc measured the same malloc/free primitive on the same worker under two sanctioned harnesses and got **5.9459x** and **12.385414x** — with **both** A/A nulls passing — leading the fleet to adopt the finding that "harness disagreement is as large as worker disagreement" and that a passing null does not certify the harness [Maintainer claim, Medium — from `docs/NEGATIVE_EVIDENCE.md` at the pin; the claim's honesty is the point].

## Franken-worthy next steps

These are research directions, not engineering tickets: each is novel, specific, falsifiable, and backed by rigor this project has already demonstrated.

1. **Harness-disagreement replication as a published null result.** The fleet's strongest methodological finding — that harness choice moves a ratio as much as worker choice (5.9459x vs 12.385414x, both nulls passing) — rests on one primitive in one sibling repo. Re-run FrankenSciPy's canonical 18 parity packets' performance claims under ≥3 sanctioned harnesses × ≥2 workers and publish the full disagreement matrix. **Falsification:** if cross-harness disagreement is small for these workloads, the fleet-wide finding collapses to a frankenlibc anecdote and the evidence-gate doctrine loses its load-bearing example.
2. **CASP as an exportable decision-theoretic layer, tested outside numerics.** The portfolio machinery (condition probing → posterior over states → argmin expected loss over a calibrated matrix → audit certificate → conformal fallback) is architecturally domain-agnostic — a plausibility, not yet a demonstrated property. Point it at a genuinely different selection problem in the numerical neighborhood — e.g., selecting BLAS kernels against vendor BLAS, or choosing quadrature rules by integrand features — with a calibrated loss matrix learned from evidence. **Falsification:** on a held-out workload, the portfolio must beat the best static rule by a margin larger than the calibration noise; if it can't, CASP is numerical-library scaffolding, not a method.
3. **Behavioral-parity assertion census.** The maintainer's own README admits the per-routine list of what each `diff_*` file asserts "does not exist yet" and that "referenced is weaker than compared." Build it: for all 1,300 name-matched routines, enumerate the asserted behavioral properties (tolerances, edge cases, dtype contracts). **Falsification:** publish the coverage ratio; if assertion coverage is thin, the "100%" parity census is retired as a behavioral claim and re-scoped honestly to what it is — a name census.
4. **Tamper-evident evidence packs as a publication format.** The RaptorQ sidecar + decode-proof triples + G8 integrity scrub are already CI-enforced. Generalize them into a signed, hash-chained artifact format a journal or regulator could verify independently of the repo. **Falsification:** a red-team campaign attempts post-hoc tampering of `parity_report.json` (edit, reorder, truncate); any undetected tampering that survives the G8 scrub kills the integrity thesis.
5. **wasm32 build of the sync kernel core.** The numerical kernels are synchronous, `forbid(unsafe)`, no tokio, no FFI to BLAS/LAPACK — the exact shape for a browser/edge numerical substrate. Compile `fsci-special` + `fsci-stats` to `wasm32` and run the differential fixtures in the sandbox. **Falsification:** below ~99% behavioral agreement with the native build, or above 2x memory overhead, the embeddable thesis fails.

---
## 4.1 Header

| Field | Value |
|---|---|
| Repository | https://github.com/Dicklesworthstone/frankenscipy |
| Pinned revision | `2fce54d56ee9af37ea8876a5248ce8aa0f882a22` — 2026-09-22 12:39:40 UTC [Verified, High] |
| Assessment date | 2026-09-22 |
| Language / toolchain | Rust, edition 2024, pinned `nightly-2026-08-31` (`rust-toolchain.toml`) [Verified, High] |
| License | MIT License **with OpenAI/Anthropic Rider** — NOT OSI open source; full text read verbatim, rider scope quoted in §4.8 [Verified, High] |
| Scale | 19 workspace crates; 613,565 Rust lines / 766 files (crates only, `src/`); 10,174 inline `#[test]` functions; 795 conformance test files; 16 Python oracle scripts; 96 fuzz targets [Verified, High] |
| Stars / forks | 15 stars / 4 forks (GitHub API, 2026-09-22) [External, High] |
| Releases / tags | v0.2.0 — Git tag + GitHub release, published 2026-09-12T01:08:04Z (release id 387411244), not draft, not prerelease [External, High]; all 19 crates on crates.io at 0.2.0, downloads 11–45 per crate [External, High] |
| Last push | Pinned commit 2026-09-22 12:39:40 UTC; CI Gates G1–G9 **success at the pin** (run created 2026-09-22T12:39) [CI-observed, High] — the gates, from `.github/workflows/ci.yml`: G1 fmt+clippy; G2 unit+property tests per crate; G3 differential conformance vs live pinned SciPy (with a "no SciPy must fail" control job, live-oracle capture, and goldens/metamorphic/fallback capture); G4 adversarial smoke; G5 E2E scenarios; G6 perf smoke + baseline validation; G7 artifact-schema + evidence-pack validation; G8 RaptorQ decode-proof verification; G9 tolerance-policy ratchet |
| Maintainer | Dicklesworthstone (Jeffrey Emanuel, per LICENSE copyright); contributor graph dominated by `claude` (6,395 commits) vs 158 human — bus factor 1 [External, High] |
| Inception | Not stated in README; CHANGELOG scope window begins at project inception with no date given [Verified] |

**Analyst method.** Fresh shallow clone of HEAD to `~/workspace/.scratch/frankenscipy-verify/` (8,324 files). Read: README (2,048 lines), LICENSE (verbatim), CHANGELOG, AGENTS.md (oracle section), `rust-toolchain.toml`, `docs/planning/PARITY-COVERAGE.md` (headers), `docs/NEGATIVE_EVIDENCE.md` (headers + notices), `docs/GAUNTLET_RELEASE_SCORECARD.md` (disavowal section), `crates/fsci-conformance/DISCREPANCIES.md`. Grep-verified: workspace members, Rust line/file counts, `#[test]` occurrence counts, `unsafe` census (zero code blocks; 6 comment/doc mentions), tokio references (zero), asupersync references (2 files), CASP portfolio types, `RuntimeMode`, `SolveCertificate`, `default_loss_matrix`, `unimplemented!`/`todo!` (zero), conformance test/oracle/fuzz counts, fsci-stats structure. API-verified: repo meta, release, contributors, all 19 crates.io entries, CI run conclusions at the pin. Web-searched for independent coverage. Fetched and confirmed resolution of every Quick Link. **Not done:** did not compile, run tests, execute benchmarks, run fuzz targets, or execute the SciPy oracle — all behavioral and performance claims rest on maintainer evidence. Shallow clone only (no full history). Star/fork/download counts are API point-in-time.

## 4.2 Executive verdict

FrankenSciPy is a **genuinely enormous, rigorously evidence-governed clean-room Rust reimplementation of SciPy's numerical surface** [Inference, High] — not vaporware: a shallow clone of HEAD confirms 19 crates and 613,565 lines of first-party Rust with zero `unsafe` blocks [Verified, High], 10,174 inline tests [Verified, High], a three-lane differential conformance harness against a live SciPy 1.17.1 oracle [Verified infrastructure exists, High], a tagged v0.2.0 release on crates.io for all 19 crates [Verified, High], and CI Gates G1–G9 concluding success at the pinned commit [CI-observed, High]. Its most original contribution is **CASP (Condition-Aware Solver Portfolio)** — runtime algorithm selection by Bayesian expected-loss minimization against calibrated 5×4 loss matrices, emitting audit certificates with conformal-calibration fallback — wired across five numerical domains (all five entry points verified calling `select_action` at the pin) [Verified wiring, High; calibration quality Maintainer claim, Medium], plus a **strict/hardened mode split** with fail-closed semantics [Verified types, High; behavioral claims Maintainer claim, Medium]. **But:** "parity" is a name census, not assertion coverage — the maintainer's own README says a per-routine list of what each `diff_*` file asserts "does not exist yet" and that "referenced is weaker than compared" [Verified, High]; the contributor graph is one human plus 6,395 `claude` commits (bus factor 1, AI-authored provenance) [External, High]; zero independent benchmarks, reviews, or production deployments were found [External, High within recall]; downloads are 11–45 per crate [External, High]; the README refuses a speed headline ("mileage varies," profile-first) and the project's own scorecard disavows every figure in it [Verified, High]; and the MIT+OpenAI/Anthropic-rider license denies all rights — including benchmarking and analysis — to OpenAI, Anthropic, affiliates, and their agents [Verified, High]. **NODUS: Explore. Wardley: custom-built SciPy-equivalent (commodity surface) with genesis-stage CASP machinery.** Its most durable contribution today may be the **evidence methodology** (negative-evidence ledgers, discrepancy catalogs, harness-gated benchmarks), not the numerical surface [Inference, Medium].

## 4.3 Claim inventory: demonstrated vs aspirational

Status values: *demonstrated* / *partially demonstrated* / *aspirational* / *disproven* / *stale*.

| # | Claim | Status | Evidence |
|---|---|---|---|
| 1 | 19-crate workspace, edition 2024, version 0.2.0 | **Demonstrated** | [Verified, High] — `Cargo.toml` workspace members match `crates/`; version 0.2.0 |
| 2 | ~613.6k lines under `crates/*/src` (README says "~610,000", measured 2026-09-03) | **Demonstrated** (README figure mildly stale) | [Verified, High] — 766 files, 613,565 lines; README dated 2026-09-03 |
| 3 | 10,174 `#[test]` functions (README says 10,056) | **Demonstrated** (README stale by 118) | [Verified, High] — mechanical occurrence count over `crates/` |
| 4 | 795 conformance integration-test files (README says 793; crate table says 793) | **Demonstrated** (README stale by 2) | [Verified, High] — `ls crates/fsci-conformance/tests` |
| 5 | 16 live-SciPy oracle scripts (README says 15) | **Demonstrated** (README stale by 1) | [Verified, High] — `python_oracle/*.py` count |
| 6 | Workspace-wide `#![forbid(unsafe_code)]`, zero unsafe | **Demonstrated** | [Verified, High] — `[workspace.lints.rust] unsafe_code = "forbid"`; zero `unsafe` code blocks; 6 files mention the word only in comments/docs |
| 7 | No tokio anywhere; synchronous kernels | **Demonstrated** | [Verified, High] — zero `tokio` references in manifests or `Cargo.lock`; README notes `cargo tree -i tokio` empty |
| 8 | Asupersync as async runtime (README badge: "asupersync (no tokio)") | **Disproven** (the implication; the literal "no tokio" is true) | [Verified, High] — the badge text is `async-asupersync (no tokio)`; asupersync appears only in `fsci-conformance` (RaptorQ evidence-pack encoding for artifact durability), never as an async runtime. The badge implies an async role the dependency does not have |
| 9 | 96 fuzz targets | **Demonstrated** | [Verified, High] — `ls fuzz/fuzz_targets` |
| 10 | v0.2.0 Git tag + GitHub release (2026-09-12) | **Demonstrated** | [External, High] — release id 387411244, not draft/prerelease |
| 11 | All 19 crates published on crates.io at 0.2.0 | **Demonstrated** (a README passage saying "not yet published" is **stale**) | [External, High] — all 19 queried via the crates.io API at 0.2.0, none yanked; README L1671 contradicts L648. Registry-presence caveat: as of 2026-09-22 the crates.io *web UI* returns 404 for these crate pages even though the API serves them and docs.rs renders docs — the registry presence is real, the storefront listing is not |
| 12 | "1,300 of 1,300" parity (PARITY-COVERAGE.md, 2026-09-15) | **Partially demonstrated** — it is a name-matching census, explicitly *not* behavioral parity | [Verified, High] — doc exists, is dated, and says so itself; README L53 still cites the older 1,194 figure |
| 13 | CASP Bayesian expected-loss portfolios across five domains, calibrated loss matrices | **Demonstrated** (wiring) / **maintainer claim** (calibration quality) | [Verified wiring, High] — all five domain entry points exist and each calls `select_action`: `solve_with_casp` (fsci-linalg L1995), `spsolve_with_casp` (fsci-sparse/src/linalg.rs L10017), `minimize_with_casp_portfolio` (fsci-opt/src/minimize.rs), `solve_ivp_with_casp_portfolio` (fsci-integrate/src/api.rs), `select_hypergeometric_branch_with_casp` (fsci-special/src/hyper.rs L332); `default_loss_matrix()` const fn, `ConformalCalibrator`, `SolveCertificate` all present; α=0.05, 200-call window [Verified, High] — `ConformalCalibrator::new(0.05, 200)` in all five portfolio constructors. Calibration *quality* is [Maintainer claim, Medium] — never independently validated |
| 14 | Strict vs hardened modes with fail-closed semantics | **Partially demonstrated** | [Verified types, High] + [Maintainer claim on behavior, Medium] — `RuntimeMode::{Strict,Hardened}`, `HARDENED_MAX_DIM`, `FailClosed`/`BoundedRecovery` audit events exist |
| 15 | Clean-room reimplementation | **Partially demonstrated** (label is a maintainer claim with a caveat) | [Maintainer claim, Medium] — AGENTS.md references `/dp/frankenscipy/legacy_scipy_code/scipy` as a behavioral oracle checkout; using a reference oracle is standard conformance practice, but it sits next to the "clean-room" label |
| 16 | CI Gates G1–G9 green at HEAD | **Demonstrated** | [CI-observed, High] — success at pinned commit `2fce54d5` |
| 17 | Benchmarks beat SciPy (any headline number) | **Aspirational** — and the README refuses to make one | [Verified, High] — FAQ "Is this faster than SciPy?": "mileage varies"; GAUNTLET: "not one figure clears the fleet's current evidence gate"; per-domain table gives only qualitative guidance |
| 18 | 4,370+ closed beads (issue tracker) | **Partially demonstrated** | [Maintainer claim, Medium] — README L651; `.beads/` not present in shallow clone to verify |

## 4.4 Architecture (reconstructed, not summarized)

[Verified from the clone; README diagrams treated as claims where noted]

**Crate topology (19 workspace members, `Cargo.toml`):** domain crates `fsci-linalg` (dense linear algebra; CASP solver selection), `fsci-sparse` (CSR/CSC/COO/BSR/DIA/DOK/LIL; iterative solvers CASP-dispatched), `fsci-integrate` (quadrature + ODE), `fsci-interpolate`, `fsci-opt` (minimizers, roots, LP/MILP; CASP minimizer selector), `fsci-fft`, `fsci-signal`, `fsci-spatial`, `fsci-special` (66,581 lines under `src/` — README says ~72,100; gamma/beta/erf/Bessel/hypergeometric with CASP branch selection), `fsci-stats` (single 106,170-line `lib.rs`; 123 `impl …Distribution` blocks by grep), `fsci-cluster`, `fsci-ndimage`, `fsci-io`, `fsci-constants`, `fsci-odr`, `fsci-datasets`; plus `fsci-runtime` (the CASP engine: portfolios, `MatrixConditionState`, `SolverAction`, `PolicyController`, evidence ledger, conformal calibrator, strict/hardened modes), `fsci-arrayapi` (reference backend/broadcasting spec for conformance; V1.0 role decided, container migration deferred post-V1.0 per roadmap item 4), `fsci-conformance` (three-lane differential harness + 10 binaries — README says nine — + RaptorQ evidence packs).

**CASP decision loop** [Verified wiring, High; calibrated behavior Maintainer claim, Medium]: the wiring is real in all five domains — each domain entry point exists and calls `select_action`: `solve_with_casp` (fsci-linalg/src/lib.rs:1995), `spsolve_with_casp` (fsci-sparse/src/linalg.rs:10017), `minimize_with_casp_portfolio` (fsci-opt/src/minimize.rs), `solve_ivp_with_casp_portfolio` (fsci-integrate/src/api.rs), `select_hypergeometric_branch_with_casp` (fsci-special/src/hyper.rs:332). The loop: condition probing (rcond, structural evidence) → posterior over four condition states (`WellConditioned`, `ModerateCondition`, `IllConditioned`, `NearSingular`) via conformal calibrator retrained from accumulated evidence → argmin expected loss over five solver actions against a calibrated 5×4 loss matrix → `SolveCertificate` synchronously returned (action, rcond, posterior, expected losses, fallback flag) enabling replay/determinism checks → automatic fallback on failure with calibrator update → conformal-drift override to `SolverAction::SVDFallback` when empirical miscoverage exceeds target. The verified matrix (`SolverPortfolio::default_loss_matrix()`, a `const fn`, fsci-runtime/src/lib.rs:162-170): DirectLU [1,5,40,120]; PivotedQR [3,1,8,45]; SVDFallback [15,10,1,1]; DiagonalFastPath [0,0,0,100]; TriangularFastPath [0,0,0,100]; decision rule a* = argmin_a Σ_s L(a,s)·P(s|evidence). The calibrator is constructed `ConformalCalibrator::new(0.05, 200)` — α=0.05, 200-call window [Verified, High] — in all five portfolio types; `should_fallback()` fires when empirical miscoverage exceeds alpha + 0.02 over ≥10 scores, and invalid nonconformity scores are recorded as INFINITY so the calibrator fails closed. What remains maintainer-asserted is the *calibration quality* — that the loss matrices and posteriors are well-calibrated on real workloads — which no independent party has validated.

**Mode model** [Verified types, High; behavior Maintainer claim, Medium]: `RuntimeMode::Strict` vs `RuntimeMode::Hardened`; hardened caps dimension at `HARDENED_MAX_DIM = 10_000`, emits `FailClosed`/`BoundedRecovery` audit events; calibrator-drift override applies in both modes. README claims the split and ledger emission are "active across all numerical crates."

**Conformance apparatus** [Verified infrastructure, High; results Maintainer claim, Medium]: three lanes — self-check, live-SciPy-oracle differential (`run_differential_test`), dispatch — with 18 canonical parity packets (`FSCI-P2C-001`…`018`) carrying `parity_report.json` + RaptorQ (`.raptorq.json`) + decode-proof (`.decode_proof.json`) triples, per the v0.2.0 release notes; `DISCREPANCIES.md` catalogs 8 accepted divergences with DISC-NNN IDs and review dates. Artifact dirs also exist at top level (`tests/artifacts/`, `fixtures/artifacts/`) alongside the conformance fixture tree [Verified, High].

**Dependency posture:** remarkably self-contained — no BLAS/LAPACK FFI ("No FFI to BLAS / LAPACK," README L1973), no tokio, no async in kernels; `std::sync::{Mutex, RwLock, Arc}` guards shared caches [Verified, High]. `UPGRADE_LOG.md` (2026-09-11) records 12 total dependencies, 6 updated, 0 failed or rolled back — the thin surface with a clean upgrade record [Verified, High]. **Asupersync: conformance-crate-only** (`fsci-conformance` RaptorQ encode/decode for evidence packs) [Verified, High] — not an async runtime despite the README badge.

**README-vs-code drift (governance signal):** README says 10,056 tests (10,174 verified), 793 conformance files (795), 15 oracle scripts (16), "~610,000" lines dated 2026-09-03 (613,565); L1671 says "not yet published to crates.io" while L648 says published (crates.io confirms published); L53 cites the older 1,194 parity figure while PARITY-COVERAGE.md (2026-09-15) says 1,300/1,300; CHANGELOG scope window ends 2026-08-19 and claims "No git tags and no GitHub Releases exist" while v0.2.0 shipped 2026-09-12; roadmap item 3 says "all 15 component crate unit/property suites" vs 19 workspace crates; `fsci-conformance` is said to have 9 binaries (10 counted); `fsci-special` is said to be ~72,100 lines (66,581 counted under `src/`). None is concealed — the numbers are all checkable — but the pattern is docs lagging a fast tree, the exact signal the Rulebook asks for.

## 4.5 Benchmark and conformance audit

### Maintainer-produced numbers

| Workload | Claimed | Method controls | Would it survive independent rerun? |
|---|---|---|---|
| Per-domain competitiveness (README L1586–1594) | Qualitative only: dense linalg small-n "yes," large-n "within ~2–3x on uncontested machines," etc. | None stated; explicitly qualified as "a rough sense" | As qualitative guidance only — no numbers to falsify |
| GAUNTLET_RELEASE_SCORECARD.md win/loss rows | Numeric ratios (563 `Nx` tokens counted mechanically) | **None that clear the fleet gate** — 0 A/A, 0 same-invocation, 0 executed-ELF SHA-256 strings; newest row 2026-06-29; the sanctioned same-invocation harness didn't exist until 2026-07-28 | **No.** The file itself says "not one figure in it clears the fleet's current evidence gate" — quote, don't aggregate |
| Fleet finding (NEGATIVE_EVIDENCE.md, 2026-08-15) | Harness disagreement as large as worker disagreement (5.9459x vs 12.385414x, both A/A nulls passing) | Adopted fleet-wide; attributed to frankenlibc measurement | Single-primitive, single-sibling evidence; treat as a strong caution, not a theorem |
| Conformance results (parity packets, 113/113 in P2C-018 etc.) | Passing test counts per packet | RaptorQ decode proofs, G8 integrity scrub | Test-execution claims, not benchmarks; results are maintainer-asserted |

**Oracle negative control:** the G3 differential lane runs against live pinned SciPy 1.17.1, and a dedicated control job ("no SciPy must fail") fails the gate if the oracle is absent — proving the differential tests actually exercise SciPy rather than passing vacuously [CI-observed from `.github/workflows/ci.yml` at the pin, High].

**The disavowal, quoted** (GAUNTLET_RELEASE_SCORECARD.md L39–46): *"This file is not linked from the README's Documentation Map — it is an internal routing artifact, not a published claim — and not one figure in it clears the fleet's current evidence gate."* And the FAQ (README L2000–2001): *"Q. Is this faster than SciPy? A. For individual kernels, mileage varies by problem size, conditioning, and structure."* A packet must never cite a speedup number from this repo without both sentences attached.

**Reproduction cost (honest):** ~8,300-file checkout; pinned `nightly-2026-08-31` toolchain with a documented lint-promotion fragility history (rust-toolchain.toml pins deliberately after ~34 lints broke G1 fleet-wide); multi-minute release build of a 613k-line workspace; live SciPy 1.17.1 interpreter for the oracle lane. The sanctioned harness has both arms in-tree: per-crate criterion benches on the Rust side and `bench/scipy_baseline.py` (argparse + statistics, JSON-emitting) as the SciPy-side timing script [Verified, High]. Expect hours, not minutes — and the sanctioned harness bar (same-invocation live incumbent, ELF SHA-256) is the repo's own, not yet independently operated.

### Independent numbers

**None found.** Web search returns only the repository itself, its release/CHANGELOG pages, forks (ansontgn, joyshmitz, hyperfrequency), and a third-party claude-code-plugins mirror referencing the repo's AGENTS.md — maintainer-adjacent, not independent [External, High within recall caveats]. No third-party benchmark, code review, or production deployment found. **Independent validation: zero.**

## 4.6 Comparison: who owns the lane

**The incumbent** is **SciPy** itself — BSD-3-licensed, a NumFOCUS project, CPython with C/Fortran kernels, ~1,300 callable symbols [External, High] — the pinned oracle here is SciPy 1.17.1 [Verified from PARITY-COVERAGE.md header, High]. **Why the incumbent wins today, in one paragraph:** switching costs for a numerical stack are dominated by ecosystem, not algorithms — SciPy's moat is NumPy/pandas/scikit-learn integration, decades of edge-case hardening, and the accumulated trust of every downstream package's test suite [Inference, High]; FrankenSciPy addresses none of that moat, has no Python callable surface at all ("Can I use this from Python? Not directly today. There is no PyO3 layer." [Verified README L2003–2004, High]), zero production deployments, and behavioral parity that its own maintainer describes as name-census. Nobody migrates a production pipeline to a 0.2.0 single-maintainer numerical library on qualitative performance guidance.

**Adjacent lanes:** **Rust numerical crates** — `nalgebra`/`ndarray` (low-level primitives), `linfa` (ML-focused), `argmin` (optimization framework) — none attempts SciPy-surface parity or carries a conformance oracle [External, Medium — characterization from the crates' documented scopes]. **Python accelerators** (Numba, JAX) own the "faster SciPy-shaped numerics" lane from inside the ecosystem [Inference, Medium]. **C++** (Eigen, Armadillo) owns the mature embedded-numerics lane [Inference, Medium].

**The genuinely unoccupied lane [Inference, Medium]:** "SciPy's API surface in memory-safe Rust with certified, auditable algorithm selection" — no Rust project attempts the full ~1,300-symbol surface, and none carries CASP-style decision-theoretic runtime selection with audit certificates. The wedge is real but narrow: Rust applications, embedded numerical work, and agent systems that need numerical kernels without dragging in Python (the README's own stated audience) — and it stays narrow until behavioral parity is assertion coverage rather than a name census.

## 4.7 Technical merit and adversarial review

**Strengths:**
1. **Evidence discipline without peer in this program.** The 44,078-line negative-evidence ledger, the discrepancy catalog with DISC-NNN IDs and review dates, the fleet-wide adoption of the harness-disagreement finding, the scorecard that disavows its own figures, and a README that says the per-routine assertion list "does not exist yet" — this is the methodology-export lens made concrete: if the numerical surface fails, the conformance-and-honesty apparatus survives as a transferable artifact [Verified, High].
2. **Real implementation volume with real hygiene.** 613,565 lines, zero `unsafe` blocks under a workspace `forbid`, zero `unimplemented!`/`todo!`, no BLAS/LAPACK FFI, no async runtime, 10,174 inline tests, 795 conformance files, 96 fuzz targets, 16 oracle scripts, 18 canonical parity packets with RaptorQ decode proofs — and CI G1–G9 green at the pinned commit [Verified/CI-observed, High].
3. **CASP is a genuine idea, not a slogan.** Five portfolio types with a real `const fn` loss matrix (values verified: DirectLU [1,5,40,120], PivotedQR [3,1,8,45], SVDFallback [15,10,1,1], fast paths [0,0,0,100]) [Verified, High], condition-state posteriors, conformal calibration with a drift override (`should_fallback()` at miscoverage > α+0.02), and synchronously returned `SolveCertificate`s that make decisions replayable — the conformance harness asserts certificate presence alongside tolerance checks (`diff_linalg.rs:310-315`) and round-trips certificates to verify decision determinism [Maintainer claim, Medium — README]. No incumbent numerical library ships runtime algorithm selection with audit certificates [Inference, Medium].
4. **It actually shipped.** v0.2.0: a Git tag, a GitHub release, and all 19 crates on crates.io — the only repo among those assessed in this program to date with a real release artifact *and* registry publication [Inference, Medium — cross-packet comparison] [Verified, High — the frankenscipy-side facts].

**Weaknesses:**
1. **Bus factor 1 with AI-authored provenance.** 6,395 commits from a `claude` contributor vs 158 from the human owner; the entire 613k-line corpus is effectively agent-authored under one human's direction. Review depth cannot match that rate, and provenance/review questions cap institutional trust [External, High].
2. **Parity is a name census.** 1,300-of-1,300 is name matching; the README admits "referenced is weaker than compared" and the assertion inventory doesn't exist. The most important number in the packet is also its softest [Verified, High].
3. **Zero independent validation.** No third-party benchmark, review, deployment, or user found; downloads 11–45 per crate [External, High].
4. **The performance story is deliberately ungated.** The FAQ refuses a headline; the scorecard disavows its figures; the honest summary is qualitative per-domain guidance. For a "reimplementation of SciPy," the absence of quotable head-to-head numbers is a thesis-level gap, honestly disclosed [Verified, High].
5. **Docs chronically lag the tree.** Test counts, file counts, oracle counts, the crates.io contradiction (L1671 vs L648), the parity-figure drift (1,194 vs 1,300), the stale CHANGELOG (window ends 2026-08-19, claims no releases exist) — each minor, the pattern the governance signal [Verified, High].
6. **Structural ceilings:** pinned nightly with documented lint-promotion fragility, no Python surface (no PyO3), single-process CPU only (no GPU/distributed), a 106,170-line single-file `fsci-stats`, and the 613k-line surface area a single maintainer must defend [Verified, High].

**Steelman of the bear case:** FrankenSciPy is a monumentally over-engineered answer to a question the market isn't asking. SciPy's moat is its ecosystem, not its algorithms, and a Rust reimplementation with no Python surface cannot touch that moat — the stated audience (Rust/embedded/agent numerical work) is a niche served adequately by nalgebra, ndarray, and the existing Rust crates, none of which needed a 613,565-line clean-room rewrite. "Parity" is a name census; the calibration quality of CASP is asserted, never independently validated; the 6,395-to-158 commit ratio means no human has read most of this code; and the license rider legally bars the AI labs whose agents are the named target audience from even benchmarking it. The most likely terminal state is a beautiful, honest, unread artifact — with the methodology outliving the product.

**Hook audit (the packet grades its own hook):** "A 613,565-line, zero-unsafe Rust reimplementation of SciPy whose own scorecard file opens by telling you that not one figure in it clears the project's evidence gate." Line count and zero-unsafe are verified; the scorecard disavowal is quoted verbatim from the pinned file. The hook survives.

## 4.8 License and governance (material, not boilerplate)

**License text, read verbatim** [Verified, High]: `LICENSE` (73 lines) is the MIT License **with an "ADDITIONAL RIDER / RESTRICTION (OpenAI / Anthropic)"** that is "part of the 'conditions' of this License" and "controls" in any conflict. Quoted scope: *"Restricted Parties" means OpenAI, L.L.C.; Anthropic, PBC; any of their respective Affiliates; and any person or entity acting directly or indirectly on behalf of, for the benefit of, or under the direction of any of the foregoing (including any officer, director, employee, contractor, agent, consultant, service provider, or representative).* *"Notwithstanding any other provision of this License, no rights are granted to any Restricted Party."* Disclosure/hosting/distribution to them is forbidden. Crucially, *"use" includes, without limitation: copying, modifying, … deploying, executing, benchmarking, testing, analyzing, indexing, or incorporating the Software or any Derivative Works into any dataset, training corpus, evaluation harness, or pipeline for machine learning or other automated systems.* Breach terminates all permissions automatically with destruction of copies; injunctive relief and attorneys' fees reserved to Jeffrey Emanuel (copyright holder, 2026). **Classification: NOT OSI open source** — named-party discrimination with a use-restriction covering even benchmarking and analysis. GitHub's own classifier reports `license: NOASSERTION` [External, High]. This is source-available with a targeted exclusion.

**The rider as strategy:** defensively coherent (prevents the two leading labs from absorbing the work into training corpora or evaluation harnesses without permission) and offensively self-sabotaging: the README's named audience includes "agentic systems," but agents built on OpenAI/Anthropic models cannot legally touch the code, no lab can benchmark it, and any enterprise downstream of those labs inherits the legal risk. The rider is disclosed in the README badge ("MIT with rider") — better than a plain-"MIT" mislabel — but it remains the single largest adoption ceiling.

**A self-referential exposure [Inference, Medium]:** 6,395 of the repo's commits carry the `claude` contributor identity — and Anthropic is a named Restricted Party. Whatever the legal weight of commit authorship under the rider's "acting on behalf of" language (a question for counsel, not this packet), the project's provenance story and its license posture sit in visible tension.

**Governance:** owner-directed single maintainer; no visible external contributors (third contributor: 1 commit); beads issue tracker with 4,370+ closed beads claimed [Maintainer claim, Medium]; no CONTRIBUTING signal observed; commit velocity extreme (CHANGELOG cites 5,455 non-merge commits in the 2026-05-17→08-19 window alone; the Actions API shows the same commit `14a90c41` concluding both CI success (01:49 UTC) and CI failure (10:04 UTC) on 2026-09-22 — red-green volatility consistent with that velocity) [External, High]. Bus factor 1 [Inference, High]. **What breaks first if velocity decays:** review depth, then the tree — 613,565 lines of agent-authored code on a pinned nightly with no second maintainer is bit-rot within quarters.

## 4.9 NODUS factsheet

| Criterion | Score | One-line justification |
|---|---|---|
| Technology readiness (TRL 1–9) | **5** | Real release (v0.2.0, crates.io, green CI at pin) — beyond lab validation; but behavioral parity is census-level, zero production use, downloads trivial — not 6 |
| Strategic relevance (1–5) | **4** | Memory-safe SciPy-surface for Rust/WASM/edge/agent runtimes is a real unmet lane; CASP's decision-theoretic framing is strategically interesting |
| Impact potential (1–5) | **3** (5 if rider removed and behavioral parity proven) | Capped by rider, bus factor 1, unproven behavioral parity |
| Implementation feasibility (1–5) | **3** | Crates published and API-documented; but nightly Rust, 613k-line surface, census-level parity make integration a research exercise |
| Time to mainstream (1–5) | **2** | V1.0 still gated on artifact-topology convergence; needs independent validation and governance |
| Collaboration potential (1–5) | **2** | Rider blocks the two leading AI labs and their agents; bus factor 1; AI-authored provenance raises review-bar questions |

**Ring: Explore.** The ring rules are decisive: *Pilot* requires a release artifact **plus a bounded, real workload fit** — the release artifact exists (v0.2.0, crates.io), but no real workload fit is evidenced (downloads 11–45/crate, zero deployments found); *Invest* requires independent validation plus governance (neither exists). When in doubt, ring down: Explore. Revisit triggers: behavioral-parity assertion census, an independent benchmark or review, a second human maintainer, rider relaxation, V1.0.

## 4.10 Wardley placement

- **SciPy-compatible numerical API surface:** Commodity — SciPy defines it; the surface is standardized.
- **Clean-room Rust SciPy core (19 crates, conformance oracle):** Custom-built → early Product — v0.2.0 published, green CI, validated against the oracle but not by third parties; moves to Product with independent validation + behavioral-parity assertions.
- **CASP decision-theoretic solver portfolios + audit certificates:** Genesis → early Custom-built — no equivalent in any incumbent numerical library; moves right if the portfolio machinery is adopted or validated outside the repo (see next steps 2–3), left into obscurity if calibration stays maintainer-asserted.
- **Evidence apparatus (negative-evidence ledger, discrepancy catalog, harness-gated bench doctrine, RaptorQ evidence packs):** Custom-built — novel as a packaged discipline and the most transferable component; moves toward Product the moment a second project adopts it.

**The decoupling lens:** FrankenSciPy represents *algorithm-from-ecosystem* (numerical methods decoupled from the CPython/C/Fortran stack) and advances *selection-from-implementation* (CASP separates the policy of choosing a solver from the kernels themselves — the decision is a replayable certificate, not an inlined heuristic). It gestures at, but does not reach, *memory-from-the-store*-style portability: the audit certificate is per-call provenance for a numerical decision, a proto-mechanism for portable attestation of computed results [Inference, Medium].

## 4.11 Trajectory (12 / 24 / 60 months) — [Inference]

- **12 months:** continued high-velocity single-maintainer/agent work; V1.0 if the artifact-topology convergence bead (`frankenscipy-icmu7`) lands; the behavioral-parity assertion inventory either gets built (retiring the softest number honestly) or stays missing (and the parity claim keeps its asterisk). Stays in Explore unless the rider changes.
- **24 months:** bifurcation. **Upside:** a second human maintainer or institutional adopter appears, an independent benchmark validates the qualitative performance guidance, the assertion census hardens per-routine coverage — Pilot for narrow workloads (embedded numerical kernels, agent-side numerics without Python). **Decay:** velocity slows with no successor; the pinned nightly ages; 613,565 agent-authored lines become unmaintainable; drifts to Monitor as a research artifact whose methodology outlives its product.
- **60 months:** binary. Either a niche-but-real substrate (the memory-safe, evidence-carrying numerical core embedded in agent/edge runtimes — `fsci-special`/`fsci-stats` adopted piecemeal rather than the full surface), or superseded: the Rust numerical ecosystem consolidates around smaller, reviewed crates, and the full-surface bet looks quixotic in retrospect. The verification methodology is the more likely survivor either way.

**Revisit triggers (concrete, observable):** the behavioral-parity assertion census published; any independent benchmark, code review, or production deployment; a second human maintainer with merge rights; any change to the license rider; V1.0 tagged; `frankenscipy-icmu7` (artifact-topology convergence — 12 legacy `P2C-*` + 18 `FSCI-P2C-*` artifact dirs coexist at the pin [Verified, High]) closed.

## 4.12 Limitations and open questions (mandatory)

**Not done:** did not compile the workspace, run any test, execute a benchmark, run a fuzz target, or execute the live SciPy oracle — all behavioral and performance claims rest on maintainer evidence plus CI execution signals. Shallow clone only (no full commit history; `.beads/` absent so bead counts are maintainer claims). CI per-job detail not enumerated (workflow-level conclusion only). Star/fork/download counts are API point-in-time. The 1,300-symbol parity census was not re-derived. crates.io verified for all 19 crates (full, not sampled).

**Open questions that would most change the verdict:** actual differential-test pass/fail/skip counts at the pin; CASP calibration quality on held-out workloads (the load-bearing unvalidated claim); whether any enterprise has evaluated the rider's legal exposure; funding and succession intentions of the maintainer; whether the assertion census ever gets built; what the `claude`-authored provenance means for the rider's "acting on behalf of" language (counsel's question); when the pinned nightly ages out.

## The eight deepening questions (one paragraph each)

1. **Provenance.** FrankenSciPy records almost nothing about *who produced* a numerical artifact: computed results carry values and tolerances, not producer attestation — the one exception is CASP's `SolveCertificate`, which binds a solver decision to (rcond estimate, structural evidence, posterior, expected losses, chosen action) in a replayable structure, and the conformance packets, which bind results to (`parity_report.json`, RaptorQ encoding, decode proof) triples with CI-enforced integrity scrubs [Verified structures exist, High]. Making attestation portable would require signing certificates with an operator key and hash-chaining ledger entries so that a result's provenance survives outside the repo; today the certificates are replayable but not tamper-evident, and the RaptorQ decode proofs attest to artifact integrity, not to who computed what [Inference, Medium].

2. **The embeddable unit.** The smallest useful adoptable piece is `fsci-special` (special functions with CASP branch selection) or `fsci-stats` (distributions) — each is a published crates.io artifact at 0.2.0 with no FFI, no async, and no BLAS dependency, and the README's named audience (Rust/embedded/agent numerical work) points exactly at piecemeal adoption [Inference, Medium]. The adoption cost is real: nightly-only toolchain (with documented lint-promotion fragility), a 106,170-line single-file `fsci-stats`, census-level (not assertion-level) behavioral parity, and the license rider, which follows every derivative and denies rights to OpenAI/Anthropic and their agents — so embedding means vendoring rider-encumbered code your lawyers must clear [Verified, High].

3. **Unexercised option value.** The architecture holds at least four unused capabilities: the synchronous, `forbid(unsafe)`, FFI-free kernels are one `wasm32` target away from a browser/edge numerical substrate; the CASP portfolio machinery is a domain-agnostic decision-theoretic layer currently aimed only at solvers; the RaptorQ evidence-pack format is a general tamper-evident artifact mechanism currently used only for conformance packets; and the 18 canonical parity packets are a regression corpus that no downstream consumer yet runs [Verified, High]. What unlocks them is, respectively, a WASM build with the conformance harness stripped, a documented decoupling of the portfolio from numerical types, a signed publication format, and a second adopter — all product decisions, none blocked on research [Inference, Medium].

4. **Benchmark honesty.** The numbers most likely to survive an independent rerun are the *qualitative* ones — the per-domain "competitive / not competitive" table — because they are deliberately weak claims with documented qualifications, and the adverse methodological finding (harness disagreement as large as worker disagreement) [Inference, Medium]. There are no headline speedups to audit: the FAQ refuses one ("mileage varies"), the scorecard disavows every figure in it ("not one figure clears the fleet's current evidence gate"), and the fleet's own 2026-08-15 finding invalidates aggregating the rows that exist — so the performance thesis is currently "profile-first, proof-backed, ungated," which is honest but means no performance claim in this repo is quotable until the sanctioned harness produces gated numbers [Verified, High].

5. **The governance path.** The credible route from one maintainer to an institution runs through V1.0: closing the artifact-topology convergence bead creates a single canonical artifact layout, the behavioral-parity assertion census (the README's admitted missing list) creates reviewable claims, and a second maintainer emerges from whoever depends on the embedded kernels — there is no shortcut, because today there is no external user base and the 6,395-to-158 commit ratio means the code has effectively one reviewer [Inference, Medium]. What breaks first if velocity decays is the tree's currency: at thousands of commits per window the maintainer's own docs already lag reality by weeks (CHANGELOG window ends 2026-08-19 at a 2026-09-22 HEAD), so a slowdown without a successor strands 613,565 agent-authored lines on a pinned nightly with nobody who has read most of it, and bit-rot sets in within quarters [Inference, High].

6. **The license as strategy.** The rider excludes exactly OpenAI, L.L.C., Anthropic, PBC, their affiliates, and anyone acting for, benefiting, or under the direction of them — and it defines "use" to include deploying, executing, benchmarking, testing, analyzing, indexing, and training-data incorporation, with automatic termination and injunctive relief reserved to Jeffrey Emanuel [Verified verbatim, High]. As strategy it is coherent defensively and self-sabotaging offensively: the project's named audience is "agentic systems," the excluded parties *are* the agent-infrastructure builders, and the rider's breadth (even benchmarking is forbidden) chills the independent validation the project most needs — no third party can publish a benchmark without lawyering the rider first, which helps explain why independent validation is zero [Inference, Medium].

7. **Agent-era fit.** The concrete workload that would pick FrankenSciPy over SciPy or the Rust numerical crates is an agent or edge runtime needing numerical kernels (special functions, distributions, solvers) *without dragging in Python* — no interpreter, no FFI, no BLAS, deterministic and auditable, with CASP certificates recording why each solver was chosen — which is precisely the README's stated audience and a combination no incumbent offers [Inference, Medium]. What would have to become true first: behavioral parity as assertion coverage rather than name census (agents can't debug a census), an independent review of at least the CASP calibration claims, a stable-toolchain story (the pinned nightly is a deployment liability), a WASM or static-library packaging of the embeddable units, and — unavoidably — a license an agent-platform company can actually sign [Inference, Medium].

8. **The kill test.** The single event that would falsify the core thesis — "a memory-safe, decision-certified SciPy surface is worth building" — is the behavioral-parity assertion census coming back thin: if per-routine asserted coverage turns out to be a small fraction of the 1,300 name-matched symbols, the parity claim collapses to a naming convention and the project's central differentiator against nalgebra/ndarray (full-surface fidelity) evaporates, leaving only CASP [Inference, Medium]. The experimental falsifications are nearly as decisive: an independent rerun of the differential harness showing systematic divergences from SciPy 1.17.1 beyond the 8 catalogued discrepancies, or a held-out-workload study showing CASP's calibrated portfolios don't beat static rules — either would collapse a pillar (fidelity, certified selection) the thesis stands on [Inference, Medium].

---

**Working notes:** clean shallow clone at `~/workspace/.scratch/frankenscipy-verify/` (HEAD `2fce54d5`, 2026-09-22). All line citations verified against the pinned README (2,048 lines). GitHub API reads: 15 stars / 4 forks / license NOASSERTION; release v0.2.0 id 387411244 published 2026-09-12T01:08:04Z; contributors claude 6395 / Dicklesworthstone 158 / PyGuy2 1; CI Gates (G1–G9) success at pin (run created 2026-09-22T12:39). crates.io API: all 19 `fsci-*` crates at default_version 0.2.0, downloads 11–45, none yanked; crates.io web UI 404s on the crate pages (2026-09-22) while the API and docs.rs serve them. No durable user-facing files created besides this assessment.
