Skip to content

row 91: xtask q128 audit admits a committed record (the record is the one path that may differ from the candidate's tree) - #914

Open
MattJackson wants to merge 1 commit into
predevfrom
lane-q128-record-tree
Open

MattJackson wants to merge 1 commit into
predevfrom
lane-q128-record-tree

Conversation

@MattJackson

Copy link
Copy Markdown
Collaborator

What. xtask/src/q128.rs and the about text of qa/q128-audit.json. Before this change, a candidate counted as "on this tree" only when tree(candidate) == tree(HEAD). Now it also counts when git diff-tree -r --name-only <candidate> HEAD lists qa/q128-audit.json and nothing else. Every other path still has to be byte-identical, including qa/audit-ledger.json. If git cannot list the differing paths, it stays a BLOCK. The BLOCK's evidence now names the paths that moved (up to 10, then a count).

Why. /status row 91 (Q128 audit: no BLOCK), DEV-GREEN item 5 (docs/design/BUSBAR-1.6.0.md l.2912-2915; .ci/predev.yaml check q128-audit). The record is committed in the tree being judged, and it names its candidate by a 40-hex commit id. For the old rule to pass, the candidate's tree would have to contain a record naming that same candidate, so a commit would have to hold its own hash. No auditor could ever produce such a record, and every real audit was judged "the audit was made on another tree". This change only makes the rule satisfiable. It does not weaken it: the audited code, the ledger and every other file must match the commit the auditor read.

On predev 1d37d86 the check holds 2 BLOCKs, unchanged by this PR:

  1. the audit record names no candidate commit: no audit has been recorded yet.
  2. the audit ledger is not clean: row 159 and the ledger PRs row 159: audit ledger records the finished readings (kernel-wal, kernel-identity HIGH -> 0; 19 unaudited scopes read) #820/row 159: audit ledger records the pinned-plugin, transport-webrtc and xtask readings (stacked on #820) #835/row 159: audit ledger records the transport-ws and plane-llm readings (stacked on #835) #845.

RED-able test. q128::tests::the_record_is_the_one_path_that_may_differ_from_the_candidate. Before this change, a candidate whose tree differs from HEAD's only in the record was a BLOCK. These cases stay a BLOCK: one that also differs in the ledger, one that also differs in code, and one whose paths git cannot list. Existing cells are unchanged.

Ledger rows. None.

…he candidate's tree

The audit record is committed in the tree it judges, and it names the commit it read by id. A commit
cannot contain its own id, so the tree that carries the record can never equal the candidate's
tree. Before this change, every committed record was judged "the audit was made on another tree".
That made row 91 (Q128 audit: no BLOCK) impossible to meet with any audit.

The candidate is now on this tree when its tree equals HEAD's, or when git lists the record as the
only differing path. Every other path still has to be byte-identical, the audit ledger included. A
git that cannot list the differing paths keeps the BLOCK. The BLOCK's evidence now names the paths
that moved.

RED: the_record_is_the_one_path_that_may_differ_from_the_candidate (a candidate whose tree differs
from HEAD's only in qa/q128-audit.json was a BLOCK; one that also differs in the ledger or in code,
or whose paths git cannot list, stays a BLOCK).

This branch has not been deployed

No deployments
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