You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
analytics: a runtimeFilter member through an undeclared dotted path gets three different answers from the native, ObjectQL and preview faces #28557
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: queryDatasetruntimeFilter, 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).
Class (a), measured on all three faces; reach given. A runtimeFilter member through an undeclared dotted path: native DATASET_INVALID / 400, ObjectQL INVALID_FIELD / 400, preview [].
Claim: PM loop round 1 · card thread · 2026-11-01T12:23Z
Session: session_01FEkQ5kE5BrPUPNMMyv6oCH (the seat); the card thread is session_01FEkQ5kbUJTTWAxjV9nqr1P
Account: 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:server
Seat: domain:server#3
Ruling-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. ⛔ No packages/spec/**, ⛔ no ui/**.
Container & model: M, mode:thread, model: opus (--tier names 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 is queryDataset / /analytics/query over a dataset, with previewDrafts for the draft preview · reached by an author previewing or querying a dataset with a dotted dimension, time dimension or runtimeFilter member
Thread-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 current main
Serial constraints cleared: none: no open PR on service-analytics dataset paths found at this read; the dev re-reads overlap at start and before pr_create.
Resume-from: none — fresh from origin/main
State: → pm:dispatched, assigned to os-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).
ACCEPT → PR #28686 comment 6559595954 · head efa6f756 · 2026-11-01T14:58Z · landing sent (ready + auto-merge; Clause-②: no (narrowing), CONTRACT_REVIEW_TIER PASS 6558997053 + delta 6559465368). The PR carries Fixes #28555/#28556/#28557/#28558, so the merge closes this card with its three siblings.
Landed: merged as c01690ec. Fixes #28555/#28556/#28557/#28558 closed all four cards. A dataset member read through a relationship path now gets one INVALID_FIELD / 400 on all three faces (ObjectQL, native SQL, draft preview): the preview no longer serves a null group, [] or 0, 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 PASS (CONTRACT_REVIEW_TIER): base 6558997053 on c4f1e6c2, delta 6559465368 on the landed head efa6f756. Should-fix 3 (preview message attribution when the refused where leaf is the dataset's own filter) stays as recorded in the ACCEPT 6559595954.
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.