mesh/merge-gate pass: builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step; every machine composes with the change as it…
mesh/repo-check pass: its merge-check.sh passed
mesh/delivery delivered
mesh/delivery-group group replays/292-298 delivered: every member is delivered
R292: two drills recorded through hand-act record want no healer. R298: the delivery seat's holder holds it before and after it serves checks, so neither repository has to merge first.
34 lines
1.6 KiB
Go
34 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/novox/mesh-controller/internal/link"
|
|
)
|
|
|
|
// **R292 — a drill is never counted as a repair** (novox/hq issue 292). On 2026-10-07 two deliberate
|
|
// drills of ADR 0240's health check — a module stopped on purpose, then one made to crash, each with the
|
|
// operator's word — were recorded through `hand-act record --cause drill`, there being no verb for a drill,
|
|
// and S15 raised `mesh.hand-acts.drill.healer-wanted`: "drill" repaired by hand twice, a healer wanted. The
|
|
// outcome asserted: those two acts, as the log holds them, want no healer.
|
|
//
|
|
// In a file of its own, written only with what the controller had before the fix (watchHandActs, calm, the
|
|
// hand-act log's row), so the prover can lay it over that commit; replays_test.go holds replays of later
|
|
// commits that do not build there.
|
|
func TestReplay292TwoDrillsRecordedByHandWantNoHealer(t *testing.T) {
|
|
now := time.Date(2026, 10, 7, 12, 0, 0, 0, time.UTC)
|
|
drill := func(at time.Time, what, why string) link.HandAct {
|
|
return link.HandAct{ID: "act-" + at.Format("150405"), At: at, By: "the operator at a shell on the laptop",
|
|
Verb: "hand-act record", Args: []string{what}, Why: why, Cause: "drill"}
|
|
}
|
|
f := calm(now)
|
|
f.handActs = []link.HandAct{
|
|
drill(now.Add(-11*time.Hour), "stopped a module on purpose", "ADR 0240: an exited container is said"),
|
|
drill(now.Add(-30*time.Minute), "made a module crash on purpose", "ADR 0240: a crash loop is said"),
|
|
}
|
|
if got := watchHandActs(f); len(got) != 0 {
|
|
t.Fatalf("two drills the operator approved were counted as repairs: %s", got[0].Summary)
|
|
}
|
|
}
|