Skip to content

docs(process): two review findings on MEASUREMENT_DISCIPLINE.md — family order and D's missing mechanism #16126

Description

@mrveiss

Two review findings on the merged MEASUREMENT_DISCIPLINE.md (#16102). Filed rather than opened as a seventh PR — review capacity is the bottleneck, and both should ride with the next docs change.

1. The family letters run A, B, C, D, F, then E

F was appended because E already existed in the gates section, and renaming would break the Family E references already posted on #16100 and #13148. That constraint is real. It is also exactly the reasoning that produces a label a reader cannot follow.

This costs something here specifically, and nowhere else it might appear: a document arguing that a name which does not match what it labels sends the reader wrong is the one place a letter out of sequence is not free.

Fix: a forward pointer where F sits — E is introduced below, with the gate ladder its evidence belongs to. Preserves the external references; makes the sequence legible.

2. Family D is missing its mechanism

D says a correct output can support two causes with different remedies. It does not say why nobody checks, which is the load-bearing half:

A refusal is comfortable in a way a green is not, so it gets less scrutiny.

The worked example is from the reviewing session's own gate: it reported STALE PR OBJECT truthfully for an hour while the reviewer supplied a cause the gate had never reported. The output was right; the explanation was invented on top of it and went unexamined because a refusal feels like it has already been investigated.

That is also why D and the guard ladder's rung 2 are different failures rather than the same one — rung 2 is a guard answering an adjacent question, D is a human answering one on the guard's behalf.

3. Related, for the check-run helper (#16120)

Not a doc change, recorded here so it is not lost. #16120's criterion is that the helper must distinguish never reported from reported and not green. A third state is needed: pending, and for how long.

Two watchdog checks in one session had identical status and opposite meanings — one pending 9 minutes with the repo actively scheduling (fresh, wait), one pending 30 minutes while the repo stayed active (stuck, act). The difference is visible only in the ages, and a helper that collapses them loses the only signal that says whether waiting is the right move.

Acceptance criteria

Provenance

Both found by the session reviewing the doc, not by its author — which is the document's own closing claim arriving as evidence about the document.

Activity

  1. github-actions commented on Sep 9, 2026

    @github-actions
    Contributor

    PR #16127 (merged to Dev_new_gui) references this issue with a close keyword.

    docs(process): four corrections found in review, two of them missing criteria (#16126, #15953)

    If this issue is fully resolved, close it manually. If work remains, no action is needed.

  2. added this to the Backlog milestone on Sep 12, 2026
  3. mrveiss commented on Sep 12, 2026

    @mrveiss
    OwnerAuthor

    Stale-issue sweep (never auto-closed — Dev_new_gui wasn't GitHub's default branch at merge time). Verified against current origin/main; leaving open.

    2 of 3 criteria MET: docs/developer/MEASUREMENT_DISCIPLINE.md:124-128 adds a forward pointer explaining the A,B,C,D,F,E family sequence and why (citing #16100/#13148); Family D (:92-120) now carries the "comfort of a refusal" mechanism ("A gate saying WAIT is indistinguishable from a healthy queue, so it receives less scrutiny...") plus the STALE PR OBJECT worked example (:112-116).

    NOT MET: AC3 — scripts/lib/check_run_status.py still has no pending-with-age state; its RUNNING frozenset (:50) treats "pending" as an undifferentiated member with no duration tracking, and a repo-wide grep for pending/age wiring in that module returns nothing.

    Delivered by merged PR #16127.

  4. mrveiss commented on Sep 13, 2026

    @mrveiss
    OwnerAuthor

    Closure evidence (batch 2c)

    Verified against origin/main (PR #16534, 722c3bc). All 3 ACs met; boxes ticked.

    AC Evidence
    Families read in sequence, or E's placement is explained docs/developer/MEASUREMENT_DISCIPLINE.md:124-126 "E is the sixth family and is introduced further down… renaming it would break those"
    Family D carries the refusal mechanism and the STALE PR OBJECT example MEASUREMENT_DISCIPLINE.md:108-110 "A verdict that stops you acting feels safe…"; :112-115 "A merge gate reported STALE PR OBJECT…"
    The #16120 helper names a pending state with an age scripts/lib/check_run_status.py:205 pending_ages(observations), :235 pending_check_ages(repository, sha); tests check_run_status_test.py::test_a_running_context_reports_how_long_it_has_been_pending, ::test_a_finished_context_carries_no_age
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    docsdocumentationImprovements or additions to documentation

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions