Skip to content

M2.5: the reality gate passes — 33.0% empty verdicts on 32 real Logic projects - #37

Merged
sepehrsadri merged 1 commit into
mainfrom
docs/m2.5-reality-gate-finding
Aug 16, 2026
Merged

M2.5: the reality gate passes — 33.0% empty verdicts on 32 real Logic projects#37
sepehrsadri merged 1 commit into
mainfrom
docs/m2.5-reality-gate-finding

Conversation

@sepehrsadri

Copy link
Copy Markdown
Contributor

What and why

Issue #15's exit criterion was a decision, not a tool. If >50% of real Logic saves show no visible structural change, stop and map the volume-fader field before building M5 — because no UI copy survives a dominant "nothing changed" first impression. The tool shipped in #32; the measurement it exists to produce needed a real library and had never run. The ROADMAP and EXPERIMENTS.md §11 both still said the finding was open, with an n=1 (55.6%) data point standing in for it.

It has now run at the scale the issue specified.

Measured — 2026-08-16, 32 projects / 28 GB / 100 consecutive save pairs:

  • 33.0% of save pairs show no structural change Wit can see (67.0% do)
  • 28.0% of pairs are byte-different but structurally identical — M2's finding, reconfirmed at library scale
  • Distribution is long-tailed, not bimodal: the mode above zero is a single change (12 pairs), 26 pairs sit in the 1–7 band, a thin tail runs to 235

33.0% is below the 50% threshold, so the gate passes and M5 proceeds. #18 is unblocked. Every ProjectData in the library walked cleanly — the report printed no read-error line — so all 100 pairs are real comparisons rather than partial ones.

The M2 volume-fader stretch goal stays worth doing: a save that moved only a fader sits in that 33%, and "no structural change Wit can see" remains a statement about the Structure honesty tier, not about the music. It just no longer has to come before M5.

For calibration: Ableton's semantically-empty rate is 24% (§1). Logic's 33% is higher, as expected from a narrower tier — but not the majority outcome the gate was written to catch.

Also closes M3's flagged wit dupes follow-up

M3 landed with wit dupes verified only against a deliberately-planted duplicate; the README's ~5.4 GB figure needed the full library. Run against it now, the Rust implementation reports 5.5 GB of 23.9 GB (23.2%) against §9's independent Python walk at 5.38 GB of 21.95 GB (24.5%) — agreement on a library that gained ~2 GB of audio in between. Recorded as a cross-check in §9 rather than as a rewrite of it, since they are different tools on different snapshots.

One bug, found while reconciling those two numbers

human_bytes divided by 1024 while printing decimal unit labels ("GB"). That understated its own totals by 7.4% and made wit dupes output silently incomparable to docs/EXPERIMENTS.md, which quotes decimal GB throughout and says so in §9's limits. Now decimal, with a test pinning the boundary.

Checklist

  • Docs updated in this PR if behaviour changed
  • No audio or project files committed (see .gitignore)
  • Claims are labelled measured / cited / inferred

If this PR changes a number in docs/

Material: one person's real working Logic library — 32 projects, 28 GB, 100 consecutive save pairs. macOS, Apple Silicon. Real material, never committed; CI cannot reproduce any of this.

$ cargo run --release -p wit-cli -- logic-report ~/Music/Logic
  scanned 32 project(s), 32 alternative(s), 100 consecutive save pair(s)
  67.0% of save pairs show a structural change Wit can see (67 of 100)
  distribution of change counts per save pair (0 = no visible structural change):
    0 change(s): 33 pair(s)
    1 change(s): 12 pair(s)
    2 change(s): 4 pair(s)
    3 change(s): 6 pair(s)
    ... (full distribution in EXPERIMENTS.md §11)
    235 change(s): 1 pair(s)
  28 pair(s) (28.0%) are byte-different but structurally identical

$ cargo run --release -p wit-cli -- dupes ~/Music/Logic
  found 5.5 GB of duplicate audio (23.2% of 23.9 GB scanned)

$ WIT_LOGIC_LIBRARY=~/Music/Logic cargo test -p wit-index --test real_fixtures -- --nocapture --ignored
  test real_library_reports_the_three_m2_5_statistics ... ok
  test result: ok. 1 passed; 0 failed

Gates:

$ cargo test --workspace        127 passed, 0 failed
$ python3 -m pytest tests/ -q   293 passed, 13 skipped
$ cargo fmt --all --check       clean
$ cargo clippy --workspace --all-targets --locked -- -D warnings   clean
$ cargo deny check licenses advisories                             ok

Limits, stated plainly

One person's library, one machine — the same breadth weakness every number in this repo carries, and exactly what #4 exists to fix. It is a library that has never been used with a version-control tool, so its cadence reflects Logic's own backup behaviour rather than deliberate committing. And 33.0% is a rate over save pairs, not sessions: a project with 20 backups contributes 19 pairs and outweighs one with 2.

Closes #15. Unblocks #18.

🤖 Generated with Claude Code

… projects

Issue #15's exit criterion was a decision, not a tool: if >50% of real Logic
saves show no visible structural change, stop and map the volume-fader field
before building M5, because no UI copy survives a dominant "nothing changed"
first impression. The tool shipped in #32; the measurement needed a real
library and never ran. It has now run.

Measured 2026-08-16, 32 projects / 28 GB / 100 consecutive save pairs:

  67.0% of save pairs show a structural change Wit can see (67 of 100)
  33 pairs show none; 28 pairs (28.0%) are byte-different but
  structurally identical

33.0% is below the 50% threshold, so the gate passes and M5 proceeds — #18 is
unblocked. Every ProjectData in the library walked cleanly (no read-error
line), so all 100 pairs are real comparisons. The distribution is long-tailed
rather than bimodal: the mode above zero is a single change, 26 pairs sit in
the 1-7 band, and a thin tail runs to 235.

The M2 volume-fader stretch goal stays worth doing — a save that moved only a
fader is still in that 33% — it just no longer has to come first.

Also closes M3's flagged `wit dupes` follow-up, which needed the full library:
the Rust implementation reports 5.5 GB of 23.9 GB (23.2%) against §9's
independent Python walk at 5.38 GB of 21.95 GB (24.5%), on a library that
gained ~2 GB of audio in between. Recorded as a cross-check in §9 rather than
as a rewrite of that finding, since they are different tools on different
snapshots.

Fixes a units bug found while reconciling those two numbers: `human_bytes`
divided by 1024 while printing decimal labels ("GB"), understating its own
totals by 7.4% and making `wit dupes` output silently incomparable to
EXPERIMENTS.md, which quotes decimal GB throughout. Now decimal, with a test
pinning the boundary.

Verification (real material, opt-in — CI cannot reproduce any of it):

  $ WIT_LOGIC_LIBRARY=~/Music/Logic cargo test -p wit-index \
      --test real_fixtures -- --nocapture --ignored
  test real_library_reports_the_three_m2_5_statistics ... ok

  cargo test --workspace   127 passed, 0 failed
  python3 -m pytest tests/ 293 passed, 13 skipped
  cargo fmt --check / clippy -D warnings / cargo deny  clean

Closes #15. Unblocks #18.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@sepehrsadri
sepehrsadri merged commit e3bca17 into main Aug 16, 2026
14 checks passed
@sepehrsadri
sepehrsadri deleted the docs/m2.5-reality-gate-finding branch August 16, 2026 12:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

M2.5: Measure the empty-verdict rate on a real Logic library

1 participant