From 2819b05838bfe1edb439ba289f4c13f82863f686 Mon Sep 17 00:00:00 2001 From: jochen Date: Mon, 9 Nov 2026 15:10:32 +0100 Subject: [PATCH] The assigner's integration test answers the verbs' asks of the indexer's first views from the indexer's buckets (issue 1966) The verbs ask mesh-delivery-indexer.modules and .manifests through the tool runner since the asks moved off the indexer's state, but the test's stand-in answered every ask {ok:true}, which is no answer: propose failed on main with 'unexpected end of JSON input'. Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i --- .../cmd/mesh-delivery-assigner/integration_test.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/integration_test.go b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/integration_test.go index 6d77bef6..b4267224 100644 --- a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/integration_test.go +++ b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/integration_test.go @@ -1233,7 +1233,18 @@ func TestAProposalIsAnsweredApprovedAndWritten(t *testing.T) { t.Fatal("anchor in the form before was not converted") } } - verbs := newSeatTools(bedStore{b}, func(string, any) (json.RawMessage, error) { return json.RawMessage(`{"ok":true}`), nil }) + // The verbs ask the indexer's first views of modules and manifests (ADR 0615 ยง1), as the tool runner answers them from the + // indexer's buckets; every other ask the controller's, answered ok. + verbs := newSeatTools(bedStore{b}, func(tool string, _ any) (json.RawMessage, error) { + if state, ok := strings.CutPrefix(tool, buckets.IndexerModule+"."); ok && indexerFirstViews[state] != "" { + a, err := views.FirstView(buckets.IndexerModule, state, bedSource{b.ctx, b.buckets[indexerFirstViews[state]]}, nil, "", time.Now()) + if err != nil { + return nil, err + } + return json.Marshal(map[string]any{"result": a}) + } + return json.RawMessage(`{"ok":true}`), nil + }) propose := func() mma.Proposal { t.Helper() got, err := verbs.doPropose(map[string]any{"why": "move web", "changes": `[{"op":"take-off","node":"anchor","module":"web"},` +