Skip to content

Commit 2ceeffd

Browse files
committed
test(spec): the third data/ file group's test titles state each cited decision in words instead of a tracker number (stage 17)
The 20 test files directly under packages/spec/src/data/, from filter-comparand-type.test.ts through filter-view-operator-parity.test.ts, carry no tracker id in a test title or declared test string. Each id became a statement, in words, of what its record decided, or was dropped where the title already said it. Text only: no assertion, identifier, code comment or non-test file moves. Claude-Session: https://claude.ai/code/session_01T9u38rswFp5Rw8DswRUReJ Co-authored-by: Claude <noreply@anthropic.com>
1 parent 2799155 commit 2ceeffd

20 files changed

Lines changed: 96 additions & 96 deletions

‎packages/spec/src/data/filter-comparand-type.test.ts‎

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class Money {
3838
constructor(readonly v: number) {}
3939
}
4040

41-
describe('the accepted set (#7872 ruling)', () => {
41+
describe('the accepted set — one set, defined at the shared door for every driver', () => {
4242
it('is exactly the measured superset — string | number | bigint | boolean | null | Date', () => {
4343
expect([...ACCEPTED_FILTER_COMPARAND_TYPES]).toEqual([
4444
'string', 'number', 'bigint', 'boolean', 'null', 'Date',
@@ -118,7 +118,7 @@ describe('refusals — the measured divergence rows die at the door', () => {
118118
expect(err?.message).toContain('where.qty');
119119
});
120120

121-
it.each(refused)('refuses %s as an $in member — each member is a comparand in its own right (#5234)', (_name, value) => {
121+
it.each(refused)('refuses %s as an $in member — each member is a comparand in its own right', (_name, value) => {
122122
const err = refusalOf(() => normalizeFilterComparandTypes({ qty: { $in: [100, value] } }));
123123
expect(err?.code).toBe('INVALID_FILTER');
124124
expect(err?.message).toContain('where.qty.$in[1]');
@@ -131,7 +131,7 @@ describe('refusals — the measured divergence rows die at the door', () => {
131131
expect(err?.message).toMatch(/omit/);
132132
});
133133

134-
it('the undefined prescription is position-safe: it names the null predicate by its ruled spellings, at every position it is emitted at (#14426)', () => {
134+
it('the undefined prescription is position-safe: it names the null predicate by its ruled spellings, at every position it is emitted at', () => {
135135
// "Write null for the null predicate" was position-agnostic advice: followed
136136
// at `$gt: undefined` it produced `$gt: null`, refused one door over since
137137
// the 2026-09-01 ruling; at an `$in` member it produced `$in: [null]`,
@@ -183,7 +183,7 @@ describe('refusals — the measured divergence rows die at the door', () => {
183183
});
184184
});
185185

186-
describe('bigint — accepted, and NARROWED copy-on-write (#7872; the memory crash cell dies here)', () => {
186+
describe('bigint — accepted, and NARROWED copy-on-write (the memory crash cell dies here)', () => {
187187
it('narrows an exact-range bigint to its number, without touching the caller’s object', () => {
188188
const original = { qty: { $eq: BigInt(100) } };
189189
const out = normalizeFilterComparandTypes(original);
@@ -222,7 +222,7 @@ describe('bigint — accepted, and NARROWED copy-on-write (#7872; the memory cra
222222
});
223223

224224
describe('boundaries the door deliberately does not cross', () => {
225-
it('leaves a FieldReference alone at every position — #5222/scalar comparison/#7597 own its fate', () => {
225+
it('leaves a FieldReference alone at every position — cross-field push-down, scalar comparison and the `$eq` lowering own its fate', () => {
226226
for (const filter of [
227227
{ amount: { $gt: { $field: 'budget' } } },
228228
{ amount: { $eq: { $field: 'budget' } } },
@@ -233,7 +233,7 @@ describe('boundaries the door deliberately does not cross', () => {
233233
}
234234
});
235235

236-
it('does not descend into a no-$-key plain object — nested-relation / deep-equality structure (#5869 boundary)', () => {
236+
it('does not descend into a no-$-key plain object — nested-relation / deep-equality structure', () => {
237237
const filter = { author: { name: 'x' } };
238238
expect(normalizeFilterComparandTypes(filter)).toBe(filter);
239239
});
@@ -252,18 +252,18 @@ describe('boundaries the door deliberately does not cross', () => {
252252
expect(normalizeFilterComparandTypes(retired)).toBe(retired);
253253
});
254254

255-
it('does not judge a non-array list-operator comparand — that SHAPE belongs to the engine’s #5869 gate', () => {
255+
it('does not judge a non-array list-operator comparand — that SHAPE is refused 400 by the engine’s shape gate', () => {
256256
const filter = { stage: { $in: 'won' } };
257257
expect(normalizeFilterComparandTypes(filter)).toBe(filter);
258258
});
259259

260-
it('keeps the zero-operator constraint for the driver refusal that names it (#5240)', () => {
260+
it('keeps the zero-operator constraint for the driver refusal that names it', () => {
261261
const filter = { qty: {} };
262262
expect(normalizeFilterComparandTypes(filter)).toBe(filter);
263263
});
264264
});
265265

266-
describe('parseFilterAST is the compile face that runs the door (#7872)', () => {
266+
describe('parseFilterAST is the compile face that runs the door', () => {
267267
it('judges the OBJECT passthrough — the form that used to leave unexamined', () => {
268268
const err = refusalOf(() => parseFilterAST({ qty: { $eq: Symbol('x') } }));
269269
expect(err?.code).toBe('INVALID_FILTER');

‎packages/spec/src/data/filter-cross-field-comparison-class.test.ts‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ const union = (...sets: ReadonlySet<string>[]) => new Set(sets.flatMap((s) => [.
4141
const cls = (c: string): CrossFieldColumnVerdict => ({ kind: 'class', class: c } as CrossFieldColumnVerdict);
4242
const none = (r: string): CrossFieldColumnVerdict => ({ kind: 'no-class', reason: r } as CrossFieldColumnVerdict);
4343

44-
describe('[#20347] the class table', () => {
44+
describe('the class table — one classification, read by every judge', () => {
4545
it('classifies every FieldType member exactly once — rows pairwise disjoint, union exactly FieldType', () => {
4646
const seen = new Map<string, string>();
4747
for (const row of CROSS_FIELD_COMPARISON_TYPE_CLASSES) {
@@ -107,7 +107,7 @@ describe('[#20347] the class table', () => {
107107
});
108108
});
109109

110-
describe('[#20347] crossFieldColumnVerdict — one declared column', () => {
110+
describe('crossFieldColumnVerdict — one declared column', () => {
111111
it('answers each FieldType member its row\'s verdict when declared single-valued', () => {
112112
for (const row of CROSS_FIELD_COMPARISON_TYPE_CLASSES) {
113113
for (const type of row.types) {
@@ -140,7 +140,7 @@ describe('[#20347] crossFieldColumnVerdict — one declared column', () => {
140140
});
141141
});
142142

143-
describe('[#20347] crossFieldComparisonVerdict — the measured cells', () => {
143+
describe('crossFieldComparisonVerdict — the measured cells', () => {
144144
it('text vs number is cross-class, in both orders', () => {
145145
expect(crossFieldComparisonVerdict({ type: 'text' }, { type: 'number' }))
146146
.toEqual({ verdict: 'cross-class', left: 'text', right: 'numeric' });
@@ -183,7 +183,7 @@ describe('[#20347] crossFieldComparisonVerdict — the measured cells', () => {
183183
});
184184
});
185185

186-
describe('[#20347] crossFieldComparisonVerdict — every pair of declared columns', () => {
186+
describe('crossFieldComparisonVerdict — every pair of declared columns', () => {
187187
// Every FieldType member single-valued, plus every multi-capable member
188188
// flagged `multiple: true`.
189189
const columns = [

‎packages/spec/src/data/filter-dotted-head.test.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { SEARCH_VIRTUAL_TYPES } from './search-fields';
2121
// DELIBERATELY unjudged (structured/JSON — live on two of three backends, the
2222
// carve-out the maintainer ruling names with a ⛔).
2323
// ---------------------------------------------------------------------------
24-
describe('[#8371] classifyDottedFilterHead — the FILTER axis dotted verdict', () => {
24+
describe('classifyDottedFilterHead — the FILTER axis dotted verdict, by the type of the head segment', () => {
2525
it('a relation head is refused: the stored value is a scalar id, not an embedded document', () => {
2626
expect(classifyDottedFilterHead({ type: 'lookup' })).toBe('relation');
2727
expect(classifyDottedFilterHead({ type: 'master_detail' })).toBe('relation');
@@ -37,7 +37,7 @@ describe('[#8371] classifyDottedFilterHead — the FILTER axis dotted verdict',
3737
}
3838
});
3939

40-
it('a virtual head is refused: the #8296 verdict finally reaching the dotted spelling', () => {
40+
it('a virtual head is refused: the unmaterializable-field verdict finally reaching the dotted spelling', () => {
4141
for (const type of SEARCH_VIRTUAL_TYPES) {
4242
expect(classifyDottedFilterHead({ type }), `'${type}' must classify as virtual`).toBe('virtual');
4343
}

‎packages/spec/src/data/filter-empty-operator.test.ts‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ function descriptionOf(shape: Record<string, unknown>, key: string): string | un
8282
// §1 The description IS the ruled table
8383
// ---------------------------------------------------------------------------
8484

85-
describe('#20311 §1 — the $empty description is the ruled per-type table', () => {
85+
describe('§1 — the $empty description is the ruled per-type table', () => {
8686
/** The ruled table, verbatim as the operator describes it. */
8787
const RULED_TABLE =
8888
'Is-empty check by the field\'s DECLARED type. `true` matches rows whose field is empty, '
@@ -118,7 +118,7 @@ describe('#20311 §1 — the $empty description is the ruled per-type table', ()
118118
// §2 The schema door: $empty parses; the empty list is still refused
119119
// ---------------------------------------------------------------------------
120120

121-
describe('#20311 §2 — { tags: { $empty: true } } parses; { tags: [] } is still refused', () => {
121+
describe('§2 — { tags: { $empty: true } } parses; { tags: [] } is still refused', () => {
122122
it('the enforced operator slot keeps a boolean $empty rather than stripping it', () => {
123123
// An undeclared key on this non-strict object is STRIPPED on parse; a
124124
// declared one survives. `toEqual` holding both values is the difference.
@@ -145,7 +145,7 @@ describe('#20311 §2 — { tags: { $empty: true } } parses; { tags: [] } is stil
145145
expect(NormalizedFilterSchema.safeParse({ $and: [{ tags: { $empty: 'yes' } }] }).success).toBe(false);
146146
});
147147

148-
it('the empty list stays refused in the equality slot — ruling 乙 on #19757 is untouched', () => {
148+
it('the empty list stays refused in the equality slot — the ruled refusal of an array there is untouched', () => {
149149
for (const [where, path] of [
150150
[{ tags: [] }, 'tags'],
151151
[{ tags: { $eq: [] } }, 'tags.$eq'],
@@ -178,7 +178,7 @@ describe('#20311 §2 — { tags: { $empty: true } } parses; { tags: [] } is stil
178178
// §3 The expansion: three arms for the three field kinds, and the value test
179179
// ---------------------------------------------------------------------------
180180

181-
describe('#20311 §3 — expandEmptyOperator answers the ruled arm per field definition', () => {
181+
describe('§3 — expandEmptyOperator answers the ruled arm per field definition', () => {
182182
it('is published on the data entry — the one function every compile surface imports', () => {
183183
expect(dataBarrel.expandEmptyOperator).toBe(expandEmptyOperator);
184184
expect(dataBarrel.isEmptyFilterValue).toBe(isEmptyFilterValue);
@@ -249,7 +249,7 @@ describe('#20311 §3 — expandEmptyOperator answers the ruled arm per field def
249249
// §4 The flip: in FILTER_OPERATORS, and the view operators lower to it
250250
// ---------------------------------------------------------------------------
251251

252-
describe('#20446 §4 — $empty is IN FILTER_OPERATORS and is_empty / is_not_empty lower to it', () => {
252+
describe('§4 — $empty is IN FILTER_OPERATORS and is_empty / is_not_empty lower to it', () => {
253253
it('is in FILTER_OPERATORS, beside the other value-presence flags', () => {
254254
// Inverted from #20311's staging pin (the maintainer's amendment, record
255255
// 5868169573): every compile face answers `$empty` now (#20444, #20445),

‎packages/spec/src/data/filter-equality-array-schema-door.test.ts‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ const REFUSED: ReadonlyArray<readonly [label: string, where: unknown, issuePath:
8787
// §1 FilterConditionSchema refuses both spellings, at the slot's own path
8888
// ---------------------------------------------------------------------------
8989

90-
describe('#19889 §1 — FilterConditionSchema refuses an array in the equality slot', () => {
90+
describe('§1 — FilterConditionSchema refuses an array in the equality slot', () => {
9191
it.each(REFUSED)('refuses %s', (_label, where, issuePath) => {
9292
const issue = issueAt(FilterConditionSchema.safeParse(where), issuePath);
9393
expect(issue.message).toMatch(/requires a single comparable value, but received an array/);
@@ -104,7 +104,7 @@ describe('#19889 §1 — FilterConditionSchema refuses an array in the equality
104104
// §2 FieldOperatorsSchema.$eq refuses — the enforced copy and the documented one
105105
// ---------------------------------------------------------------------------
106106

107-
describe('#19889 §2 — the $eq operator slot refuses an array', () => {
107+
describe('§2 — the $eq operator slot refuses an array', () => {
108108
it.each([
109109
['FieldOperatorsSchema (the enforced copy)', FieldOperatorsSchema],
110110
['EqualityOperatorSchema (the documentation copy)', EqualityOperatorSchema],
@@ -125,7 +125,7 @@ describe('#19889 §2 — the $eq operator slot refuses an array', () => {
125125
// §3 The parse-door message IS the compile-face message
126126
// ---------------------------------------------------------------------------
127127

128-
describe('#19889 §3 — one text, two doors', () => {
128+
describe('§3 — one text, two doors', () => {
129129
it.each(REFUSED)('%s — the schema door prints the face\'s sentence', (_label, where, issuePath, facePath) => {
130130
const face = faceRefusal(where);
131131
// The face is the ADR-0112 class-1 refusal it has been since #19757.
@@ -174,7 +174,7 @@ describe('#19889 §3 — one text, two doors', () => {
174174
// §4 CONTROLS — both doors accept, so the arm is exactly the face's
175175
// ---------------------------------------------------------------------------
176176

177-
describe('#19889 §4 — what stays accepted, at BOTH doors', () => {
177+
describe('§4 — what stays accepted, at BOTH doors', () => {
178178
const day = new Date('2026-07-01T00:00:00.000Z');
179179
it.each([
180180
['a string', { stage: 'won' }],
@@ -244,7 +244,7 @@ describe('#19889 §4 — what stays accepted, at BOTH doors', () => {
244244
// §5 The stored carriers refuse on save, naming the path
245245
// ---------------------------------------------------------------------------
246246

247-
describe('#19889 §5 — a stored filter carrier refuses the shape on save', () => {
247+
describe('§5 — a stored filter carrier refuses the shape on save', () => {
248248
const dataset = (extra: Record<string, unknown>) => ({
249249
name: 'deals_ds',
250250
label: 'Deals',

‎packages/spec/src/data/filter-field-reference-lowering.test.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ const EQUALITY_SPELLINGS = ['=', '==', 'equals', 'eq'] as const;
5353

5454
const REF = { $field: 'budget' } as const;
5555

56-
describe('[#7597] equality triples with a `{ $field }` comparand', () => {
56+
describe('equality triples with a `{ $field }` comparand — lowered to `$eq`, never a bare field spec', () => {
5757
// ── The fix ───────────────────────────────────────────────────────────────
5858

5959
for (const op of EQUALITY_SPELLINGS) {

‎packages/spec/src/data/filter-icontains-parse-door.test.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ function issueAt(
8080
// §1 the `$` dialect door — FilterConditionSchema
8181
// ---------------------------------------------------------------------------
8282

83-
describe('#19514 §1 — the $ dialect refuses what the table declares refused', () => {
83+
describe('§1 — the $ dialect refuses what the table declares refused', () => {
8484
it.each([
8585
['the EMPTY comparand', '', 'EMPTY STRING'],
8686
['a NUMBER comparand', 42, 'not a string'],
@@ -156,7 +156,7 @@ describe('#19514 §1 — the $ dialect refuses what the table declares refused',
156156
// §2 the infix/view dialect door — ViewFilterRuleSchema
157157
// ---------------------------------------------------------------------------
158158

159-
describe('#19514 §2 — the view vocabulary refuses the same two comparands', () => {
159+
describe('§2 — the view vocabulary refuses the same two comparands', () => {
160160
const rule = (value?: unknown) =>
161161
ViewFilterRuleSchema.safeParse(
162162
value === undefined
@@ -241,7 +241,7 @@ describe('#19514 §2 — the view vocabulary refuses the same two comparands', (
241241
// §3 both doors are DRIVEN BY the table, not by a copy of it
242242
// ---------------------------------------------------------------------------
243243

244-
describe('#19514 §3 — a row added to FILTER_TEXT_CASES reaches both doors', () => {
244+
describe('§3 — a row added to FILTER_TEXT_CASES reaches both doors', () => {
245245
it('the table still carries rows for this operator, so this suite is not vacuous', () => {
246246
expect(TABLE_ROWS.length).toBeGreaterThan(0);
247247
});

‎packages/spec/src/data/filter-like-code-point.test.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ const FAMILY: ReadonlyArray<readonly ['$like' | '$ilike', string, readonly strin
5757
const answer = (match: (v: string) => boolean): string[] =>
5858
Object.entries(ROWS).filter(([, v]) => match(v)).map(([label]) => label).sort();
5959

60-
describe('[#20143] matchesLikePattern — `_` is one code point', () => {
60+
describe('matchesLikePattern — `_` is one code point', () => {
6161
for (const [op, pattern, codePoint] of FAMILY) {
6262
it(`${op} ${JSON.stringify(pattern)} answers the code-point rows`, () => {
6363
expect(answer((v) => matchesLikePattern(v, pattern, op === '$ilike'))).toEqual([...codePoint]);
@@ -90,7 +90,7 @@ describe('[#20143] matchesLikePattern — `_` is one code point', () => {
9090
});
9191
});
9292

93-
describe('[#20143] likePatternToRegExp — the one compilation', () => {
93+
describe('likePatternToRegExp — the one compilation', () => {
9494
it('carries the `u` flag and nothing else (no `i`: the $ilike fold is in the source)', () => {
9595
expect(likePatternToRegExp('a_b').flags).toBe('u');
9696
expect(likePatternToRegExp('a_b', true).flags).toBe('u');
@@ -111,7 +111,7 @@ describe('[#20143] likePatternToRegExp — the one compilation', () => {
111111
});
112112
});
113113

114-
describe('[#20143] every ASCII punctuation character is `u`-legal, bare and escaped', () => {
114+
describe('every ASCII punctuation character is `u`-legal, bare and escaped', () => {
115115
/** Printable ASCII that is neither a letter nor a digit, space included: 33 characters. */
116116
const PUNCTUATION = Array.from({ length: 0x7f - 0x20 }, (_, i) => String.fromCharCode(0x20 + i))
117117
.filter((c) => !/[A-Za-z0-9]/.test(c));

‎packages/spec/src/data/filter-like-nul-pattern.test.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import {
2222

2323
const NUL = String.fromCharCode(0x00);
2424

25-
describe('[#20041] hasNulInLikePattern', () => {
25+
describe('hasNulInLikePattern — one predicate, so every door refuses a pattern holding U+0000', () => {
2626
it('finds U+0000 at the start, in the middle, at the end, and alone', () => {
2727
expect(hasNulInLikePattern(NUL + '%')).toBe(true);
2828
expect(hasNulInLikePattern('a' + NUL + 'b')).toBe(true);

‎packages/spec/src/data/filter-like-wire-lowering.test.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ import {
4848
matchesLikePattern,
4949
} from './filter.zod';
5050

51-
describe('[#7536] the wire lowering of `like` / `ilike`', () => {
51+
describe('the wire lowering of `like` / `ilike` — its own operator, never folded onto `$contains`', () => {
5252
// ── The card's repro table, as pins ───────────────────────────────────────
5353

5454
it('keeps a wildcard pattern INTACT — the `%` is the caller\'s, not a literal', () => {
@@ -153,7 +153,7 @@ describe('[#7536] the wire lowering of `like` / `ilike`', () => {
153153
});
154154
});
155155

156-
describe('[#7536] the `$like` pattern language', () => {
156+
describe('the `$like` pattern language', () => {
157157
// One definition, shared by every face — so these cases are the contract the
158158
// SQL emitters and the JS evaluator are BOTH held to.
159159

@@ -220,7 +220,7 @@ describe('[#7536] the `$like` pattern language', () => {
220220
});
221221
});
222222

223-
describe('[#7536] the LIKE → GLOB translation the SQLite dialects need', () => {
223+
describe('the LIKE → GLOB translation the SQLite dialects need', () => {
224224
// SQLite's `LIKE` folds ASCII case and cannot be told not to per statement,
225225
// so a case-exact pattern match has to use `GLOB` — which speaks a DIFFERENT
226226
// pattern language. These cases are what stops the two from being confused.

0 commit comments

Comments
 (0)