feat(scripts): structural-path full-corpus harness + first honest 62-case numbers

corpus_structural.py drives render48k (48k/4096 structural chain) across the
full corpus with bridge-compare mode. Results: comb 6.12 vs bridge 10.15
(structural wins multiband already), res better, single-band worse; dual@500
constant -6.7dB q-independent over-cut exposes missing reduction saturation.
Param sweep (gamma x MULT, verified builds) confirms current optimum; curve
SHAPE is the gap -> Step 7 capture or bigkernel input re-examination.
This commit is contained in:
2026-08-21 13:12:53 +03:00
parent a9d5581ad8
commit b2cb9235be
2 changed files with 93 additions and 0 deletions
+43
View File
@@ -1253,3 +1253,46 @@ ctx+0x188 writers to replace MULT placeholder with decomp value.
6e40+15060 thunks, then bigkernel exp2 in-place on band (line 805-832).
### Commits: 9ffe60e (IIR3 fwd-only + retune), 1a616e1 (bidirectional + decode).
## ============ UPDATE 2026-08-21c: FULL STRUCTURAL CORPUS (first honest numbers) ============
### Harness: scripts/corpus_structural.py (render48k x all 62 cases, bridge-compare mode)
Structural chain (48k/4096, LUT level-domain g=0.344 m=4.2, IIR3 bidi) vs bridge:
group n bridge struct delta
t1kq 7 0.226 0.768 +0.54 worse
t1k 11 1.801 2.114 +0.31 worse
al 6 0.638 0.986 +0.35 worse
res 11 0.628 0.437 -0.19 BETTER
dual 22 0.726 3.264 +2.54 MUCH worse
comb 5 10.149 6.116 -4.03 MUCH BETTER
TOTAL 62 1.594 2.286 +0.69 worse
### KEY FINDINGS:
1. **comb: structural ALREADY beats bridge by 4 dB** (6.1 vs 10.1) WITHOUT acc
wiring — per-band structural min() + warp closes part of the multiband gap.
Plan's "combine closes comb" partially pre-empted by the chain itself.
2. **dual_*_500: constant -6.7 dB over-cut for ALL q** (q-independent!).
res[center] is q-independent (0.117) => systematic LEVEL offset at band
center on two-tone input, not shape. dual_*_2000 (off-center bin) BETTER
than bridge (-0.1..-0.4 vs +0.1..+2.3). At same xv, bridge-LUT cut ~-9.3 dB,
our exp2 path cuts ~-20 dB: real reduction SATURATES (~C_max~0.70 per
extracted LUT pts), exp2(-lvl) does not.
3. al level-sweep error is MONOTONE in level (+0.88@lv3 -> -1.82@lv24): our
level->cut curve too steep mid-range; but t1k (loudest) flips back to
under-cut (+1.8) => NON-monotonic overall, no monotone LUT fixes all groups.
4. gamma/MULT sweep (g in {0.15,0.22,0.30} x m in {4.2,5.0,5.8}, fresh builds,
12-case subset incl. dual/res/comb): ALL points worse than current
g=0.344/m=4.2; gradient points BACK to current optimum. Blind param space
EXHAUSTED around this parametrization.
### CONCLUSION (Step 1 status): criterion "structural >= bridge on single-band"
NOT met globally (regress on t1kq/t1k/al/dual; better on res). The missing
piece is the REAL reduction curve saturation — needs either:
(a) Step 7 BandConfig ctx+0x188 live capture (A/B/gamma per config), or
(b) re-examination of bigkernel INPUT: maybe level into exp2 carries an
additional transform (log-domain offset / per-band depth scalar
0x540888 / offline 0x5e80+FUN_180323f20 ops) that saturates the cut.
Do NOT tune MULT further — it is calibrated; the CURVE SHAPE is wrong.
### FFT-conv priority DOWNGRADED: NOTES:18c shows window 0x540658 tail is
near-flat (0.8->1.0 plateau at N/2>=2048), FIR-construction effect on mask
shape minimal for N=4096. Step 4 stays P3.