The issue tracker learns the merge of a fix it never heard, so an old resolved issue no longer reads 'nothing heard from the delivery' (issue 1950)
#517
Merged
mesh-toolsmerged 2 commits from fix/1950-old-fixes into main2026-10-27 07:21:14 +00:00
Issue 1950: a pull request named in fixed-by with no Fix record (merged before the tracker heard deliveries) read 'nothing heard from the delivery' for ever, and two design-47 milestones (R3c, R3d) looked waiting.
mesh-issues learns such a fix's merge from mesh-delivery checks, else from the forge (gitea.gitea_get_pull_request, now declared in invokes); the next mesh-delivery-view.delivered event of its repository covers it through coveredBy.
A learned merge is kept as of the moment it is learned, so it raises no false stuck warning; a closed issue that kept no fix time gets none.
The sweep asks the least recently asked pull request first, at most 5 per sweep, and a failing ask no longer stops the others.
New tool issue-tracker.learn-fixes {number} asks again for one issue.
Quick fix weighed: count a resolved issue as done whatever it heard; rejected, it hides a real undelivered fix. Thorough fix chosen (note 2 on the issue).
Tests: module unit suite, go vet, go vet -tags integration pass; unit tests 161 -> 166 of 500, integration unchanged.
Live case: after delivery, issue-tracker.learn-fixes {number: 1209} learns mesh-delivery#5's merge, and the next delivered event of novox/mesh-delivery marks it delivered; R3c then counts it done.
Issue 1950: a pull request named in fixed-by with no Fix record (merged before the tracker heard deliveries) read 'nothing heard from the delivery' for ever, and two design-47 milestones (R3c, R3d) looked waiting.
- mesh-issues learns such a fix's merge from mesh-delivery `checks`, else from the forge (`gitea.gitea_get_pull_request`, now declared in `invokes`); the next `mesh-delivery-view.delivered` event of its repository covers it through `coveredBy`.
- A learned merge is kept as of the moment it is learned, so it raises no false stuck warning; a closed issue that kept no fix time gets none.
- The sweep asks the least recently asked pull request first, at most 5 per sweep, and a failing ask no longer stops the others.
- New tool `issue-tracker.learn-fixes {number}` asks again for one issue.
Quick fix weighed: count a resolved issue as done whatever it heard; rejected, it hides a real undelivered fix. Thorough fix chosen (note 2 on the issue).
Tests: module unit suite, go vet, go vet -tags integration pass; unit tests 161 -> 166 of 500, integration unchanged.
Live case: after delivery, `issue-tracker.learn-fixes {number: 1209}` learns mesh-delivery#5's merge, and the next delivered event of novox/mesh-delivery marks it delivered; R3c then counts it done.
Reviewed-by: review-1950@shanks at 3c6f2dc274a991a9e8dfaa1be03dbcec1a582edc
Deliverynovox/mesh-catalog@3c6f2dc274a9 — merged since 2026-10-27T07:21:16Z
Source — source.main moved to novox/mesh-catalog@02597b66d7. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
Transitions
2026-10-27 00:32 (new) → proposed (announced): novox/mesh-catalog#517's head announced
2026-10-27 00:32 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
2026-10-27 07:21 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@3c6f2dc274a9` — **merged** since 2026-10-27T07:21:16Z
**Source** — source.main moved to novox/mesh-catalog@02597b66d7de. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Transitions**
- 2026-10-27 00:32 (new) → proposed (announced): novox/mesh-catalog#517's head announced
- 2026-10-27 00:32 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
- 2026-10-27 07:21 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `git log --notes=mesh-plan`.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Issue 1950: a pull request named in fixed-by with no Fix record (merged before the tracker heard deliveries) read 'nothing heard from the delivery' for ever, and two design-47 milestones (R3c, R3d) looked waiting.
checks, else from the forge (gitea.gitea_get_pull_request, now declared ininvokes); the nextmesh-delivery-view.deliveredevent of its repository covers it throughcoveredBy.issue-tracker.learn-fixes {number}asks again for one issue.Quick fix weighed: count a resolved issue as done whatever it heard; rejected, it hides a real undelivered fix. Thorough fix chosen (note 2 on the issue).
Tests: module unit suite, go vet, go vet -tags integration pass; unit tests 161 -> 166 of 500, integration unchanged.
Live case: after delivery,
issue-tracker.learn-fixes {number: 1209}learns mesh-delivery#5's merge, and the next delivered event of novox/mesh-delivery marks it delivered; R3c then counts it done.Reviewed-by: review-1950@shanks at
3c6f2dc274Delivery
novox/mesh-catalog@3c6f2dc274a9— merged since 2026-10-27T07:21:16ZSource — source.main moved to novox/mesh-catalog@02597b66d7. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.