Uh oh!
There was an error while loading. Please reload this page.
feat(caller-drift): the conformance matrix — one screen, coverage as well as drift (backend#1608) - #223
Merged
Merged
Conversation
…well as drift (backend#1608) Increment 3. The audit has always known every repo's state per family and only ever emitted the FAILURES, so a green run said "No drift" and nothing about what was actually covered. You could not tell a fleet that conforms from a fleet that was barely checked -- which is the same question this epic keeps finding the wrong answer to elsewhere (a caller that is present but advisory, a required check that never reports). Adds a per-repo x per-family table to the report: callers, copies, protection, rulesets, for all 20 repos, with the train flag alongside. Cells are deliberately three-valued: OK evaluated and matched N that many findings ? that family could not be READ `?` is the point. "Zero findings because we checked" and "zero findings because we never looked" must not render the same, and the whole guard exists to refuse that conflation -- so the screen refuses it too. Counted by DELTA around each family's block rather than by parsing the finding strings. Those strings are prose written for humans; keying a table off them would break the first time one is reworded. Verified: * LIVE, all 20 repos: renders 20 x 4, every cell OK, exit 0 * MUTATION: with an impossible required-check in the develop baseline, the protection column shows **1** for exactly the 16 train repos and OK for the 4 non-train ones whose develop role is exempt, exit 1. The screen shows red, and shows the SHAPE of the failure -- one family, one cohort. * selftest 116 -> 122, including that a clean row and an unread row do not render identically, and that an unreadable FAMILY marks only its own column * ruff --isolated --select E4,E7,E9,F -> All checks passed! Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
#1608 increment 3 — the "one screen". The harness has had teeth since
required_checksandrulesetslanded; what it never had was a view.Why
The audit has always known every repo's state per family and only ever emitted the failures. A green run said "No drift. Every repo read, every entry matched" — and nothing about what was covered. You could not tell a fleet that conforms from a fleet that was barely checked.
That is the same question this epic keeps finding the wrong answer to elsewhere: a caller that is present but advisory, a required check that never reports, a scanner that never ran. The report had the same blind spot as the things it audits.
The screen
A per-repo × per-family table in the report — callers, copies, protection, rulesets, all 20 repos, train flag alongside:
Cells are deliberately three-valued:
OKN??is the point. "Zero findings because we checked" and "zero findings because we never looked" must not render the same — the whole guard exists to refuse that conflation, so the screen refuses it too.Counted by delta around each family's block, not by parsing the finding strings. Those strings are prose written for humans; keying a table off them would break the first time one is reworded.
Test plan / evidence
OK, exit 0OKfor the 4 non-train ones whose develop role is exempt; exit 1ruff --isolated --select E4,E7,E9,FThe mutation row is the one that matters: a screen that can only ever render
OKis precisely the vacuous pass this guard exists to refuse. It shows red — and shows the shape of the failure: one family, one cohort, visible without reading a single finding line.The selftests lock the states the live fleet cannot produce: an unreadable repo (
?across the row), an unreadable family (?in that column only), and — the one that would be easiest to regress — that a clean row and an unread row do not render identically.Parent epic: backend#1680 · closes #1608 increment 3.
Note
Low Risk
Reporting-only change to an audit script; counting logic is additive and covered by new selftests, with no change to pass/fail exit semantics described in the diff.
Overview
Adds the “one screen” conformance matrix to the caller-drift GitHub step summary so reviewers see coverage and drift together, not only a failure list on green runs.
During each repo audit, the script now builds a
matrixkeyed by repo and family (callers, copies, protection, rulesets). Finding counts come from deltas onfindings(and protection/ruleset unread lists) around each family’s evaluation block—not from parsing finding prose. Unreadable repos get a full-row?; protection/rulesets can show?in a single column when only that layer failed to read.New
render_matrix()emits a collapsible markdown table (repo, release-train flag, four families) withOK, bold counts, or?, inserted into the report before the detailed finding bullets.Selftests lock matrix rendering: clean rows, counts, full vs per-family unread, and that “checked clean” ≠ “never read”.
Reviewed by Cursor Bugbot for commit c8f8e04. Bugbot is set up for automated code reviews on this repo. Configure here.