Skip to content

filter-logic-conformance.ts now records three FALSE cells, and the $exists row it says cannot be enrolled yet has become enrollable — the backends moved in #13195 #13531

Description

@claude

Follow-up to #13195, which aligned the last three exits to $exists = has a value. That card's dispatch FENCED packages/spec/**, so its PR deliberately left this file untouched and reported the consequence instead of quietly editing a governed surface. This is that consequence, filed so it is not lost.

No gate is red. check-driver-conformance.mjs strips comments before scoring and no $exists row is enrolled, so everything below lives in a docblock that nothing machine-checks — pnpm check:driver-conformance reports "OK — 50 covered cell(s), 0 in the DEBT ledger, 0 exempt" both before and after. That is exactly why it needs a card rather than a gate to catch it.

What is now false in packages/spec/src/data/filter-logic-conformance.ts

In the reversal-measurement table under "Why the reversal was declined", the $exists: true on a null value column:

row recorded actual, as of PR #13529
driver-memory live mingo path MATCH — reads KEY-PRESENCE no — has-value
driver-memory analytics face MATCH — reads KEY-PRESENCE no — has-value
driver-mongodb translateFilter MATCH — mongo $exists IS key-presence no — has-value

And the warning paragraph beneath it, which still reads:

  • "Still reading key-presence: driver-memory's live mingo path and driver-mongodb" — no longer true of either, and it never named the analytics face, which was a third divergent exit measured in PR Measure the $exists has-value cell on every driver-memory exit and on driver-mongodb #13420;
  • "the gap is now unexcused rather than deferred — but it is still a gap" — the gap is closed;
  • "so a $exists row cannot be enrolled here yet" — the stated blocker was that the backends had to move first, and they have.

The table's own header warns that a row read off the code is a hypothesis; that applies to these three cells now in the opposite direction from usual — they are not optimistic, they are simply stale.

The enrolment this unblocks

#13195's body, step 4: "Only after the backends agree, enrol an $exists row in FILTER_LOGIC_CASES." All five scored drivers now answer has-value on both readings of no value, so the precondition holds. Worth carrying into that work:

  1. The DEBT ledger in scripts/check-driver-conformance.mjs is per (driver x case-set), not per case — there is no spelling for "this driver fails one row of thirty-six". Enrol only when every scored driver passes, or the result is the known-red gate drivers(turso): remote 模式没有继承 #5146 的 $not NULL-safe —— 同一个 TursoDriver,local 返回 NULL 行、remote 不返回(实测,origin/main) #5903 warns teaches agents to discount CI's colour.
  2. Enrol both directions. $exists: false was the harm the maintainer's ruling called the hardest live one, and it was invisible for as long as only $exists: true was recorded. A single-direction row would rebuild that blind spot.
  3. The two readings of no value are NOT interchangeable here. Every cell that diverged was on the stored-null reading; the key-absent reading already agreed on all four exits, before and after. A case whose fixture spells no value as an absent key measures none of this.
  4. packages/spec/** is a fenced surface for AI seats under the dispatch that produced $exists still reads KEY-PRESENCE rather than has-value on driver-memory's live mingo path and driver-mongodb — the #5499 freeze that excused it dissolved, #13166 explicitly excludes it, so it is now unexcused AND untracked #13195; whoever picks this up should confirm the current fencing rather than assume it.

Related

#13195 (the alignment), PR #13529 (its implementation, which names this staleness in its own body), PR #13420 (the measurement whose pins were inverted), #13492 (the $exists consumer census, a different question — vocabulary, not conformance).


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions