Pin gitea, keycloak, mesh-provisioner-client, postgres and route-adapter to a mesh-sdk commit on main, so a fresh go mod download resolves them once the feature branch goes (issue 1663)
#414
Merged
mesh-toolsmerged 1 commits from fix/1663-sdk-pins-on-main into main2026-10-21 12:30:06 +00:00
Issue 1663: five modules pinned mesh-sdk/go at f185aed, a commit only origin/feat/chain-on-the-bus carries; a fresh go mod download fails once that branch goes (as 1659 did). mesh-sdk #57 (delivered 14:18) carried f185aed's provider.Standing to main.
Re-pin the five to v0.1.14-0.20261021114014-66e8fdaa62e2 (mesh-sdk #57's merge on main), go mod tidy. go directive and dependency moves are forced by the SDK's go.mod; provider, provider/harness and seal are byte-identical between f185aed and 66e8fdaa.
Try: build-1792584456169470934 passed (2m11s) at 0a7c58766c.
For issue 1663 (the re-pin; the check that every pin is on main stays open, issue 1148). route-proxy's pin is issue 1669.
Issue 1663: five modules pinned mesh-sdk/go at f185aed, a commit only origin/feat/chain-on-the-bus carries; a fresh go mod download fails once that branch goes (as 1659 did). mesh-sdk #57 (delivered 14:18) carried f185aed's provider.Standing to main.
- Re-pin the five to v0.1.14-0.20261021114014-66e8fdaa62e2 (mesh-sdk #57's merge on main), go mod tidy. go directive and dependency moves are forced by the SDK's go.mod; provider, provider/harness and seal are byte-identical between f185aed and 66e8fdaa.
Try: build-1792584456169470934 passed (2m11s) at 0a7c58766c203ea435ebeaccb745d70a93dce97a.
For issue 1663 (the re-pin; the check that every pin is on main stays open, issue 1148). route-proxy's pin is issue 1669.
Reviewed-by: reviewer-r4d@shanks at 0a7c58766c203ea435ebeaccb745d70a93dce97a
mesh/repo-check head 0a7c58766c20 merged into trunk 4efac366cebb — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
Deliverynovox/mesh-catalog@0a7c58766c20 — covered since 2026-10-21T14:06:43Z
Delivery plan — builds gitea, keycloak, mesh-provisioner-client, postgres, route-adapter → ace, g14, novox, shanks; no bus step; 3 wait(s) for a person
ace: receives mesh-provisioner-client; waits for a person: postgres
g14: receives mesh-provisioner-client
novox: receives gitea, mesh-provisioner-client; waits for a person: keycloak, postgres
shanks: receives mesh-provisioner-client
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
keycloak waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
keycloak provides oidc-client: its consumers are sent again after it
keycloak keeps data (ADR 0233): what it holds is backed up before it moves
postgres waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
postgres provides postgres-database: its consumers are sent again after it
postgres keeps data (ADR 0233): what it holds is backed up before it moves
grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before mesh-provisioner-client is judged on its first machine
Machines
mesh-sdk on every machine running it: sent
mesh-provisioner-client on every machine running it: sent
postgres on every machine running it: sent
mesh-tools on every machine running it: sent
audit-logger on every machine running it: sent
baserow on every machine running it: sent
bazarr on every machine running it: sent
bookshelf on every machine running it: sent
confluence on every machine running it: sent
gitea on every machine running it: sent
gitlab on every machine running it: sent
grafana on every machine running it: sent
home-assistant on every machine running it: sent
icecast on every machine running it: sent
influxdb on every machine running it: sent
jackett on every machine running it: sent
jira on every machine running it: sent
kometa on every machine running it: sent
lab on every machine running it: sent
letta on every machine running it: sent
lidarr on every machine running it: sent
mesh-catalog on every machine running it: sent
model-usage on every machine running it: sent
mosquitto on every machine running it: sent
netcheck on every machine running it: sent
nextcloud on every machine running it: sent
nodered on every machine running it: sent
ombi on every machine running it: sent
openai-consumer on every machine running it: sent
radarr on every machine running it: sent
redis on every machine running it: sent
route-adapter on every machine running it: sent
searxng on every machine running it: sent
showcase on every machine running it: sent
sonarr on every machine running it: sent
tautulli on every machine running it: sent
umami on every machine running it: sent
unifi on every machine running it: sent
zsh on every machine running it: sent
Transitions
2026-10-21 12:23 (new) → proposed (announced): novox/mesh-catalog#414's head announced
2026-10-21 12:28 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-21 12:28 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-21 13:06 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-21 13:06 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
2026-10-21 14:06 delivering → covered (covered): covered: a later merge that contains it was delivered: novox/mesh-catalog@454c5662dd (merged as 90ecba4e into main, walk plan-1792585970446304628)
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@0a7c58766c20` — **covered** since 2026-10-21T14:06:43Z
**Delivery plan** — builds gitea, keycloak, mesh-provisioner-client, postgres, route-adapter → ace, g14, novox, shanks; no bus step; 3 wait(s) for a person
- tier 0: gitea, keycloak, mesh-provisioner-client, postgres, route-adapter
- ace: receives mesh-provisioner-client; waits for a person: postgres
- g14: receives mesh-provisioner-client
- novox: receives gitea, mesh-provisioner-client; waits for a person: keycloak, postgres
- shanks: receives mesh-provisioner-client
- 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
- keycloak waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
- keycloak provides oidc-client: its consumers are sent again after it
- keycloak keeps data (ADR 0233): what it holds is backed up before it moves
- postgres waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
- postgres provides postgres-database: its consumers are sent again after it
- postgres keeps data (ADR 0233): what it holds is backed up before it moves
- grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before mesh-provisioner-client is judged on its first machine
**Machines**
- mesh-sdk on every machine running it: sent
- mesh-provisioner-client on every machine running it: sent
- postgres on every machine running it: sent
- mesh-tools on every machine running it: sent
- audit-logger on every machine running it: sent
- baserow on every machine running it: sent
- bazarr on every machine running it: sent
- bookshelf on every machine running it: sent
- confluence on every machine running it: sent
- gitea on every machine running it: sent
- gitlab on every machine running it: sent
- grafana on every machine running it: sent
- home-assistant on every machine running it: sent
- icecast on every machine running it: sent
- influxdb on every machine running it: sent
- jackett on every machine running it: sent
- jira on every machine running it: sent
- kometa on every machine running it: sent
- lab on every machine running it: sent
- letta on every machine running it: sent
- lidarr on every machine running it: sent
- mesh-catalog on every machine running it: sent
- model-usage on every machine running it: sent
- mosquitto on every machine running it: sent
- netcheck on every machine running it: sent
- nextcloud on every machine running it: sent
- nodered on every machine running it: sent
- ombi on every machine running it: sent
- openai-consumer on every machine running it: sent
- radarr on every machine running it: sent
- redis on every machine running it: sent
- route-adapter on every machine running it: sent
- searxng on every machine running it: sent
- showcase on every machine running it: sent
- sonarr on every machine running it: sent
- tautulli on every machine running it: sent
- umami on every machine running it: sent
- unifi on every machine running it: sent
- zsh on every machine running it: sent
**Transitions**
- 2026-10-21 12:23 (new) → proposed (announced): novox/mesh-catalog#414's head announced
- 2026-10-21 12:28 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-21 12:28 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-21 13:06 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-21 13:06 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
- 2026-10-21 14:06 delivering → covered (covered): covered: a later merge that contains it was delivered: novox/mesh-catalog@454c5662ddcb (merged as 90ecba4e into main, walk plan-1792585970446304628)
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Merge check at 0a7c5876
Judged: head 0a7c58766c20 merged into trunk 4efac366cebb; read beside it: mesh-controller 5be1cfaed19b, mesh-controller-main f10fbda1f619, mesh-host c5c4caa2a4ab, mesh-tools e0fadc43d9dd
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: gitea, keycloak, mesh-provisioner-client, postgres, route-adapter)
mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
Delivery plan — builds gitea, keycloak, mesh-provisioner-client, postgres, route-adapter → ace, g14, novox, shanks; no bus step; 3 wait(s) for a person
ace: receives mesh-provisioner-client; waits for a person: postgres
g14: receives mesh-provisioner-client
novox: receives gitea, mesh-provisioner-client; waits for a person: keycloak, postgres
shanks: receives mesh-provisioner-client
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
keycloak waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
keycloak provides oidc-client: its consumers are sent again after it
keycloak keeps data (ADR 0233): what it holds is backed up before it moves
postgres waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
postgres provides postgres-database: its consumers are sent again after it
postgres keeps data (ADR 0233): what it holds is backed up before it moves
grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before mesh-provisioner-client is judged on its first machine
Run by the build seat on shanks as build-1792585392909098456 (builds --log build-1792585392909098456).
✔ gitea_merge_pull_request refuses a verdict judged against an earlier trunk, and asks the check once (143.361487ms)
✔ gitea_merge_pull_request merges only the head it is named, and refuses one that is not the head (16.025885ms)
✔ gitea_merge_pull_request is loud when the forge merged a head other than the one it was handed (12.967522ms)
✔ gitea_merge_pull_request says the merge happened when reading back what landed fails (29.012347ms)
✔ gitea_merge_pull_request reads back a fast-forward, and says it cannot read back a squash or a rebase (57.136044ms)
✔ gitea_delete_repo deletes only the tools' own user's repository, unguarded, untouched for 30 days, named in full (21.553535ms)
✔ gitea_api sends the path it judged, and refuses moving a pull request's base (4.61598ms)
✔ gitea_merge_pull_request merges only into a branch whose protection requires the checks (6.290288ms)
✔ a rule named for a branch is not made weaker than the glob rule that guards it now (13.849901ms)
✔ a repository owner or name is never another path (0.253373ms)
✔ the judges, without a forge (0.355224ms)
✔ main's protection is never weakened in its push or its merge whitelist (issue 948, ADR 0398 §2) (0.236152ms)
✔ gitea_api never acts as another user: sudo, in any case, and any query key it does not send are refused (2.72129ms)
✔ gitea_api never approves a pull request nor requests changes: those are the operator's (1.605337ms)
✔ no tool's caller text becomes another path or another user: `..` and `?sudo=` are refused before the forge (4.301906ms)
✔ gitea_merge_pull_request merges a verdict that read siblings only with its group passed and each head approved (81.842744ms)
✔ gitea_merge_pull_request refuses a head the Approve did not name (19.811376ms)
✔ a group of two merges in one pass: the sibling's merge of the composed head does not stop the member's merge (issue 1049) (17.264139ms)
✔ gitea_create_repo has no owner argument and posts only to the tools' own user's repositories (1124/AC8) (38.947366ms)
✔ the tools' team cannot create in the organisation and its token holds no write:organization (1124/AC8) (0.422754ms)
✔ no ready mark, trusted ready-authors setting or approval-by-mark rule is left in the module (20.335342ms)
✔ every page of a pull request's files is read, though the forge caps a page at fifty (32.91246ms)
✔ a pass asks only the repositories that moved since the last look, every one before the first (0.493915ms)
✔ the directories above a merge's files that hold a module at the commit are said, the root never (13.421866ms)
✔ a lookup the forge refuses is thrown, not read as no module (4.856423ms)
✔ a renamed file is said under its old name too, as gone (novox/hq ADR 0267) (6.790004ms)
✔ a new head beyond the newest 20 open pull requests is announced, exactly once (64.411724ms)
✔ a pass pages until it reaches back past its floor, and no further (28.622482ms)
✔ gitea_branch_protection_get answers every rule, read with the administrator account the tools' token cannot read with (29.31418ms)
✔ gitea_branch_protection_get answers the rule for a branch, null when it has none (12.762219ms)
✔ gitea_branch_protection_set still gets the forge's refusal, as the tools' account (4.58071ms)
✔ the statuses asked for replace the rule's, and an empty list requires none (4.893583ms)
✔ a new rule refuses direct pushes unless asked; an administrator's override only when said (0.369394ms)
✔ main's body always refuses pushes and lets only the tools' account merge, whatever is asked (0.734928ms)
✔ another branch's body carries no merge whitelist (0.248553ms)
✔ the rule main is put right in the forge's own words: the body a setup sends carries no status checks of its own (0.324703ms)
✔ each open pull request's new head is announced once, and nothing closed or merged (17.161877ms)
✔ a verdict is the head commit's status; an error is the forge's error, never a success (1.218813ms)
✔ each layer is its own status: the gate with the modules it judged, the repository's own check beside it (0.89293ms)
✔ no verdict sets warning on a required check; only a person's decision fails (1.224983ms)
✔ a commit status is set on the commit, under the merge check's context (37.47558ms)
✔ a change plan is the gate's result: said on the status and, when it builds something, as a comment (0.435474ms)
✔ a head announced is pending in the build queue, since the local time it was announced (0.280203ms)
✔ a composed verdict sets every member's gate at its own head, naming its trunk and the group (0.430055ms)
✔ a member's own verdict with a composed gate layer leaves the gate to the composed verdict, in either order (0.545476ms)
✔ the vault's token is used, a setting of it is ignored and said once, without its value (3.181315ms)
[gitea] novox/mesh-controller#346: its verdict was judged beside mesh-host#114 at bbbbbbbbbbbb, it is now at dddddddddddd: out of date, nothing run (novox/hq ADR 0382)
[gitea] novox/mesh-controller#346: its verdict was judged beside mesh-host#114 was closed unmerged: out of date, nothing run (novox/hq ADR 0382)
[gitea] novox/mesh-controller#346: its verdict was judged beside mesh-host#114 merged onto cccccccccccc, its main is now eeeeeeeeeeee: out of date, nothing run (novox/hq ADR 0382)
[gitea] novox/mesh-controller#346: its verdict was judged beside mesh-host#114 was merged otherwise than its head bbbbbbbbbbbb onto cccccccccccc: out of date, nothing run (novox/hq ADR 0382)
[gitea] novox/mesh-controller#346: its verdict was judged beside mesh-host#114 was merged otherwise than its head bbbbbbbbbbbb onto cccccccccccc: out of date, nothing run (novox/hq ADR 0382)
[gitea] novox/mesh-host's main moved from 444444444444 to 333333333333: 0 open pull request(s) into it put out of date, nothing run (novox/hq ADR 0323)
[gitea] novox/mesh-controller#346: its verdict was judged beside mesh-host#114 was merged otherwise than its head bbbbbbbbbbbb onto cccccccccccc: out of date, nothing run (novox/hq ADR 0382)
[gitea] novox/mesh-controller#346: its verdict was judged beside mesh-host#114 was merged otherwise than its head dddddddddddd onto cccccccccccc: out of date, nothing run (novox/hq ADR 0382)
✔ both statuses name the siblings the verdict read, keeping the verdict word and the start of its reason within 140 characters (2.625148ms)
✔ a verdict that could not learn its siblings says so on the status and in the comment, and names none (1.87776ms)
✔ a verdict without siblings is said exactly as before (an older controller) (0.885199ms)
✔ the siblings a verdict names are kept per member, replaced by its next verdict, and removed by one that read none (1.272874ms)
✔ a sibling's new head puts both statuses of the member back to pending, with the reason, and runs nothing (5.291047ms)
✔ a sibling closed unmerged puts the member's verdict out of date (0.405404ms)
✔ a move of the sibling's base puts it out of date, naming both commits (0.414294ms)
✔ the sibling's own merge of the head read onto the base read does not, in either order of the two merges (2.134144ms)
✔ a merge of another head, or onto another base, is a move (1.048051ms)
✔ only the members whose verdict names the sibling are touched, and a member that moved on is dropped (0.823709ms)
✔ a trunk that moved tells the siblings' weighing; one first seen does not (0.658777ms)
✔ the group rule names every missing thing: the group status at each head read, and each head the Approve does not cover (1.586187ms)
✔ a merged or closed member's entry is dropped, so a sibling's later push never re-pends its merged head (0.277693ms)
✔ without the composed verdict's siblings, a sibling's own merge of its new head is a move (the pin of issue 1049) (0.329234ms)
✔ a composed verdict names the siblings of each member at the heads and base commits it composed, so a sibling's own merge of its new head is no move (issue 1049) (0.868179ms)
✔ a composed verdict keeps nothing for a member it cannot name, and a group of one is none (issue 1049) (0.265643ms)
✔ a consumer that asks nothing, or write, publishes: the package team (1.263424ms)
✔ a consumer that asks to read joins the readers, who write no package (0.377524ms)
✔ a reader is made, put on the readers team, and taken off the package team (0.417544ms)
✔ a publisher is made and put on the package team, as before (0.221632ms)
✔ first start: mints with the admin account, keeps the token at 0600, asks for the tools' scopes only (40.953468ms)
✔ second start: reuses the kept token, mints nothing (25.60369ms)
✔ the forge rejects the kept token (its data was restored): minted afresh, once, and the call goes through (35.74223ms)
✔ a token kept with write:admin by an earlier build is minted again without it at the next start, and the forge drops the old one (27.079576ms)
✔ a kept token lacking a scope the tools need: the forge refuses the call for the scope, the token is re-minted with the whole list, and the call goes through (28.064566ms)
✔ the kept file is gone but the forge still holds a token by that name: replaced, not refused (20.895428ms)
✔ concurrent first calls share one mint (12.953361ms)
✔ two tokens hold the name (two mints raced): both are deleted by their id, and one fresh token is minted (14.802982ms)
✔ two processes on one kept file, both without a token, mint once: the second waits for the first and reuses it (88.235884ms)
✔ a lock left by a process that died mid-mint is taken over, not waited on for ever (7.619014ms)
✔ the admin account is refused: said plainly, nothing kept, and the next call fails the same way rather than crashing (14.312456ms)
✔ one process shares one source per kept file — the watcher and the tools never renew against each other (0.810969ms)
✔ a second process finds the token the first renewed, and reuses it instead of minting over it (19.742196ms)
✔ a configured token wins, and is reported rather than minted over when the forge rejects it (1.366185ms)
✔ nothing to mint with and no token: the client says what is missing (0.176162ms)
[gitea] no tools — no Gitea token, and nothing to mint one with — set MESH_GITEA_TOKEN, or MESH_GITEA_ADMIN_USER, MESH_GITEA_ADMIN_PASSWORD_FILE, MESH_GITEA_STATE_DIR
[gitea] no token kept — minting one
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-0bxw7R/state/token
✔ the tools register once there is a way to a token, and the first call mints it (28.443761ms)
[gitea] no token kept — minting one
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-0cbfdQ/state/token
✔ a pull request can be closed, read and cleaned up through the tools (37.466629ms)
[gitea] no token kept — minting one
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-tools-account-Yz5yPV/state/token
✔ the tools' token is minted for an account of their own, which is no administrator and writes through its team (78.861222ms)
[gitea] no token kept — minting one
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-tools-account-bCwKqm/state/token
✔ with the tools' token, the forge writes a status and refuses a protection edit — the forge itself, not a guard (64.170981ms)
[gitea] no token kept — minting one
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-tools-account-3szz6n/state/token
✔ what a base's protection asks is read from the branch, which the tools' account may read, not from the rules' list it may not (51.28051ms)
[gitea] the kept token was minted with other scopes than the tools take now — minting one with them
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-tools-account-G2yrOc/state/token
[gitea] deleted 1 token(s) named "mesh-tools" the admin account "mesh-admin" held: the tools act as "mesh-tools" now
✔ the administrator's token from before goes: a kept admin token is minted again for the tools' account, and the forge drops the old one (50.808305ms)
[gitea] no token kept — minting one
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-tools-account-mv9r6E/state/token
✔ a tools' account someone made an administrator is made a plain account again at the next mint (41.16176ms)
✔ the tools never act as the administrator: MESH_GITEA_TOOLS_USER naming it is refused (0.858429ms)
✔ the manifest hands the tools their account, and the Go forge bundle holds no administrator password (0.843519ms)
[gitea] no token kept — minting one
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-tools-account-4ZZh0L/state/token
✔ a repository check said as a warning on a head without merge-check.sh reads the base's protection from the branch (43.780229ms)
[gitea] no token kept — minting one
✔ a mint that fails leaves the administrator's old token in place: the tools are never left without one (29.29372ms)
[gitea] no token kept — minting one
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-tools-account-xCTG9z/state/token
[gitea] FAILED to delete the token(s) named "mesh-tools" the admin account "mesh-admin" holds — tried again at the next start: Gitea DELETE /users/mesh-admin/tokens/902 (named mesh-tools): 500 {"message":"the forge is not well"}
✔ an old token that cannot be deleted after the mint is said, the new token kept, and deleted at the next start (55.252154ms)
[gitea] no token kept — minting one
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-tools-account-hnNIPS/state/token
✔ a team another process made between the look and the create is found, not a failure (43.351154ms)
[gitea] no token kept — minting one
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-tools-account-cRL5LO/state/token
✔ setting the tools' account up puts main's rule right in every repository: no push, only the tools' account merges (issue 948) (41.240821ms)
[gitea] no token kept — minting one
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-tools-account-ZFlEkN/state/token
✔ a glob rule covering main keeps its statuses when main is given a rule of its own name (issue 948, review round 1) (38.44449ms)
✔ a start with the token kept still puts main's rules right: the module's start asks for it each time (issue 948, review round 1) (13.875411ms)
[gitea] novox/mesh-host's main moved from a2c2c35bbbbb to d28ca95ccccc: 25 open pull request(s) into it put out of date, nothing run (novox/hq ADR 0323)
[gitea] novox/mesh-host's main moved from d28ca95ccccc to ffffffffffff: 0 open pull request(s) into it put out of date, nothing run (novox/hq ADR 0323)
[gitea] novox/mesh-host: whether a trunk moved could not be weighed, so it is weighed again on the next pass — the forge is away
[gitea] novox/mesh-host's main moved from a2c2c35bbbbb to d28ca95ccccc: 0 open pull request(s) into it put out of date, nothing run (novox/hq ADR 0323)
[gitea] novox/mesh-controller's feat/57-config-and-provisioning moved from eeeeeeeeeeee to d28ca95ccccc: 1 open pull request(s) into it put out of date, nothing run (novox/hq ADR 0323)
✔ both statuses say the head and the trunk commit the verdict judged, first, whatever the summary's length (2.100063ms)
✔ a trunk's move puts an open head's merge check out of date, naming both commits, unless a check is on its way (1.359115ms)
✔ a push to a trunk puts every open pull request into it out of date — twenty-five of them — and none into another (5.978585ms)
✔ a trunk that cannot be read is weighed again on the next pass, never recorded half (0.533966ms)
✔ the trunk's move takes its turn after a verdict in flight, and weighs what the forge holds then (0.568846ms)
✔ a verdict judged against a trunk newer than the pass's first read is not put out of date (0.359174ms)
✔ a verdict that landed out of date keeps its account on the pull request (0.339444ms)
✔ a release branch's move puts every open pull request into it out of date, as a trunk's does (ADR 0358 §5) (1.577058ms)
✔ a signed event is published on the bus and acted on once (82.888356ms)
✔ an unsigned event, or one whose signature does not verify, is refused and published nowhere (39.402501ms)
✔ an event and the poll seeing the same head announce it once (0.593726ms)
✔ each forge event is named in the module's stream and trimmed (0.859219ms)
✔ the webhook is made a system webhook, which the forge sends every repository's events to (1.926651ms)
✔ default webhooks left at the receiver by an earlier start are replaced by one system webhook (1.580297ms)
✔ a repository's copy of a default webhook at the receiver is deleted, on every page, and said (6.645983ms)
✔ a forge that makes no system webhook is said, never taken as heard (1.359505ms)
✔ the receiver tells what it verified and what it refused (11.683427ms)
✔ a forge that never delivers is said loudly once, and unhealthy, when the poll finds what no event said (1.059311ms)
✔ a forge whose events stop after one delivery is said loudly once per silent spell, and refusals are unhealthy (0.447135ms)
✔ without a receiver by configuration the polls alone watch, healthy; a receiver that failed is unhealthy (0.332244ms)
✔ the polls look every 30 s until events are heard, every five minutes while they are, and 30 s again on a miss (0.199502ms)
✔ a pull request's edit event carries its description, and no other pull request event does (issue 1079) (0.241653ms)
ℹ tests 163
ℹ suites 0
ℹ pass 163
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 874.878902
type-checking modules/route-adapter (TypeScript)
testing modules/route-adapter (TypeScript)
✔ it writes one route file per contribution, in the predecessor's own shape (8.511992ms)
✔ it removes the file it wrote when that contribution goes (3.150414ms)
✔ it never touches a file it did not write (4.675631ms)
✔ the target port follows what the contributor publishes (2.139074ms)
✔ a contributor on another node is reached at the address the mesh gave it (1.536027ms)
✔ a node's settings are laid over the module's defaults, and nothing else changes (2.000312ms)
✔ a contribution it cannot act on is skipped and named (0.360554ms)
✔ a contribution the file shape cannot say is skipped and says which part (0.403994ms)
✔ it refuses when the predecessor's directory is not there, and says why (1.708588ms)
✔ a body limit is written as the predecessor's buffering middleware (2.017422ms)
✔ a body limit that is not a whole number of bytes is skipped and named (0.349683ms)
ℹ tests 11
ℹ suites 0
ℹ pass 11
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 130.527727
**Merge check** at `0a7c5876`
Judged: head `0a7c58766c20` merged into trunk `4efac366cebb`; read beside it: mesh-controller `5be1cfaed19b`, mesh-controller-main `f10fbda1f619`, mesh-host `c5c4caa2a4ab`, mesh-tools `e0fadc43d9dd`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: gitea, keycloak, mesh-provisioner-client, postgres, route-adapter)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
**Delivery plan** — builds gitea, keycloak, mesh-provisioner-client, postgres, route-adapter → ace, g14, novox, shanks; no bus step; 3 wait(s) for a person
- tier 0: gitea, keycloak, mesh-provisioner-client, postgres, route-adapter
- ace: receives mesh-provisioner-client; waits for a person: postgres
- g14: receives mesh-provisioner-client
- novox: receives gitea, mesh-provisioner-client; waits for a person: keycloak, postgres
- shanks: receives mesh-provisioner-client
- 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
- keycloak waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
- keycloak provides oidc-client: its consumers are sent again after it
- keycloak keeps data (ADR 0233): what it holds is backed up before it moves
- postgres waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
- postgres provides postgres-database: its consumers are sent again after it
- postgres keeps data (ADR 0233): what it holds is backed up before it moves
- grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before mesh-provisioner-client is judged on its first machine
Run by the build seat on shanks as `build-1792585392909098456` (`builds --log build-1792585392909098456`).
```
✔ gitea_merge_pull_request refuses a verdict judged against an earlier trunk, and asks the check once (143.361487ms)
✔ gitea_merge_pull_request merges only the head it is named, and refuses one that is not the head (16.025885ms)
✔ gitea_merge_pull_request is loud when the forge merged a head other than the one it was handed (12.967522ms)
✔ gitea_merge_pull_request says the merge happened when reading back what landed fails (29.012347ms)
✔ gitea_merge_pull_request reads back a fast-forward, and says it cannot read back a squash or a rebase (57.136044ms)
✔ gitea_delete_repo deletes only the tools' own user's repository, unguarded, untouched for 30 days, named in full (21.553535ms)
✔ gitea_api sends the path it judged, and refuses moving a pull request's base (4.61598ms)
✔ gitea_merge_pull_request merges only into a branch whose protection requires the checks (6.290288ms)
✔ a rule named for a branch is not made weaker than the glob rule that guards it now (13.849901ms)
✔ a repository owner or name is never another path (0.253373ms)
✔ the judges, without a forge (0.355224ms)
✔ main's protection is never weakened in its push or its merge whitelist (issue 948, ADR 0398 §2) (0.236152ms)
✔ gitea_api never acts as another user: sudo, in any case, and any query key it does not send are refused (2.72129ms)
✔ gitea_api never approves a pull request nor requests changes: those are the operator's (1.605337ms)
✔ no tool's caller text becomes another path or another user: `..` and `?sudo=` are refused before the forge (4.301906ms)
✔ gitea_merge_pull_request merges a verdict that read siblings only with its group passed and each head approved (81.842744ms)
✔ gitea_merge_pull_request refuses a head the Approve did not name (19.811376ms)
✔ a group of two merges in one pass: the sibling's merge of the composed head does not stop the member's merge (issue 1049) (17.264139ms)
✔ gitea_create_repo has no owner argument and posts only to the tools' own user's repositories (1124/AC8) (38.947366ms)
✔ the tools' team cannot create in the organisation and its token holds no write:organization (1124/AC8) (0.422754ms)
✔ no ready mark, trusted ready-authors setting or approval-by-mark rule is left in the module (20.335342ms)
✔ every page of a pull request's files is read, though the forge caps a page at fifty (32.91246ms)
✔ a pass asks only the repositories that moved since the last look, every one before the first (0.493915ms)
✔ the directories above a merge's files that hold a module at the commit are said, the root never (13.421866ms)
✔ a lookup the forge refuses is thrown, not read as no module (4.856423ms)
✔ a renamed file is said under its old name too, as gone (novox/hq ADR 0267) (6.790004ms)
✔ a new head beyond the newest 20 open pull requests is announced, exactly once (64.411724ms)
✔ a pass pages until it reaches back past its floor, and no further (28.622482ms)
✔ gitea_branch_protection_get answers every rule, read with the administrator account the tools' token cannot read with (29.31418ms)
✔ gitea_branch_protection_get answers the rule for a branch, null when it has none (12.762219ms)
✔ gitea_branch_protection_set still gets the forge's refusal, as the tools' account (4.58071ms)
✔ the statuses asked for replace the rule's, and an empty list requires none (4.893583ms)
✔ a new rule refuses direct pushes unless asked; an administrator's override only when said (0.369394ms)
✔ main's body always refuses pushes and lets only the tools' account merge, whatever is asked (0.734928ms)
✔ another branch's body carries no merge whitelist (0.248553ms)
✔ the rule main is put right in the forge's own words: the body a setup sends carries no status checks of its own (0.324703ms)
✔ each open pull request's new head is announced once, and nothing closed or merged (17.161877ms)
✔ a verdict is the head commit's status; an error is the forge's error, never a success (1.218813ms)
✔ each layer is its own status: the gate with the modules it judged, the repository's own check beside it (0.89293ms)
✔ no verdict sets warning on a required check; only a person's decision fails (1.224983ms)
✔ a commit status is set on the commit, under the merge check's context (37.47558ms)
✔ a change plan is the gate's result: said on the status and, when it builds something, as a comment (0.435474ms)
✔ a head announced is pending in the build queue, since the local time it was announced (0.280203ms)
✔ a composed verdict sets every member's gate at its own head, naming its trunk and the group (0.430055ms)
✔ a member's own verdict with a composed gate layer leaves the gate to the composed verdict, in either order (0.545476ms)
✔ the vault's token is used, a setting of it is ignored and said once, without its value (3.181315ms)
[gitea] novox/mesh-controller#346: its verdict was judged beside mesh-host#114 at bbbbbbbbbbbb, it is now at dddddddddddd: out of date, nothing run (novox/hq ADR 0382)
[gitea] novox/mesh-controller#346: its verdict was judged beside mesh-host#114 was closed unmerged: out of date, nothing run (novox/hq ADR 0382)
[gitea] novox/mesh-controller#346: its verdict was judged beside mesh-host#114 merged onto cccccccccccc, its main is now eeeeeeeeeeee: out of date, nothing run (novox/hq ADR 0382)
[gitea] novox/mesh-controller#346: its verdict was judged beside mesh-host#114 was merged otherwise than its head bbbbbbbbbbbb onto cccccccccccc: out of date, nothing run (novox/hq ADR 0382)
[gitea] novox/mesh-controller#346: its verdict was judged beside mesh-host#114 was merged otherwise than its head bbbbbbbbbbbb onto cccccccccccc: out of date, nothing run (novox/hq ADR 0382)
[gitea] novox/mesh-host's main moved from 444444444444 to 333333333333: 0 open pull request(s) into it put out of date, nothing run (novox/hq ADR 0323)
[gitea] novox/mesh-controller#346: its verdict was judged beside mesh-host#114 was merged otherwise than its head bbbbbbbbbbbb onto cccccccccccc: out of date, nothing run (novox/hq ADR 0382)
[gitea] novox/mesh-controller#346: its verdict was judged beside mesh-host#114 was merged otherwise than its head dddddddddddd onto cccccccccccc: out of date, nothing run (novox/hq ADR 0382)
✔ both statuses name the siblings the verdict read, keeping the verdict word and the start of its reason within 140 characters (2.625148ms)
✔ a verdict that could not learn its siblings says so on the status and in the comment, and names none (1.87776ms)
✔ a verdict without siblings is said exactly as before (an older controller) (0.885199ms)
✔ the siblings a verdict names are kept per member, replaced by its next verdict, and removed by one that read none (1.272874ms)
✔ a sibling's new head puts both statuses of the member back to pending, with the reason, and runs nothing (5.291047ms)
✔ a sibling closed unmerged puts the member's verdict out of date (0.405404ms)
✔ a move of the sibling's base puts it out of date, naming both commits (0.414294ms)
✔ the sibling's own merge of the head read onto the base read does not, in either order of the two merges (2.134144ms)
✔ a merge of another head, or onto another base, is a move (1.048051ms)
✔ only the members whose verdict names the sibling are touched, and a member that moved on is dropped (0.823709ms)
✔ a trunk that moved tells the siblings' weighing; one first seen does not (0.658777ms)
✔ the group rule names every missing thing: the group status at each head read, and each head the Approve does not cover (1.586187ms)
✔ a merged or closed member's entry is dropped, so a sibling's later push never re-pends its merged head (0.277693ms)
✔ without the composed verdict's siblings, a sibling's own merge of its new head is a move (the pin of issue 1049) (0.329234ms)
✔ a composed verdict names the siblings of each member at the heads and base commits it composed, so a sibling's own merge of its new head is no move (issue 1049) (0.868179ms)
✔ a composed verdict keeps nothing for a member it cannot name, and a group of one is none (issue 1049) (0.265643ms)
✔ a consumer that asks nothing, or write, publishes: the package team (1.263424ms)
✔ a consumer that asks to read joins the readers, who write no package (0.377524ms)
✔ a reader is made, put on the readers team, and taken off the package team (0.417544ms)
✔ a publisher is made and put on the package team, as before (0.221632ms)
✔ first start: mints with the admin account, keeps the token at 0600, asks for the tools' scopes only (40.953468ms)
✔ second start: reuses the kept token, mints nothing (25.60369ms)
✔ the forge rejects the kept token (its data was restored): minted afresh, once, and the call goes through (35.74223ms)
✔ a token kept with write:admin by an earlier build is minted again without it at the next start, and the forge drops the old one (27.079576ms)
✔ a kept token lacking a scope the tools need: the forge refuses the call for the scope, the token is re-minted with the whole list, and the call goes through (28.064566ms)
✔ the kept file is gone but the forge still holds a token by that name: replaced, not refused (20.895428ms)
✔ concurrent first calls share one mint (12.953361ms)
✔ two tokens hold the name (two mints raced): both are deleted by their id, and one fresh token is minted (14.802982ms)
✔ two processes on one kept file, both without a token, mint once: the second waits for the first and reuses it (88.235884ms)
✔ a lock left by a process that died mid-mint is taken over, not waited on for ever (7.619014ms)
✔ the admin account is refused: said plainly, nothing kept, and the next call fails the same way rather than crashing (14.312456ms)
✔ one process shares one source per kept file — the watcher and the tools never renew against each other (0.810969ms)
✔ a second process finds the token the first renewed, and reuses it instead of minting over it (19.742196ms)
✔ a configured token wins, and is reported rather than minted over when the forge rejects it (1.366185ms)
✔ nothing to mint with and no token: the client says what is missing (0.176162ms)
[gitea] no tools — no Gitea token, and nothing to mint one with — set MESH_GITEA_TOKEN, or MESH_GITEA_ADMIN_USER, MESH_GITEA_ADMIN_PASSWORD_FILE, MESH_GITEA_STATE_DIR
[gitea] no token kept — minting one
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-0bxw7R/state/token
✔ the tools register once there is a way to a token, and the first call mints it (28.443761ms)
[gitea] no token kept — minting one
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-0cbfdQ/state/token
✔ a pull request can be closed, read and cleaned up through the tools (37.466629ms)
[gitea] no token kept — minting one
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-tools-account-Yz5yPV/state/token
✔ the tools' token is minted for an account of their own, which is no administrator and writes through its team (78.861222ms)
[gitea] no token kept — minting one
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-tools-account-bCwKqm/state/token
✔ with the tools' token, the forge writes a status and refuses a protection edit — the forge itself, not a guard (64.170981ms)
[gitea] no token kept — minting one
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-tools-account-3szz6n/state/token
✔ what a base's protection asks is read from the branch, which the tools' account may read, not from the rules' list it may not (51.28051ms)
[gitea] the kept token was minted with other scopes than the tools take now — minting one with them
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-tools-account-G2yrOc/state/token
[gitea] deleted 1 token(s) named "mesh-tools" the admin account "mesh-admin" held: the tools act as "mesh-tools" now
✔ the administrator's token from before goes: a kept admin token is minted again for the tools' account, and the forge drops the old one (50.808305ms)
[gitea] no token kept — minting one
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-tools-account-mv9r6E/state/token
✔ a tools' account someone made an administrator is made a plain account again at the next mint (41.16176ms)
✔ the tools never act as the administrator: MESH_GITEA_TOOLS_USER naming it is refused (0.858429ms)
✔ the manifest hands the tools their account, and the Go forge bundle holds no administrator password (0.843519ms)
[gitea] no token kept — minting one
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-tools-account-4ZZh0L/state/token
✔ a repository check said as a warning on a head without merge-check.sh reads the base's protection from the branch (43.780229ms)
[gitea] no token kept — minting one
✔ a mint that fails leaves the administrator's old token in place: the tools are never left without one (29.29372ms)
[gitea] no token kept — minting one
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-tools-account-xCTG9z/state/token
[gitea] FAILED to delete the token(s) named "mesh-tools" the admin account "mesh-admin" holds — tried again at the next start: Gitea DELETE /users/mesh-admin/tokens/902 (named mesh-tools): 500 {"message":"the forge is not well"}
✔ an old token that cannot be deleted after the mint is said, the new token kept, and deleted at the next start (55.252154ms)
[gitea] no token kept — minting one
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-tools-account-hnNIPS/state/token
✔ a team another process made between the look and the create is found, not a failure (43.351154ms)
[gitea] no token kept — minting one
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-tools-account-cRL5LO/state/token
✔ setting the tools' account up puts main's rule right in every repository: no push, only the tools' account merges (issue 948) (41.240821ms)
[gitea] no token kept — minting one
[gitea] the forge already holds a token named "mesh-tools" — replacing it
[gitea] minted a token for "mesh-tools" (write:repository, write:issue, read:user), kept at /tmp/gitea-tools-account-ZFlEkN/state/token
✔ a glob rule covering main keeps its statuses when main is given a rule of its own name (issue 948, review round 1) (38.44449ms)
✔ a start with the token kept still puts main's rules right: the module's start asks for it each time (issue 948, review round 1) (13.875411ms)
[gitea] novox/mesh-host's main moved from a2c2c35bbbbb to d28ca95ccccc: 25 open pull request(s) into it put out of date, nothing run (novox/hq ADR 0323)
[gitea] novox/mesh-host's main moved from d28ca95ccccc to ffffffffffff: 0 open pull request(s) into it put out of date, nothing run (novox/hq ADR 0323)
[gitea] novox/mesh-host: whether a trunk moved could not be weighed, so it is weighed again on the next pass — the forge is away
[gitea] novox/mesh-host's main moved from a2c2c35bbbbb to d28ca95ccccc: 0 open pull request(s) into it put out of date, nothing run (novox/hq ADR 0323)
[gitea] novox/mesh-controller's feat/57-config-and-provisioning moved from eeeeeeeeeeee to d28ca95ccccc: 1 open pull request(s) into it put out of date, nothing run (novox/hq ADR 0323)
✔ both statuses say the head and the trunk commit the verdict judged, first, whatever the summary's length (2.100063ms)
✔ a trunk's move puts an open head's merge check out of date, naming both commits, unless a check is on its way (1.359115ms)
✔ a push to a trunk puts every open pull request into it out of date — twenty-five of them — and none into another (5.978585ms)
✔ a trunk that cannot be read is weighed again on the next pass, never recorded half (0.533966ms)
✔ the trunk's move takes its turn after a verdict in flight, and weighs what the forge holds then (0.568846ms)
✔ a verdict judged against a trunk newer than the pass's first read is not put out of date (0.359174ms)
✔ a verdict that landed out of date keeps its account on the pull request (0.339444ms)
✔ a release branch's move puts every open pull request into it out of date, as a trunk's does (ADR 0358 §5) (1.577058ms)
✔ a signed event is published on the bus and acted on once (82.888356ms)
✔ an unsigned event, or one whose signature does not verify, is refused and published nowhere (39.402501ms)
✔ an event and the poll seeing the same head announce it once (0.593726ms)
✔ each forge event is named in the module's stream and trimmed (0.859219ms)
✔ the webhook is made a system webhook, which the forge sends every repository's events to (1.926651ms)
✔ default webhooks left at the receiver by an earlier start are replaced by one system webhook (1.580297ms)
✔ a repository's copy of a default webhook at the receiver is deleted, on every page, and said (6.645983ms)
✔ a forge that makes no system webhook is said, never taken as heard (1.359505ms)
✔ the receiver tells what it verified and what it refused (11.683427ms)
✔ a forge that never delivers is said loudly once, and unhealthy, when the poll finds what no event said (1.059311ms)
✔ a forge whose events stop after one delivery is said loudly once per silent spell, and refusals are unhealthy (0.447135ms)
✔ without a receiver by configuration the polls alone watch, healthy; a receiver that failed is unhealthy (0.332244ms)
✔ the polls look every 30 s until events are heard, every five minutes while they are, and 30 s again on a miss (0.199502ms)
✔ a pull request's edit event carries its description, and no other pull request event does (issue 1079) (0.241653ms)
ℹ tests 163
ℹ suites 0
ℹ pass 163
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 874.878902
type-checking modules/route-adapter (TypeScript)
testing modules/route-adapter (TypeScript)
✔ it writes one route file per contribution, in the predecessor's own shape (8.511992ms)
✔ it removes the file it wrote when that contribution goes (3.150414ms)
✔ it never touches a file it did not write (4.675631ms)
✔ the target port follows what the contributor publishes (2.139074ms)
✔ a contributor on another node is reached at the address the mesh gave it (1.536027ms)
✔ a node's settings are laid over the module's defaults, and nothing else changes (2.000312ms)
✔ a contribution it cannot act on is skipped and named (0.360554ms)
✔ a contribution the file shape cannot say is skipped and says which part (0.403994ms)
✔ it refuses when the predecessor's directory is not there, and says why (1.708588ms)
✔ a body limit is written as the predecessor's buffering middleware (2.017422ms)
✔ a body limit that is not a whole number of bytes is skipped and named (0.349683ms)
ℹ tests 11
ℹ suites 0
ℹ pass 11
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 130.527727
```
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 1663: five modules pinned mesh-sdk/go at f185aed, a commit only origin/feat/chain-on-the-bus carries; a fresh go mod download fails once that branch goes (as 1659 did). mesh-sdk #57 (delivered 14:18) carried f185aed's provider.Standing to main.
Try: build-1792584456169470934 passed (2m11s) at
0a7c58766c.For issue 1663 (the re-pin; the check that every pin is on main stays open, issue 1148). route-proxy's pin is issue 1669.
Reviewed-by: reviewer-r4d@shanks at
0a7c58766cDelivery
novox/mesh-catalog@0a7c58766c20— covered since 2026-10-21T14:06:43ZDelivery plan — builds gitea, keycloak, mesh-provisioner-client, postgres, route-adapter → ace, g14, novox, shanks; no bus step; 3 wait(s) for a person
Machines
Transitions
90ecba4einto main, walk plan-1792585970446304628)The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
0a7c5876Judged: head
0a7c58766c20merged into trunk4efac366cebb; read beside it: mesh-controller5be1cfaed19b, mesh-controller-mainf10fbda1f619, mesh-hostc5c4caa2a4ab, mesh-toolse0fadc43d9ddmesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: gitea, keycloak, mesh-provisioner-client, postgres, route-adapter)mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)Delivery plan — builds gitea, keycloak, mesh-provisioner-client, postgres, route-adapter → ace, g14, novox, shanks; no bus step; 3 wait(s) for a person
Run by the build seat on shanks as
build-1792585392909098456(builds --log build-1792585392909098456).