DSH / Atlas
2026-08-26implementedprocess

Ban an ambiguous origin label

禁止有歧义的来源名称

The case-insensitive ten-letter ASCII token formed by `prove` followed by `nance` had accumulated unrelated meanings across the repository. It named source-event references, provider and model metadata, context producers, installed artifact identity, configuration origins, browser-recording evidence, and release attestations. A reader could not determine the recorded fact from the label alone. The existing [concrete

English

Problem

The case-insensitive ten-letter ASCII token formed by prove followed by nance had accumulated unrelated meanings across the repository. It named source-event references, provider and model metadata, context producers, installed artifact identity, configuration origins, browser-recording evidence, and release attestations. A reader could not determine the recorded fact from the label alone.

The existing concrete prose reference required sentence-level classification and normally preserved identifiers. That policy improved individual sentences but allowed the same ambiguous label to remain in APIs, durable compatibility fixtures, filenames, generated catalogs, and new prose.

Decision

Maintained tracked paths and text must not contain that token in any case variant. Each use is replaced with the exact local concept, such as source-event references, provider metadata, model identity, context producer, configuration source, artifact identity, or recorded evidence.

The rule applies to source, tests, documentation, active Agent Notes, prompts, snapshots, workflow files, scripts, identifiers, fields, exported types, and filenames. Because the repository is pre-release, coordinated public symbol and current durable-field renames are preferred over aliases. A compatibility reader may reconstruct the retired durable key at runtime without embedding the token in maintained text.

verify-concrete-terms scans tracked filenames, symlink targets, and text case-insensitively after NFKC normalization. It runs as a quick leaf of doc-sync, and its tests prove rejection in prose, identifiers, and paths. Vendored sources and frozen archived Agent Notes remain excluded because their repository policies prohibit direct edits.

Historical persistence evidence retains identifiers from its selected source tree. The check excludes release schema JSON under docs/persistence-changes/releases/ and docs/persistence-changes/historical-formats/vN.schema.json. In vN.md and vN.zh.md, only the schema content inside one valid pair of persistence-format-schema markers is exempt; verify-persistence-formats requires that content to match the generated historical schema. Authored prose, current catalogs, and current schemas remain checked. Renaming a captured identifier would misrepresent the historical declarations; the persistence history decision owns that evidence.

This decision partially supersedes the earlier decision's rejection of fixed word bans and identifier renames for this one token. The earlier decision remains active for all other abstract language and for choosing each replacement according to its local meaning.

Alternatives considered

Continue semantic review without a mechanical ban. Rejected because the label had already spread through unrelated contracts, and sentence-level review could not prevent recurrence in identifiers, fixtures, or filenames.

Replace every occurrence with one umbrella term such as origin or source. Rejected because one new broad label would preserve the ambiguity between event references, model metadata, build identity, and recorded evidence.

Exempt all identifiers, durable fields, and generated files. Rejected because callers and current generated reference material would continue teaching the retired label. The pre-release policy permits coordinated renames, while the legacy parser can retain read compatibility without retaining the literal token. The narrow historical evidence exclusions preserve captured declarations without exempting current names or authored guidance.

Scan vendored and archived sources. Rejected because vendored content is updated through its synchronization procedure and archived Agent Notes are frozen records. Their explicit exclusions keep this policy consistent with those ownership rules.

Consequences

Callers use more specific public names, and current recordings use provider metadata instead of the retired assistant field. Generated catalogs and recorded snapshots must be refreshed when an owning symbol changes. Compatibility code remains responsible for reading the retired durable field.

Future uses outside the explicit exclusions fail doc-sync with the matching path or line. Reviews still classify the intended meaning before choosing a replacement; passing the gate proves absence of the token from checked content, not that the replacement is precise.

中文

问题

由 prove 与 nance 拼成的十个 ASCII 字母术语不区分大小写时,在仓库中已经承载了互不相关的含义。它曾表示来源事件引用、提供方与模型元数据、上下文生产方、已安装产物身份、配置来源、浏览器录制证据和发布证明。读者无法仅凭该名称判断实际记录的事实。

现有的具体表述说明要求逐句分类,且通常保留标识符。该规则改善了各个句子,却仍允许同一个有歧义名称留在 API、持久化兼容 fixture、文件名、生成目录和新行文中。

决策

仓库维护的已跟踪路径和文本不得包含该术语的任何大小写变体。每处使用都改为当前语境中的确切概念,例如来源事件引用、提供方元数据、模型身份、上下文生产方、配置来源、产物身份或已记录证据。

该规则适用于源码、测试、文档、活跃 Agent Note、提示词、快照、工作流文件、脚本、标识符、字段、导出类型和文件名。由于仓库尚未正式发布,公开符号与当前持久字段应协调重命名,而不是保留别名。兼容读取器可以在运行时构造已退役的持久键,无需在维护文本中嵌入该术语。

verify-concrete-terms 会在 NFKC 规范化后,不区分大小写地扫描已跟踪文件名、符号链接目标和文本。它作为 doc-sync 的快速叶子门禁运行;对应测试证明行文、标识符和路径中的违规都会被拒绝。vendored 源码与冻结的 archived Agent Note 仍被排除,因为各自的仓库规则禁止直接编辑这些内容。

历史持久化证据保留选定源码树中的标识符。检查排除 docs/persistence-changes/releases/ 下的发行版 schema JSON 和 docs/persistence-changes/historical-formats/vN.schema.json。在 vN.md 与 vN.zh.md 中,只有一组有效 persistence-format-schema 标记内的 schema 内容获得豁免;verify-persistence-formats 要求该内容匹配生成的历史 schema。人工说明、当前目录和当前 schema 仍接受检查。重命名已记录的标识符会歪曲历史声明;持久化历史决策负责这类证据。

本决策针对这一个术语,部分取代了旧决策中不采用固定禁词和标识符重命名的选择。旧决策仍适用于其他抽象语言,也仍负责要求根据每处使用的具体含义选择替代名称。

曾考虑的替代方案

继续只做语义审查,不设置机械禁令。 不予采纳:该名称已经扩散到互不相关的约定中,逐句审查无法防止它在标识符、fixture 或文件名中再次出现。

用 origin 或 source 等单一总括术语替换所有位置。 不予采纳:新的宽泛名称仍会混淆事件引用、模型元数据、构建身份和已记录证据。

豁免全部标识符、持久字段和生成文件。 不予采纳:调用方和当前生成的参考资料会继续传播已退役名称。预发布政策允许协调重命名,而旧格式解析器可以在不保留字面术语的情况下继续提供读取兼容性。范围受限的历史证据豁免保留已记录声明,但不豁免当前名称或人工指引。

扫描 vendored 与 archived 内容。 不予采纳:vendored 内容通过同步流程更新,而 archived Agent Note 是冻结记录。明确排除两者,可以使本政策与对应的归属规则保持一致。

后果

调用方使用更具体的公开名称;当前录制使用提供方元数据,而不再使用已退役的 assistant 字段。归属符号变化后,生成目录和录制快照必须刷新。兼容代码仍负责读取已退役的持久字段。

以后在明确排除范围之外新增的匹配项会使 doc-sync 失败,并报告对应路径或行号。审查仍需先判断预期含义再选择替代名称;通过门禁只能证明受检查内容中不存在该术语,不能证明替代名称足够精确。