From 24ae26676d35491da366a90c426cfa2ed080a727 Mon Sep 17 00:00:00 2001 From: Prabhat Sharma Date: Sun, 2 Aug 2026 15:18:40 -0700 Subject: [PATCH] test(editor): record that the field-value resolver has no exemption list MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Confirmed decision: every editor host supplies a resolver, including the ones with no stream context. Complying costs nothing. The composable's resolveFieldValues already returns [] when streamName is unset — one of its five specs — so a surface without stream context supplies it and gets an empty list rather than being special-cased. The two pass-throughs (QueryEditor.vue, SloExpressionField.vue) forward the prop exactly as they already forward keywords and suggestions. The reasoning now sits in the guard so it is not undone later: an exemption list is where the next silent gap hides. Every wiring bug in this workstream — Alerts on the base list, the SLO form never loading the catalog, Traces missing :suggestions — reached production because one surface was quietly different from the rest, and each was reported from the running app rather than caught by a test. Still 13 red, one per host, each naming its file. --- web/src/utils/query/editorWiring.spec.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/web/src/utils/query/editorWiring.spec.ts b/web/src/utils/query/editorWiring.spec.ts index 9b4be37555..beaa7f0f63 100644 --- a/web/src/utils/query/editorWiring.spec.ts +++ b/web/src/utils/query/editorWiring.spec.ts @@ -73,6 +73,15 @@ describe("editor wiring — every surface supplies both completion sources", () // await a resolver something hands it. A surface that omits this gets a // working editor with no value completion — silently, exactly like the // three prop-wiring gaps before it. + // + // DECIDED: applies to EVERY host, with no exemption list. A surface with no + // stream context supplies a resolver returning [] — which the composable's + // resolveFieldValues already does when streamName is unset, so complying + // costs nothing. Pass-throughs (QueryEditor.vue, SloExpressionField.vue) + // forward the prop as they already forward keywords and suggestions. + // An exemption list is where the next silent gap would hide: every wiring + // bug in this workstream reached production because one surface was quietly + // different from the rest. expect( /:field-value-resolver\s*=|:fieldValueResolver\s*=/.test(source), `${path} mounts an editor without a field-value resolver`,