Skip to content

spec: ChartAggregateSchema 与 ChartGroupBySchema object 分支转 strictObject —— #5020 parse 接通后的收紧半边(#4001 后续批) #5583

Closed

Description

@os-zhuang

Blocked-by: #5020

Part of #4001(战役后续批;由 #5020 的 needs_decision 分析派生,按 #5068 方向 A 的两步走裁定同轮立单)。

背景

#5020 把 react 页发布闸门接上 ChartAggregateSchema.safeParse(lint 侧,在飞)。但实测两个 schema 均为 STRIP 姿态(chart.zod.ts:716 的 z.object().superRefine()、:691 的 object 分支;仓内常驻 pin「still STRIPS — deliberate」自证),所以 parse 接通后未知键仍被静默吞掉 —— groupby、dateGranularty 照旧丢弃。未知键闸门要成立,必须本单的 spec 侧收紧落地。过渡期缺口由 #5020 的 pin 测试 + 注释点名本单钉住。

范围

  1. ChartAggregateSchema 与 ChartGroupBySchema 的 object 分支转 strictObject(战役标准件:具名 surface + 改名建议;两处的 [RETIRED]/别名纪律照战役惯例)。
  2. ⚠️ zod 4 联合分支消息塌缩:ChartGroupBySchema 是 union,strict 分支的 unrecognized_keys 会被塌成顶层 invalid_union 的「Invalid input」—— ChartAggregateSchema 有活的承载键却没有任何 parse:react 页发布闸门手写重推了它的规则,未知键从不检查(#4001 批 15 的 no gate 首例) #5020 的 dev 已实测。lint 侧 ChartAggregateSchema 有活的承载键却没有任何 parse:react 页发布闸门手写重推了它的规则,未知键从不检查(#4001 批 15 的 no gate 首例) #5020 会先落解包逻辑,本单落地时用样本验证具名消息真的到达作者。
  3. 三处记录同步(账本纪律「三处一起改或都不改」):chart.zod.ts 头部散文、chart.test.ts 两条「still STRIPS — deliberate」pin(本单落地时 pin 断言方向要反转)、台账行(ChartAggregateSchema 有活的承载键却没有任何 parse:react 页发布闸门手写重推了它的规则,未知键从不检查(#4001 批 15 的 no gate 首例) #5020 已把 no gate 翻 authorable,本单再翻 strict 位)。.counts.md 生成物走 gen:strictness-ledger 整体重算。

需要战役/维护者先答的一个产品问题

无分组单值图是否受支持形状? 现状三方不一致:schema 与已发布 react-blocks 类型都声明 groupBy 必填,而 objectui 渲染器兑现其缺席(ObjectChart.tsx:640 的 || schema.xAxisKey 兜底),spec 自己的 chartAggregateCategoryKey 文档也描述了无分组单行情形。#5068 裁决的条款「渲染器兑现的键先声明后设闸」在此适用:

关联

Activity

  1. os-zhuang commented on Aug 6, 2026

    @os-zhuang
    ContributorAuthor

    分诊(spec 车道欠账代扫,维护者 2026-08-05 指令):挂 pm:blocked(正文已有 Blocked-by: #5020,解锁 sweep 据此回捡)。#5020 落地后本单即为 #4001 战役标准件,可直接派发;正文内嵌的产品问题(无分组单值图是否受支持形状)按 #5068 方向 A 先例随实施轮解答,两个分支的处置都已写明,不单独进决策箱。不构成认领。会话:session_01N3uGFF8teXbpgtbEJ1aYXu


    Generated by Claude Code

  2. os-zhuang commented on Aug 6, 2026

    @os-zhuang
    ContributorAuthor

    解锁(维护者 2026-08-06 指出 + 核实):Blocked-by: #5020 已解除——#5020 于 2026-08-05 20:43Z 关闭(completed,devx 车道落地)。摘 pm:blocked 回 pm:queue,归 spec 座位可派。派发提示:① 先核 #5020 落地后 lint 侧解包逻辑与 warning 级容忍的实际形状,正文的「过渡期缺口」描述以合并后代码为准;② 内嵌产品问题(无分组单值图)按正文两分支处置走,schema 侧结论在实施轮给出即可;③ zod 4 union 消息塌缩的样本验证(正文范围 2)勿省。会话:session_01N3uGFF8teXbpgtbEJ1aYXu


    Generated by Claude Code

  3. hotlong commented on Aug 7, 2026

    @hotlong
    Contributor

    Release-board audit (maintainer-directed re-audit of non-board domain:spec items, 2026-08-07): adding target:v17 — metadata-protocol change, size S, low-risk: STRIP→strictObject tightening of ChartAggregate/ChartGroupBy per the #4001 campaign standard; unblocked (#5020 landed) and the groupBy-optional question has both branches pre-ruled. Batch with #5593. Maintainer directive: protocol changes land in v17 unless large/risky. Triage seat may veto.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions