Skip to content

settings 的 step 是同族第五个声明但不执行的值约束键 —— 先要一个「它算不算值约束」的判断 #6199

Description

@hotlong

在实施 #5932(补 min/max/minLength/maxLength 的执行)时顺带发现,记录下来交 triage。不在 #5932 的完成范围内 —— #5932 的分诊评论按名点死了那四个键,step 是第五个。

事实

packages/spec/src/system/settings-manifest.zod.tsSpecifierSchema 在同一段注释下声明了三个键:

/** `number` / `slider`: numeric bounds and step. */
min: z.number().optional(),
max: z.number().optional(),
step: z.number().optional(),

#5932 落地后,min / max 在写入路径(validatePatch)与 env 路径
(effectiveEnvOverride)都被执行了。同一行注释下的 step 仍然零读取点 ——
packages/services/service-settings/src/ 里没有任何消费者,superRefine 也不校验它
(不像 min/max 至少查了次序、minLength/maxLength 至少查了次序)。

生产侧目前只有一处声明:packages/services/service-settings/src/manifests/ai.manifest.ts:189
temperature(min: 0, max: 2, step: 0.1)。

为什么单独一条,而不是 #5932 的续集

因为它先需要一个产品判断,而不是一段实现step 有两种读法,导向不同的结果:

我倾向第二种(HTML 语义就是这样,而且 temperature: 0.15 对 AI 服务显然是合法值),
但这是规格判断不是实现细节,所以按 #5932 分诊的同一条界线上报而不自行决定。

影响面

相关

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