The conditions the gate now says would otherwise be wrong three ways: - A pull request closed or merged on the forge with no event heard stayed ready here for days (de-spiegel #4, closed 2026-10-17) and would raise a condition. After a complete read of the open list (shorter than the forge tool's 1000), each delivery not final whose pull request is missing is read from the forge and taken as its close or merge; a merge learnt so does not move source.main, as it is undated and could move it back. - A line that comes due on the clock (a state's bound, the author's bound, an answered refusal, an out-of-date refusal turning urgent after 10 minutes) waited for an unrelated event. The gate now asks a look at the earliest such time. - After a restart the heads waiting on the forge start their bound again, so their conditions were cleared and raised again later. A condition is cleared only once the open list was read since start, and not while the forge still shows its head open and waiting. Also: an empty path list ranks with a truncated one in the merge order, and a seat that keeps refusing conditions is retried on the clock 10 looks in a row, then at events only, said once in the log.
mesh-delivery-gate
The mesh-delivery-gate module of the mesh catalogue: the gate of design 47. It claims the seat mesh-delivery, whose
name stays (ADR 0437 §11), and takes over from the module mesh-delivery (ADR 0437 §3, ADR 0450 §6). Its buckets are
mesh-delivery-gate_*.
Files it does not know
Each directory or archive this module declares says how it treats a file it did not write (ADR 0422, ADR 0416).
${dir:state}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).
What it keeps (ADR 0539 §17)
The gate keeps the merge's states: proposed, ready, rejected, merged, held (a merge that reached the trunk without a passing
check) and closed. It asks the operator's Approve and merges once, moving source.main. It asks the controller nothing, follows
no plan event and derives nothing after the merge: whether a merged change reached the machines is the view's, from
source.main, the wants and the haves. The seat mesh-delivery keeps the verbs deliveries, show, groups, checks,
table, stalled (for a merge or a check past its bound), recheck and close; times, what-if, release, stop and
retire-history went with the plans, so the gate stays a bundle serving the seat. A delivery an earlier owner kept in a state that
is gone is read as the state it came to (merged, closed or proposed) when the gate starts.
When a refused or rejected merge is said (ADR 0505 §4, §5)
stalled is what the gate says to the operator as conditions, itself, on the operator-channel seat (ADR 0437 §9, issue
1275): after every look it raises each line, raises it again when its severity or need changes, and clears each that is
listed no more; its bucket conditions keeps which it raised. (The controller's self-check that raised them went in
release 6.) The gate's own list (show, deliveries)
names every refusal and rejection at once, and the pull request is told at once; only stalled waits:
- a merge refused because its trunk moved, whose check the gate asked again, is stalled only once that check answered and
the merge was refused again, or twice the repository's last check time passed (at least the setting
refusal-stall-floor-minutes, 10). Every other refusal is stalled at once. - a delivery that needs its author's new head (its check failed after its Approve: a conflict, a failed check, a rejected
group) is stalled only once no new head came for the setting
author-new-head-minutes(120). Its line saysneeds: new-headand names its author: the branch, and the session aPushed-by: <who@node>line in the pull request's description names.
The seat's hand-over
The gate took the seat mesh-delivery over from the module mesh-delivery (ADR 0449 §4, ADR 0450 §6, ADR 0454) and carried its
deliveries, groups and pull keys once; the carry, and the reading of the controller's assignments and the node-engine's have keys
that waited for it, went with release 6. catalogue_test.go keeps the catalogue to one claimant of the seat.