Description
domain:server#1 · os-project-manager · session_01R1q2xdtYgU6FKrZ7LgjPCC
Filing gate: ① out-of-scope finding of the #28258 dev (PR #28553, os-dev-report 6554100004 on #28258), class a, measured. Filed by domain:server seat 1. ⛔ Not a claim. No grade: triage sets the lane and grade.
Reach: queryDataset runtimeFilter, measured on all three faces. A member through an undeclared path (account.name): native answers DATASET_INVALID / 400, ObjectQL answers INVALID_FIELD / 400 (cross-object filter), and the draft preview answers []. Same family as #28258, on the filter face rather than the dimension face.
Business reason: the same dashboard filter refuses with two different codes depending on the strategy, and the preview shows an empty result instead of a refusal, so neither the console nor an author can rely on one answer.
Wanted
One answer on all three faces for an undeclared dotted runtimeFilter member, chosen the way #28258 chose it for dimensions.
Dedupe
Searched open and closed issues for runtimeFilter dotted (17 hits): only #28258 (dimension face) and closed precedents. New.
Reader who acts: domain:server (packages/services/service-analytics, the dataset compiler and the draft preview path).
Links back: #28258, PR #28553, #28201 (the preview undeclared-dimension precedent, closed)
Activity
objectstack-fleet commentedon Nov 1, 2026
domain:server#3 · os-project-manager · session_01FEkQ5kE5BrPUPNMMyv6oCH
Path: 错的必须被响亮拒绝并给处方 | none | P③
Triage: p3 ·
domain:server·area:reports· 2026-11-01T12:17Z⛔ Not a claim.
runtimeFiltermember through an undeclared dotted path: nativeDATASET_INVALID/ 400, ObjectQLINVALID_FIELD/ 400, preview[].INVALID_FIELD/ 400 naming the member on all three faces, the shape analytics: a dotted dimension whose join the dataset does not back gets three different answers from native, ObjectQL and the draft preview #28258 settled for dimensions (triage6532297703, seat ruling in claim6553559505). Moving the native face offDATASET_INVALIDfor this one case is a wire change: the PR statesClause-②and measures consumers ofDATASET_INVALIDfor aruntimeFiltermember, as PR fix(service-analytics)!: a dataset dimension spelled through a relationship path the dataset does not declare is refused INVALID_FIELD on the native, ObjectQL and draft-preview faces #28553 did; a real consumer brings it back here as a decision card and only the preview half lands.objectstack-fleet commentedon Nov 1, 2026
domain:server#3 · os-project-manager · session_01FEkQ5kE5BrPUPNMMyv6oCH
Claim: PM loop round 1 · card thread · 2026-11-01T12:23Z
Session:
session_01FEkQ5kE5BrPUPNMMyv6oCH(the seat); the card thread issession_01FEkQ5kbUJTTWAxjV9nqr1PAccount:
os-project-manager(the seat's linked user; the card's assignee)Branch:
claude/project-thread-0o422x(the card thread's harness-pinned branch; it names no issue, so this claim is the identity record)Worktree: the card thread's own container checkout
Domain:
domain:serverSeat:
domain:server#3Ruling-ref: the maintainer, 2026-11-01T03:46Z: 「server 车道现在就是你负责,任务有一大堆啊,都可以派,包括 p3」, with 2026-10-26T10:29Z 「p1 p2 处理完了,就可以处理 p3」, and 2026-11-01T06:39Z 「server 队列还是很多任务,再开一个席位吧」. Leehom 2026-11-01T12:11Z: 「定级你可以自己决定」; graded by seat 3 (triage record on this card).
File surface:
packages/services/service-analytics/src/**(the dataset compiler, the native and ObjectQL strategies, the draft-preview path), tests on real SQLite, and a changeset. ⛔ Nopackages/spec/**, ⛔ noui/**.Container & model:
M,mode:thread,model: opus(--tiernames no path mandate: PM's call, default),effort: default (the coordinator sets effort only from the maintainer's words)Clause-②: no (narrowing) — expected where a face stops serving something it served, which owes a contract review before landing; the dev measures and declares the final value.
Metadata-protocol: none (expected; the dev measures and declares)
Responsibility: the code is
service-analytics(dataset compiler and draft preview) · the platform path isqueryDataset//analytics/queryover a dataset, withpreviewDraftsfor the draft preview · reached by an author previewing or querying a dataset with a dotted dimension, time dimension or runtimeFilter memberThread-read: 6557825499
Premise: holds as filed (measured by the #28258 dev on real SQLite at
eeec88d14); PR #28553 closed only the unbacked-dimension half; the dev re-measures first on currentmainSerial constraints cleared: none: no open PR on
service-analyticsdataset paths found at this read; the dev re-reads overlap at start and beforepr_create.Resume-from: none — fresh from
origin/mainState: →
pm:dispatched, assigned toos-project-manager, recorded by this claim. Order:pm-orders/server/order-28555.md(project folder; one order, one card thread, one PR for #28555, #28556, #28557 and #28558).objectstack-fleet commentedon Nov 1, 2026
domain:server#3 · os-project-manager · session_01FEkQ5kE5BrPUPNMMyv6oCH
ACCEPT → PR #28686 comment 6559595954 · head
efa6f756· 2026-11-01T14:58Z · landing sent (ready + auto-merge;Clause-②: no (narrowing),CONTRACT_REVIEW_TIERPASS 6558997053 + delta 6559465368). The PR carriesFixes #28555/#28556/#28557/#28558, so the merge closes this card with its three siblings.objectstack-fleet commentedon Nov 1, 2026
domain:server#3 · os-project-manager · session_01FEkQ5kE5BrPUPNMMyv6oCH
Landing record · #28557 · PR #28686
domain:serverseat 3 ·session_01FEkQ5kE5BrPUPNMMyv6oCH· 2026-11-01T15:15Zgit ls-remote origin 'refs/heads/gh-readonly-queue/main/pr-28686-*'git merge-base --is-ancestor c01690ec origin/maingit grep -n "assertPreviewJoinsNothing" origin/main -- packages/services/service-analytics/src/analytics-service.tsc01690ec.Fixes #28555/#28556/#28557/#28558closed all four cards. A dataset member read through a relationship path now gets oneINVALID_FIELD/ 400 on all three faces (ObjectQL, native SQL, draft preview): the preview no longer serves anullgroup,[]or0, an undeclared path is refused on time dimensions and filter members too, and a declared path to a missing related column (dimension, filter or measure) is refused before SQL instead of a 500.CONTRACT_REVIEW_TIER): base6558997053onc4f1e6c2, delta6559465368on the landed headefa6f756. Should-fix 3 (preview message attribution when the refusedwhereleaf is the dataset's own filter) stays as recorded in the ACCEPT6559595954.mainatc01690ecor later.