Changelog
Source:NEWS.md
msuiter 0.1.0.9000 (development version)
A new development cycle since v0.1.0.
P8 · Application-scenario case studies (paper pillar 3)
- Three executable case-study scenarios under bench/scenarios/ adjudicated against a-priori planted truth through the public API only, each with its TDD law units and committed evidence tables (commits 6a3554f, e61f183, PR #56; CS-1 CS-2 CS-3 scopes per vignettes/articles/devlog-2026-10-28-p8-treatment-forensics-design.qmd and the frozen scenario-grid memo vignettes/articles/devlog-2026-10-05-benchmark-design-memo.qmd; synthetic PCAWG-anchored generator mixtures only, D3 clean, seeds banked).
- CS-1 atlas mode: five-variant-class symmetric ingestion with exact count contracts (SBS 1720/1720, DBS 240/240), QC gates, mixed de novo/refit with Hungarian-matched recall attestation (1.00 at tau 0.80), common/rare classification, and a clinical-style feature-association leg where the planted arm separates (BH-adjusted p 3.2e-05) while every decoy control stays null (run_atlas.R; tests/testthat/test-scenario-atlas.R).
- CS-2 HRD scenario: planted pLOH/aneuploidy cohorts adjudicated BYTE-IDENTICAL against the verbatim Cortes-Castro dual oracles (identical() law), seeded reruns bit-reproducible, print faces speaking provenance and ledger, missing-arm-table input degrading to an attested no-arm-table verdict with zero fabrication (run_hrd.R; tests/testthat/test-scenario-hrd.R).
- CS-3 treatment forensics MVP: the new
ms_treatment_report()export (R/treatment-report.R) – treatment-restricted refit against the refdb-governed exposure subset, association table with bootstrap CIs separating planted from non-planted by orders of magnitude, clonal/subclonal timing split additively reproducing the exposed means, and an honest degraded-mode attestation when treatment records are absent (run_treatment.R; tests/testthat/test-treatment-report.R; the differentiation claim per vignettes/articles/research-03-applications.qmd section 3).
M6s · HRD workflow
-
ms_hrd_report(): HRD reporting surface – dual-gate design with bit-exact SigMiner ground-truth replication and composite scoring, delivered TDD end-to-end (U-M6s-01, commit 2fc7e04, PR #6; R/hrd-report.R, R/hrd-reference.R; phase gate vignettes/articles/roadmap.qmd:93). -
print.MsHrdReport()floor fix: the header line’s null default used%||%, a base operator only from R 4.4.0 while the declared floor is R >= 4.3.0 – a latent “could not find function” abort on the 4.3 arm; replaced by an explicitif (is.null(...))idiom with a print-method smoke unit covering the null-default branch (commit 9b1e05a; R/hrd-report.R, tests/testthat/test-hrd-report.R).
M7 · Benchmark completeness
- Competitor benchmark harness with the frozen G0 sampling protocol (U-M7-02, commit 2949e8a, PR #8; vignettes/articles/devlog-2026-10-08-m7-competitor-harness-design.qmd).
- Scoring engine: Hungarian-matched benchmark table with appended scoring verdicts (commit bcc1f31, PR #10).
- Whole-tree Archive-aware sigminer image recipe (commit 00491db, PR #11); sigminer realigned to the CRAN-witnessed API and the image registry flipped to the build9-verified digest (commit a6f2e89, PR #12).
- Floor-table governance for the matrix driver: floor constants derived from committed REP-100 witnesses, calibration test suite attached (U-M7-03, commit f90ea1d, PR #13; bench/m7/tools/matrix_governance.py, bench/m7/tests/test_floor_calibration.py, vignettes/articles/devlog-2026-10-09-m7-benchmark-matrix.qmd; phase gate vignettes/articles/roadmap.qmd:97).
- Authoritative degraded benchmark matrix closed: master table 42 data rows (re-counted from bench/results/docker_m7_degraded_20261009-184833/timings_sharded_master.csv), verdict-A closure (commit f90ea1d); sealed run additionally carries judgment_m7_degraded_20261010-024833.md and bench/results/docker_m7_degraded_20261009-184833/EVIDENCE-ADDENDUM.md (commit bc3e8ca).
- Timing rows carry host and hw_profile pins beside the G0 columns; the reader keeps the 7-col legacy branch (commit bc3e8ca; bench/m7/competitors/timings.py).
- vignettes/articles/performance.qmd adds site-facing performance anchoring by reference only (commit bc3e8ca).
- The docs-sync guard gained the ROADMAP checkbox-truth checker (every checked M6s/M7/G completion claim must cite path:line or a commit token; commit bc3e8ca; tools/docs-sync.R, tests/testthat/test-docs-sync.R); benchmark trio naming settled by a controller ruling with @family cross-links (commit bc3e8ca; vignettes/articles/devlog-2026-10-10-m7-benchmark-ergonomics.qmd).
- Rollup-row label rendering fix: N-bearing rollup rows render the stratum label through the absent-label placeholder instead of str(None) (commit 8d5ef8d, merged as c3a04ff, PR #16; bench/m7/scoring/judgment.py, bench/m7/tests/test_scoring_judgment.py); the same merge carried the .r_str escape-model completion – backslash-escaped quotes with fail-closed controls (commit b36d064; tools/check-layout-sim.R, vignettes/articles/devlog-2026-10-10-m7-benchmark-ergonomics.qmd).
- GO-05 bootstrap-vs-sigminer campaign instrument: single-authoritative-shot campaign harness (bench/bootstrap/gen_campaign.R generator + run_campaign.R launcher) adjudicated end-to-end by the shared law oracle bench/m7/tools/verify_campaign.py – anchor-probe calibration mode, CI-noise-envelope anchor gate, floor-gate rc law with the dedicated unmeasurable leg, and –tier-probe rehearsal (commit bfa7376, PR #18; vignettes/articles/devlog-2026-10-10-m7-bootstrap-campaign.qmd, vignettes/articles/devlog-2026-10-11-go05-anchor-gate-amendment.qmd, vignettes/articles/devlog-2026-10-11-go05-tier-oracle-amendment.qmd).
- RB-10 authoritative campaign fired and closed: the bootstrap-vs-sigminer >=100x targets row measured FALSE at 15.37x (tier B; secondary A1/A3 14.2209x), single ignition under the co-tenancy bar (all load1 samples < 1.5, bar never relaxed), data seal cc094225…b3263 re-verified byte-identical against the 2026-10-11 rehearsal under the frozen seed, ledger exactly one probe plus one full launch; the read-only evidence outdir bench/results/bootstrap_vs_sigminer_20261013T175859Z/ is committed with the closure recorded in vignettes/articles/performance.qmd:68 and the outdir’s own result.md (single-authoritative-shot law consumed).
M8 · Release engineering
- Release-engineering batch: all third-party GitHub Actions pinned to full commit SHAs with the human tag kept in the trailing comment (annotated-tag pins re-derived to the peeled commit, peel-verified), .git/.pytest_cache excluded from R CMD build tarballs, and an SDKROOT self-discovery fallback for the check-layout-sim provisioning INSTALL (commit 2c1431f, PR #17; tools/action_pins.py, tools/check-layout-sim.R, .Rbuildignore).
- R-floor hygiene pass: a static census gate rejects package/test source use of base operators introduced above the declared R floor (the host R has them, so only a source scan can gate it; registry is one line per operator, first entry
%||%from 4.4.0), the P1 KL gate runner gained the house-precedent local%||%shim, and Python bytecode caches under tools/** are gitignored (commit 9b1e05a; tests/testthat/test-r-floor-ops.R, tools/kl-gate-p1/run_gate.R, .gitignore; the driver-mock hardening rides commit 9b1e05a).
P4 · QC sentries surfaces (sigminer v3 parity)
- QC sentries surfaces: sibling surfaces that EXPOSE the certified QC report instead of inventing new statistics – the ms_qc_report() computation core is factored into the
.ms_qc_*private helpers and every sibling column delegates to it, so the surfaces are one implementation with the report, never a second opinion, and the report itself now carries the provenance checklist as thems_qc_provenanceattribute (parity plan vignettes/articles/research-09-sigminer-v3-parity-plan.qmd section 5, phase P4; certified backing vignettes/articles/devlog-2026-10-04-M4-02b-qc-memo.qmd sections 1, 3 and 4; R/ms-qc-report.R; commit dbef3a7).-
ms_qc_burden()(R/ms-qc-sentries.R): the per-sample burden distribution (total, log10_total, house-declared burden_class over the frozen.ms_qc_defaultslines), column-for-column identical to the certified report block. -
ms_qc_sentries()(R/ms-qc-sentries.R): the per-sample oxoG/FFPE mechanism sentries – the gt/ct shares re-read through the certified channel helpers, the frozen clauses spoken per-mechanism (gt “hit” at gt_share_flag, ct “watch” at ct_share_watch, “na” for NA shares) plus the certified qc_flag; citations: Costello et al., NAR 2013 (oxoG) and Guo et al., Nat Commun 2022 (FFPE). -
ms_qc_mechanism_channels()/ms_qc_artifact_roster()(R/ms-qc-sentries.R): the 32-row SBS96 mechanism-channel roster (16 C>A oxoG + 16 C>T ffpe, per-row citations) and the 19-entry COSMIC “Artefact” enumeration (SBS27, SBS43, SBS45-60, SBS95; the 2026-10-04 live verification pinned by test literal – SBS30/36/18 are real signatures, never roster). -
ms_qc_roster_share()(R/ms-qc-sentries.R): the per-sample artifact-roster exposure share against the fitted exposures –.ms_qc_roster_block’s certified label protocol (labels are the only legal join key), the memo section 3 share formula with exposure_total as its exposed denominator, and the frozen artifact_share_flag “hit” clause. -
ms_qc_provenance()(R/ms-qc-sentries.R): the eight-row provenance checklist (catalog.class, channel.space, provenance.genome, provenance.keys, refdb.pin, roster.pin, thresholds.declared, msuiter.version) – the audit values delegate (the refdb pin re-reads the governance manifest; the thresholds row speaks.ms_qc_defaults), and as an AUDIT face a broken channel space is recorded “fail” rather than aborting. - Acceptance MEASURED (tests/testthat/test-ms-qc-sentries.R, 10 TDD units, synthetic-only D3 fixtures: the house simulator at seed 4242/burden 1200 and hand-spiked catalogs): injected-artifact recall 6/6 per family (gt spike, ct spike, roster exposure); the false-positive ceiling measured on the clean synthetic cohorts (the frozen thresholds, never retuned): gt 0/12, ct 0/12, roster 0/6 on control-only exposures; the four sub-threshold roster controls stay unflagged; the provenance checklist asserted present, complete and delegation-backed.
- DECLINED for lack of certified backing: the “garbage-tracking / cellular-toxicity” gt/ct gloss (no such mechanism exists in this repo – the certified pair is oxoG G>T / FFPE deamination); a channel-level artifact-roster share (the roster names SIGNATURES; there is no channel-to-roster mapping); the Degasperi amber/red fit tiering (memo section 1, parity plan section 6.4); the TSB strand-bias p-value (needs the SBS192 face – held NA in the report contract).
- The provisioning trust law (tools/check-layout-sim.R, commit dbef3a7, PR #29): the simulated layout must run against the build OF the tree under test – the candidate resolver now decides identity on the installed Version and the Collate file set against the tree, names any stale candidate (an ambient install lagging the tree included), and provisions a fresh INSTALL from it; that provisioning’s SDKROOT self-discovery walks the xcrun answer, the Xcode platform SDKs newest-first, and the CLT dir, accepting a candidate only after a real minimal
-isysrootlink through the build’s clang succeeds – so a structurally clean SDK whose tbd stubs break the linker (the witnessed CLT SDK 27) can never be injected. TDD witnesses: the stale-candidate unit (tests/testthat/test-check-layout-sim.R) and the functional-leg units (tests/testthat/test-check-layout-sim-sdkroot.R).
-
P5 · Catalog currency (sigminer v3 parity)
- Catalog-currency instrument: a provenance sidecar + updater/verifier that makes msuiter’s pinned COSMIC catalog snapshot mechanically verifiable against the official COSMIC v3.6 release line, fully offline-testable via injected sources (parity plan vignettes/articles/research-09-sigminer-v3-parity-plan.qmd section 5, phase P5; governance shape of the refdb chain in R/refdb.R, data-raw/build_refdb.R).
-
ms_catalog_registry()(R/catalog-currency.R, R/catalog-currency-governance.R): reads and fail-closed validates the committed digest sidecarinst/catalog-currency/catalog_registry.rds(schema-gated, every digests/URL/label field validated, the login-gated matrix-bytes leg recorded UNMEASURED – never fabricated). -
ms_catalog_currency_update()(R/catalog-currency-harvest.R): fetches or injects the two official JSON source documents, extracts the carrier payloads byte-faithfully, and writes the byte-idempotent cache (verbatim payload bytes + an integrity record + a review candidate sidecar);--source/offlinemake it network-free by construction (D3 law: digests, URLs, version labels and shape facts only, never COSMIC numerics). -
ms_catalog_currency()(R/catalog-currency.R): the offline verdict engine resolving the pinned / latest / available legs with the precedence lawinconsistent > corrupt > no-cache > drift > behind > okand thecurrent/behind/ahead/unknownversion axis; cross-checks the pinned facts against the livems_refdb_manifest(). - Operator CLI
tools/catalog-currency.R(subcommandsverify|update|registry|help, exit 0 = ok, 1 = non-ok verdict, 2 = usage) withtools/catalog-currency/README.md; builderdata-raw/build_catalog_registry.R. - TDD suite
tests/testthat/test-catalog-currency.R+tests/testthat/helper-catalog-currency.R+ the synthetic-only fixturetests/testthat/fixtures/catalog-currency/downloads_page_synthetic.html; digest stability, drift detection, pinned-vs-latest resolution, corrupt/missing cache, offline fixture path and argument-validation errors covered.
-
msuiter 0.1.0 (2026-10-05)
The first release: the minimal usable core of the Rust compute kernel + the R/S7 interface (the ROADMAP v0.1 gate = M0 + M1s; the M1c/M2/M3a/M4 calibration and similarity layers were pulled forward into this tree and ship with the release). The sections below are the development-period batch records (promoted from the 0.0.0.9000 development line).
M0 Engineering foundations
- The rextendr scaffolding + the
src/rust/Cargo workspace (the root-package + members shape): the frozen dependency budget –extendr-api(default-features = false, the ndarray feature only),ndarray,rayon,memmap2,twobit 0.2.2(ADR 0001); no rand – the randomness is the self-developed PCG64 + SplitMix64. - The M0 spike (ADR 0001/0002): the real cargo vendor byte-count figures landed (vendor.tar.xz ≈ 1.41 MB baseline), the offline build proofs, the rustc 1.71 (MSRV) build proofs and the pin discipline (
matrixmultiply = 0.3.9,rayon = 1.10.x,Cargo.lockv3). - The S7 class skeletons (no
.state):MsVariants/MsCatalog/MsSignature/MsFit/MsRefDb/MsEngine/MsBenchmark; the validators reject NA/bad labels/bad dimensions; the generic behaviour is unchanged after thesaveRDS()/load()round-trip; objects cross-reference by snapshot summaries. - The channel-registry single source of truth:
data-raw/build_channels.Rgenerates the R constants + the Rust constants + the build-time assertions, anchored against the SigProfiler upstream reference files (tools/channel-reference/, with provenance);tools/docs-sync.Rruns the API-surface sync check (drift goes red). - The self-developed RNG module (
engine/rng.rs): PCG64 (canonical post-step) + the SplitMix64 seed expansion + the stream layout v1 (LAYOUT_IDdomain separation, the per-replicate/rank/fold counter streams); the cross-version golden frozen + the independent KAT (tools/rng-kat.py). - The FFI hard contracts landed (the
vignettes/articles/ffi-surface.qmdfrozen artifact + the drift-guard test): the stateless export surface (the 6msffi_*diagnostic probes) covers the column-major memory layout, the NA/NaN double line of defense, theResult→ R condition error mapping (classmsuiter_error_*), the chunk-boundary interrupts, the per-call thread pool and the thread-count invariance. - The engine registry table + the extension contract: the nine fields of
register_ms_engine()(incl. theengine_version/contract_version/certifiedthree-state trust boundary); thematch_ms_engine()string sugar; thefit_engine()/required_pkgs()generics; the contract-test suite. - The construction and diagnostic entry points
ms_variants()/ms_catalog()/ms_signature()/ms_fit()/ms_refdb()/ms_benchmark()/ms_engines()/ms_sitrep(); the dependency-direction guard (tools/check-dep-direction.sh) and the vendor baseline check (tools/vendor.sh --check).
M4 · the calibrated-similarity library (U-M4-01)
-
the ms_compare() calibrated-similarity library (R/ms-compare.R + R/classes-compare.R + the
ms_compare_null_rustkernel face): the four metrics (cosine/correlation/JSD(sqrt, bits)/Hellinger, the share column normalized, zero columns NaN) + the dual null-distribution families (the signature null = uniform Dirichlet pairs, the engine’s new primitivedirichlet_uniform; the catalog null = the true value reconstructed at burden N multinomially/NB – the “by channel count × burden” null calibration of the cosine; the type-7 empirical quantiles are the same order statistic as R quantile(type=7) bit-for-bit, the frozen MC-SE tolerance 0.01 is enforced on the R face asmsuiter_error_calibration) + the three matching protocols (the Hungarian one-to-one primary metric = thematch_solutionszero-change assembly; the Islam greedy bit-for-bit; the Jiang activity>0 + scaled Manhattan + Combined Score + specificity, the frozen k_est=k_ref true-dictionary fitting caliber, the reconstruction reference citing the 0.969 line of bbaf042). The analytic anchors (E⟨x,y⟩=1/m, E‖x‖²=2/(m+1), the delta mean (m+1)/(2m)) and the burden monotonicity are in the test layer. TheMsComparisonS7 container + print/format. The design memo vignettes/articles/devlog-2026-10-04-M4-01-design-memo.qmd; the entropy-matched Dirichlet null is recorded as the upgrade arm.
M4 · the first data-tools batch (U-M4-02 sub-batch)
-
ms_downsample() (R/ms-downsample.R): the public-depth downsampling – its semantics anchored to the same multinomial law as the M3b sanity harness (
Multinomial(depth, counts_j/total_j), base R rmultinom with a fixed seed in the per-sample column order, reproducible bit-for-bit);depth = "min"takes the minimum total over live samples; shallow samples are kept verbatim, dead samples keep the zero column; the provenance appends the downsample record. The with-replacement approximation is an honest declaration + the multivariate-hypergeometric upgrade arm is in the design memo. -
the first COSMIC-txt interoperability batch (R/io-catalog.R):
ms_export()/ms_import(format = "cosmic")– the layout anchor = the bundled COSMIC v3.6 upstream file (theTypefirst column + the canonical channel order); both sides force the labels == the registry-table canonical order (no silent reordering/subsetting); the channel table is uniquely inferred by row count + the label set or explicitly pinned; the whole-number count validation on the catalog side. The SigProfiler txt / WTSI long format and the signatures import face are deferred (the upstream [V] sample was not acquired in the night window; the MsSignature validator cannot accommodate a 0-column exposure – both recorded in the design memo §0/§2).
M4 · the first QC report + the SigProfiler interoperability (U-M4-02/02b day batch)
the SigProfiler txt unblocked and implemented ([V] triple upstream anchors, design memo §4): the real sample (the SigProfilerAssignment de-novo SBS96 output, its sha256 pinned into the tests fixtures) row order == the registry table (proved by R identical); the ICAMS converter source verified (the MutationType table header + the bracket labels); the SigProfilerPlotting reference formats 384/96/78 byte-consistent.
ms_export/ms_importformat∈{cosmic, sigprofiler}; the signatures import face unblocked – the MsSignature validator revision admits the legitimate k×0 empty exposure face (the base-R fact that a 0-column matrix’s colnames are always NULL is explicitly exempted, the label protocol unchanged).the first ms_qc_report() (R/ms-qc-report.R, the design memo 2026-10-04-M4-02b-qc-memo.md): the per-sample burden distribution (total/log10/burden_class) + the mechanism-level pseudosignature sentinels (gt_share = the C>A channel share – under the registry-table normalization the G>T view of oxoG; ct_share = C>T – the FFPE deamination) + the given a fit, the COSMIC pseudosignature exposure shares (the name roster of 19 entries: SBS27/43/45–60/95, the COSMIC SBS index page verified live 2026-10-04 and pinned by test literal; signature names matched by the numeric stem). The first qc_flag constants (artifact ≥0.05 pseudosignature share or gt ≥0.30; watch = ct ≥0.40 or low burden) – our declared divergence; the faithful replication of the Degasperi amber/red thresholds ⏳v1.x (the bit-for-bit thresholds are not published, the [V] discipline makes no claim).
the WTSI long format stays deferred: neither window acquired the real upstream sample file (ICAMS has no WTSI face, the PCAWG WTSI matrix is behind the portal session, the local Nik-lab matrix is a COSMIC dialect) – what cannot be verified is not delivered.
ms_convert() opportunistic conversion (U-M4-02c, R/ms-convert.R + the design memo 2026-10-04-M4-02c-convert-memo.md): the sigfit convert_signatures semantics (the sig/opp_from·opp_to per-column renormalization) – the human-genome/human-exome built-in tables (the COSMIC v2/v3 frequencies, via the sigminer source [V], pinned in both data-raw+inst/extdata, the label order being the registry-table order) + custom opportunity vectors (the panel port); the MsSignature method converts the signatures verbatim and keeps the exposures; genome→genome is identically the identity, agreement with the sigminer sig_convert on both sides ≤1e-12, the round-trip reversible at 1e-8, zero columns produce no NaN. The “within-the-likelihood opportunity” (the sigfit per-sample semantics) is recorded ⏳v1.x.
**the first viz batch of 8 figure types (U-M4-03, R/viz-*.R + the design memo 2026-10-04-M4-03-viz-memo.md)**: plot_catalog_profile / plot_signature_catalog / plot_reference_comparison / plot_reconstruction_panel / plot_exposure_stacked / plot_exposure_heatmap / plot_similarity_heatmap / plot_cosmic_scatter – the COSMIC 6-class palette taken byte-for-byte from the verified sigProfilerPlotting.py source (L2895–2902; the color-order typo of the old research/04 note is corrected and recorded), the canonical order enforced (reusing the registry-table validation; viz never silently reorders), ggplot2 4.0 compatible (scale_fill_identity; I() in aes removed), vector-first (returning the ggplot object); DBS78/ID83 simplified to single colors (the palette frozen at M7). The exposure UMAP and the full figure set ⏳ later batch.
ms_embed() + plot_embedding() (the U-M4-03 remainder, R/ms-embed.R): the embedding of the sample-exposure space – UMAP (uwot, Suggests) or the deterministic kmeans (stats always available); the share transform by default (the simplex geometry); the seed as a first-class parameter (bit-for-bit within a version, honestly not guaranteed across versions); the kmeans group recovery pinned-tested on a 3-group handcrafted fixture; plot_embedding colored by cluster. The differential-mining face ⏳ later batch.
the bench/jiang benchmarking (the v0.2 acceptance-gate evidence, 4b3c8b4): the Jiang 2025 fitting protocol (bbaf042) – 8 COSMIC v3.6 reference signatures (incl. the v3.6 split names 17a/40a) × 3 active/5 decoy × burdens {300–10000} × the multinomial/NB(κ=8) two arms × 30 replicates; the reference-constrained NNLS refit on both faces (the true raw zero_threshold=0 + the pipeline’s 1% cleanup – the audit-style finding: the default cleanup makes the raw caliber a no-op); ms_compare(protocol=‘jiang’) read directly. The multinomial arm passes the gate (CS min 2.72 / aggregate spec 0.864); the nb8 arm passes CS (2.41) but fails spec (0.743) – the attribution and the PI options go into result.md.
the first ms_simulate() (an M7 prerequisite, R/ms-simulate.R + the design memo 2026-10-05-simulate-memo.md): dictionary+exposures → synthetic catalogs – the multinomial (exactly N, the same law as the M3b sanity)/poisson/nb (gamma-Poisson, Var=μ+μ²/κ) three arms; the shares/counts exposures auto-detected; the SBS96/DBS78 dual spaces; the seed bit-for-bit. The NB per-channel variance law and the Poisson unit-color scatter are in the tests (the 400-replicate median anchor). The genome-real placement (VCF-level) ⏳ the M7 full set.
plot_k_cv_curve() + plot_k_stability() (the K-selection evidence visualization, the L-F ✅ M2/M4 row close-out): read directly off the ms_select_k() memo-3 evidence table – the CV-error curve (the argmin highlight + the selected set ring + the veto red/blue coloring) and the dual consensus-stability lines (avg/min + the upstream veto-threshold reference lines 0.80/0.20); the schema guard structured; the real ms_select_k small-grid round-trip rendered.
the bootstrap CI/stability figures (the L-F ✅ M3b/M4 row close-out, R/viz-bootstrap.R): plot_boot_ci (the per-signature error bars + the contract title 95% CI/boots) + plot_boot_stability (the stability bars + the 0.95 floor line – the stability clause of the M3b compound zeroing rule); plot_boot_distribution is the honest-refusal face (the draws are not persisted in the MsFit – the M7 upgrade arm recorded); the point-fit guard.
the scatter-plot null p annotation (the L-F close-out, R/ms-compare.R + viz): plot_cosmic_scatter(null_p = TRUE) annotates the empirical signature-null tail probability – the uniform-Dirichlet family R twin sampler (the audit cross-checked it against the Rust kernel independently, same law) + the add-one rule (never returns 0, 5000 draws default); cos=1 pinned at the floor 1/(n+1); the cross-comparison FDR q ⏳ pending the multi-comparison table view.
the ms_compare per-comparison p_null/q_bh matrix (the L-F q annotation, fully closed out): the per-(est, ref)-pair empirical signature-null tail probability (the add-one MC, per-pair seed offset) + the whole-grid BH correction (byte-consistent with p.adjust, pinned-tested); the q≥p direction, the add-one floor on the diagonal, large p’s for unrelated pairs – all asserted numerically. The scatter annotation and the table view share the same null family.
ms_exposure_test(), the differential-mining face (the L-F close-out, R/ms-embed.R): the two-group per-signature Wilcoxon rank sum (the musicatk workflow semantics) + the whole-signature-family BH (the same p.adjust caliber as ms_test_presence); the all-tied signature gets the NA face (no fabricated p); >2 groups are rejected (pairwise splitting is the caller’s design decision); the median two-group reference column.
the shape-conditional null upgrade arm (U-M7-pre, R/ms-compare.R + compare.rs +
ms_compare_shape_null_rust): the concretization of the memo’s “entropy-matched Dirichlet(α·u)” – draws = Multinomial(N,u)/N, the statistic cos(draw,u), the entropy semantics entering naturally via the shape u and the noise scale α_total=N (no dichotomy needed); the scatter plotnull_family = "shape_conditional"read directly; a different law from the catalog face, anchored by the direction assertion + the χ²/N scaling law (the sd ratio ≈ 10, not 1/√N – the first-draft Gaussian assumption was corrected by measurement).ms_cluster_signatures(), signature clustering (the L-F 🔶→✅, R/ms-cluster.R): the connected components of the threshold graph (cosine ≥ threshold in one cluster, deterministic union-find with no RNG and no restarts); the labels stable by cluster size descending + first-appearance order; the medoid = the member with the highest mean cosine within the cluster; the cosine matrix returned as an attribute. Semantically disjoint from the M2 consensus primitive (which is the replicate-block structure); the design note is in the file header. The default threshold 0.90 (the Islam TP line).
the first ms_run_benchmark() grid driver (the M7 body’s first work, R/ms-benchmark-driver.R, D1 stage 1 + D2 PROVISIONAL): the ms_benchmark_grid() scenario constructor (the calibration layer driven directly by ms_simulate: TMB/sample count/active-signature count/generative arm, the dictionary = the bundled COSMIC v3.6 seeded draw); the driving loop = the scenarios × the certified engines (nmf/ard/sparse by default), the full Cartesian product, per-cell tryCatch isolation (a failure records only the cell_error=1 row – the container NA contract kept); the scoring = the Hungarian P/R/F1 @0.90 + the D2 paired L1 (absolute/compositional, the tau-independent assignment derived via the 1e-9 threshold) + runtime. Bit-for-bit seed determinism (except the runtime); the naming note: the M0 constructor keeps ms_benchmark(), the driver = ms_run_benchmark() (unifying them into one generic = an M7 polish decision).
plot_exposure_riverplot() (the L-F exposure row close-out, R/viz-exposure-similarity.R): the ggalluvial riverplot (the sample×signature share flow, the PI-permitted Suggests 2026-10-05); the stacked bars/heatmap/riverplot three faces complete.
M3b · the MSU-Fit calibration statistics (the three closing items: U-M3b-04/05/06)
-
the calibration experiment face (U-M3b-04, R/calibrate.R):
ms_calibration_grid()assembled through thems_calibration_grid_rustkernel face – the M3b Monte-Carlo calibration grid: the mean_coverage / se / n_reps / pass_window per (N × share) cell plus the estimand-③ compound-zeroing confusion tally;ms_calibration_verdict()is the pure-R twin of the kernel-side verdict-window verdict (incl. the inclusive endpoints window, 1-based failing_cells, test positions byte-equal). The R-face contract: n_grid positive integers strictly increasing, share∈[0,1], the arm’s three forms legal names, the window two points [0,1] ordered; all under the msuiter_error_* error protocol; the seed determinism + the threads∈{1,N} identity run through the R face. -
the curve-verdict visualization (U-M3b-05, R/calibrate-plot.R):
plot_calibration_curve()– the coverage vs N (the log x, faceted by share, the verdict-window shading, the per-cell binomial error bars, the red-X marks on out-of-window cells); ggplot2 is a Suggests dependency (lazily loaded at call, absent -> a structured msuiter_error_package). -
the real-data sanity harness (U-M3b-06, R/calibrate-real.R + inst/sanity/README.md):
ms_calibration_sanity()executed per the design memo §4 protocol – the full production-face fit as the declared pseudo-truth → the downsampling dilution (Multinomial(N, counts/total), the K ∈ {100, 1000, 10000} axis) → the S(N) curve (share ≥ 0.05 interior) → the acceptance = within ±0.05 of the synthetic main-arm curve difference (or the [0.90,1.00] floor taking the wider one) with no systematic monotone reversal. The data acquisition/governance (the PCAWG WGS primary + the TCGA GDC open WXS secondary, the WES/panel axes deferred to M4) protocolized into inst/sanity/README.md; the harness downloads nothing and bundles no real data.