The operator (2026-10-28): "quick-fix the polling of gitea". The module heard every webhook and published it on the bus, but its announcer acted only on opened/synchronized/reopened/merged; a retarget (edited) and a close waited for a poll every 5 min (30 s when events were not heard) and a 10-minute sweep. Issue 1422 notes 10-12.
actOn announces a pull request on forge.pull-request.edited (the @base key makes a retarget new) and a close without merge on forge.pull-request.closed (announceClosed, shared with the start pass).
The periodic poll and the sweep are gone; one serialised pass runs at start and once the receiver listens (a failed pass retried after 60 s); a failed event handler asks one catch-up pass 30 s later.
Pace keeps the loud 'events stop' detection; gitea_events says no timer asks the forge.
Quick vs thorough: quick, chosen as asked. Thorough (issue 1956): a heartbeat of the event path itself, so a forge whose webhooks stop is noticed without a poll; and the two timers left here (pollRepos 60 s, the main-rules keeper 10 min).
Tests: npm test 225/225; go vet and go test in modules/gitea. New rows in test/watch.test.ts (an edited event announces without a poll; no timer polls after start; a close is announced by its event; a start pass announces an unannounced head).
Reviewed-by: rev-gitea-events@shanks at 470687ea4c
The operator (2026-10-28): "quick-fix the polling of gitea". The module heard every webhook and published it on the bus, but its announcer acted only on opened/synchronized/reopened/merged; a retarget (edited) and a close waited for a poll every 5 min (30 s when events were not heard) and a 10-minute sweep. Issue 1422 notes 10-12.
- actOn announces a pull request on forge.pull-request.edited (the @base key makes a retarget new) and a close without merge on forge.pull-request.closed (announceClosed, shared with the start pass).
- The periodic poll and the sweep are gone; one serialised pass runs at start and once the receiver listens (a failed pass retried after 60 s); a failed event handler asks one catch-up pass 30 s later.
- Pace keeps the loud 'events stop' detection; gitea_events says no timer asks the forge.
Quick vs thorough: quick, chosen as asked. Thorough (issue 1956): a heartbeat of the event path itself, so a forge whose webhooks stop is noticed without a poll; and the two timers left here (pollRepos 60 s, the main-rules keeper 10 min).
Tests: npm test 225/225; go vet and go test in modules/gitea. New rows in test/watch.test.ts (an edited event announces without a poll; no timer polls after start; a close is announced by its event; a start pass announces an unannounced head).
Reviewed-by: rev-gitea-events@shanks at 470687ea4ccec7647ae921f63031355c9260bdf0
An edited pull request is announced into its new base at once; a close without a merge is announced by its event; the 30 s/5 min polls and the 10 min sweep are gone.
Deliverynovox/mesh-catalog@470687ea4cce — merged since 2026-10-28T11:16:47Z
Source — source.main moved to novox/mesh-catalog@774fcdfa93. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
Transitions
2026-10-28 11:07 (new) → proposed (announced): novox/mesh-catalog#539's head announced
2026-10-28 11:07 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-28 11:16 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@470687ea4cce` — **merged** since 2026-10-28T11:16:47Z
**Source** — source.main moved to novox/mesh-catalog@774fcdfa93ad. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Transitions**
- 2026-10-28 11:07 (new) → proposed (announced): novox/mesh-catalog#539's head announced
- 2026-10-28 11:07 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-28 11:16 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.
The operator (2026-10-28): "quick-fix the polling of gitea". The module heard every webhook and published it on the bus, but its announcer acted only on opened/synchronized/reopened/merged; a retarget (edited) and a close waited for a poll every 5 min (30 s when events were not heard) and a 10-minute sweep. Issue 1422 notes 10-12.
Quick vs thorough: quick, chosen as asked. Thorough (issue 1956): a heartbeat of the event path itself, so a forge whose webhooks stop is noticed without a poll; and the two timers left here (pollRepos 60 s, the main-rules keeper 10 min).
Tests: npm test 225/225; go vet and go test in modules/gitea. New rows in test/watch.test.ts (an edited event announces without a poll; no timer polls after start; a close is announced by its event; a start pass announces an unannounced head).
Reviewed-by: rev-gitea-events@shanks at
470687ea4cDelivery
novox/mesh-catalog@470687ea4cce— merged since 2026-10-28T11:16:47ZSource — source.main moved to novox/mesh-catalog@774fcdfa93. 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.