mesh-issues: call an issue its worker left abandoned, not a stale claim (hq ADR 0294)
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)
mesh/delivery delivered

The glossary keeps claim for a module's on a seat.
This commit is contained in:
2026-10-11 12:26:57 +02:00
parent 3aaccba4e2
commit d6148a5ba7
8 changed files with 54 additions and 54 deletions
@@ -90,9 +90,9 @@ type workOutcome struct {
took bool // a worker started, or the issue changed hands
from string // the worker it was taken over from
wasStale bool // the worker taken over from was stale
// staleClaim is a stale worker with no pull request open: a claim nobody works on (novox/hq issue 483).
staleClaim bool
released string // the worker whose work ended, on a move to a status that has none
// abandoned is a stale worker with no pull request open: the issue is abandoned (novox/hq issue 483).
abandoned bool
released string // the worker whose work ended, on a move to a status that has none
}
// workerFor applies a move's worker to an issue, under ADR 0284 §3 and §4: another worker not stale is refused
@@ -123,7 +123,7 @@ func workerFor(is *Issue, to, by, takeOver string, now time.Time, staleAfter tim
return out, nil
}
out.wasStale = cur.stale(now, staleAfter)
out.staleClaim = out.wasStale && !openPullRequest(is)
out.abandoned = out.wasStale && !openPullRequest(is)
if !out.wasStale && takeOver == "" {
return out, fmt.Errorf("%s works on issue %d (%s) since %s, last active %s. Ask them, or take it over with "+
"take-over saying why; the reason is noted on the issue. A worker who did nothing on it for %s may be "+
@@ -140,8 +140,8 @@ func takeOverNote(o workOutcome, by, reason string, prev *Worker) string {
s := fmt.Sprintf("Taken over by %s from %s, who worked on it since %s and was last active %s", by, o.from,
prev.Since.Format(time.RFC3339), prev.Active.Format(time.RFC3339))
switch {
case o.staleClaim:
s += " (a stale claim: nothing done on it past the bound, and no pull request open)"
case o.abandoned:
s += " (stale, and abandoned: no pull request open)"
case o.wasStale:
s += " (stale)"
}