diff --git a/AGENTS.md b/AGENTS.md index b9c4501b..e06a059c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -25,7 +25,6 @@ ## Project Layout - `design/gdd/` — 现行设计文档树(根索引 `02-系统清单.md`,文档增删必须同步;`gdd/ux/` 战斗画面与交互规格) -- `design/registry/` — 跨系统事实登记(entities.yaml 术语与已锁数值、architecture.yaml 架构登记) - `design/art/` — 美术纯文档(圣经/清单/提示词卡 + references/);评估调研归 `design/research/`;不放图片 - `design/dev/` — 工程规范(五份规约 + architecture + engine-reference) - `design/qa/` — 验证报告 + QA 呈现产物图;`design/research/` — 调研/提案/评估/历史验收 @@ -48,7 +47,7 @@ | 概念切分与互链 | `design/dev/concept-conventions.md`——概念封装 / 跨文档引用 / 归档与事实源 | | 系统设计 / 增删文档 | `design/gdd/02-系统清单.md`——根索引 + 中文规范名↔英文代号对照 | | 架构(唯一事实源) | `design/dev/architecture/architecture.md`——历史决策沿革查 git commit log,不另设决策文档 | -| 术语、已锁数值 | `design/registry/entities.yaml`——仅 owner 文档可修订,冲突须显式提出 | +| 术语与已锁数值 | 规范名与定义 = `design/gdd/术语表.md`(全库唯一对照表,仅 owner 文档可修订);现行数值 = `game/data/tables/*.tres`;规则与取值域 = 各系统 owner 文档。冲突须显式提出,禁默默改值 | | 现在做什么 / 待办与待裁 | 根 `roadmap.md` 顶部「当前位」节+迭代总表六列 · 待办唯一登记处 `design/gdd/06-待办清单.md` · 批次过程与结论查 git 提交信息与 `reports/` | ## 硬性红线(勿违反;操作细则在 process-conventions.md 与各规约) diff --git a/design/dev/architecture/architecture.md b/design/dev/architecture/architecture.md index 14c414c9..df929af7 100644 --- a/design/dev/architecture/architecture.md +++ b/design/dev/architecture/architecture.md @@ -84,7 +84,7 @@ ## 模块归属 -> 命名遵循 `design/dev/code-conventions.md`:领域命名、禁 ID 前缀(文件头注不写文档链接——「实现 GDD:xxx」一类已废止,代码↔设计追溯由 GDD 文档与 registry 承担)。切片已按此规范完成领域命名批。 +> 命名遵循 `design/dev/code-conventions.md`:领域命名、禁 ID 前缀(文件头注不写文档链接——「实现 GDD:xxx」一类已废止,代码↔设计追溯由 GDD 文档承担)。切片已按此规范完成领域命名批。 ### 基础层 @@ -284,6 +284,7 @@ D1 ◀──呈现数据源:A2 事件流 / B1 步骤流 / A3 ap-rap / ConfigDB - **事件载体(已定)**:组合根直连信号接线 + B1 Waiting 相位触发(不依赖事件到达序);autoload 全局事件总线已否决(2026-09-12,沿革见 git 历史)——单线程回合制沿用组合根直连(KISS)。 - 事件规范序:A2 发射序 = 触发格 BFS、8 邻行主序;事件序契约 `flag_judged` < `round_end` 全路径统一。 +- **呈现层订阅禁令(切片缺陷②教训固化)**:呈现层永不直接订阅 排雷玩法/行动经济 的事件流,只订 战斗结算 步骤流与 `level_runner`——核心事件形态变化不得直接冲击界面。 ### 3. 存档/读档路径(MVP 无存档;契约已锁) @@ -291,6 +292,10 @@ D1 ◀──呈现数据源:A2 事件流 / B1 步骤流 / A3 ap-rap / ConfigDB - 可回放性已实证:切片冒烟同种子双跑步骤流逐行相同(B1 AC-33 前身)。 - D3 Alpha 期按此契约设计格式;SCHEMA_VERSION 高版本拒读。 +### 4. 打包与字体(CJK 随包发行) + +CJK 字体随包发行并设为 theme 默认字体——运行时默认字体无中文字形。此项是 HUD框架 正式化的硬性前置,同时进导出 checklist 核对项。 + ### 4. 初始化顺序 ``` diff --git a/design/dev/code-conventions.md b/design/dev/code-conventions.md index 84954018..7d128114 100644 --- a/design/dev/code-conventions.md +++ b/design/dev/code-conventions.md @@ -19,7 +19,7 @@ 依赖方向唯一:`views →(信号)→ 组合根 →(写调用)→ core`。视图零核心写调用(纯 setter / 信号外发优先);"读核心状态 → 拼展示文案"集中于装配器(presenter);核心写接口(settle_batch / submit_window_selection / runner 推进)只允许在组合根出现。 ### 1.4 命名 = 领域命名,禁止系统 ID 前缀 -文件名与类名禁止 `a1_`/`b1_`/`c1_` 等系统 ID 前缀(`a1_board_generator.gd` → `board_generator.gd`)。设计追溯不靠前缀:代码↔设计的追溯由 GDD 文档与 registry 侧承担,系统 ID 只作为文档与 registry 的追溯锚;文件头注不承担追溯职责,不写任何文档链接(§1.4.1)。豁免:D2 schema 类与 autoload;文档/夹具登记名(如 b4_golden)属文档层。 +文件名与类名禁止 `a1_`/`b1_`/`c1_` 等系统 ID 前缀(`a1_board_generator.gd` → `board_generator.gd`)。设计追溯不靠前缀:代码↔设计的追溯由 GDD 文档承担,系统 ID 只作为文档的追溯锚;文件头注不承担追溯职责,不写任何文档链接(§1.4.1)。豁免:D2 schema 类与 autoload;文档/夹具登记名(如 b4_golden)属文档层。 ### 1.4.1 文件头 = `##` 文档注释,介绍本模块,≤8 行,两类白名单制 @@ -29,7 +29,7 @@ 白名单(只许两类):①职责摘要——这是什么,一句话;项目语境(垂直切片状态/验证目标)以括号并入本行。②使用约束——使用本文件前必须知道的禁令与边界,每条一行。 -黑名单(出现即违规):日期与变更叙事——改动史查 `git log`/`git blame`,变更背景读迭代实现报告;与其他文档或其他文件头重复的内容——零新信息不写(pyguide §3.8.2.1);场景结构、生命周期等代码机制描述——"Never describe the code"(pyguide §3.8.5);一切文档反向链接——「实现 GDD:xxx」「指路:架构见 xxx」一类全部废止,代码↔设计追溯由 GDD 文档与 registry 侧承担。 +黑名单(出现即违规):日期与变更叙事——改动史查 `git log`/`git blame`,变更背景读迭代实现报告;与其他文档或其他文件头重复的内容——零新信息不写(pyguide §3.8.2.1);场景结构、生命周期等代码机制描述——"Never describe the code"(pyguide §3.8.5);一切文档反向链接——「实现 GDD:xxx」「指路:架构见 xxx」一类全部废止,代码↔设计追溯由 GDD 文档承担。 机器闸:`tools/audit_file_headers.py`(static_scan S10:行数上限+黑名单机械可判子集)。存量头注按白名单清偿(约 90 文件,清偿批进行中);清偿落地后闸增补「头注必须 `##` 开头」锁死载体;此间新增/改动的文件头必须即合规。 diff --git a/design/dev/concept-conventions.md b/design/dev/concept-conventions.md index f47b06e4..31730389 100644 --- a/design/dev/concept-conventions.md +++ b/design/dev/concept-conventions.md @@ -1,7 +1,7 @@ # 概念与引用规范(Dungeon Sweeper) > 约束范围:设计文档的概念建模与跨文档引用。写作层(句子、结构、骨架)归 `design/dev/doc-conventions.md`;本文管概念怎么切、文档怎么互链。 -> 概念对象登记 `design/registry/entities.yaml`(owner 与 referenced_by 由此机械维护);文档里概念怎么切,registry 就怎么登记,代码里的对象划分与之同构。 +> 概念只在 owner 文档里定义一次;跨系统术语的规范名、定义与互斥关系登记在 `design/gdd/术语表.md`。某概念被谁引用,靠全仓搜索它的规范名得出,不设第二处登记表。 **写设计文档前必须通读本文。** @@ -33,22 +33,21 @@ | 规则 | 内容 | |---|---| -| 单点定义 | 每个概念只在 owner 文档里定义一次,registry 术语条目登记其规范名 | +| 单点定义 | 每个概念只在 owner 文档里定义一次,其规范名与定义收进 `design/gdd/术语表.md` | | 规范名唯一 | 正文只准用规范名,禁止别名散开——否则删除时 grep 搜不全 | | 引用不转述 | 跨文档引用 = 规范名 + 链接,禁止复述对方的规则细节、公式、数值与口径;确需携带口径时,作用对象/范围/生命周期必须随句写全或显式指路——禁止只复述形容词,「常显」「恒亮」这类词不带范围就是半句话;若发现自己需要一条规则,那是自己的概念,先立权威文档再定义 | | 引用落到对外承诺 | 跨文档链接只锚到对方文档明示的对外内容(事件、接口、规则条目),不锚其内部细节 | | 依赖逐条列出 | 系统文档的「依赖与输出」节逐条列出本系统依赖的他人概念(规范名 + 链接)——这份清单就是删除概念时的影响面清单 | -| 引用必登记反向边 | 引用他系统概念时,在被引方的 registry 条目 `referenced_by` 里登记——影响面靠它机械列出,不靠全仓搜 | +| 引用可查 | 需要某概念的影响面时,全仓搜索它的规范名即得;被引方在自己的「依赖与输出」节写明谁依赖它。人工维护的反向边清单已废止(2026-10-19 核出旧登记漏 7 份、多 1 份) | | 链接断了也好读 | 引用处的句子在链接失效后仍通顺完整(写"变异规则见《地形变异》",不把半截语义挂在链接里) | | 待办单点登记 | 全项目待办事项单点登记于 `design/gdd/06-待办清单.md`:系统文档的「待办」节只留指路存根,禁止自建条目表;新增待办条目直接登记清单,裁决后改「状态」列留痕、不删条目 | **引用格式**:一律 Markdown 相对链接,指向文件、必要时带节锚点(例:`[地形变异 · 变异类型](systems/排雷循环/地形变异.md#变异类型)`)——机械可查,死链可被工具检出。 -**删除概念 SOP**:① 查 registry 该条目的 `referenced_by`,得到影响面清单 → ② owner 文档删除概念 → ③ 纯引用方删链接即完事;机制被织入对方规则的,按清单逐处修订 → ④ 收尾跑一遍死链检查,全绿即干净。 +**删除概念 SOP**:① 全仓搜索该概念的规范名,得到影响面清单 → ② owner 文档删除概念 → ③ 纯引用方删链接即完事;机制被织入对方规则的,按清单逐处修订 → ④ 收尾跑一遍死链检查,全绿即干净。 **诚实边界**:机制耦合无法靠删链接消灭——别人的规则真的因你的概念而改变时,改内容不可避免。引用纪律保证的是:这类修改有一份现成清单(反向边 + 依赖节),不用事后全仓搜索。 ## 3. 归档与事实源 - 旧文档里的概念写进现行文档时,必须翻译成现行术语与现行决策口径(例:已退役机制禁止作为现行机制引用)。 -- registry 中 owner 仍指向旧 GDD 路径的条目,在对应新系统文档定稿后逐条改指新路径。 diff --git a/design/dev/doc-conventions.md b/design/dev/doc-conventions.md index d3867e49..ba2afcf7 100644 --- a/design/dev/doc-conventions.md +++ b/design/dev/doc-conventions.md @@ -43,7 +43,7 @@ 文档、评审输出、日志与一切沟通中**禁止自造黑话**——比喻性生造词、只有作者自己懂的缩略语: - 只能使用:(a)人人可懂的直白语言,或(b)游戏行业通用术语(如 flood fill、战争迷雾、连锁展开、结算、增益/减伤)。 -- 指代新概念用直白描述性短语(正例:"实测可推理率");确需命名时:首现处附一句白话定义,并登记 `design/registry` 术语条目。 +- 指代新概念用直白描述性短语(正例:"实测可推理率");确需命名时:首现处附一句白话定义,并登记进 `design/gdd/术语表.md`。 - 唯一例外:玩家在游戏里也会看到的专属名词(道具名、界面用语)。文档内部的机制概念不得造词。 **自造词的三种固定形态(全部禁止)**: @@ -51,7 +51,7 @@ | 形态 | 反例 | 正确写法 | |---|---|---| | 给工作包起代号 | "样张批""八型批" | 叙述名 = 日期 + 做什么 | -| 给机制、检查、基线、区域造名词 | "形象锚""判读口径""变异纹带" | 用行业通用词;长期复用的概念走登记通道(正常名字+白话定义+registry 登记) | +| 给机制、检查、基线、区域造名词 | "形象锚""判读口径""变异纹带" | 用行业通用词;长期复用的概念走登记通道(正常名字+白话定义+登记进 术语表) | | 给流程步骤造动词 | "收口""落籍""在飞""随批""对拍""销账""正主""台账" | 用日常动词:完成 / 合并进 master / 执行中 / 顺带 / 与基线数据逐项比对 / 注销 / 定义所属的那份文档 / 状态记录 | **通行检验标准**:读者是业内人但没读过项目历史——需要作者解释才懂的词不合格,必须展开成完整白话句(换新名词不算改,展开才算改)。**写后自查**:凡自己都要停顿才能想起意思的词,一律展开。 @@ -64,16 +64,18 @@ | 架构事实唯一源 | `design/dev/architecture/architecture.md` 是架构事实的唯一权威(分层/模块归属/数据流/API 边界/测试与质量域);禁建第二份架构文档;历史决策记录只进 git commit log | | 一页纸节点 | 一节、一条规则 ≤一页纸(约 ≤80 行);装不下就拆节 | | 一系统一文档 | 不建 analysis 推演件;两三句能说清的"为什么"直接写进设计目的或规则正文 | -| 正文只写现行规则 | 禁删除线、"(作废)"、"(日期+拍板)"式注记;审计信息入 `design/registry` 或附录 | +| 正文只写现行规则 | 禁删除线、"(作废)"、"(日期+拍板)"式注记;审计信息入对应文档附录 | | 后置 ≠ 删除 | P1/P2 后置内容逐条列出;复活后置项 = 修订文档,禁静默加回 | -**数值纪律**:正文定规则、取值域、单位;平衡值进 `data/tables/`,provisional 必须标注;已锁数值事实源 = `data/tables/` 与 `design/registry/entities.yaml`。强制收口条款: +**数值纪律**:正文定规则、取值域、单位;平衡值进 `data/tables/`,provisional 必须标注;已锁数值事实源 = `game/data/tables/*.tres`(现行值)与 owner 文档正文(规则、取值域、单位)。 -1. **双写失同步禁止**——任何数值变更必须同时同步引用该数值的 GDD 表格正文、registry `mvp_content`/`value_status`、相关待办清单现状——三类之一未更新即视为变更未完成。 -2. **调参表锁数后删现行值列**——仅留 schema 模板与取值域,指路存根指向 `.tres` 与 `entities.yaml` 对应条目。 +**登记处唯一性(2026-10-19 用户裁)**:`design/registry/`(`entities.yaml`/`architecture.yaml`)已注销删除,禁再建第二处事实登记——术语进 术语表、数值进 `.tres`、架构进 架构文档、影响面靠全仓搜索概念规范名得出。强制收口条款: + +1. **双写失同步禁止**——任何数值变更必须同时同步引用该数值的 GDD 表格正文、`data/tables/` 行值与 schema 校验域、相关待办清单现状——三类之一未更新即视为变更未完成。 +2. **调参表锁数后删现行值列**——仅留 schema 模板与取值域,只留 schema 模板与取值域,指针指向 `.tres` 对应行键。 3. **覆盖范围** = 奖励/状态/敌人/技能/充能/护甲等级/区间掷点/难度曲线/D_ref 等所有数值字段。 4. **维护通道** = 「设计批 → 同步批」两段式;数值表改完不等于修订完成。 -5. **压缩/换装批** = 「`.tres` 落批 + 切片 smoke 跑通 + GDD 表格指路化 + registry 指路化 + 待办清单刷新」五步全收才记版本号。 +5. **压缩/换装批** = 「`.tres` 落批 + 切片 smoke 跑通 + GDD 表格改为只留取值域与 `.tres` 指针 + 待办清单刷新」四步全收才记版本号。 ## 6. 文档类型与骨架 @@ -104,11 +106,11 @@ ## 11. 文档生命周期:吸收即死 -**活文档**=唯一事实源长期维护:GDD 树、art-bible 等定稿规范、registry、架构文档(`design/dev/architecture/architecture.md`)、本规范、06-待办清单、roadmap。**中间文档**=脚手架,寿命=迭代寿命:批需求卡片、机检/验收过程报告、调研/审计报告、模拟读数、迭代计划书、目检清单。为什么:了解游戏看 GDD,了解变更看 git;增量中间文档让版本管理失去意义,原始数据 dump 是化石不是证据。 +**活文档**=唯一事实源长期维护:GDD 树、art-bible 等定稿规范、术语表、架构文档(`design/dev/architecture/architecture.md`)、本规范、06-待办清单、roadmap。**中间文档**=脚手架,寿命=迭代寿命:批需求卡片、机检/验收过程报告、调研/审计报告、模拟读数、迭代计划书、目检清单。为什么:了解游戏看 GDD,了解变更看 git;增量中间文档让版本管理失去意义,原始数据 dump 是化石不是证据。 | 规则 | 内容 | |---|---| -| 吸收即死 | 中间文档结论写进权威文档(GDD 对应节/art-bible/registry)那一刻,文件即删 | +| 吸收即死 | 中间文档结论写进权威文档(GDD 对应节/art-bible/术语表)那一刻,文件即删 | | 未决先迁再死 | 未决内容先迁现行事实源(06/roadmap 卡/GDD 对应节),然后文档即死 | | 永不入库 | 迭代出口后中间产物一律删除且不许提交;迭代进行中可暂存工作区,出口批一并清 | | 引用面口径 | 活文档对中间文档的指路阻塞删除:先改写指路句为结论内联或 git 提交号再删 | diff --git a/design/dev/process-conventions.md b/design/dev/process-conventions.md index de0c7011..5646a2d1 100644 --- a/design/dev/process-conventions.md +++ b/design/dev/process-conventions.md @@ -53,7 +53,7 @@ 10. **批末按域验收才合并**——在任务 worktree 内跑 `tools/run_all_gates.sh`,**按本批改动域选档**:本批改动触及 `game/`(游戏工程代码、测试、探针、场景)→ `--code`;不触及 `game/` 的一切改动(`design/`、根规则文件、`tools/` 工具脚本、`.zcode/` 配置等)→ `--docs`;同批混触 `game/` 与文档面 → 全量档不带参数。所选域全绿才合回 master。该脚本是全部验证闸的**唯一入口、唯一清单与唯一域划分**,闸件增减、分域调整都只改它;**本文与其他文档禁另列闸件清单**(清单散落多处正是 iter27 漏跑 `probe_gate --full` 的成因)。跑完写回执 `game/tests/.gates/receipt.json`(含 `domain` 字段),合回时由 worktree-guard 按 diff 路径推域强制校验。闸件(`tools/` 下机检脚本与闸壳)自身的改动不占合回全量——其质量义务=落批时的变异验证(test-conventions §6),闸真崩溃时合回闸 fail-closed(跑不出回执即拦),不以合回全量为兜底 11. **合并后主区按域复跑**——合并可能引入冲突或环境差异,落回 master 后按本批改动域复跑:触及 `game/` 的批=全量复跑(维持);纯文档域批=复跑文档域档(秒级),不再全量 12. **批次完成后的登记义务**——合回 master 后按 doc-conventions §12.1 推进 06 条目状态(做完整条删除),涉及迭代编排的在 roadmap 迭代总表与顶部「当前位」节换代,跨会话教训写记忆库。批次过程与结论由 git 提交信息承载,禁止再写会话状态文件(2026-10-18 用户裁,见 doc-conventions 第 10 节)。`design/` 与根规则文件(`AGENTS.md`/`roadmap.md`)实现批禁写,见 §13 -13. **文档同步闸(2026-10-17 改口径:实现批禁写文档)**——实现批**禁写 `design/` 整个目录与根规则文件**,要往外交代的东西一律落 `reports/`:实现报告 `reports/iter-实现报告-<日期>.md`(各卡状态+实机目检总清单+遗留读数义务)、代拍板追认单 `reports/iter-代拍板-<日期>.md`、GDD 反哺点清单 `reports/iter-反哺点-<日期>.md`(每条写清哪个文件哪一节、改成什么、依据是什么)。设计权威文档(GDD/art-bible)**任何批都不直改**:用户在会话中逐点裁决后,由非迭代批(工具/规则/文档批)写入 `design/`,并把反哺条目从 `reports/` 清掉(吸收即死)。机械面文档(roadmap 行/registry/README 工具注)同样归非迭代批在合并前更新。反哺点未落地期间相关 GDD 节视为待反哺,读前先查 `reports/` 与 06;需求卡片必列「关联文档同步面」按两层标注 +13. **文档同步闸(2026-10-17 改口径:实现批禁写文档)**——实现批**禁写 `design/` 整个目录与根规则文件**,要往外交代的东西一律落 `reports/`:实现报告 `reports/iter-实现报告-<日期>.md`(各卡状态+实机目检总清单+遗留读数义务)、代拍板追认单 `reports/iter-代拍板-<日期>.md`、GDD 反哺点清单 `reports/iter-反哺点-<日期>.md`(每条写清哪个文件哪一节、改成什么、依据是什么)。设计权威文档(GDD/art-bible)**任何批都不直改**:用户在会话中逐点裁决后,由非迭代批(工具/规则/文档批)写入 `design/`,并把反哺条目从 `reports/` 清掉(吸收即死)。机械面文档(roadmap 行/术语表/README 工具注)同样归非迭代批在合并前更新。反哺点未落地期间相关 GDD 节视为待反哺,读前先查 `reports/` 与 06;需求卡片必列「关联文档同步面」按两层标注 14. **实机目检归用户,只登记不阻塞**——真人检测项登记进实现报告目检总清单与 07-体验验证清单即完成批内义务;禁把等目检当停工理由或完成前置 15. **中间产物吸收即死**——细则见 AGENTS.md 硬性红线与 doc-conventions 第 11 节 diff --git a/tools/clear_dominance_audit.py b/tools/clear_dominance_audit.py index 428898d8..4d0e420c 100644 --- a/tools/clear_dominance_audit.py +++ b/tools/clear_dominance_audit.py @@ -1,8 +1,8 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -"""清图支配性对账重算工具(行动经济 条款⑤ · registry clause5_dominance)。 +"""清图支配性对账重算工具(行动经济 条款⑤ · 挖穿残余池计价)。 -判式权威 = design/registry/entities.yaml clause5_dominance(挖穿残余池计价): +判式权威 = design/gdd/systems/排雷循环/行动经济.md 条款⑤(公式本体同时内联于本 docstring): 主判式 Δ_clear = [R_res + C_eff] − [X_res + Δr × s_ref] ≥ 0 保守地板 C_eff(min) ≥ X_res + Δr × s_ref E[踩雷] = |M| × n_s ÷ (n_s + 1) (均匀交错模型) diff --git a/tools/doc_link_audit.py b/tools/doc_link_audit.py index e8b9a0e7..e668d2f6 100644 --- a/tools/doc_link_audit.py +++ b/tools/doc_link_audit.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 r"""doc_link_audit.py — design 文档链接健康检查 -扫 design/gdd/、design/registry/ 下的 .md 与 .yaml,校验两类引用: +扫 design/gdd/ 下的 .md,校验两类引用: (a) markdown 链接 [文字](路径[#锚点]) —— 一律相对"链接所在文件自身目录"解析(标准 markdown 语义),跨目录用 ../。排除图片 ![...];目标里混入全角标点(偶发把全角括号 写进目标)时在首个全角标点处截断再校验。 @@ -23,7 +23,7 @@ r"""doc_link_audit.py — design 文档链接健康检查 python tools/doc_link_audit.py ... # 只扫指定文件 python tools/doc_link_audit.py --json # 机器可读 -口径:只扫 design/gdd/ design/registry/——design/art、design/research +口径:只扫 design/gdd/——design/art、design/research (历史素材/提案)不在扫描域,但作为链接目标被校验。排除 ``` 围栏代码块与 ; 开头注释行。 """ import argparse @@ -32,7 +32,7 @@ import re import sys from pathlib import Path -DEFAULT_DIRS = ["design/gdd", "design/registry"] +DEFAULT_DIRS = ["design/gdd"] PROTO_PREFIX = "game" ALLOWED_EXTS = ("md", "yaml", "yml", "tres", "gd", "py", "json", "csv") diff --git a/tools/doc_term_audit.py b/tools/doc_term_audit.py index 6bf4186c..ef911b8c 100644 --- a/tools/doc_term_audit.py +++ b/tools/doc_term_audit.py @@ -13,7 +13,7 @@ r"""doc_term_audit.py — GDD 退役术语扫描(半自动) python tools/doc_term_audit.py ... # 只扫指定文件 python tools/doc_term_audit.py --json # 机器可读 -口径:只扫 design/gdd/ design/registry/——design/research +口径:只扫 design/gdd/——design/research (历史提案)、docs/(样例)与 production/ 不在扫描域;词表扩充 = 改 RETIRED_TERMS。 """ import argparse @@ -64,7 +64,7 @@ RETIRED_TERMS = [ ("插旗|标旗", "2026-10-18", "封印(正式动作名,全库统一)", "术语刷新批——「旗」概念退役"), ] -DEFAULT_DIRS = ["design/gdd", "design/registry"] +DEFAULT_DIRS = ["design/gdd"] # 用语规范 A 表补充词专项补扫:随批/台账 两词本身是上方行级白名单信号(行内出现即归 # 留档类),主扫描对它们自豁免;本通道只做版本历史节外的专项报告,供后续触碰批清偿。 diff --git a/tools/gdd_lint.py b/tools/gdd_lint.py index 23348232..989bab1c 100644 --- a/tools/gdd_lint.py +++ b/tools/gdd_lint.py @@ -22,7 +22,7 @@ r"""gdd_lint.py — GDD lean 格式门禁 (表头/分隔行/空值/日期式首列跳过);无版本历史表的文档不适用——存在性归 R4 R11 计数词漂移:正文禁用旧计数口径——"10 类行/行型封闭为 10 类/10 类封闭协议/行型 10 类" →9 类、"七型/五型 × 正负"→八型、"15 类"→9 类、"14 格"→十六格;版本历史/修订记录节、 - 留档/作废/退役/历史/旧/改型/随批/顺延等轨迹措辞行、`;` 注释行豁免(现行口径见 registry) + 留档/作废/退役/历史/旧/改型/随批/顺延等轨迹措辞行、`;` 注释行豁免(现行口径见 owner GDD 与 术语表) """ import argparse import json @@ -78,8 +78,8 @@ VERSION_SECTION = "版本历史" HISTORY_SECTION_RE = re.compile(r"(版本历史|修订记录)") FLOW_SECTION_RE = re.compile(r"(流程|生命周期)") -# R11 计数词漂移对照锚表。事实源 = design/registry/entities.yaml:359 行协议 9 类 / :314 八型 / -# :327 权重 74;口径变动时同步此处。 +# R11 计数词漂移对照锚表(行协议 9 类 / 格面资源八型 / 权重 74)。 +# 口径权威 = 各 owner GDD 正文;本表是其镜像,口径变动时同步此处(原 registry 登记处于 2026-10-19 注销)。 CURRENT_COUNTS = [ (re.compile(r"(?:10 类行|行型封闭为 10 类|10 类封闭协议|行型 10 类)"), "9 类"), (re.compile(r"七型"), "八型"), @@ -87,7 +87,7 @@ CURRENT_COUNTS = [ (re.compile(r"15 类"), "9 类"), (re.compile(r"14 格"), "十六格"), ] -# R11 轨迹措辞豁免:留档/作废/退役/历史/旧 + 改型/随批/顺延(registry 历史轨迹句「同批改型」) +# R11 轨迹措辞豁免:留档/作废/退役/历史/旧 + 改型/随批/顺延(文档历史轨迹句「同批改型」) R11_TRACE_RE = re.compile(r"(留档|作废|退役|历史|旧|改型|随批|顺延)") # R10 版本号提取:v 前缀优先,裸数字编号兜底;日期式首列(修订记录表)整体跳过 VER_TOKEN_RE = re.compile(r"[vV]\d+(?:\.\d+)*") @@ -332,12 +332,12 @@ def lint_file(path): continue if in_code11 or hist11 or stripped.startswith(";") or R11_TRACE_RE.search(raw): continue - # yaml/yml 的 # 行内注释是登记轨迹(如 entities.yaml「2026-09-18 扩七型」),不入正文扫描 + # yaml/yml 的 # 行内注释是登记轨迹,不入正文扫描 line = raw.split("#", 1)[0] if str(path).endswith((".yaml", ".yml")) else raw for pat, fix in CURRENT_COUNTS: for m in pat.finditer(line): issues.append( - f'R11 计数词漂移: "{m.group(0)}"→应为"{fix}"(现行口径见 registry entities.yaml)' + f'R11 计数词漂移: "{m.group(0)}"→应为"{fix}"(现行口径见 owner GDD 正文)' ) # R7 括号跨度 diff --git a/tools/repo_structure_audit.py b/tools/repo_structure_audit.py index 6064af36..3425a3db 100644 --- a/tools/repo_structure_audit.py +++ b/tools/repo_structure_audit.py @@ -35,11 +35,11 @@ IMAGE_EXTS = {".png", ".jpg", ".jpeg", ".webp", ".gif", ".svg", ".pxo", ".psd", IMAGE_PREFIXES = ("artwork/", "game/assets/", "design/art/references/", "design/dev/architecture/", "design/qa/", "game/tests/golden/") # 4) 退役路径(目录或文件任一再现即 FAIL) -RETIRED = ["production", "docs", "tests", "qa-data", +RETIRED = ["production", "docs", "tests", "qa-data", "design/registry", "design/art/candidates", "production/mockups", "design/ux", "game/tools"] # design/ 一级子目录白名单(防 ad-hoc 新目录) -DESIGN_SUBDIRS = {"art", "dev", "gdd", "qa", "registry", "research"} +DESIGN_SUBDIRS = {"art", "dev", "gdd", "qa", "research"} def scan():