Skip to content
SSScalarScope
Version 3.1.1 · Windows

Two ML runs, compared with intervals.

ScalarScope says how run B differs from run A, gives each difference an interval or its reason, and holds back what the data cannot support. Inference traces, training histories and ASPIRE geometry exports. It works offline. A matching SHA-256 is a content check, not a signature.

Install

# Microsoft Store (ID: 9P3HT1PHBKQK) # https://apps.microsoft.com/detail/9P3HT1PHBKQK # Windows 10 1809 or later, x64 # Or from source cargo run --manifest-path rust/Cargo.toml

Headline

# The built-in sample comparison B/A p50 0.65 (0.65–0.66) · p90 0.65 (0.64–0.66) within one run per side; indicative. Not shown: p99 needs 368 steady samples per side. ΔF quiet · ΔTc quiet · ΔO quiet

Open a pair

# From the command line scalarscope samples/inference/baseline.runtrace.json \ samples/inference/optimized.runtrace.json

A comparison that says how sure it is

Every number is computed by the program. Every withheld reading says why.

Ratios with intervals

B/A at p50, p90 and p99, each with a 95% block-bootstrap interval. Several runs per side resample whole runs too. A percentile without enough samples is not printed.

Deltas that earn their place

ΔF (new anomalies), ΔTc (stabilization) and ΔO (variability) each fire on a stated rule. A tile says whether it fired, stayed quiet or was withheld, and Show me moves to the evidence.

Reviews you can reopen

Save a .scbundle and reopen it exactly as saved. It contains the runs it compares, so share it as you would share them. A matching SHA-256 checks the bytes; it does not say who wrote them. Bundles, settings and recent files from 2.0 carry over.

What it opens

Getting Started in the handbook has a short example of each.

KindFiles
InferenceLatency CSV, benchmark JSON, Chrome or PyTorch profiler trace, runtime log, RunTrace JSON, run folder
Trainingbackpropagate run_history.json
GeometryASPIRE geometry export from aspire-si (schema 1.x)
Review.scbundle from 3.x or 2.0

Geometry, a workbench and a history

New in 3.1.

ASPIRE geometry

Two training runs side by side: trajectory, evaluator scores, eigen spectrum and failures, with five geometry deltas. When an export says its steps are not time, or its scores were replayed, the readings that depend on them are withheld with that reason. On a drift export, spectrum concentration is compared checkpoint by checkpoint, and it says when it is comparing the evaluators rather than the runs.

A local workbench

Open runs that differ in a setting and ask a local model, through Ollama on this computer, to measure them and propose what the setting does. The program tests every hypothesis and sets every verdict; the model's note is labelled as its words.

History of reviews

In the Store package, finished comparisons are grouped by the runs' dataset and model. Each measure is drawn across them, with the points where it shifted and the code or environment changes beside them.

Quick start

Install from the Microsoft Store

# Store ID: 9P3HT1PHBKQK
# https://apps.microsoft.com/detail/9P3HT1PHBKQK

1. Welcome → Try the sample comparison
2. Or Compare → Open path A, Open path B
3. Click a tile for Why and Show me
4. Save bundle to keep the review

Build from source

git clone https://github.com/mcp-tool-shop-org/scalarscope
cd scalarscope
cargo run --manifest-path rust/Cargo.toml

# Sample files: samples/ (see TESTING.md)

Keyboard

F1       Guide
Ctrl+,   Settings
Ctrl+H   Welcome
1–6      Series, Warmup, Distribution,
         Difference, Spectrum, Heat map
Esc      Close the Why panel

Local by design

No account, no telemetry, no analytics.

Nothing leaves the machine

The only connection the app can make is the Workbench's Ask, to a local Ollama at 127.0.0.1. Cloud models are refused.

Your files stay yours

ScalarScope reads the files you open. The Store package keeps its comparison log, settings and workbench memory in its own app folder, and writes a bundle or picture only where you choose.

Checked against 2.0

The 2.0 results are kept as test oracles. Where 3.x answers differently, the changelog and the spec say what changed and why.