ninefold-reviewer posts REVIEWER-VERDICT lines with risk= instead of charter's tier= nf-cp0s ← Beads

open priority 2 task unassigned

Twinned from https://github.com/cfsh/ninefold/issues/1025 by tools/beads/import_github.py's reconcile pass.

Seen on PR #1011's pass-2 verdict (sha=4d4186a93f806f29a18e33d0ce5b9a4c6f3730fc):

REVIEWER-VERDICT sha=4d4186a93f806f29a18e33d0ce5b9a4c6f3730fc coverage=12/12 risk=risk:feel result=PASS

CHARTER.md's documented line format (tools/nflib/CHARTER.md:246, or wherever it currently lives):

REVIEWER-VERDICT sha=<full headRefOid> coverage=<covered+deferred+declined>/<in-scope total> tier=<1|2|3> result=<PASS|CONVERGED|GAPS|GAPS-REPEAT>

The posted line has risk=risk:feel where the charter requires tier=<1|2|3> — no tier= field at all. tools/nflib/verdict.py's _LINE regex requires a literal tier=[0-9] group, so verdict.parse() returns None for this line, and tools/nflib/authority.py's newest_verdict() therefore reports "no verdict" even though the reviewer's own label (rev:pass) and prose both say PASS with 12/12 coverage.

Impact: merge_pr.py refuses with "the reviewer has posted no verdict, so nothing has converged" on a PR that has, in fact, converged — the only way through is UNCONVERGED_OK=1, which is meant for the case of an actually unconverged PR Aedan has said to land anyway, not for a parser rejecting a well-formed-but-wrong-field verdict.

Two ways to close this, either is fine: - Fix whatever emits the reviewer's verdict line to use tier=<1|2|3> per the charter, dropping risk=. - Or, if risk: labels (risk:feel etc.) are the intended replacement for numeric tiers, update CHARTER.md and tools/nflib/verdict.py's _LINE regex/FIELDS together so the parser and the charter agree again, and bump SCHEMA_VERSION.

Either way the two are currently out of sync, and a real PASS reads as an unparseable non-verdict because of it.

Dependencies

None.

Comments

No comments.

Add a comment