Skip to content

Commit 97923fd

Browse files
committed
docs(driver-memory): the $eq exemption's note says the null-list cells were RULED, not held (#15480)
The `$eq`-only exemption above the no-value guard justified its operator-shaped spelling by naming the cells it declined to move — `$in: [null]` / `$nin: [null]` — as "#13357's cells, `needs-user-decision`, held for the maintainer". That sentence stopped being true on 2026-08-31, when the maintainer ruled them (option C) and the shapes became REFUSED at the contract's validation entrance (`assertListComparandShapes`), with the negative pin `memory-null-list-member-unreachable.test.ts`. This is not wording polish. `needs-user-decision` is a live protocol state with a named reader — the maintainer's inbox. A source comment asserting a cell sits in that state, when the door two packages over refuses the shape by ruling, invites the next author to re-escalate a settled question into the most expensive queue in this repo. The same package already stated it correctly, twice: the `$gte: null` note 34 lines below in this file ("the 2026-08-31 ruling had refused the three siblings"), and the sibling header in `memory-matcher-null-value-and-comparand.test.ts` ("They were `needs-user-decision` when #13494/#13495/#13549 landed"). So the package stated the decision state two ways, and the stale one is the one an author reading this guard arrives at first. The exemption's REASONING is deliberately unchanged: writing it over the OPERATOR rather than over "the comparand is null" is still right, because a rule spelled 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. The note now says so, and says explicitly that the ruling is not a licence to re-spell the exemption. Comment-only. No arm, no guard condition, no behaviour: every added and removed line in the diff is a `//` comment. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ARYe3yQTQCUFm5qPYNgKaJ
1 parent 1157e7b commit 97923fd

1 file changed

Lines changed: 18 additions & 2 deletions

File tree

‎packages/drivers/driver-memory/src/memory-matcher.ts‎

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,8 +309,24 @@ function checkCondition(value: any, condition: any): boolean {
309309
// ⚠️ `$eq` ONLY, deliberately. The exemption is written over the
310310
// OPERATOR and not over "the comparand is null", because the latter
311311
// spelling would have moved `$in: [null]` / `$nin: [null]` with it —
312-
// and those are #13357's cells, `needs-user-decision`, held for the
313-
// maintainer. They are measured byte-identical across this change.
312+
// and those were #13357's cells, `needs-user-decision`, held for the
313+
// maintainer when this landed. They are measured byte-identical
314+
// across this change.
315+
//
316+
// ⛔ They are NOT held any more, and a reader arriving here must not
317+
// escalate them a second time: the maintainer ruled them on 2026-08-31
318+
// (option C, #13357) and the shapes are REFUSED at the contract's
319+
// validation entrance (`assertListComparandShapes`) — the same door the
320+
// `$gte: null` note below records for the ordering position — with the
321+
// negative pin `memory-null-list-member-unreachable.test.ts`, and the
322+
// sibling header in `memory-matcher-null-value-and-comparand.test.ts`
323+
// already says so in the past tense.
324+
//
325+
// ⛔ That ruling is NOT a reason to re-spell this exemption over "the
326+
// comparand is null". The reason above is unchanged: a rule written
327+
// over the VALUE would still reach arms whose no-value answer is ruled
328+
// elsewhere. Only the cells' STATE moved — refused at the door, rather
329+
// than held for a ruling.
314330
if (value === undefined && op !== '$exists' && op !== '$null' && op !== '$eq'
315331
&& !noValueSatisfiesNegation(op)) {
316332
return false;

0 commit comments

Comments
 (0)