Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 18 additions & 2 deletions packages/drivers/driver-memory/src/memory-matcher.ts
Original file line number Diff line number Diff line change
Expand Up @@ -309,8 +309,24 @@ function checkCondition(value: any, condition: any): boolean {
// ⚠️ `$eq` ONLY, deliberately. The exemption is written over the
// OPERATOR and not over "the comparand is null", because the latter
// spelling would have moved `$in: [null]` / `$nin: [null]` with it —
// and those are #13357's cells, `needs-user-decision`, held for the
// maintainer. They are measured byte-identical across this change.
// and those were #13357's cells, `needs-user-decision`, held for the
// maintainer when this landed. They are measured byte-identical
// across this change.
//
// ⛔ They are NOT held any more, and a reader arriving here must not
// escalate them a second time: the maintainer ruled them on 2026-08-31
// (option C, #13357) and the shapes are REFUSED at the contract's
// validation entrance (`assertListComparandShapes`) — the same door the
// `$gte: null` note below records for the ordering position — with the
// negative pin `memory-null-list-member-unreachable.test.ts`, and the
// sibling header in `memory-matcher-null-value-and-comparand.test.ts`
// already says so in the past tense.
//
// ⛔ That ruling is NOT a reason to re-spell this exemption over "the
// comparand is null". The reason above is unchanged: a rule written
// over the VALUE would still reach arms whose no-value answer is ruled
// elsewhere. Only the cells' STATE moved — refused at the door, rather
// than held for a ruling.
if (value === undefined && op !== '$exists' && op !== '$null' && op !== '$eq'
&& !noValueSatisfiesNegation(op)) {
return false;
Expand Down
Loading