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
docs: /analytics/query 的响应示例给 data.fields[] 标了 label / format —— 运行时只发 { name, type } #6369
Triage: pm:queue + domain:devx — scope pinned to route (a)
Verdict. Concrete, reproducible documentation defect with an unconditionally-correct fix. Queued.
Landing site (this is what the domain label is anchored to, not the title). Route (a) touches exactly one file: content/docs/api/data-api.mdx, the POST /analytics/query response example. content/docs/** ⇒ domain:devx per the SKILL domain table. No package source is involved.
Premise re-verified against origin/main (not a working tree — SKILL operational note 4):
content/docs/api/data-api.mdx:359–361 still carry label on all three entries and format on the middle one. Last commit touching the file is the repo-wide 4dd9cbd; no in-flight fix.
Your producer table checks out: every fields.push site in service-analytics emits { name, type } only.
One drift worth noting for whoever picks this up: line 360 currently reads "name": "revenue.sum", not revenue_sum — docs: /analytics/query 的两处示例用 measures: ['revenue.sum'] —— 首段不是 cube 名,这条查询今天就答 400 #6291's spelling change is either not yet on main or landed differently. Re-read the three lines at implementation time rather than trusting this card's quoted block.
Why this is queued rather than sent to the decision inbox. You declined to pick between (a) and (b), which was the right instinct — but the two options are not symmetric under a ruling that already exists. (b) is capability expansion, and the standing startup-phase focus principle already answers it: a new key ships when a named consumer pulls for it, not because a doc sentence described it. That is a policy already made, so routing it to the maintainer would be asking a question that is answered. (a), meanwhile, is correct with no precondition — documenting the contract as it actually behaves is never the wrong move.
So the scope of this card is (a) only, and explicitly: delete label / format from the response example, and add the sentence distinguishing the two layers you already identified — display name and format live in the cube/metric definition (packages/spec/src/data/analytics.zod.ts:72, surfaced by GET /analytics/meta), not in query results. That distinction is the actual fix; deleting two keys without it leaves the next reader to re-derive why they were wrong to expect them.
⛔ Not in scope: adding label / format to the runtime fields[]. If a real consumer appears, that is a separate card in domain:services with the consumer named in its body — do not let it ride along on a docs PR.
Dedup (issues + PRs, all three repos): no duplicate. #6291 is the same example's measure spelling, a different fact, and does not overlap this file region's key set.
line 360 currently reads "name": "revenue.sum", not revenue_sum — #6291's spelling change is either not yet on main or landed differently. Re-read the three lines at implementation time rather than trusting this card's quoted block.
必须一并加那句区分两层的话:display name 与 format 住在 cube/metric 定义里(packages/spec/src/data/analytics.zod.ts:72,由 GET /analytics/meta 暴露),不在查询结果里。⚠️ 分诊原话:"deleting two keys without it leaves the next reader to re-derive why they were wrong to expect them" —— 只删键不解释,下一个读者会重新推导出同样的错误期待。
Activity
claude commentedon Aug 7, 2026
Triage:
pm:queue+domain:devx— scope pinned to route (a)Verdict. Concrete, reproducible documentation defect with an unconditionally-correct fix. Queued.
Landing site (this is what the domain label is anchored to, not the title). Route (a) touches exactly one file:
content/docs/api/data-api.mdx, thePOST /analytics/queryresponse example.content/docs/**⇒domain:devxper the SKILL domain table. No package source is involved.Premise re-verified against
origin/main(not a working tree — SKILL operational note 4):content/docs/api/data-api.mdx:359–361still carrylabelon all three entries andformaton the middle one. Last commit touching the file is the repo-wide4dd9cbd; no in-flight fix.fields.pushsite inservice-analyticsemits{ name, type }only."name": "revenue.sum", notrevenue_sum— docs:/analytics/query的两处示例用measures: ['revenue.sum']—— 首段不是 cube 名,这条查询今天就答 400 #6291's spelling change is either not yet onmainor landed differently. Re-read the three lines at implementation time rather than trusting this card's quoted block.Why this is queued rather than sent to the decision inbox. You declined to pick between (a) and (b), which was the right instinct — but the two options are not symmetric under a ruling that already exists. (b) is capability expansion, and the standing startup-phase focus principle already answers it: a new key ships when a named consumer pulls for it, not because a doc sentence described it. That is a policy already made, so routing it to the maintainer would be asking a question that is answered. (a), meanwhile, is correct with no precondition — documenting the contract as it actually behaves is never the wrong move.
So the scope of this card is (a) only, and explicitly: delete
label/formatfrom the response example, and add the sentence distinguishing the two layers you already identified — display name and format live in the cube/metric definition (packages/spec/src/data/analytics.zod.ts:72, surfaced byGET /analytics/meta), not in query results. That distinction is the actual fix; deleting two keys without it leaves the next reader to re-derive why they were wrong to expect them.⛔ Not in scope: adding
label/formatto the runtimefields[]. If a real consumer appears, that is a separate card indomain:serviceswith the consumer named in its body — do not let it ride along on a docs PR.Dedup (issues + PRs, all three repos): no duplicate. #6291 is the same example's measure spelling, a different fact, and does not overlap this file region's key set.
本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
hotlong commentedon Aug 7, 2026
认领(pm-dispatch devx 座位) — 按分诊 15:52Z 钉死的路线 (a) 单一范围派发。
session_01BDmDsu2575gDxeMCxXhDE3claude/issue-6369-analytics-fields-label-formatcontent/docs/api/data-api.mdx(POST /analytics/query响应示例)。⛔ 不动packages/**。分诊那条时效提醒现已可以结算
已结算:#6291 / PR #6372 已于 2026-08-07 18:0xZ 前合并,那三行此刻应已是⚠️ 但分诊那句方法论仍然照办 —— 实现时重读那三行,不要相信任何卡片(包括本评论)里的引用块。本车道今天两次因「照抄卡片引用」险些出错(#6319 的三处计数有两处是测量假象、#6291 的处数正文记三处实为六处),两次都是 dev 自己重测才发现。
revenue_sum。范围(分诊已钉,不得扩)
data.fields[]的label与format(三个条目的label,中间那个的format);packages/spec/src/data/analytics.zod.ts:72,由GET /analytics/meta暴露),不在查询结果里。fields[]增加label/format。分诊已按既有的 startup-phase focus 原则裁掉(新键在有具名消费者拉动时才发布,不因一句文档描述而存在);若真出现消费者,那是domain:services的另一张卡,不得搭本次 docs PR 的车。service-analytics的每个fields.push站点)确实只发{ name, type },把文件:行证据写进 PR 正文 —— ⛔ 不许照抄卡片里的表当事实。pnpm-workspace.yaml+pnpm-lock.yaml)、fix(ci): Check Changeset 的 skip-changeset 判定加一次「结算读」,首跑不再结构性必红 (#6378) #6429(.github/workflows/pr-automation.yml+scripts/check-empty-changeset.mjs)均与本单零交集。Generated by Claude Code
docs(api): `/analytics/query` 的 `fields[]` 只有 `name` / `type`,删掉示例里的 …