TEST RECONCILIATION

Per-block total / disabled test counts — watch the disabled count fall over time

The goal of this report is simple: drive the disabled test count down. Each dated entry is a snapshot of how many tests exist per block and how many are turned off; the trend across entries is the signal. The LIVE row at the top is recomputed from the current tree at deploy time, so it never silently rots.

Disabled = a static, declaration-level disable (test.skip('name', …), test.fixme('name', …), describe.skip, test.todo) — the actionable backlog. In-body runtime guards (test.skip(cond, 'reason')) are environment gates (DB/WAD/ROM/relay present?), not disabled. Loop-generated test.fixme placeholders from the registry sweeps are counted in the parametrized blocks (vrt/behavioral), not the raw e2e block. .only is an alert — it hard-fails CI. Parametrized blocks count enrolled units (registry modules minus exemptions), not raw test() calls.

commit fbc0555 · page built 2026-07-03 22:49Z

Alerts

No focused (.only) tests — good (forbidOnly: true would hard-fail CI).

Snapshots

current tree LIVE (recomputed at deploy)

blockkindtotaldisabled%disabled
unit raw 9003 2 0.0%
e2e raw 1153 3 0.3%
art raw 557 0 0.0%
vrt parametrized 179 0 0.0%
behavioral parametrized 126 65 51.6%
@collab raw (e2e subset) 107 1 0.9%

2026-06-08

report REFRAME — every disabled test is now reconciliation BACKLOG (no permanent-exempt bucket). Retired the two-bucket intentional-vs-reconcilable split: scripts/test-reconciliation.mjs no longer reads BEHAVIORAL_RECONCILABLE_EXEMPT and no longer reports {intentional, reconcilable}; the behavioral block's `disabled` IS the headline backlog, and the 156 per-port exemptions are surfaced as the same backlog at port granularity. Deleted the BEHAVIORAL_RECONCILABLE_EXEMPT map + its load-time integrity check from per-module-per-port-behavioral.spec.ts (the per-entry re-enable notes were already duplicated inside BEHAVIORAL_MODULE_EXEMPT, so no re-enable path was lost) and replaced the split-rationale header with the reconciliation law (re-enable-and-assert OR delete; the harder cases need new harness capability, which IS the backlog, not a waiver). The meta-test now LOCKS the law (the split maps must not creep back; re-enabled Moog routers must stay out; remaining exempts carry a backlog note); the Pages builder shows the live row with NO split and renders old entries' split as a greyed 'historical (retired) — all backlog now' line. ALSO root-caused a CI failure this PR surfaced: the behavioral `edges` row (Sobel edge-detection VIDEO processor, merged #688) times out REPRODUCIBLY (twice, 96s flat 3-input budget) on CI's SwiftShader software renderer — the per-frame WebGL Sobel convolution is ~10-30× a real GPU, so the `in` frame-poll can't finish; documented CI-SwiftShader heavy-WebGL-video class (cf. foxy/mandelbulb), passes on a real GPU. Exempted `edges` with a measured backlog note (re-enable path = a video-domain per-frame-scaled timeout or a real-GPU CI lane); it is honestly counted as +1 backlog, NOT waived — its behaviour is fully covered with stronger GPU-aware signal by edges.spec.ts + edges.test.ts. Net behavioral disabled 57->58 (the report-reframe re-enables/deletes 0; the edges exemption is the only count change, a fix-by-exempt-with-path of a reproducing CI-infra timeout). Note vs recon #4: this branch is on a newer origin/main so the raw totals grew (unit 6065->6219, e2e 911->928) and e2e/@collab disabled show the 4 static test.fixme quarantines (edges THICKNESS / patch-menu drag / in-card-title peer-sync / recorderbox MP4) + 1 @collab fixme that were already present — next batches will fix-or-delete those.

blockkindtotaldisabled%disabled
unit raw 6219 2 0.0%
e2e raw 928 4 0.4%
art raw 463 0 0.0%
vrt parametrized 156 0 0.0%
behavioral parametrized 104 58 55.8%
@collab raw (e2e subset) 108 1 0.9%

2026-06-08

behavioral video-sink SwiftShader EXEMPTIONS (lower-wall-time path) — EXEMPT cellshade/chromakey/outlines and KEEP edges exempt, instead of scaling the per-test timeout. CONTEXT: the per-frame WebGL video-sink modules (those whose pickObservedOutput routes to the video-out-canvas sink) render a per-frame pipeline AND readPixels a full canvas every snapshot, both ~10-30× slower under CI's SwiftShader SOFTWARE renderer than a real GPU (the ci-swiftshader-video-e2e-timeouts class) — they time out REPRODUCIBLY on CI while PASSING on a real local GPU. The FIRST attempt at this PR scaled the per-test timeout up (VIDEO_TEST_BASE_MS + n×VIDEO_PER_INPUT_MS + a video mount budget); that worked but added ~3-4 min to the behavioral lane (runs went ~18-19 min vs the ~15-min baseline). DECISION (user): do NOT pay the wall-time — REVERT all timeout scaling (per-test setTimeout back to the flat max(90s, n×22+30); video read back to 3 full-res samples; no VIDEO_*_MS constants; no spawnPatch mount-budget) and SKIP the unverifiable video-sink modules instead. So cellshade/chromakey/outlines join BEHAVIORAL_MODULE_EXEMPT and edges STAYS exempt, all four sharing ONE backlog note (VIDEO_SINK_SWIFTSHADER_NOTE): 'video-out-canvas per-frame WebGL is too slow to verify on CI's SwiftShader software renderer (passes on real GPU); real behavioral coverage for these lives in each module's VRT + bespoke e2e spec; re-enable needs a real-GPU CI lane or a reduced-capture behavioral path.' This is the honest reconcile=document-as-backlog outcome — the exempt count GOES UP (not fudged). Real behavioral coverage for each lives in its VRT baseline + bespoke spec (cellshade.spec.ts/chromakey.spec.ts/outlines.spec.ts/edges.spec.ts); per-module-per-port.spec.ts still pins each port's wire-up via inputs-accept. foxy/mandelbulb stay exempt for AUDIO-scope/heavy-mount/ray-march reasons (unrelated). Net behavioral disabled 57->60 (+3: cellshade/chromakey/outlines; edges was already +1 in the REFRAME entry). The meta-test (scripts/test-reconciliation.test.ts) now LOCKS all four video-sink modules IN the exempt map sharing the single note AND that the video-scaling tokens are GONE (timeout reverted to baseline). END STATE: behavioral lane GREEN on CI at ~15-min baseline wall-time (slow video modules SKIPPED, not given more time) — gateable as a REQUIRED check (standing goal #42, separate follow-up).

blockkindtotaldisabled%disabled
unit raw 6341 2 0.0%
e2e raw 933 4 0.4%
art raw 475 0 0.0%
vrt parametrized 157 0 0.0%
behavioral parametrized 103 60 58.3%
@collab raw (e2e subset) 108 1 0.9%

2026-06-07

Seed entry — first Test Reconciliation snapshot (test-stability restoration program, Area 1).

blockkindtotaldisabled%disabled
unit raw 5934 2 0.0%
e2e raw 896 1 0.1%
art raw 457 0 0.0%
vrt parametrized 150 0 0.0%
behavioral parametrized 92 64 69.6%
@collab raw (e2e subset) 108 0 0.0%

2026-06-07

behavioral reconciliation #1 — re-enable moog984 (4×4 matrix mixer). It was NOT a no-upstream-source case: out1 = Σ in_i × m_i1 with all 16 cross-points defaulting to 0 (the attenumix/veils/videoMixer passive-mixer class). Opening column-1 cross-points via BEHAVIORAL_PARAMS lets the noise source on any of in1..in4 reach out1 — all 4 inputs are real-coverage passes (Δμrms≈0.18, ~18× the 0.01 floor). Verified 3× locally clean. behavioral disabled 64→63.

blockkindtotaldisabled%disabled
unit raw 5963 2 0.0%
e2e raw 903 1 0.1%
art raw 457 0 0.0%
vrt parametrized 150 0 0.0%
behavioral parametrized 93 63 67.7%
@collab raw (e2e subset) 108 0 0.0%

2026-06-07

behavioral reconciliation #2 — re-enable the Moog router batch (moog993 + moog961) + honest exempt split. moog993: default route1=1 makes trig_from1→trig_out1 a unity passthrough (Δμrms≈0.68, ~68× the 0.01 floor); trig_from2 (route1 ignores src2) + env_in1/env_in2 (separate CV outputs) are per-port-exempt. moog961: s_in→v_out1 format passthrough against a silent control (Δμrms≈0.72) with sensitivity pinned high so the audio_in context noise can not muddy it; audio_in (masked by the s_in context gate) + v_in_a/v_in_b (separate s_out_* outputs) are per-port-exempt. moog911a (~1ms one-shot pulse the RMS-over-windows metric misses — needs a per-transient peak metric) + moog960 (constant 0.5 row CV / re-phases the free-running sweep — needs a held-CV driver) stay exempt with precise notes, tagged RECONCILABLE. Verified 993+961 3× locally clean. Honest split added: the 61 module-exemptions are now reported as 52 intentional (architecture-gated: hardware/ROM/file/sinks/MI-state-machines/animated-video/heavy-mount/multiplexers — correct skips) + 9 reconcilable-disabled (the fixable backlog: adsr/buggles/backdraft/peaks/treeohvox/mixmstrs/aquaTank/moog911a/moog960). behavioral disabled 63→61.

blockkindtotaldisabled%disabled
unit raw 5985 2 0.0%
e2e raw 904 1 0.1%
art raw 457 0 0.0%
vrt parametrized 151 0 0.0%
behavioral parametrized 96 61 63.5%
historical split (retired): 52 then-"intentional" · 9 then-"reconcilable" — all backlog now
@collab raw (e2e subset) 108 0 0.0%

2026-06-07

behavioral reconciliation #3 — re-enable the subtle-CV threshold class head: adsr + peaks, via a per-port threshold mechanism + leverage boosts. adsr: the decay/release CV scalers were near-threshold because the default high sustain (0.7) left the decay barely dropping the level. A BEHAVIORAL_PARAMS boost (decay=0.1/release=0.2/sustain=0.2) makes the DECAY phase a big 1→0.2 excursion that the log-scaled CV swings across two decades (Δrange≈0.20-0.29 RMS, ~10-14× the 0.02 floor), and a per-port BEHAVIORAL_PORT_PARAMS['adsr.release']={sustain:0.6} gives the RELEASE tail enough amplitude to swing robustly (Δμrms≈0.033-0.054, ~3-5× the 0.01 floor); verified 4× stable. peaks: it IS a dual-INDEPENDENT-channel module — the channel-0 ports (gate0/mode0_cv/k1_0_cv/k2_0_cv) clear the observed out0 with a big margin (mode0_cv switches the LFO→drum so Δzc≈600/Δcent≈3300Hz; k1_0/k2_0 widen out0's RMS range Δrange≈0.6/0.8), while the channel-1 ports (gate1/mode1_cv/k1_1_cv/k2_1_cv) feed the SEPARATE out1 and are now per-port-exempt as independent-output (cf. synesthesia.b_in); verified 3×. HARNESS IMPROVEMENT: added a per-port/per-module calibrated delta-threshold mechanism (BEHAVIORAL_DELTA_THRESHOLDS + thresholdsFor() wired into computeDelta) so a future port can override ONLY the floors that matter for it, sized to its measured jitter — the systemic-fix infrastructure for the next batch. buggles/backdraft/treeohvox/mixmstrs stay exempt with sharpened, MEASURED notes (buggles self-noise: chaos_cv ~0 delta; backdraft animated-video ±5000 variance floor swamps every input; treeohvox 4-note driver sequence buries the CV scalers in centroid noise; mixmstrs 77 inputs → 28-min wall-time foxy-class + per-channel-on-summed-mix), each with a concrete re-enable path; they stay tagged RECONCILABLE. behavioral disabled 61→59; reconcilable 9→7.

blockkindtotaldisabled%disabled
unit raw 6043 2 0.0%
e2e raw 907 1 0.1%
art raw 463 0 0.0%
vrt parametrized 152 0 0.0%
behavioral parametrized 99 59 59.6%
historical split (retired): 52 then-"intentional" · 7 then-"reconcilable" — all backlog now
@collab raw (e2e subset) 108 0 0.0%

2026-06-07

behavioral reconciliation #4 — re-enable moog960 (distinct-pot sweep + transport-gate deltas) + treeohvox (held-note driver). moog960: at the default r1s*=0.5 every column emits the same 0.5 so the observed row1 CV was a constant 0.5 (C=P). A BEHAVIORAL_PARAMS.moog960 distinct 0→1 row-1 pot ramp (r1s1=0..r1s8=1) makes the free-running CONTROL sweep row1 across all 8 columns, so the transport gates produce clean deltas: stop HALTS the sweep (patched row1 frozen, Δμrms≈0.234 / Δrms.range≈0.140, 7-23× floor), start RE-ZEROES it every 250ms (Δμrms≈0.374, Δcent≈96Hz), clock switches to external-rate (Δμrms≈0.28-0.31, Δrms.range≈0.59-0.62); verified 3× byte-stable. treeohvox (TB-303): the 4-note driver arpeggio swung the audio_out centroid ±600-2800Hz, hiding the CV scalers; a NEW held-note driver mechanism (BEHAVIORAL_HELD_NOTE_DRIVER + populateAllSequencerSteps heldNoteDriver branch plays a constant C3 into driver-seq) gives a STABLE ~150Hz baseline so gate_in (silent→sounding, Δμrms≈0.234), accent_in (Δμrms≈0.12) + waveform_cv (saw↔square, Δμrms≈0.024 + Δrms.range≈0.04) are real-coverage passes; verified 3×. The 7 subtle 303 filter/envelope/tune/pitch CVs (pitch_in/tune_cv/cutoff_cv/res_cv/env_cv/decay_cv/accent_cv) are now per-port-exempt with measured deltas + treeohvox-dsp.test.ts citations (genuine sub-floor footprint, NOT a held-note regression). aquaTank investigated + DOWNGRADED to a sharper measured note (stays reconcilable): observing the loud summed mix_l + exciting all channels, a DETERMINISTIC tone gives stable C≈P with all per-channel CVs at Δμrms≈0.000 (the tanh+damp+cross-mix average out one channel's contribution to the sum), while NOISE only 'passes' on per-spawn RNG ring jitter (flake) — re-enterable with a per-channel sink (same follow-up as mixmstrs). moog911a sharpened with density math: out1's 1ms pulse needs a >20Hz source but the harness sequencer is bpm-capped at exactly 20Hz (boundary scheduler race) — a per-port LFO-square fast gate (≥40Hz) or peak metric + dense source re-enables. buggles/backdraft/mixmstrs unchanged (reconcilable). behavioral disabled 59→57; reconcilable 7→5.

blockkindtotaldisabled%disabled
unit raw 6065 2 0.0%
e2e raw 911 1 0.1%
art raw 463 0 0.0%
vrt parametrized 152 0 0.0%
behavioral parametrized 101 57 56.4%
historical split (retired): 52 then-"intentional" · 5 then-"reconcilable" — all backlog now
@collab raw (e2e subset) 108 0 0.0%