Filing gate: ① a product defect with a measured reach:. Finding class (b). reach: is the published export MemoryAnalyticsService.query of @objectstack/driver-memory, the same door #20661 was filed and graded on. The #5930 investigation measured it by probe at 3711e0b763 (os-dev-report 5900611736 on #5930, out_of_scope_findings[1]; PR #20732's design doc §2.4 F5 row and §2.5 item 2). No HTTP door was measured, and no in-repo door constructs the service (recorded on #20661). The readings are the dev's; the seat read the named code on origin/main.
Filed by the domain:engine execution seat 1 (session_01DEvba2nBuD4tWzfq8r8NFY, os-support-ai). ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim. Reader: triage, then the seat of the lane that owns packages/drivers/driver-memory.
What happens
Fixture: d holds 'v1' on row 1 and 'v2' on row 2, is null on row 3, and is absent on row 4.
cube where |
rows |
the shared door's answer |
{d: undefined} |
[3,4], exactly as {d: null} |
INVALID_FILTER / 400 |
{d: {$eq: undefined}} |
[3,4] |
400 |
{d: {$ne: undefined}} |
[1,2] |
400 |
{d: {$in: ['v1', undefined]}} |
[1] |
400 |
controls: no where, {d: 'v1'}, {d: null} |
[1,2,3,4], [1], [3,4] |
— |
Every other face measured behind its production seam refuses these shapes with INVALID_FILTER / 400. That covers the engine, the RLS compile seam, the analytics where and preview doors, and the read scope.
Contract
Scope for whoever takes it
- The cube face runs both shared comparand doors before it lowers the
where, as the analytics where door does.
- Pins: the table above, each shape answering
INVALID_FILTER / 400 on query and on generateSql, with the three controls unchanged.
Dedupe
search_issues in objectstack-ai/objectstack, open and closed:
Dedupe words: MemoryAnalyticsService undefined comparand · memory cube face comparand door · memory-analytics normalizeFilterComparandTypes
Generated by Claude Code
Filing gate: ① a product defect with a measured
reach:. Finding class (b).reach:is the published exportMemoryAnalyticsService.queryof@objectstack/driver-memory, the same door #20661 was filed and graded on. The #5930 investigation measured it by probe at3711e0b763(os-dev-report5900611736 on #5930,out_of_scope_findings[1]; PR #20732's design doc §2.4 F5 row and §2.5 item 2). No HTTP door was measured, and no in-repo door constructs the service (recorded on #20661). The readings are the dev's; the seat read the named code onorigin/main.Filed by the
domain:engineexecution seat 1 (session_01DEvba2nBuD4tWzfq8r8NFY,os-support-ai). ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim. Reader: triage, then the seat of the lane that ownspackages/drivers/driver-memory.What happens
Fixture:
dholds'v1'on row 1 and'v2'on row 2, isnullon row 3, and is absent on row 4.where{d: undefined}[3,4], exactly as{d: null}INVALID_FILTER/ 400{d: {$eq: undefined}}[3,4]{d: {$ne: undefined}}[1,2]{d: {$in: ['v1', undefined]}}[1]where,{d: 'v1'},{d: null}[1,2,3,4],[1],[3,4]Every other face measured behind its production seam refuses these shapes with
INVALID_FILTER/ 400. That covers the engine, the RLS compile seam, the analyticswhereand preview doors, and the read scope.Contract
@objectstack/specfilter-comparand-type.ts(ruling driver-memory has no policy for an unsupported comparand TYPE: aBigIntcrashes with a raw mingoTypeError, and four other types silently answer zero rows #7872) "refuses everything else loudly at the compile face",undefinedincluded.undefined比较数被发射器读作 null、却被守卫/校验读作「值」—— turso local 抛裸 knex 错、remote 静默答 IS NULL(实测,origin/main) #6050 ruling B:undefinedin a comparand position is rejected, as recorded on [finding] 仓内存在 5 个独立的过滤器→谓词编译器,每次语义裁决成本 ×5 —— 值得立「谓词编译收敛」调查程序(#5298 成本清单副产品) #5930 (5214990870).origin/main:packages/drivers/driver-memory/src/memory-analytics.tscalls neitherassertListComparandShapesnornormalizeFilterComparandTypes(0 occurrences). Itswheregoes straight intonormalizeFilters.Scope for whoever takes it
where, as the analyticswheredoor does.INVALID_FILTER/ 400 onqueryand ongenerateSql, with the three controls unchanged.Dedupe
search_issuesinobjectstack-ai/objectstack, open and closed:driver-mongodbalone answers it, as an exact-array match #19757 (the implicit-equality array slot) and driver-memory's reference matcher answers{$eq: null}with NO MATCH on a MISSING key — it is the one surface of five that does not read$eq: nullas the null predicate (#5332) #13494 (the reference matcher's$eq: null), both closed; neither is this face.where$ltebare day on a declareddatetimefield drops the rest of that day —comparandsForconverts to storage form before the whole-day rule runs #20661 and PR fix(driver-memory): a cube $lte on a bare day keeps the whole day on a declared datetime field (#20661) #20714 (landed) fixed this face's whole-day order, not its doors.Dedupe words:
MemoryAnalyticsService undefined comparand·memory cube face comparand door·memory-analytics normalizeFilterComparandTypesGenerated by Claude Code