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
Re-triage after the dispatch handback (comments 5224290471 / 5224300457): domain:spec → domain:services, pm:queue restored. This seat is the routing producer, so the relabel is applied here rather than debated.
Operative scope (route A from the dev report, which supersedes the title/body's refuted translator framing): populate label in buildFieldMeta from the compiled cube, in both strategies. Verified on origin/main @ a36db28: native-sql-strategy.ts:790 declares Array({ name: string; type: string }) and pushes { name, type } only; the objectql strategy's buildFieldMeta is the same shape; dataset-executor.ts:1041 already documents the adjacent #5537 consequence. The dataset contract declares dimensions[].label / measures[].label (I18nLabelSchema), and three consumers already read fields[].label first — declared-but-never-delivered with readers in place is a restore-invariant, zero new authorization face, which is why this goes to the queue and not the maintainer's inbox.
Boundaries carried forward unchanged: direction 2 (_datasets/_reports translator face) stays out, parked for v18 per the 2026-08-06 triage ruling. Escalation trigger for the dev: if delivering the label turns out to require a new wire key rather than populating the already-declared one, stop and return needs_decision.
Adjacent, not duplicates (cross-links):#5141 (report renderer ignores the measure label it is handed — renderer side), #5076 (i18n bundle never applied on analytics surfaces). Different mechanisms; this card is the producer side.
Claim history re-read before assigning: the earlier claim (session_011M7UwH25Unfi73UHim7ajY, i18n sweep) was released by its own handback (comments 5224290471 / 5224300457) after its dev falsified the card's original premise, and the re-triage at 05:58Z routed the card here with an operative scope. No live competing claim.
Dispatching route A exactly as the re-triage framed it: populate label in buildFieldMeta from the compiled cube in both strategies (native-sql-strategy.ts, objectql-strategy.ts), so the dimensions[].label / measures[].label the dataset contract already declares reach the three consumers that already read fields[].label first. Boundaries carried into the dispatch verbatim: direction 2 (_datasets/_reports translator face) stays out and parked for v18; escalation trigger — if delivering the label turns out to need a new wire key rather than populating the already-declared one, the dev stops and returns needs_decision rather than inventing surface. The refuted translator framing in the title/body is superseded by route A; the title will be corrected at merge.
反向验证也倒过来做了(没有「我的修复」可撤,就去撤已发货的富化):摘掉那两行 ⇒ 17 条 pin 转红,其中两条的用例名直接点题(enriches measure fields with their display label + format、enriches dimension columns with their dataset display label)。这 17 条就是「route A 的前提不成立」的最硬证据。
Activity
os-zhuang commentedon Aug 6, 2026
分诊(spec 车道欠账代扫,维护者 2026-08-05 指令):挂
pm:queue,附 PM 方向裁定(留否决窗口)——方向 1 先行:resolveDatasetLabel在 dimension 命中真实字段名时回落字段翻译(类比 #5165 已合修法,零新授权面,符合维护者「聚焦不铺大」口径与正文自己的倾向);剩余改名 dimension 维持英文记台账。方向 2(_datasets/_reports新翻译面)不在本单——那是新授权面,须按 #4001 战役标准另立单挂 v18。派发词写明:先测 translator 管线实际结构,实测推翻方向 1 时按 needs_decision 返回勿硬做。不构成认领。会话:session_01N3uGFF8teXbpgtbEJ1aYXuGenerated by Claude Code
os-zhuang commentedon Aug 8, 2026
Re-triage after the dispatch handback (comments 5224290471 / 5224300457):
domain:spec→domain:services,pm:queuerestored. This seat is the routing producer, so the relabel is applied here rather than debated.Operative scope (route A from the dev report, which supersedes the title/body's refuted translator framing): populate
labelinbuildFieldMetafrom the compiled cube, in both strategies. Verified onorigin/main@a36db28:native-sql-strategy.ts:790declaresArray({ name: string; type: string })and pushes{ name, type }only; the objectql strategy'sbuildFieldMetais the same shape;dataset-executor.ts:1041already documents the adjacent #5537 consequence. The dataset contract declaresdimensions[].label/measures[].label(I18nLabelSchema), and three consumers already readfields[].labelfirst — declared-but-never-delivered with readers in place is a restore-invariant, zero new authorization face, which is why this goes to the queue and not the maintainer's inbox.Boundaries carried forward unchanged: direction 2 (
_datasets/_reportstranslator face) stays out, parked for v18 per the 2026-08-06 triage ruling. Escalation trigger for the dev: if delivering the label turns out to require a new wire key rather than populating the already-declared one, stop and return needs_decision.Adjacent, not duplicates (cross-links): #5141 (report renderer ignores the measure
labelit is handed — renderer side), #5076 (i18n bundle never applied on analytics surfaces). Different mechanisms; this card is the producer side.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
os-project-manager commentedon Aug 8, 2026
CLAIM — services-lane PM session
session_01USNUyHEr7uaU6MoEWXitei, branchclaude/issue-5199-dataset-field-label.Claim history re-read before assigning: the earlier claim (
session_011M7UwH25Unfi73UHim7ajY, i18n sweep) was released by its own handback (comments 5224290471 / 5224300457) after its dev falsified the card's original premise, and the re-triage at 05:58Z routed the card here with an operative scope. No live competing claim.Dispatching route A exactly as the re-triage framed it: populate
labelinbuildFieldMetafrom the compiled cube in both strategies (native-sql-strategy.ts,objectql-strategy.ts), so thedimensions[].label/measures[].labelthe dataset contract already declares reach the three consumers that already readfields[].labelfirst. Boundaries carried into the dispatch verbatim: direction 2 (_datasets/_reportstranslator face) stays out and parked for v18; escalation trigger — if delivering the label turns out to need a new wire key rather than populating the already-declared one, the dev stops and returns needs_decision rather than inventing surface. The refuted translator framing in the title/body is superseded by route A; the title will be corrected at merge.Generated by Claude Code
os-project-manager commentedon Aug 8, 2026
关闭:两次范围先后被实测证伪;存活的那个缺口已另立 #6761(决策箱)。 派发不产出 PR —— dev 按派发令的「实测推翻即停」条款停手,未硬做。
第二次证伪(本轮,route A)
派发范围来自 05:58Z 重分诊:「
DatasetResultField.label从未被填充,在两个 strategy 的buildFieldMeta从 compiled cube 补上」。该前提为假:label早已被填充,只是不在buildFieldMeta,而在策略返回之后的富化层AnalyticsService.queryDataset(measures ~:1095-1130,dimensions ~:1161-1177)。这一层在重分诊所引的那个 commit (a36db28) 上与origin/main逐字节相同(git show对比过);label: 'Owner'⇒ 下发[{name:'owner',type:'string',label:'Owner'}, …],objectql 与 native-sql 一致;buildFieldMeta只发{name,type}」这句话本身没错,但它不是交付缝——而且这是刻意的:dataset-executor.ts的 [17.0-rc2验收] analytics: 带 measure-scoped filter / derived 度量的 dataset 查询,响应 fields 丢失维度描述符 → 表头回退成原始维度名(如 "owner" 而非 "Owner") #5537 注释明写拒绝在第四个地方重新推导 descriptor 集合。照 route A 硬做会有害,不只是冗余:compiled cube 的 label 在
dataset-compiler.ts:374/406缺省回落为机器名(typeof d.label === 'string' ? d.label : d.name),而下游富化带if (f.label == null)守卫 —— 一个没声明 label 的 dataset 会被发出label:'owner',并永久顶掉本该由文档提供的标签。反向验证也倒过来做了(没有「我的修复」可撤,就去撤已发货的富化):摘掉那两行 ⇒ 17 条 pin 转红,其中两条的用例名直接点题(
enriches measure fields with their display label + format、enriches dimension columns with their dataset display label)。这 17 条就是「route A 的前提不成立」的最硬证据。第一次证伪(2026-08-08 03:2xZ,i18n sweep 座位)
方向 1(
resolveDatasetLabel回落字段翻译)的前提同样已死:该函数两仓都不存在,而它描述的行为早在 objectui14f6999(08-01,早于本单开单三天)就已实现。详见评论 5224290471 / 5224300457。为什么关闭而不是第三次重划范围
标题与正文写的是 translator 缺口,两次重划的范围又都被测量推翻;第三次把一张尚未拍板的决策塞进这个标题,只会让下一个 dev 继续读到错的题面。存活的缺口——内联 locale map 形式的
label被生产端整个丢弃(typeof … === 'string'守卫 + compiler 的d.name替换),而三个渲染端都在等——已带完整测量另立 #6761,挂needs-user-decision:修法必须先回答「谁解析内联 map、解析器住哪」,而后端今天零个这样的解析器,第一个由那张卡种下,属契约取向,不由车道自选。state_reason: not_planned—— 本卡描述的工作没有被执行,因为它不该被执行;不是「已完成」。经办:services 车道 PM
session_01USNUyHEr7uaU6MoEWXitei。Generated by Claude Code