gitea: a merge poll looks only at repositories that moved, one pass at a time (hq issue 250) #66

Merged
mesh-admin merged 1 commits from fix/the-merge-poll-looks-only-at-what-moved into main 2026-10-05 16:12:14 +00:00
Contributor

Follow-up to #63, found verifying it live: with the poll the only announcer, three merges at 18:05:5x were announced (once each — #63 works) at 18:10:29, 4.5 min late. Every 30 s the poll asked every repository for its pull requests; a pass outlasted the tick (setInterval), passes ran beside each other and slowed each other, and two concurrent passes could each announce the same merge before either recorded it.

  • A pass asks only repositories whose updated_at is at or after a minute before the last look (a merge is a push, which moves it); all of them before the first look, and any whose time is unknown. Compared as moments, not strings.
  • The next pass is scheduled when the previous one ends (setTimeout chain), so passes never overlap.

Test: movedSince (moved / old / unknown / an offset time) added to test/pages.test.ts; both tests pass in node 23; index.ts and client.ts syntax-checked.

Follow-up to #63, found verifying it live: with the poll the only announcer, three merges at 18:05:5x were announced (once each — #63 works) at 18:10:29, 4.5 min late. Every 30 s the poll asked every repository for its pull requests; a pass outlasted the tick (setInterval), passes ran beside each other and slowed each other, and two concurrent passes could each announce the same merge before either recorded it. - A pass asks only repositories whose `updated_at` is at or after a minute before the last look (a merge is a push, which moves it); all of them before the first look, and any whose time is unknown. Compared as moments, not strings. - The next pass is scheduled when the previous one ends (setTimeout chain), so passes never overlap. Test: `movedSince` (moved / old / unknown / an offset time) added to test/pages.test.ts; both tests pass in node 23; index.ts and client.ts syntax-checked.
mesh-admin added 1 commit 2026-10-05 16:12:13 +00:00
With the poll the only announcer of a merge, its cost showed: every 30 s it
asked every repository for its pull requests, a pass outlasted the tick, and
passes piled up beside each other — a merge was announced four and a half
minutes late, and two passes at once could each announce it. A pass now asks
only repositories updated since a minute before the last look, and the next
pass starts when this one ends. hq issue 250.
mesh-admin merged commit 579d21a209 into main 2026-10-05 16:12:14 +00:00
mesh-admin deleted branch fix/the-merge-poll-looks-only-at-what-moved 2026-10-05 16:12:14 +00:00
Author
Contributor

Delivery novox/mesh-catalog@579d21a2095a — held since 2026-10-06T23:05:28Z

Held for a person: merged without a passing check: only a person decides that it goes on — mesh-delivery.release with why lets it go on.

Delivery plan — builds gitea → novox; no bus step

  • tier 0: gitea
  • novox: receives gitea
  • gitea provides npm-package-registry, git: its consumers are sent again after it
  • gitea keeps data (ADR 0233): what it holds is backed up before it moves

Transitions

  • 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#66 merged; its head was not heard by this owner, so it is made from the forge's word
  • 2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on

The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-catalog@579d21a2095a` — **held** since 2026-10-06T23:05:28Z Held for a person: merged without a passing check: only a person decides that it goes on — `mesh-delivery.release` with why lets it go on. **Delivery plan** — builds gitea → novox; no bus step - tier 0: gitea - novox: receives gitea - gitea provides npm-package-registry, git: its consumers are sent again after it - gitea keeps data (ADR 0233): what it holds is backed up before it moves **Transitions** - 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#66 merged; its head was not heard by this owner, so it is made from the forge's word - 2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-catalog#66