A build step's failure contract: go -json and TAP parsers and a conformance kit every build module runs, so a verdict names the failing test (issue 1901) #104

Merged
mesh-tools merged 4 commits from fix/1901-failure-contract into main 2026-10-26 23:44:13 +00:00
Member

Issue 1901: a build's verdict hid the failing test (fixed once for Go in one build module; met twice for TypeScript on 2026-10-26, because each build module parsed its own test output). Thorough fix (the operator's yes 2026-10-26 19:34 CET): one failure contract in mesh-sdk, held on every build module.

This member (merges first, as a merge commit: the consumers pin a2759ec9): go/buildstep failure.go (the Failure every step reports), gotest.go (go test -json), tap.go (node --test TAP, subtest failures and panics kept), step.go, and conformance/ with captured fixtures (never imagined) that every build module runs. A capacity test folded to keep the count flat.

Group fix/1901-failure-contract: mesh-sdk, mesh-catalog (build modules run the kit; a catalogue check refuses a build module without it), mesh-delivery (the checker's Failure is buildstep.Failure; a hidden failure is guarded). Merged with today's main (one conflict, capacity_test.go, main's test kept whole). Tests: go test ./... green, go vet -tags integration clean; no test added (1682 unit / 42 integration, as main).

Quick fix weighed: patch the TypeScript parser in mesh-build-node only; not chosen, the kind was met in two build modules.

Reviewed-by: review-1901k@shanks at 47a66e3c0d (the contract)
Reviewed-by: review-1901m@shanks at a2759ec92e (the merge with main)

Issue 1901: a build's verdict hid the failing test (fixed once for Go in one build module; met twice for TypeScript on 2026-10-26, because each build module parsed its own test output). Thorough fix (the operator's yes 2026-10-26 19:34 CET): one failure contract in mesh-sdk, held on every build module. This member (merges first, as a merge commit: the consumers pin a2759ec9): go/buildstep failure.go (the Failure every step reports), gotest.go (go test -json), tap.go (node --test TAP, subtest failures and panics kept), step.go, and conformance/ with captured fixtures (never imagined) that every build module runs. A capacity test folded to keep the count flat. Group fix/1901-failure-contract: mesh-sdk, mesh-catalog (build modules run the kit; a catalogue check refuses a build module without it), mesh-delivery (the checker's Failure is buildstep.Failure; a hidden failure is guarded). Merged with today's main (one conflict, capacity_test.go, main's test kept whole). Tests: go test ./... green, go vet -tags integration clean; no test added (1682 unit / 42 integration, as main). Quick fix weighed: patch the TypeScript parser in mesh-build-node only; not chosen, the kind was met in two build modules. Reviewed-by: review-1901k@shanks at 47a66e3c0dc8dcdfd065a01358e04baf5917774d (the contract) Reviewed-by: review-1901m@shanks at a2759ec92ec910d79b19a7ac6bee7422841362e7 (the merge with main)
mesh-tools added 4 commits 2026-10-26 23:43:14 +00:00
Each build module parsed its own test runner's output, so a fix in one never reached the others: a failed node --test
run was worded by a passing line of its first file. buildstep.Failure names the test, its file, its cause and its own
output; ReadGoTest (moved from mesh-build-go) and ReadTAP fill it; package conformance holds every build module to it
with runner output captured with the build nodes' own toolchains.
Merge main into fix/1901-failure-contract: the capacity tests stay one function, so the SDK's test count does not grow (issue 1901)
mesh/delivery merged: source.main moved to novox/mesh-sdk@b0cbc4e6aca8
mesh/delivery-group group fix/1901-failure-contract merged: every member is merged
mesh/check checking a2759ec92ec9 on f178323b5790 | novox/mesh-sdk#104 in group fix/1901-failure-contract
a2759ec92e
Author
Member

Delivery novox/mesh-sdk@a2759ec92ec9 — merged since 2026-10-26T23:44:15Z

Source — source.main moved to novox/mesh-sdk@b0cbc4e6ac. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.

Group fix/1901-failure-contract: novox/mesh-catalog@e8a953818c, novox/mesh-delivery@f4a86f5884, novox/mesh-sdk@a2759ec92e

Transitions

  • 2026-10-26 23:43 (new) → proposed (announced): novox/mesh-sdk#104's head announced
  • 2026-10-26 23:43 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 23:44 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@a2759ec92ec9` — **merged** since 2026-10-26T23:44:15Z **Source** — source.main moved to novox/mesh-sdk@b0cbc4e6aca8. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `fix/1901-failure-contract`: novox/mesh-catalog@e8a953818c71, novox/mesh-delivery@f4a86f58843d, novox/mesh-sdk@a2759ec92ec9 **Transitions** - 2026-10-26 23:43 (new) → proposed (announced): novox/mesh-sdk#104's head announced - 2026-10-26 23:43 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 23:44 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`.
Author
Member

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.
Author
Member

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.
mesh-tools merged commit b0cbc4e6ac into main 2026-10-26 23:44:13 +00:00
mesh-tools deleted branch fix/1901-failure-contract 2026-10-26 23:44:14 +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-sdk#104