Check a delivery group's member beside its siblings' merges, judged by the group's controller (issue 867, ADR 0382)
mesh/merge-gate head 37fd73f3781e merged into trunk 4446027108fd — pass: builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step; every …
mesh/repo-check head 37fd73f3781e merged into trunk 4446027108fd — pass: its merge-check.sh passed
mesh/delivery delivered
mesh/delivery-group group fix/867-group-siblings delivered: every member is delivered
mesh/merge-gate head 37fd73f3781e merged into trunk 4446027108fd — pass: builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step; every …
mesh/repo-check head 37fd73f3781e merged into trunk 4446027108fd — pass: its merge-check.sh passed
mesh/delivery delivered
mesh/delivery-group group fix/867-group-siblings delivered: every member is delivered
A mesh-host change and a mesh-controller change that need each other could not both pass their own checks: each read the other at its base. The check now asks mesh-delivery for the group's open siblings into a base of the same name, reads each at its head merged onto its base, builds the judge from a controller sibling's merge in the isolated judge environment keyed on its inputs, and names the siblings in the verdict. With no answer from mesh-delivery the verdict says it could not learn them; a pull request with no sibling is checked as before. TestReplay867 replays the failure. Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -173,6 +173,13 @@ type CheckRequest struct {
|
||||
// node-engine with its own validator — and each repository beside it is read at its branch of that name where it
|
||||
// has one (CheckedOut.Else otherwise). Empty for every other base, checked as before it.
|
||||
Release string `json:"release,omitempty"`
|
||||
// Siblings are the other open pull requests of this one's delivery group the check reads beside it (novox/hq ADR
|
||||
// 0382 §1): each repository found under Dir is read at the sibling's head merged onto the sibling's base, in
|
||||
// place of the commit the mesh runs. SiblingsUnknown says mesh-delivery could not be asked, or answered without
|
||||
// what a sibling is found by, and the check reads none. Both empty when mesh-delivery answered and named none:
|
||||
// the request is then what it was before the rule.
|
||||
Siblings []CheckSibling `json:"siblings,omitempty"`
|
||||
SiblingsUnknown string `json:"siblings_unknown,omitempty"`
|
||||
// Group names a delivery group whose members' heads are composed together with this one (novox/hq ADR
|
||||
// 0239), and Members are those other heads, each cloned beside it and laid over the mesh in turn. The
|
||||
// repository's own check is not run for a group: each member's pull request runs its own.
|
||||
@@ -250,6 +257,19 @@ type CheckBuilt struct {
|
||||
SameAs map[string]string `json:"same-as,omitempty"`
|
||||
}
|
||||
|
||||
// CheckSibling is one other open pull request of a delivery group (novox/hq ADR 0382): in a request, the repository it
|
||||
// is in as owner/repo, the directory the check finds that repository under (Dir), its number, its whole head and its
|
||||
// base branch; in a verdict, what the check read of it — Head, Base and BaseCommit, whole: the base's head the sibling's
|
||||
// head was merged onto.
|
||||
type CheckSibling struct {
|
||||
Repository string `json:"repository"`
|
||||
Number int `json:"number"`
|
||||
Head string `json:"head"`
|
||||
Base string `json:"base"`
|
||||
BaseCommit string `json:"base_commit,omitempty"`
|
||||
Dir string `json:"dir,omitempty"`
|
||||
}
|
||||
|
||||
// GroupMember is one other head of a delivery group's composed check.
|
||||
type GroupMember struct {
|
||||
Owner string `json:"owner"`
|
||||
@@ -309,6 +329,12 @@ type CheckOutcome struct {
|
||||
BesideAt map[string]string `json:"beside-at,omitempty"`
|
||||
// Validator says which node-engine validator the judge of a release-branch check was built with (ADR 0358 §2).
|
||||
Validator string `json:"validator,omitempty"`
|
||||
// Siblings are the pull requests of its delivery group it read beside it, each as its head merged onto its base
|
||||
// commit (ADR 0382 §4), SiblingsUnknown why it could not learn them, and JudgeFrom where the judge came from when
|
||||
// the group made it (§3), such as "sibling novox/mesh-controller#346 merge 0123456789ab".
|
||||
Siblings []CheckSibling `json:"siblings,omitempty"`
|
||||
SiblingsUnknown string `json:"siblings_unknown,omitempty"`
|
||||
JudgeFrom string `json:"judge_from,omitempty"`
|
||||
}
|
||||
|
||||
// SourceOnSeat names a repository by the seat whose holder serves it and its path there.
|
||||
|
||||
@@ -301,6 +301,13 @@ type Checked struct {
|
||||
BesideAt map[string]string `json:"beside-at,omitempty"`
|
||||
// Validator says which node-engine validator the judge of a release-branch check was built with (ADR 0358 §2).
|
||||
Validator string `json:"validator,omitempty"`
|
||||
// Siblings are the other pull requests of the delivery group the check read beside it (novox/hq ADR 0382 §4), each
|
||||
// with its head and the base commit it was merged onto; SiblingsUnknown is why it could not learn them, set only
|
||||
// then; JudgeFrom says where the judge came from when the group made it. The forge's holder keeps Siblings per
|
||||
// open pull request (§5). All omitted for a check that read none.
|
||||
Siblings []CheckSibling `json:"siblings,omitempty"`
|
||||
SiblingsUnknown string `json:"siblings_unknown,omitempty"`
|
||||
JudgeFrom string `json:"judge_from,omitempty"`
|
||||
// Built are the builds the check made for its merge, each with its reuse key and digests, or why not
|
||||
// (novox/hq ADR 0350 §1): what the walk of the merge takes instead of building.
|
||||
Built []CheckBuilt `json:"built,omitempty"`
|
||||
|
||||
Reference in New Issue
Block a user