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"},` +