mesh-issues: a verdict naming issue 0 is none, and the tracker's own module is a registered owner (issue 396)
mesh/delivery superseded: a newer head of the same pull request
mesh/merge-gate pass: builds mesh-issues → novox; no bus step; every machine composes with the change as it did without (4 of 4 compose)
mesh/repo-check pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)

The model says 'no issue' as related to 0; the triage took that as an issue not
offered and failed the issue instead of triaging it.
This commit is contained in:
jochen
2026-10-10 18:27:53 +02:00
parent 7e7dfbfb1a
commit 6bd69ebadc
3 changed files with 20 additions and 1 deletions
@@ -407,6 +407,10 @@ func (t *Tracker) judge(is *Issue, candidates []*Issue) (*Verdict, error) {
}
}
}
if v.Verdict != VerdictNone && v.Issue == 0 {
// "related to issue 0" names no issue: the model's way of saying none. Not a failure, and nothing is linked.
v.Verdict = VerdictNone
}
switch v.Verdict {
case VerdictNone:
v.Issue, v.Certain = 0, false
@@ -808,3 +808,18 @@ func TestReadyIsSaidOnceFollowsDuplicatesAndAskingFailsLoudly(t *testing.T) {
t.Fatalf("not let go through the duplicate: %+v", v)
}
}
// A verdict of related or duplicate naming issue 0 names none: read as none, not a failure.
func TestAVerdictNamingIssueZeroIsNone(t *testing.T) {
h := newHarness(t)
h.open(t, "the counter skips a number")
n := h.open(t, "the desk is slow")
withJudge(h, &stubJudge{verdict: map[string]any{"verdict": "related", "issue": 0, "reason": "nothing close"}})
if err := h.Check(n); err != nil {
t.Fatal(err)
}
is := get(t, h, n)
if is.Triage == nil || is.Triage.Verdict != VerdictNone || len(is.Links) != 0 || is.Severity != "minor" {
t.Fatalf("%+v", is)
}
}
File diff suppressed because one or more lines are too long