Skip to content

State the rule that decides how a new AG measure gets handled (#991) - #1710

Merged
erikdarlingdata merged 1 commit into
devfrom
feature/991-ag-measure-discriminator
Jul 26, 2026
Merged

State the rule that decides how a new AG measure gets handled (#991)#1710
erikdarlingdata merged 1 commit into
devfrom
feature/991-ag-measure-discriminator

Conversation

@erikdarlingdata

Copy link
Copy Markdown
Owner

Last one on this thread. Doc-only, no logic change.

The gap

The AG sync doc block ended up carrying two superficially similar measures with opposite prescriptions — gate drain-time (#1703), never use commit deltas (#1708) — and no stated reason for the difference. That is the setup for someone adding a new AG measure and picking whichever precedent they happened to read first.

The discriminator

ag-fixture-builder named it while closing out their own evidence file, and it is the right one: the failure direction, not the column.

the reading… do this why
fails in one direction (drain-time: reassuring, and only while suspended) gate it the may-fire-never-clear rule suppresses exactly the direction that would wrongly clear an alarm
fails in both directions under different conditions (commit deltas: silent while suspended, loud on a quiet healthy replica) don't use it no directional gate helps — suppressing the reassuring half leaves the false-alarm half, so gating converts a silent failure into a noisy one rather than a correct one

That is why drain-time got gated and commit deltas got banned. The file now says so, instead of leaving two special cases to be pattern-matched.

The transferable part

Every measured value in this area moved at least once during the work — MS Learn's documented lag behavior, the latch timing, the drain estimate, the lag baseline under load versus idle — while the direction-based rules never moved once. When the underlying behavior is documented wrong and the measurements are load-dependent, reason about which way a reading can lie rather than about its magnitude. Direction is what survives the numbers being wrong, and in this file the numbers were wrong repeatedly, mine included.

Testing

Darling suite green: 3252 passed, 0 failed.

🤖 Generated with Claude Code

The doc block ended up carrying two superficially similar measures with
OPPOSITE prescriptions - gate drain-time, never use commit deltas - and no
stated reason for the difference. That is the setup for someone adding a new AG
measure and picking whichever precedent they read first.

ag-fixture-builder named the discriminator while closing out their own file, and
it is the right one: the failure DIRECTION, not the column.

  fails in ONE direction    -> GATE it. The may-fire-never-clear rule
                               neutralizes it, because the direction it
                               suppresses is exactly the one that would clear an
                               alarm wrongly.

  fails in BOTH directions  -> DO NOT USE IT. No directional gate helps:
  under different conditions   suppressing the reassuring half leaves the
                               false-alarm half, so gating converts a silent
                               failure into a noisy one rather than a correct
                               one.

That is why drain-time got gated and commit deltas got banned, and now the file
says so instead of leaving it as two special cases to be pattern-matched.

Also recorded, because it is the transferable part: every measured VALUE in this
area moved at least once during the work - MS Learn's documented lag behavior,
the latch timing, the drain estimate, the lag baseline under load versus idle -
while the direction-based rules never moved once. When the underlying behavior
is documented wrong and the measurements are load-dependent, reason about which
way a reading can lie rather than about its magnitude. Direction is what
survives the numbers being wrong, and in this file the numbers were wrong
repeatedly, mine included.

Documentation only, no logic change.

Darling suite green: 3252 passed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
erikdarlingdata added a commit that referenced this pull request Jul 26, 2026
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@erikdarlingdata
erikdarlingdata merged commit 626a545 into dev Jul 26, 2026
4 checks passed
@erikdarlingdata
erikdarlingdata deleted the feature/991-ag-measure-discriminator branch July 26, 2026 21:55
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.

1 participant