mesh-build-go: lint the unit level's directories as many at once as its tests, so a large repository's check ends within its bound (issue 1930) #470

Merged
jschoubben merged 1 commits from fix/1930-parallel-lint into main 2026-10-24 00:16:55 +00:00
Member

Issue 1930 (note 11): a check of mesh-catalog ran 34 min 22 s on shanks, past the checker's 30-minute step bound, and its pass was thrown away. The unit level's lint (gofmt and go vet, two vets for a directory with build tags) ran over ~100 go.mod directories one after another: 1392 s of it, against 87 s of tests.

Now lintAll (modules/mesh-build-go/cmd/mesh-build-go/lint.go) runs the lint per directory at most m.parallel() at once, with the tests' slot pattern; failures are joined in directory order and the first directory's error is returned, so messages and what lint checks are unchanged. One difference: a 'could not be run' error no longer stops the remaining directories; the answer is the same.

Tests: new TestTheLintOfManyDirectoriesRunsAtOnceUpToTheBound fails on main's serial loop ('1 lint commands ran at once, want 2 or 3') and passes here; go test ./... passes (package 3.4 s, over the 2 s guideline: said, not cut, issue 1921); go test -race ./... passes; go vet -tags integration ./... clean.

Later (not here): no test pins a later 'could not be run' error together with an earlier failing directory; a step past its bound keeps its slot by design (issue 1916).

Temporary build -> publish -> deliver mode (issue 1921 note 13): the operator merges by hand.

Reviewed-by: review-1930b@shanks at 7e1f3de77a
Pushed-by: lead-47@shanks

Issue 1930 (note 11): a check of mesh-catalog ran 34 min 22 s on shanks, past the checker's 30-minute step bound, and its pass was thrown away. The unit level's lint (gofmt and go vet, two vets for a directory with build tags) ran over ~100 go.mod directories one after another: 1392 s of it, against 87 s of tests. Now lintAll (modules/mesh-build-go/cmd/mesh-build-go/lint.go) runs the lint per directory at most m.parallel() at once, with the tests' slot pattern; failures are joined in directory order and the first directory's error is returned, so messages and what lint checks are unchanged. One difference: a 'could not be run' error no longer stops the remaining directories; the answer is the same. Tests: new TestTheLintOfManyDirectoriesRunsAtOnceUpToTheBound fails on main's serial loop ('1 lint commands ran at once, want 2 or 3') and passes here; `go test ./...` passes (package 3.4 s, over the 2 s guideline: said, not cut, issue 1921); `go test -race ./...` passes; `go vet -tags integration ./...` clean. Later (not here): no test pins a later 'could not be run' error together with an earlier failing directory; a step past its bound keeps its slot by design (issue 1916). Temporary build -> publish -> deliver mode (issue 1921 note 13): the operator merges by hand. Reviewed-by: review-1930b@shanks at 7e1f3de77a5fef3c69494e538d2187571053bb16 Pushed-by: lead-47@shanks
mesh-tools added 1 commit 2026-10-24 00:03:26 +00:00
Author
Member

Delivery novox/mesh-catalog@7e1f3de77a5f — delivered since 2026-10-24T01:08:28Z

Delivery plan — builds mesh-build-go → g14, novox, shanks; no bus step

  • tier 0: mesh-build-go
  • g14: receives mesh-build-go
  • novox: receives mesh-build-go
  • shanks: receives mesh-build-go
  • 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-build-go is judged on its first machine

Machines

  • mesh-build-go on every machine running it: sent

Transitions

  • 2026-10-24 00:03 (new) → proposed (announced): novox/mesh-catalog#470's head announced
  • 2026-10-24 00:16 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-24 01:06 held → delivering (release): the operator merged mesh-catalog #470 by hand at 02:16:55 and said 'merged'; by the operator's 00:24 word (build -> publish -> deliver, issue 1921 note 13) the merge is their word to release it; held by the lead until novox applied again (issue 1933 recovered 03:06 by mesh-controller #451 + #452)
  • 2026-10-24 01:08 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@7e1f3de77a5f` — **delivered** since 2026-10-24T01:08:28Z **Delivery plan** — builds mesh-build-go → g14, novox, shanks; no bus step - tier 0: mesh-build-go - g14: receives mesh-build-go - novox: receives mesh-build-go - shanks: receives mesh-build-go - 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-build-go is judged on its first machine **Machines** - mesh-build-go on every machine running it: sent **Transitions** - 2026-10-24 00:03 (new) → proposed (announced): novox/mesh-catalog#470's head announced - 2026-10-24 00:16 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-24 01:06 held → delivering (release): the operator merged mesh-catalog #470 by hand at 02:16:55 and said 'merged'; by the operator's 00:24 word (build -> publish -> deliver, issue 1921 note 13) the merge is their word to release it; held by the lead until novox applied again (issue 1933 recovered 03:06 by mesh-controller #451 + #452) - 2026-10-24 01:08 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`.
jschoubben merged commit 25176e1ccd into main 2026-10-24 00:16:55 +00:00
jschoubben deleted branch fix/1930-parallel-lint 2026-10-24 00:16:55 +00:00
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#470