mesh-issues: read merged from the pull request, not the state, so a closed one is withdrawn (hq issue 483)
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)

mesh-delivery says stopped for a pull request closed unmerged too; read as
merged, it was said stuck to the operator for good. Cite ADR 0284 for the
worker rules, which the comments gave as 0283.
This commit is contained in:
2026-10-11 12:24:45 +02:00
parent 601eed06e7
commit 3aaccba4e2
14 changed files with 88 additions and 49 deletions
@@ -56,7 +56,7 @@ func deliveredNotResolved(is *Issue) bool { return is.Status == StatusFixing &&
// deliveredAt is when the last of an issue's delivered fixes was delivered, as the delivery said it.
func deliveredAt(is *Issue) time.Time {
var last time.Time
for _, pr := range fixPullRequests(is) {
for _, pr := range liveFixes(is) {
if f := fixOf(is, pr); f != nil && contains(is.Delivered, pr) && f.Since.After(last) {
last = f.Since
}
@@ -81,7 +81,7 @@ func (t *Tracker) sayNotResolved(is *Issue, now time.Time) (bool, error) {
worker = is.Worker.By
}
ago := now.Sub(at).Round(time.Minute)
prs := strings.Join(fixPullRequests(is), ", ")
prs := strings.Join(liveFixes(is), ", ")
if err := t.Notify(notResolvedKey(is.Number), "warning",
fmt.Sprintf("issue %d: fixed and delivered, not resolved; %s works on it", is.Number, worker),
fmt.Sprintf("Fixed and delivered, not resolved (issue %d)", is.Number),
@@ -145,7 +145,7 @@ func (t *Tracker) askUnheard() error {
if since.IsZero() {
since = t.now()
}
if _, err := t.recordFix(pr, d.State, d.Why, afterMerge(d.State), since, n); err != nil {
if _, err := t.recordFix(pr, d.State, d.Why, d.Merged, since, n); err != nil {
return err
}
heard = true
@@ -160,9 +160,10 @@ func (t *Tracker) askUnheard() error {
}
// openPullRequest says whether an issue names a pull request not merged yet, or one whose delivery the tracker
// never heard of: work in review is work, and a fix unheard of is not taken for none.
// never heard of: work in review is work, and a fix unheard of is not taken for none. One closed without merging
// is not open.
func openPullRequest(is *Issue) bool {
for _, pr := range fixPullRequests(is) {
for _, pr := range liveFixes(is) {
f := fixOf(is, pr)
if f == nil || (!f.Merged && !contains(is.Delivered, pr)) {
return true