feat(令牌配额口径清扫·提前实施卡批): 照需求卡片 v1.2(reports/需求卡片-令牌配额口径清扫批-2026-10-26.md,用户 2026-10-26 裁准提前实施并从简)落地十一处清扫+两处配套——q1 schema 头注四处(:32-36 段并单口径现行句 70/25/7/0=102、:49 位序句、:58「总量 98 锚」→102、:202 deck_total 旧 104 句按实算改写=tier_total 四档求和 102,凭证走 feat_ticket_* 不进牌库);q3 tres 头注五处(批次1 已并,本笔订正一处失实:删「配额键未载表补表归待办」句——写卡会话实查 B1 论断:ap_rare 显式载表与默认同值、rap/时沙走缺省合法,validate 含默认求和恰=常量 7 且绿,无补表义务);q4 golden README「魔法道具 HUD」→「秘宝 HUD」(采直换新名形态,不落「时名」括注以免撞 S11——卡片措辞方向内)+宿主断言标签(批次1)+验证集清单重生成 1583 条对账零差异;B4b 三处「罕见」按裁定原文保留,S11 显式留档豁免单登记 4→7 处(adventure_table:26 档名映射注+:93 与 curio_deck:130 契约④原名引述,附出处注)——补齐卡片关联同步面未列的闸口缺口。契约1 数值与断言条件零触碰(TIER_QUOTAS/三处默认/tres 数值行/条件表达式逐字不动)。卡片与待办条目随批删除(用户裁:活干完登记即毁),验收证据随本信息与下笔撤销证明留档

This commit is contained in:
DKChan committed 2026-10-26 04:59:17 +08:00
1 parent 7d2fbe158f
commit 89605e42e6
7 files changed
+16 -190

No files matched your search

@@ -1,165 +0,0 @@
# 需求卡片:令牌配额口径清扫批(schema/tres 头注口径统一+game 面旧档名清扫)
- 版本:**v1.2**(v1.0→一轮「回炉」→v1.1→二轮闭合复检「回炉(窄修)」:tres:37 漏枚举+「罕见」另三处待裁定→v1.2 折入定稿,复核记录见 §12)
- 来源:[待办清单](../待办清单.md)「adventure 令牌配额 schema 锚与 tres 现行值不一致+game 面旧档名残留」条目(2026-10-26 登记,状态=待写卡)(唯一事实源:工程证据指认=条目实况+本卡 §3 行号级实查+grilling 补查——**条目核心论断经实查订正**:schema 常量与 tres 实际一致、校验活着且绿;本卡范围=旧口径表述清扫+订正结论落档)
- 归属:`game/data/schemas/adventure_table.gd`(头注口径四处)+ `game/data/tables/adventure.tres`(头注旧口径四处)+ `game/tests/golden/README.md`(旧名一句)+ `game/tests/unit/core/adventure_feats_test.gd`(断言标签文本)+ `game/tests/验证集清单.md`(清单行同步)
- 排期:未编入(迭代批卡片;估时 ≈0.3 工作日)
- 开工门:U0+复核门过(§12);零待裁点
## 0. 前置依赖与并行性
- **第〇步核对(2026-10-26 写卡会话)**:来源条目=需求性工程条目(证据带 file:line),跳过设计线放行;条目状态=待写卡。
- 与迭代 37 零文件交叠;与 2026-10-25/26 各批卡零交叠。
- **条目论断订正**(§3 B5 出结论):「schema 锚与 tres 现行值不一致」不成立——rap_rare/time_sand_rare 的 2/2 是 schema @export 默认值(tres 只显式化 ap_rare=3),逐 kind 求和恰等于常量 7;`validate()` 结构锚校验活着、guard_test 断言绿。真问题=头注旧口径表述残留(schema 四处+tres 四处)+两处旧档名——零数值改动、零行为断言变化(断言条件不动、只改标签文本)。
## 1. 目标与完成定义
**目标**:令牌配额的全部旧口径表述(rare=3 直映射时代数字+旧三级档名)从 game 面清出,四处头注/两处测试文本与现行唯一事实源(tres 实值+TIER_QUOTAS=70/25/7/0、deck_total 实算 102)对齐;条目登记时的失实论断随卡订正落档。
**改动单元清单**(🔴 契约 1):
| # | 单元(实查·grilling 补查全枚举) | 改法 | 依据 |
|---|---|---|---|
| q1 | `adventure_table.gd` 头注旧口径三处::32「四级直映射 70/25/3/0」(:32-34 整段与现行「稀有 7/总量 102」句并排混写)+:49「70/25/3 零偏离」+:58「总量 98 锚不变」(heal_excellent 行注——三级时代 98) | 三处按现行口径改写(70/25/7/0 与 102;:32-34 段合并为单口径现行句,沿革归 git log);**数值零触碰**(TIER_QUOTAS :37 与 @export 默认 :60-62 逐字不动) | code-conventions 文件头注释纪律;数值单一事实源 |
| q2 | `adventure_table.gd:202` `deck_total()` 头注「结构锚——T2 四级 98 + T4 凭证投放 6 = 104:70+25/9+0」——rare=3 时代口径(70+25+3+0=98)遗留且凭证错算入 deck 总量;实算=102 | 头注按实算改写(deck_total=102=70/25/7/0;凭证投放不走 curio_quota、不进 deck_total);函数体零触碰 | 同上;实算核对 T0 复核 |
| q3 | `adventure.tres` 头注旧口径五处::36「70/25/3/0=98 张」+:37「普通 70/优秀 25/稀有 3/传说 0…旧 70/25/3 直映射改名承袭」(含「稀有 3」旧值与「70/25/3」沿革句——二轮补枚举)+:41「普通 70/稀有 25/罕见 3 = 98 张」(旧三级档名活句)+:45「罕见〔AP 3〕」构成句(:44-45 档位构成段新旧名混写)+:53「70/25/5」 | 五处按现行口径与新四级名改写(:37 改「普通 70/优秀 25/稀有 7/传说 0=头奖位留空」方向、删沿革句——措辞 L1);tres 数值行零触碰 | 档名四级映射(01-核心循环 v1.5);旧名清扫=术语表口径 |
| q4 | 旧档名两处:`golden/README.md:26`「魔法道具 HUD」+`adventure_feats_test.gd:399` 断言标签「池耗后候选恒 ≥2(稀有/罕见档余量……)」(验证集清单 :875 序号 505 冻结同文本;条件表达式 `(draw as Array).size() >= 2` 与档名无关) | README 句改「秘宝(时名魔法道具)」方向;断言标签改新档名(**条件表达式零触碰**)+验证集清单 :875 行同步+`python tools/extract_checks.py --diff` 对账零差异 | 术语表退役词(「魔法道具」2026-09-15/「罕见」2026-09-14);清单同步义务(test-conventions §8.3) |
**完成定义**:
1. q1–q4 落地;三条 grep 判据过(§8 wr1)+清单对账零差异;
2. 数值与断言条件零变化(TIER_QUOTAS/三处 @export 默认/tres 数值行/断言表达式逐字不变——wr1 读数对拍);全套闸按本批改动域选档全绿;
3. 撤销证明一条(wr1);三份产出物写齐(T1)——含条目论断订正结论落档。
## 2. 设计事实源
| # | 出处 | 取用条款 |
|---|---|---|
| D1 | 工程证据指认=条目实况+本卡 §3 实查(论断订正) | 清扫范围 |
| D2 | [code-conventions](../design/engineering/code-conventions.md) §1(文件头注释纪律:只写现行、禁变更叙事) | q1/q2/q3 改写口径 |
| D3 | [术语表](../design/gdd/术语表.md) 档名与退役词口径 | q3/q4 旧名清扫依据 |
| D4 | [test-conventions](../design/engineering/test-conventions.md) §8.3 | 断言标签改动须同步验证集清单 |
## 3. 现状事实(2026-10-26 写卡会话实查+grilling 补查于 master eb04313b;开工日 T0 复核行号)
| # | 事实 | 出处 |
|---|---|---|
| B1 | `TIER_QUOTAS := {"common":70,"excellent":25,"rare":7,"legendary":0}`(:37);rare 实投=ap 3(:60 默认)+rap 2(:61)+时沙 2(:62)=7——常量与逐 kind 求和一致;tres 只显式化 `curio_quota_ap_rare = 3`(:19,与默认同值) | `game/data/schemas/adventure_table.gd:37/60-62`;`game/data/tables/adventure.tres:19` |
| B2 | 校验活着且绿:`validate()` :227-231 按 TIER_QUOTAS 逐档核对 `tier_total`(以载入值求和——含 tres 未显式化的默认值);`table_structure_guard_test.gd:99-100` 断言全绿——条目「不一致」论断不成立的实证(grilling 复核确认求和链闭合) | `game/data/schemas/adventure_table.gd:210-233`;`game/tests/unit/data_config/table_structure_guard_test.gd:99-100` |
| B3 | schema 头注旧口径三处+deck_total 旧口径一处::32「四级直映射 70/25/3/0」/:49「70/25/3 零偏离」/:58「总量 98 锚不变」/:202「T2 四级 98+T4 凭证投放 6=104:70+25+9+0」(deck_total 实算 102) | `game/data/schemas/adventure_table.gd:32/49/58/202` |
| B4b | **「罕见」三处合法保留·显式豁免**(二轮裁定):schema:25-26 档名映射注(「罕见→稀有」——名映射对照载体,删则转换关系丢失);schema:92-93 与 curio_deck.gd:129-130「罕见只在概率不在价格」=奇物四口径契约④**原名引述**(改写即脱离契约原名断链)——grep② 文件面不含它们、非残留 | `game/data/schemas/adventure_table.gd:25-26/92-93`;`game/core/curio_deck.gd:129-130` |
| B4 | tres 头注旧口径五处::36「70/25/3/0=98 张」/:37「稀有 3…旧 70/25/3 直映射」沿革句(二轮 grep① 实跑命中补枚举)/:41「普通 70/稀有 25/罕见 3 = 98 张」/:45「罕见〔AP 3〕」(:44-45 档位构成段新旧名混写)/:53「70/25/5」 | `game/data/tables/adventure.tres:36/37/41/44-45/53` |
| B5 | 旧名残留两处:golden/README.md:26「魔法道具 HUD」(成因记录句内);`adventure_feats_test.gd:399` 断言标签「(稀有/罕见档余量……)」(v1.0 误记 smoke_boot.gd:399——smoke_boot 全文仅 77 行,grilling 订正;验证集清单 :875 序号 505 源址列=399 即此件) | `game/tests/golden/README.md:26`;`game/tests/unit/core/adventure_feats_test.gd:399`;`game/tests/验证集清单.md:875` |
| B6 | 「魔法道具」全仓 game/ 面命中仅 README:26 一处(grep 实查) | grep 实查 |
## 4. 设计契约(红线,违反 = L3 停机呈报)
🔴 **契约 1 · 数值与断言条件零变化**:TIER_QUOTAS、三处 @export 默认值、tres 全部数值行、adventure_feats_test:399 的条件表达式——逐字不动;只改注释/头注/README/标签文本与清单行。
🔴 **契约 2 · 清单跟上**:q4 断言标签改动后 `tools/extract_checks.py --diff` 对账零差异;禁为免对账保留旧标签。
🔴 **契约 3 · 头注只写现行+清扫不漏点**:q1–q3 改写后 schema/tres 头注零旧口径数字与旧档名误用(**§3 B3/B4/B5 清单逐处全清——清单外新发现即 L3 停机呈报**,禁实现段自行扩点;B4b 豁免三处除外);现行口径全库唯一(与 B1 实投一致)。
🔴 **契约 4 · 禁为机检文本保留无效成员**(req-card 第 13 条):禁为避免改断言标签/清单行而保留旧档名文本;机检键(清单冻结文本)与契约 1 冲突时停卡呈报。
## 5. 范围边界
**做**:q1–q4(B3/B4/B5 清单全部十一处:schema 四+tres 五+旧名两);grep 验证;对账;撤销证明;产出物(含论断订正结论)。
**不做**:
- TIER_QUOTAS 或配额任何数值调整(provisional 现状不动——归未来数值标定窗口);
- node-reward GDD 文档(v2.9 已按 tres 现行值对齐——零反哺预期,T0 核对注记);
- design/ 面旧词(已由 termsweep-20261026 批清扫);**B4b 三处「罕见」豁免**(档名映射注+契约④原名引述——非误用;GDD 侧若将来改契名,随批同步)。
## 6. 关联文档同步面
| 文档 | 关联点 | 同步义务 |
|---|---|---|
| `待办清单.md` | 来源条目状态推进+论断订正注记(实现报告落档) | 反哺点 · 列清单(①:状态核对注记) |
| [node-reward](../design/gdd/ux/node-reward.md) v2.9 | 文档面已按 tres 现行值对齐——T0 核其与 B1 无冲突后零改动注记 | 反哺点 · 列清单(②:预期零改动注记) |
## 7. 任务卡
### 卡前 · 文件结构图
| 文件 | 职责 | 行为改动 |
|---|---|---|
| `game/data/schemas/adventure_table.gd` | q1(:32/:49/:58)+q2(:202)头注口径(复用既有·修改) | 非行为改动(注释面)→ wr1 |
| `game/data/tables/adventure.tres` | q3(:36/:41/:44-45/:53)头注旧口径(复用既有·修改) | 非行为改动(注释面)→ wr1 |
| `game/tests/golden/README.md` | q4a 旧名一句(复用既有·修改) | 非行为改动(说明文本) |
| `game/tests/unit/core/adventure_feats_test.gd` | q4b 断言标签文本(复用既有·改标签) | 非行为改动(标签文本;条件零触碰)→ wr1 |
| `game/tests/验证集清单.md` | q4b 清单行同步(复用既有·同步) | 非行为改动(清单面)→ wr1 |
(零新增文件、零新增函数。)
### 接口块
- **wr1 grep 判据**(三条,各零输出):①`grep -n "70/25/3\|70/25/5\|70+25+9\|总量 98" game/data/schemas/adventure_table.gd game/data/tables/adventure.tres`;②`grep -n "罕见" game/data/tables/adventure.tres game/tests/unit/core/adventure_feats_test.gd`;③`grep -n "魔法道具" game/tests/golden/README.md`。
- **q4 对账命令**:`python tools/extract_checks.py --diff` → 零差异。
- **数值不变判据**:改前改后 `tier_total` 四档读数(70/25/7/0)与 `deck_total()`(102)对拍一致(table_structure_guard_test 直跑绿即护栏)。
- **最窄闸**:table_structure_guard_test+adventure_feats_test 单件直跑+对账;全套闸按本批改动域选档。
### 落位与可复用性预检
- **零新增件**:十处全在既有文件原位改写;清单同步复用 extract_checks 既有工具。
- **复用面**:现行口径唯一事实源=TIER_QUOTAS 常量+tres 实值(B1)——头注改写只指认它,不引第三处数字。
- **唯一面**:头注改写后全库配额数字表述唯一(schema/tres/README/清单同口径);「罕见」「魔法道具」在**判据面**(grep②③ 文件集)清零——B4b 豁免三处为合法载体非残留。
- **分层**:纯文本面;数值/断言条件零触碰。
### T0 事实坐实(≈0.05d)
- [ ] 复核 B1–B6(重点:B3/B4 十处逐行确认无第十一处、B2 求和链复核记录);确认措辞方向。可核查结果:口径核对表进实现报告素材。
### T1 清扫实装+对账(≈0.2d)
- [ ] 实装 q1–q4(十处)。可核查结果:wr1 三条 grep 零输出;对账零差异;两测试单件直跑绿。
- [ ] 验证步骤:全套闸按域选档跑一次全绿。
### T2 撤销证明+产出物落位卡(≈0.05d,末卡)
- [ ] 撤销证明一条:回退 q3 的 :41 hunk(旧名活句还原)→ wr1 grep② 命中即红 → 还原复绿。记录进实现报告。
- [ ] 写齐三份产出物(实现报告〔十处口径核对表+论断订正结论+实机目检总清单——零玩家可感项写明理由〕/代拍板追认单/反哺点清单〔§6 逐条落点〕)。
- [ ] 合并前置:独立验收审计(§8.3)逐行「通过」。
**估时合计 ≈0.3d**。编排注记:微件卡;断言标签改动触闸面套件文本——与探针/冒烟改动类他卡同波无冲突。
## 8. 验证闸
### 8.1 改动—验收对照表
| 需求点 | 改动(文件:行/行为) | 验收测试(名称+落点+尾缀) | 层级 | 真实入口 | 撤销证明 |
|---|---|---|---|---|---|
| wr1 十处口径与旧名清扫 | q1–q4 文本改写 | 三条 grep 零输出〔wr1〕+对账零差异+四档读数对拍(70/25/7/0、102) | 静态文本+单元护栏 | grep/extract_checks 真实跑批+两测试单件直跑 | 回退 :41 hunk → grep② 命中即红(T2) |
| wr2 产出物 | T2 三份 | 件核〔wr2〕 | — | — | 缺项红 |
### 8.2 测试削弱申报
零(断言条件零改动;标签文本换代属 q4 申报内改动,清单同步)。
### 8.3 独立验收审计
入口=未参与实现的会话或子代理;报告落 `reports/iter<N>-验收审计-<日期>.md`;抽查重点=契约 1(数值与条件逐字核对)、契约 3(§3 B3/B4/B5 清单十一处全清、B4b 豁免三处未被顺手改)、对账记录、头注零沿革叙事。未过不得合并。
## 9. 异常分级
- **L1(自救)**:十处具体措辞。
- **L2(记录继续)**:行号漂移。
- **L3(停机呈报)**:T0 发现 deck_total 实算与 102 不符(B3 推导失实——口径问题升数值问题另裁);发现 B3/B4/B5 之外第十一处旧口径/旧名残留;改写被迫触数值行(超契约 1)。
## 10. 代拍板白名单(超清单必呈报)
1. 十处具体措辞(语义=现行口径、旧名清除)。
2. q4b 新标签文本。
3. 提交切分与 worktree 分支命名。
## 11. 待裁点
**零待裁点,开工门=U0。** 灰色推导一处(呈报可否决,随 T2 反哺点):条目「不一致」论断按 §0/§3 订正为「表述口径问题、数值一致」——依据=B1/B2 实查+grilling 求和链复核;若用户坚持将 rap/时沙配额也显式化写进 tres(数值面文件改写),超出本卡文本清扫范围,须另立批。
## 12. 自审六查与 grilling 复核记录
**自审六查(2026-10-26 写卡会话,v1.0)**:①规格覆盖;②步骤扫描;③类型一致性;④审查焦点——数值零触碰护栏、清单跟上、论断订正落档;⑤篇幅比例;⑥落位预检。
**grilling 一轮复核记录(2026-10-26,独立子代理对抗复核,判「回炉」两阻断)**:①阻断一=q4b 断言文件张冠李戴(v1.0 误写 smoke_boot.gd:399——该文件全文 77 行;实址 `adventure_feats_test.gd:399`,清单 :875 序号 505 源址列即证)——v1.1 折入:归属/文件结构图/接口块 grep② 三处订正;②阻断二=清扫枚举不完备(v1.0 只列 :41 一处——tres 实有 :36/:44-45/:53、schema 实有 :49/:58,按 v1.0 判据开工即 L3)——v1.1 折入:q1/q3 范围扩为 schema 三处+tres 四处(B3/B4 全枚举)+grep① 口径串判据重设+契约 3「十处全清」;③应修=deck_total 头注 :202 行号订正——已并入 q2/B3;④复核确认=论断订正成立(求和链闭合、guard_test 绿、deck_total 实算 102)、§11 显式化出口处理正确。
**grilling 二轮闭合复检记录(2026-10-26,独立子代理,判「回炉(窄修)」)**:一轮两阻断核闭合;窄修两处+新裂缝——①tres:37 漏枚举(「稀有 3…旧 70/25/3 直映射」沿革句含旧值——grep① 实跑命中,v1.0/v1.1 均未列)→v1.2 入 q3/B4(第五处);②「罕见」game 面另三处未裁定(schema:25-26 映射注/schema:92-93+curio_deck:129-130 契约④原名引述)→v1.2 裁定 B4b 合法保留显式豁免(§5/§7 唯一口径改「判据面清零」);③B3 引文笔误(70+25+9+0)订正;§8.3/契约 3 口径统一为「§3 清单逐处」。