Reachability: gates the probe never drove both ways
The gates and ceils counts are not measured from pixels at all. They come
from walking each preset’s expression trees while evaluating them over 12 s
of dynamic:110 through the real analyzer, recording which way every
comparison and every select() condition went, and how close every clamp()
came to its upper bound. A frame differential structurally cannot answer this —
select(c, 6, 8) and select(c, 6, 6) diff identically, and neither names
which gate.
Four kinds of finding come out of that walk. Three are named one per line underneath the table; the ceilings are summarized:
GATE— aselect()whose condition never went both ways. One branch of the preset has never rendered. Named with its source text, so the threshold to re-gain is in front of you.COMP— a comparison (> < >= <= == !=) that only ever took one value, so it read as a constant0or1(ADR-0043). This catches two shapes aGATEline cannot. One is the bare comparison as a whole binding —reseed = "onset > 0.55", the idiomatic boolean-param form, which holds noselect()at all. The other is one half of a composite condition: inselect(min(tempo > 124, bass + treb > 0.38), 4, 1)theGATEline names the wholemin(...), and since atempogate is legitimately one-sided here (below), a reader would dismiss it — so each half is also reported on its own, and the excusable one can no longer launder the other.SAT— aclamp()whose inner value sat at its upper bound for 90 % or more of the probe (ADR-0062). The binding is a gain that has stopped being a function of the audio: it reads as the constant its ceiling is, for anything above a whisper. Named one per line with its occupancy, because unlike a decorative ceiling this is a HARD failure — see the saturation gate.- clamp ceilings — a
clamp()upper bound the value never approached. The bound is decorative and the parameter’s real range is narrower than it reads. These are not printed one per line: a single summary line per family gives the count and names the furthest three. All of them are in--json.
A comparison that is the direct condition of a select() reports once, as
the GATE line only — that line already names it and says which branch never
ran, which a COMP line cannot. So GATE and COMP never double-report the
same finding.
The gates column counts GATE + COMP together: both say a branch of the
preset’s behavior has never happened. ceils counts the ceilings, and occ
counts the saturated clamps.
ceils and occ are opposite ends of one measurement, taken on the same
traversal from the same two numbers — a clamp()’s inner value and its upper
bound. ceils asks how close the value ever came (its peak, as a fraction of
the bound) and fires when the answer is “never near”: the ceiling is decorative.
occ asks how long the value stayed there (the fraction of hops at or above
the bound) and fires when the answer is “always”: the ceiling never released. A
clamp can trip at most one of them, and the healthy state is neither — a bound
reached on peaks and released in between. occ is by far the more serious of
the two, which is why it is the one that is gated.
A flag is a suspect, not a conviction. It says this stimulus never drove
the gate both ways, which is a fact about the probe as much as about the preset.
The standing false positive is tempo: the probe runs at one BPM, so
select(tempo > 132, ...) is correctly one-sided and will flag forever. Check
those two by hand with --set tempo=90 / --set tempo=160 (see
Examples); a gate on a band is the one worth acting on.
The probe runs 12 s rather than the 4 s a --signal filmstrip synthesizes,
because the tempo tracker needs about 4 s to lock. Under a short clip tempo
reads a flat 0 and every tempo comparison flags for the wrong reason.
The GATE and COMP half of this is advisory output. It is not a CI gate,
and deliberately so — and as of Plan 0048 both of the reasons are live again.
(The SAT half is gated, for reasons that do not apply to it — see
below.)
The instrument is one of them, and that has not changed: the tempo single-BPM
false positive above accounts for 17 of the 26 flags the shipped set currently
produces, so a naive “fail if flags > 0” would fail CI permanently and a threshold
would be tuned to noise. The precondition remains a multi-BPM probe or an explicit
tempo exemption
(ADR-0043).
The library is the other, and it regressed on purpose before being put back.
Plan 0042’s re-audit measured 0 genuinely dead gates, and that held until
ADR-0049 changed what a band level means: nine bindings written against raw
levels then compared against normalized ones and never went false, so their
else branches were dead. That was the priced cost of the one-time retune
ADR-0049 chose, and Plan 0048 Phase 7 cleared it — the library is back to
zero genuinely dead gates, with the residual flags all tempo one-sidedness.
The walk used to be unable to see a gain, and now it can. A comparison is a
fork it can watch; clamp(bass * 16, 0, 0.3) is not — it has no select(), no
comparison, nothing two-valued, and it is simply an arithmetic expression that
has quietly become a constant. Plan 0048 Phase 7 measured 263 of 332 clamped
band terms pinned at their ceiling, and 14 presets with no live audio term at
all, none of it visible to any instrument this project had. The occ column and
the SAT lines are that instrument
(ADR-0062), and
unlike the rest of the reachability block they are backed by a gate.
Built from 13c7582 at version 0.158.0. This site tracks main and is not versioned per release.