From 5906cecf19a48d1fb5df797c186230484fa9515e Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 22:59:28 +0100 Subject: [PATCH] BL16 (integration bed): the test bed's build seat workers take both forms of an accept subject, and the stale ask is put as the builder's MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Builds: design 47 G §600, §481 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- .../cmd/mesh-delivery-builder/integration_test.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/modules/mesh-delivery-builder/cmd/mesh-delivery-builder/integration_test.go b/modules/mesh-delivery-builder/cmd/mesh-delivery-builder/integration_test.go index 7feaa294..19619406 100644 --- a/modules/mesh-delivery-builder/cmd/mesh-delivery-builder/integration_test.go +++ b/modules/mesh-delivery-builder/cmd/mesh-delivery-builder/integration_test.go @@ -165,6 +165,18 @@ func (f *fakeBuildModules) serve(t *testing.T, module string, nodes ...string) { if err := runner.DeclareAskWorkers(f.ctx, f.js, language, 30*time.Second); err != nil { t.Fatal(err) } + // Design 47 G §600: each queue's worker takes an ask in both forms, main's and the builder's (accept..builder); the + // build modules' helper above filters main's alone, so the worker is declared again with both. + stream, _ := sdkstep.AskStream(language) + for _, kind := range sdkstep.AskKinds { + worker, _ := sdkstep.AskWorker(language, kind) + main, _ := sdkstep.AskSubject(language, kind) + byBuilder, _ := sdkstep.AskSubjectBy(language, kind, sdkstep.AskerBuilder) + if _, err := f.js.CreateOrUpdateConsumer(f.ctx, stream, jetstream.ConsumerConfig{Durable: worker, FilterSubjects: []string{main, byBuilder}, + AckPolicy: jetstream.AckExplicitPolicy, AckWait: 30 * time.Second, MaxDeliver: 5}); err != nil { + t.Fatal(err) + } + } put := func(key string, value any) (uint64, error) { raw, _ := value.(json.RawMessage) return kv.Put(f.ctx, key, raw) @@ -1068,7 +1080,7 @@ func TestARestartedBuilderPutsNoSecondAsk(t *testing.T) { held := heldOnTheBus{b.js} goAsk := sdkstep.StepAsk{ID: v.Asks[sdkstep.AskGo], Language: sdkstep.AskGo, Kind: sdkstep.AskDelivery} stale := sdkstep.StepAsk{ID: "mvo53jcm70b5f7", Language: sdkstep.AskGo, Kind: sdkstep.AskDelivery} - subject, _ := sdkstep.AskSubject(sdkstep.AskGo, sdkstep.AskDelivery) + subject, _ := sdkstep.AskSubjectBy(sdkstep.AskGo, sdkstep.AskDelivery, sdkstep.AskerBuilder) if _, err := b.js.Publish(b.ctx, subject, []byte("{}"), jetstream.WithMsgID(stale.ID)); err != nil { t.Fatal(err) }