Issue 1945 note 95 (car-hunter's fetch). Group fix/fetch-reads-all with mesh-catalog.
buildstep.UpdateMirror, FetchCommit, merge and trees, and forgekey's own reasons kept only the first non-empty stderr line; git writes a bare error: before the forge's message, so a refused fetch read "git -C: error:". New forgekey.Said(s) keeps every line that says something, drops bare word: lines, joins with "; ", caps at 600 bytes (rune-safe); every git and ssh-keygen reason uses it, and the mirror names the git verb. Remotes are ssh:// aliases with no user information (checkFetch refuses others), so no credential can reach a reason.
Tests: forgekey/said_test.go, TestUpdateMirrorSaysTheForgesRefusal (the real refusal text). Suites and vet clean. Try try-1793024876896380649 passed.
Reviewed-by: review-fetchread@shanks at ff81bdf8cc
Issue 1945 note 95 (car-hunter's fetch). Group fix/fetch-reads-all with mesh-catalog.
buildstep.UpdateMirror, FetchCommit, merge and trees, and forgekey's own reasons kept only the first non-empty stderr line; git writes a bare `error:` before the forge's message, so a refused fetch read "git -C: error:". New `forgekey.Said(s)` keeps every line that says something, drops bare `word:` lines, joins with "; ", caps at 600 bytes (rune-safe); every git and ssh-keygen reason uses it, and the mirror names the git verb. Remotes are ssh:// aliases with no user information (checkFetch refuses others), so no credential can reach a reason.
Tests: forgekey/said_test.go, TestUpdateMirrorSaysTheForgesRefusal (the real refusal text). Suites and vet clean. Try try-1793024876896380649 passed.
Reviewed-by: review-fetchread@shanks at ff81bdf8cc8f4bd9dc7d65fe47bc96e5b5bef1d5
The mirror of jschoubben/car-hunter on ace said only "git -C: error:": git writes a bare
"error:" before the forge's message, and the reason kept the first non-empty line. forgekey.Said
keeps every line that says something, leaves bare prefixes out, joins them and bounds them at
600 bytes; every git and ssh-keygen reason of buildstep and forgekey goes through it, and the
mirror's commands are named by their verb, not by -C.
Deliverynovox/mesh-sdk@ff81bdf8cc8f — merged since 2026-10-26T14:47:27Z
Source — source.main moved to novox/mesh-sdk@1888d1d230. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
composed together: pass — the checker's verdict at the members' heads (28ee9bdbc120)
Transitions
2026-10-26 14:38 (new) → proposed (announced): novox/mesh-sdk#96's head announced
2026-10-26 14:38 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-26 14:47 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-sdk@ff81bdf8cc8f` — **merged** since 2026-10-26T14:47:27Z
**Source** — source.main moved to novox/mesh-sdk@1888d1d230b3. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Group** `fix/fetch-reads-all`: novox/mesh-catalog@071c6885d923, novox/mesh-sdk@ff81bdf8cc8f
- composed together: pass — the checker's verdict at the members' heads (28ee9bdbc120)
**Transitions**
- 2026-10-26 14:38 (new) → proposed (announced): novox/mesh-sdk#96's head announced
- 2026-10-26 14:38 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-26 14:47 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: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
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 1945 note 95 (car-hunter's fetch). Group fix/fetch-reads-all with mesh-catalog.
buildstep.UpdateMirror, FetchCommit, merge and trees, and forgekey's own reasons kept only the first non-empty stderr line; git writes a bare
error:before the forge's message, so a refused fetch read "git -C: error:". Newforgekey.Said(s)keeps every line that says something, drops bareword:lines, joins with "; ", caps at 600 bytes (rune-safe); every git and ssh-keygen reason uses it, and the mirror names the git verb. Remotes are ssh:// aliases with no user information (checkFetch refuses others), so no credential can reach a reason.Tests: forgekey/said_test.go, TestUpdateMirrorSaysTheForgesRefusal (the real refusal text). Suites and vet clean. Try try-1793024876896380649 passed.
Reviewed-by: review-fetchread@shanks at
ff81bdf8ccDelivery
novox/mesh-sdk@ff81bdf8cc8f— merged since 2026-10-26T14:47:27ZSource — source.main moved to novox/mesh-sdk@1888d1d230. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
fix/fetch-reads-all: novox/mesh-catalog@071c6885d9, novox/mesh-sdk@ff81bdf8ccTransitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.