4545 * leaves into the same one member view. Both producers are now judged by one
4646 * check, which is why they are pinned in one file.
4747 *
48- * ## [#11461 ] The third producer, and the door it left open on BOTH doors
48+ * ## [commit 399ecad58 ] The third producer, and the door it left open on BOTH doors
4949 *
5050 * #10413 phase 2 added a THIRD route to `engine.aggregate`'s predicate: a
5151 * compiled MEASURE's own `filter`, lowered onto that measure's
110110 * predicate — the load-bearing half of ⑤, and the pin a
111111 * "refuse every dataset scope" implementation fails
112112 * ⑦ a CROSS-OBJECT per-measure `filter` is REFUSED on both doors, naming the
113- * measure whose declaration holds the leaf (#11461 )
113+ * measure whose declaration holds the leaf (commit 399ecad58 )
114114 * ⑧ an ORDINARY per-measure `filter` still reaches the engine CARRYING its
115115 * own `aggregations[].filter`, and a cross-object one on a measure the
116116 * query does NOT ask for changes nothing — the two load-bearing halves of
117117 * ⑦, and the pins a "refuse every measure filter" and a "refuse on the
118118 * dataset's whole `measureFilters` map" implementation each fail
119119 *
120- * ①–④ are #10759's, re-run unchanged; ⑤–⑥ are #10861's; ⑦–⑧ are #11461 's.
120+ * ①–④ are #10759's, re-run unchanged; ⑤–⑥ are #10861's; ⑦–⑧ are commit 399ecad58 's.
121121 */
122122
123123import { describe , it , expect } from 'vitest' ;
@@ -131,7 +131,7 @@ const ctxA = { tenantId: 'org_A', userId: 'u_a' } as ExecutionContext;
131131interface Refusal extends Error { code ?: string ; status ?: number ; member ?: string ; param ?: string ; cube ?: string }
132132interface AggSpec { field : string ; method : string ; alias : string ; filter ?: Record < string , unknown > }
133133/**
134- * [#11461 ] `aggregations` is captured too, not just the whole-call `filter`.
134+ * [commit 399ecad58 ] `aggregations` is captured too, not just the whole-call `filter`.
135135 * The third producer never lands in the whole-call filter — it lands on ONE
136136 * aggregation's own `filter` — so a harness that only watched `options.filter`
137137 * could not have seen this card's defect at all, and ⑧'s "still carries its
@@ -195,7 +195,7 @@ const MIXED_SCOPED_SALES: Dataset = DatasetSchema.parse({
195195} ) as Dataset ;
196196
197197/**
198- * [#11461 ] ONE dataset carrying all three of ⑦/⑧'s directions, so the
198+ * [commit 399ecad58 ] ONE dataset carrying all three of ⑦/⑧'s directions, so the
199199 * distinctions are structural rather than three fixtures that happen to differ.
200200 *
201201 * `revenue` no filter at all — the neighbour every other measure is
@@ -277,7 +277,7 @@ const DATASET_SCOPE_MESSAGE =
277277 / c a n n o t e v a l u a t e t h e c r o s s - o b j e c t f i l t e r \( " a c c o u n t \. r e g i o n " \) t h a t d a t a s e t " [ ^ " ] + " d e c l a r e s a t i t s d e f i n i t i o n l e v e l / ;
278278
279279/**
280- * [#11461 ] A THIRD distinct message. The two above name where the member came
280+ * [commit 399ecad58 ] A THIRD distinct message. The two above name where the member came
281281 * from; this one has to name something neither can — WHICH MEASURE's own
282282 * declaration holds the leaf. A dataset can declare two measures filtering the
283283 * same field and mean two different edits, so a rewording that dropped the
@@ -564,7 +564,7 @@ describe('[#10861] a CROSS-OBJECT definition-level filter is refused on BOTH doo
564564} ) ;
565565
566566// ────────────────────────────────────────────────────────────────────────────
567- // ⑦ + ⑧ [#11461 ] the CROSS-OBJECT per-measure filter — the third producer
567+ // ⑦ + ⑧ [commit 399ecad58 ] the CROSS-OBJECT per-measure filter — the third producer
568568// ────────────────────────────────────────────────────────────────────────────
569569
570570/**
@@ -684,7 +684,7 @@ describe('[#11461] a CROSS-OBJECT per-measure filter is refused on BOTH doors',
684684 it ( 'the KNOWN-PRESENT control: a cross-object member in the CALLER’s where keeps its own diagnostic on this fixture too' , async ( ) => {
685685 // The counter-check for every "refused" above, on the SAME cube — so the
686686 // refusal ⑦ adds cannot be mistaken for the fixture simply being unable to
687- // serve anything, and #11461 is shown not to have repainted the refusal
687+ // serve anything, and commit 399ecad58 is shown not to have repainted the refusal
688688 // #10759 restored. Refused before this card and after it, with the OTHER
689689 // message and with `param: 'where'`.
690690 const { execute, generateSql, calls } = await bothDoors ( 'measure_filter_sales' , {
@@ -700,7 +700,7 @@ describe('[#11461] a CROSS-OBJECT per-measure filter is refused on BOTH doors',
700700 // The ordering pin. `filterMemberView` inserts measure-filter leaves FIRST
701701 // and `where` last, last write wins — so a member named by the request too
702702 // keeps the provenance the caller can act on directly, and every shape
703- // refused before #11461 keeps the exact message it had.
703+ // refused before commit 399ecad58 keeps the exact message it had.
704704 const { execute } = await bothDoors ( 'measure_filter_sales' , {
705705 dimensions : [ 'stage' ] , measures : [ 'revenue' , 'west_revenue' ] ,
706706 where : { 'account.region' : 'West' } ,
0 commit comments