fix: a zero-width band fires on equality or not at all, and the text now says which

The earlier correction moved the claim rather than fixing it: four places still
said the float-equality test "never fires on a real-valued signal", and a +/-1
square is a real-valued signal -- a standalone check against a band of [1, 1]
fired 19 times, because `inside` is true at +1 and false at -1, so the signal
changes side on every transition.

All four now state the measured behaviour: an exact float-equality test against
the level, which an ordinary signal never satisfies and a signal sitting at the
level satisfies on every transition. Neither answer is a band, which is the
reason the second spin is clamped an increment away rather than the detector
special-cased -- the same conclusion, now resting on a true premise.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Martino FerrariandClaude Opus 4.6 committed 2026-10-08 11:39:22 +02:00
1 parent c8f10f59dc
commit aa8ec1794a
4 files changed
+18 -9

No files matched your search

+5 -2
View File
@@ -687,8 +687,11 @@ modes are unchanged, and only the question "did an event happen at this sample"
because that is the first sample at which the width is known. `<` a width shorter than the
signal's own pulses is the glitch trigger: nothing but a runt satisfies it.
- **window** — the signal entering or leaving a band between two levels. A band is two levels,
so the panel refuses a zero-width one: it reduces the condition to a float-equality test,
which on a real-valued signal never fires.
so the panel refuses a zero-width one: it reduces the condition to an exact float-equality
test against the level, which an ordinary signal never satisfies and a signal sitting *at*
the level satisfies on every transition — a ±1 square against a band of `[1, 1]` fired 19
times in a standalone check. Neither answer is a band, which is why the second spin is
clamped an increment away rather than the detector special-cased.
- **dropout** — the *absence* of a crossing for longer than a timeout. One event per outage:
the condition re-arms only when a crossing returns.