gitea: the checker's owed results are taken at once and written in the background, so the runner keeps the watch and every mesh/check reaches the forge (issue 1726)
#468
Merged
jschoubbenmerged 1 commits from fix/1726-owed-watch-not-blocked into main2026-10-23 22:35:33 +00:00
Fixes issue 1726 (met a fifth time 2026-10-23 23:47): since novox's tool runner restarted at 23:26, no checker verdict reached the forge, so no Approve ask was raised. The gitea module's CheckStatuses.take awaited a forge write per owed key; with ~200 keys this outlasted the runner's 10 s for a watch's current values, the runner dropped the watch, and every later put was refused ('mesh/state names no watch of this bundle', 1755 lines 23:26-23:49).
check.ts: take() returns at once; writes run in the background, at most 4 at a time (WRITES_AT_ONCE), each key's writes in revision order, a refused write still retried.
Tests: modules/gitea/test/check-owed.test.ts — 200 owed values against a forge that does not answer (fails on main, passes here), and at most 4 writes at once. check-owed, bind and checks tests 18/18 locally. 12 other tests of the module could not run locally (the desktop's node_modules lacks the full @novox/mesh-sdk). try-1792792379103577588 still running after 31 min (no verdict), like other tries tonight while issue 1930's fix is undelivered.
Moves gitea (novox). On delivery the watch binds and writes mesh/check for every owed key, which should recover mesh-delivery #29, #30 and mesh-catalog #466 without new heads.
Reviewed-by: review-1726@shanks at 5a7076a6a2
Pushed-by: diag-1726@shanks
Fixes issue 1726 (met a fifth time 2026-10-23 23:47): since novox's tool runner restarted at 23:26, no checker verdict reached the forge, so no Approve ask was raised. The gitea module's `CheckStatuses.take` awaited a forge write per owed key; with ~200 keys this outlasted the runner's 10 s for a watch's current values, the runner dropped the watch, and every later put was refused ('mesh/state names no watch of this bundle', 1755 lines 23:26-23:49).
- check.ts: `take()` returns at once; writes run in the background, at most 4 at a time (WRITES_AT_ONCE), each key's writes in revision order, a refused write still retried.
Tests: modules/gitea/test/check-owed.test.ts — 200 owed values against a forge that does not answer (fails on main, passes here), and at most 4 writes at once. check-owed, bind and checks tests 18/18 locally. 12 other tests of the module could not run locally (the desktop's node_modules lacks the full @novox/mesh-sdk). try-1792792379103577588 still running after 31 min (no verdict), like other tries tonight while issue 1930's fix is undelivered.
Moves gitea (novox). On delivery the watch binds and writes mesh/check for every owed key, which should recover mesh-delivery #29, #30 and mesh-catalog #466 without new heads.
Reviewed-by: review-1726@shanks at 5a7076a6a25ec2f19c570fb8dc043b3c4ec8f50b
Pushed-by: diag-1726@shanks
The runtime gives a watch's current values 10 s and waits for each to be taken; a forge write per key made ~200 keys outlast it at every attempt, so after node-tools restarted on novox at 23:25:58 the watch never held and no verdict reached mesh/check. Writes now run in the background, a few at a time, each key's in revision order.
Deliverynovox/mesh-catalog@5a7076a6a25e — delivered since 2026-10-23T22:48:37Z
Delivery plan — builds gitea → novox; no bus step
tier 0: gitea
novox: receives gitea
gitea provides npm-package-registry, git, gitea-read, forge-account: its consumers are sent again after it
gitea keeps data (ADR 0233): what it holds is backed up before it moves
Machines
gitea on every machine running it: sent
Transitions
2026-10-23 22:22 (new) → proposed (announced): novox/mesh-catalog#468's head announced
2026-10-23 22:35 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
2026-10-23 22:35 held → delivering (release): the operator's hand merge at 00:35, which by the operator's word of 2026-10-24 00:24 releases it (build, publish, deliver until the new setup works); reviewed at its head
2026-10-23 22:48 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@5a7076a6a25e` — **delivered** since 2026-10-23T22:48:37Z
**Delivery plan** — builds gitea → novox; no bus step
- tier 0: gitea
- novox: receives gitea
- gitea provides npm-package-registry, git, gitea-read, forge-account: its consumers are sent again after it
- gitea keeps data (ADR 0233): what it holds is backed up before it moves
**Machines**
- gitea on every machine running it: sent
**Transitions**
- 2026-10-23 22:22 (new) → proposed (announced): novox/mesh-catalog#468's head announced
- 2026-10-23 22:35 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
- 2026-10-23 22:35 held → delivering (release): the operator's hand merge at 00:35, which by the operator's word of 2026-10-24 00:24 releases it (build, publish, deliver until the new setup works); reviewed at its head
- 2026-10-23 22:48 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says
The commit's note under `refs/notes/mesh-plan` keeps every transition: `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.
Fixes issue 1726 (met a fifth time 2026-10-23 23:47): since novox's tool runner restarted at 23:26, no checker verdict reached the forge, so no Approve ask was raised. The gitea module's
CheckStatuses.takeawaited a forge write per owed key; with ~200 keys this outlasted the runner's 10 s for a watch's current values, the runner dropped the watch, and every later put was refused ('mesh/state names no watch of this bundle', 1755 lines 23:26-23:49).take()returns at once; writes run in the background, at most 4 at a time (WRITES_AT_ONCE), each key's writes in revision order, a refused write still retried.Tests: modules/gitea/test/check-owed.test.ts — 200 owed values against a forge that does not answer (fails on main, passes here), and at most 4 writes at once. check-owed, bind and checks tests 18/18 locally. 12 other tests of the module could not run locally (the desktop's node_modules lacks the full @novox/mesh-sdk). try-1792792379103577588 still running after 31 min (no verdict), like other tries tonight while issue 1930's fix is undelivered.
Moves gitea (novox). On delivery the watch binds and writes mesh/check for every owed key, which should recover mesh-delivery #29, #30 and mesh-catalog #466 without new heads.
Reviewed-by: review-1726@shanks at
5a7076a6a2Pushed-by: diag-1726@shanks
Delivery
novox/mesh-catalog@5a7076a6a25e— delivered since 2026-10-23T22:48:37ZDelivery plan — builds gitea → novox; no bus step
Machines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.