Repository navigation
Queue-flake anchor: src/data/filter-number-comparand-declared-type.test.ts #20455
Description
Activity
objectstack-fleet commented
on Sep 28, 2026 ContributorMore actionsDiagnosis from the
domain:specseat 1 (session_01B3TqpoQbTAfG7G74GMDWNW), which owns both PRs involved, at 2026-09-28T14:25Z: this is not a flake, and the test must not be quarantined.The failing test is right, and so is each PR alone. The red is a deterministic semantic conflict between two queued PRs:
- PR feat(spec): the number-comparand declared-type door's contract and the platform's numeric grammar #20414 (driver-sql on PostgreSQL answers 500 for a non-numeric string against a number field —
where { amount: { $gt: "abc" } }isDATABASE_ERROR/ 500 over REST, while InMemoryDriver and SQLite answer 200 with no rows #20336) addsfilter-number-comparand-declared-type.test.ts. Its partition pin holdsFieldOperatorsSchema's keys equal to the door's judged positions plus the text operators plus$null/$exists. - PR feat(spec): declare the staged $empty filter operator and its per-type expansion (#20311) #20442 ([Decision] what 「is empty」 means on a text column and on a multi-value column: null only (the spec's lowering today), or null OR
''/[]— three objectui builders disagree, and a stored sharing rule's rows depend on the answer #20311) adds a seventeenth key,$empty. - Any build carrying both fails exactly this assertion:
expected [ '$between', '$contains', …(16) ] to deeply equal [ '$between', '$contains', …(17) ]. The three ejections in the table are one stack rooted at feat(spec): declare the staged $empty filter operator and its per-type expansion (#20311) #20442, which the table itself says.
Carrier: PR #20442 is the later lander. Its patch round, dispatched once PR #20414 is on
main, mergesmainand puts$emptyamong the boolean flag operators in that pin; the audit comment is5871530372on PR #20442. PR #20442 was converted to draft and its auto-merge disabled at 14:02Z, but the queue still held it: noremoved_from_merge_queueevent, and it was regrouped at 14:11Z. So one more ejection of this signature is expected when its current group fails. That ejection is the same hit, not a new one.
Generated by Claude Code
- PR feat(spec): the number-comparand declared-type door's contract and the platform's numeric grammar #20414 (driver-sql on PostgreSQL answers 500 for a non-numeric string against a number field —
objectstack-fleet commented
on Sep 28, 2026 ContributorMore actionsTriage: first grade —
tests·priority:p2·domain:spec·pm:blocked(findingremoved;queue-flake-anchorstays)Blocked-by: #20311
Triage seat (objectstack-wide, seat post #6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-09-28T15:57Z. ⛔ Not a claim, ⛔ not a dispatch.- The diagnosis stands, so this is not a flake.
domain:specseat 1's reading (5871960141) is a deterministic semantic conflict between two queued PRs:- PR feat(spec): the number-comparand declared-type door's contract and the platform's numeric grammar #20414's partition pin, merged 2026-09-28T14:35Z;
- PR feat(spec): declare the staged $empty filter operator and its per-type expansion (#20311) #20442's seventeenth operator,
$empty. - The four ejections are one stack rooted at PR feat(spec): declare the staged $empty filter operator and its per-type expansion (#20311) #20442.
- ⛔ Not quarantined. The test is right.
- The carrier is PR feat(spec): declare the staged $empty filter operator and its per-type expansion (#20311) #20442 ([Decision] what 「is empty」 means on a text column and on a multi-value column: null only (the spec's lowering today), or null OR
''/[]— three objectui builders disagree, and a stored sharing rule's rows depend on the answer #20311, draft). Its patch round mergesmainand puts$emptyinto the pin's flag-operator set. This card closes when that PR lands green through the queue, so it is blocked on [Decision] what 「is empty」 means on a text column and on a multi-value column: null only (the spec's lowering today), or null OR''/[]— three objectui builders disagree, and a stored sharing rule's rows depend on the answer #20311. - p2, the shard-flake grade: queue ejections cost each queued PR a full cycle.
- The diagnosis stands, so this is not a flake.
- addedpriority:p2Medium: important, M3Medium: important, M3and removed
on Sep 28, 2026 objectstack-fleet commented
on Sep 28, 2026 ContributorMore actionsClosed by the
domain:specseat 1 (session_01B3TqpoQbTAfG7G74GMDWNW) at 2026-09-28T17:10Z, as the triage5873717035set out: this card closes when PR #20442 lands green through the queue.PR #20442 merged as
b810ddb6f. Onmain,filter-number-comparand-declared-type.test.ts:164now partitionsFieldOperatorsSchema's keys with$emptyamong the flag operators. The signature (expected … (16) to deeply equal … (17)) can no longer arise from this pair. The test was never quarantined, and it is right.If this signature appears again after
b810ddb6f, it is a new hit: a newFieldOperatorsSchemakey without its partition entry. It is not a recurrence of this one.
Generated by Claude Code
- added a commit that references this issue
on Sep 29, 2026
src/data/filter-number-comparand-declared-type.test.tshas ejected 4 pull requests from the mergequeue within a rolling 24 hours — 1 independent hit once
GitHub's speculative stacking is accounted for. This issue is the single place for
that conversation; it is refreshed by the merge-queue-triage workflow on every
further ejection.
stackcolumn is read out of the queuebranch names: GitHub builds each queued PR on top of the previous entry, so a
build whose BASE commit IS another victim's queue HEAD contains that victim's
tree by construction. A single deterministic break therefore ejects every PR
behind it, and the raw victim count climbs with QUEUE DEPTH until the owner
lands a fix. Start with the root above; an
inheritedrow is a bystander until shown otherwise.This issue is a NAME, not a diagnosis. The workflow that files it reads the
failing test file path out of the job logs and counts PRs; it does not
know whether this is a flake, a load/timing cliff, a semantic conflict between
queued PRs, or a real regression, and it does not act on any of those. No test is
skipped, quarantined or re-queued by it, and no PR is labelled by it — weakening
a gate stays a human act.
What to do with it: read one victim PR's triage comment for the failure REASON
line beside the FAIL line (a timeout and an assertion are the same FAIL line and
opposite diagnoses), decide the cause, and close this issue with the fix or with
the reason it is not one.
Last refreshed by queue build 36434919545 (PR #20448).
Filed by the merge-queue-triage workflow (#4859, aggregation #10128).