From 2a28fc15c9ecfff57928221803c899b4630ff35b Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Sun, 11 Oct 2026 19:31:09 +0800 Subject: [PATCH] =?UTF-8?q?docs(reqcard):=20=E4=B8=89=E5=AE=9E=E8=A3=85?= =?UTF-8?q?=E6=89=B9=E9=9C=80=E6=B1=82=E5=8D=A1=E5=9B=9E=E8=A1=A5=E9=80=90?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E7=82=B9=E9=AA=8C=E6=94=B6=E6=B8=85=E5=8D=95?= =?UTF-8?q?=EF=BC=88=E9=80=BB=E8=BE=91=E9=AA=8C=E6=94=B6=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E8=AE=BA=E6=89=B9=EF=BC=8C2026-10-11=20=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=BB=A4=EF=BC=89=E2=80=94=E2=80=94=E4=B8=93=E9=95=BF=20V1-V23?= =?UTF-8?q?+=E4=BB=B6=E8=A1=A8=2036=20=E8=A1=8C/=E7=A7=98=E5=AE=9D=20V1-V1?= =?UTF-8?q?9+12=20=E4=BB=B6=E8=A1=A8/=E5=A4=A9=E8=B5=8B=E6=A0=91=20V1-V23?= =?UTF-8?q?=EF=BC=88=E5=8E=9F=E5=85=AB=E6=8E=A2=E9=92=88=E5=8D=87=E6=A0=BC?= =?UTF-8?q?=EF=BC=89=EF=BC=9B=E4=B8=89=E5=8D=A1=E6=97=A7=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?+=E6=97=A7=E9=AA=8C=E8=AF=81=E7=BA=A6=E6=9D=9F=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E8=A6=86=E7=9B=96=E6=9D=A1=E7=9B=AE=E5=AE=9E=E6=9F=A5?= =?UTF-8?q?=E5=9C=A8=E6=A1=88=EF=BC=9B=E7=A7=98=E5=AE=9D/=E4=B8=93?= =?UTF-8?q?=E9=95=BF=E5=8D=A1=E5=8F=A3=E5=BE=84=E7=9F=9B=E7=9B=BE=E4=B8=A4?= =?UTF-8?q?=E5=A4=84=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../需求卡片-专长实装批-2026-10-11.md | 85 ++++++++++++++++++- .../需求卡片-天赋树实装批-2026-10-11.md | 42 ++++++++- ...求卡片-秘宝体系实现重构落地批-2026-10-11.md | 59 ++++++++++++- 3 files changed, 177 insertions(+), 9 deletions(-) diff --git a/design/research/需求卡片-专长实装批-2026-10-11.md b/design/research/需求卡片-专长实装批-2026-10-11.md index 30b82b97..193a4fd8 100644 --- a/design/research/需求卡片-专长实装批-2026-10-11.md +++ b/design/research/需求卡片-专长实装批-2026-10-11.md @@ -1,6 +1,7 @@ # 需求卡片:专长实装批(奇物) > 2026-10-11 立卡(用户发令写卡;同日用户纠正=本卡范围仅奇物线,秘宝实装系另批冻结条目不并入——原「专长秘宝实装批」错名撤销重立)。设计前置检查:奇物.md v3.15(设计+裁定+命名清零),满足设计定稿前置。本卡承接 [06-待办清单]「秘宝体系实现重构落地批」条目 **③专长侧联动**(拆出独立成卡)+ 本会话奇物线新增面(Boss 兑付换代/凭证五件/池结构案 D 实装/生命比例扩签前置)。 +> v1.1(2026-10-11):回补逐需求点验收清单(逻辑验收方法论批,用户令)。 ## 1. 目标与完成定义 @@ -68,7 +69,86 @@ ## 7. 验证闸 -轻闸=冒烟全绿(基线 840,换代后数字随断言增减但 0 失败)+行为探针;重闸=run_all 全绿+MC 新基线对拍+断点回放(新旧档兼容口径:旧档按 06 冻结令=破坏性废弃不迁移,开发阶段无存量玩家);两入口铁规不破;批末人闸=实机目检。 +### 7.1 闸口径 + +- **测试方式两分法**:能力验证=调试接口直改游戏数据——经现役调试门控(DebugOverlay/DS_DEBUG)或在测试代码内直改数据表行、置计数器、直调核心写口构造状态,不经 UI、不走正常资源积累流程;体验验证=用户目检,观测项登记 07-体验验证清单(机械面随批)。本批以能力验证为主,用户目检面=Boss 专长三选一呈现、曝光槽三卡观感、卡面文案与稀有度档位显示(登记 07)。 +- **轻闸**=冒烟全绿(基线 840,换代后数字随断言增减但 0 失败)+行为探针;**重闸**=run_all 全绿+MC 新基线对拍+断点回放(新旧档兼容口径:旧档按 06 冻结令=破坏性废弃不迁移,开发阶段无存量玩家)+全仓旧件残留引用静态核查(V13/V14 出口条件);两入口铁规不破(自动验证只走 smoke_all.gd 与 tests/run_all 两个执行口,禁另开执行口);批末四闸(冒烟+单元测试+场景探针+改前改后读数对拍)全绿才合并;批末人闸=实机目检。 + +### 7.2 逐需求点验收清单 + +> 断言失败消息末尾带〔专长批 Vn〕编号尾缀,断言与清单互查靠 grep(code-conventions.md §3.5 第 2 条)。执行载体五选一:单元测试(tests/run_all)/冒烟断言(smoke_all.gd 对应场景段)/场景探针(smoke/ 下 *_probe)/MC 同种子对拍/人工核对(仅限无法自动化的纪律类需求点)。 + +| 编号 | 需求点/契约指针 | 测什么(具体断言或行为) | 怎么测(载体+注入粒度) | 谁验 | 任务卡 | +|---|---|---|---|---|---| +| V1 | 契约 1(四词表封闭) | T1 扩签后四词表仍封闭:新事件/新效果类型/新事实/新算子在册(effect_engine.gd:20-46),出域值全部被拒——加载期 validate_trigger_row 报错(effect_engine.gd:272-314)、运行期 dispatch fail-fast(effect_engine.gd:148) | 冒烟+单元。注入=测试直构订阅行字典:合法新词行过 validate 零违例;构造出域 on/fact/op/kind 各一行,断言加载报错与 dispatch 抛错 | 自动闸 | T1 | +| V2 | §1①④(新专长全量替换旧 27 件) | feats.tres 加载零违例、行数=落表实数(件数口径见待裁点 4:基础 27 件+迁入 2 件);每件 relic 令牌入牌库;旧 27 件 feat_id(清单=当前 feats.tres:7-545 行:arcane_ember…magma_body)全仓 grep 零残留 | 冒烟+静态核查。注入=直读表行与 _curio_deck 构成;残留面=静态 grep 旧 feat_id 清单 | 自动闸 | T3 | +| V3 | §1①(行为与订阅行声明一致) | 27+2 件逐件按附表 A 断言:正常效果命中、边界不触发、反例不发生 | 冒烟/单元。注入=测试构造持有集数组直调 EffectEngine.rebuild+dispatch(命中面直测),发射点行为段沿用现役 _fx_emit 直测法(smoke_all.gd:760-917 同构) | 自动闸 | T3(账本件联动 T6;附属表=7.3) | +| V4 | §1①(攒层/计数类件账本承载,T0 结论落地) | 攒层/计数类件(安全帽/疼痛记忆/连环陷阱/破封一击/血税等)跨事件计数:置计数→走事件路径→断计数值与清零点(round_start 重置/用后清零) | 单元。注入=直调 EffectEngine.counter_add/counter_spend 写口(effect_engine.gd:167-181)+dispatch 构造事件 | 自动闸 | T6 | +| V5 | §1②(四级档位案D 配额表);契约 4 | adventure.tres 四级配额结构锚:validate 零违例、四档各档张数=结构锚值、deck_total=新总量;占位形态在 GDD 结构锚描述内 | 冒烟。注入=直读表行;旧三档断言(smoke_all.gd:219-222 TIER_QUOTAS 三档锚+deck_total==98)同批摘除换代 | 自动闸 | T2 | +| V6 | §1②(令牌语义) | 令牌=出现次数上限三态:拿了消耗(选中摘牌单点 adventure_runner.gd:448-457)、没拿回池(未选候选再次可现)、只刷出不计次数 | 冒烟。注入=直改 _curio_deck 构成+直调 pick_curio | 自动闸 | T2 | +| V7 | §1②(曝光槽 2+1+子池回退) | 三选一呈现=2 格全池+1 格优秀档以上子池;高档子池空该格回退全池;池空走同族兜底;凭证不进子池(独立计数体系) | 冒烟。注入=直改 _curio_deck 档位构成(清空高档构造回退、清空全池构造兜底)后直调候选抽签面 | 自动闸 | T2 | +| V8 | §1②(概率与上限解耦) | 每成员概率位与已拿上限 cap 两属性独立可设:改 cap 不动概率、改概率不动 cap;cap 只在拿了才计、刷出不计 | 冒烟/单元。注入=直改表行 cap 字段+直调兑付写口计数对读 | 自动闸 | T2 | +| V9 | §1(凭证五件路由) | 新 5 件兑付路由逐件断言(附表 B):刷新券→刷新存量账、储备金袋→RAP、时沙→当前 AP 池、完美保险→完美资格标记、同调电池→attune_charges 充能账(adventure_runner.gd:79 账本在役,玩家选件交互面) | 冒烟+单元。注入=直调 _apply_curio_pick 各 kind(adventure_runner.gd:411-444 路由面) | 自动闸 | T4(附属表=7.4) | +| V10 | §1(留任 2 件迁移+AP 上限归属性轴) | 小金币袋/应急口粮改名迁移后路由与值不变(GP 钱包/当即回血);行动点上限自资源配额迁入属性轴(bonus 四轴 ap 落点 adventure_runner.gd:60 既有承载) | 冒烟。注入=直调 _apply_curio_pick+读加算区 | 自动闸 | T4 | +| V11 | §1③(Boss 通关=回血+专长三选一) | 非末关通关恰一次发出 curio_choice_presented(adventure_runner.gd:44):载荷含回血读数、候选全为专长;末关通关不发;奖励节点与商店兑付面零变化;旧提升三选一通道摘除后候选零非专长令牌混入 | 冒烟。注入=auto_player 驱动至通关停点+直读停点载荷 | 自动闸 | T5 | +| V12 | 奇物.md v3.1 档配比(契约 7 形态面) | Boss 三选一候选按档配比/加权抽取:同种子批量抽样各档出现频率出带(区间带,带=声明配比±容差) | MC 同种子对拍。注入=直调候选抽取面批量取样 | 自动闸 | T5 | +| V13 | §1④(两迁出行删除+全仓零残留) | treasure_items.tres 无 venom_edge/flag_burst 行(现役 treasure_items.tres:76-109/:111-127);全仓(game/ 内 .gd/.tres/.tscn)两 item_id grep 零残留;连带死面清理:battle_orchestrator.gd:919 attune_flag_burst 硬编码分支、treasure_item_table.gd:44/:52 venom_rider/flag_burst 效果类型词 | 静态核查+冒烟(删除后表加载零违例、同调目录收窄不缺行) | 自动闸 | T9 | +| V14 | §1④⑤(旧验证约束同生死,code-conventions.md §3.5 第 5 条) | 只验证旧专长/旧池/旧凭证结构的断言同批摘除或换代,摘除后冒烟仍全绿且新断言接管。本卡实查在案的摘除/换代清单:smoke_all.gd:639-650(旧 27 件入池 125/rarest 6)、:651(流派扫雷铁律 validate 语义——随 T1 加载校验同步按新框架落法,处置在实现报告留痕)、:654-674(FeatsEngine.tiers_for/is_formed 流派档位断言——流派框架 v2.9 已废)、:675-697(临时表夹具行随新行 schema 换代;渠道白名单断言本体保留)、:699-734(门票 A5/A6——凭证四参换代后按新表值重锚)、:740-754(relic 兑付/断点往返主语换代)、:760-917(七流派订阅面全段以旧 27 件为主语——含 :766-768 魔网织者 magic_vs_magic 与湛蓝誓约 magic_vs_heavy 的 clamp_check 断言、:805-807 猎手刺剑 pierce_vs_light 断言、:878 奥术余烬文案主语、:880-893 深挖钻头付费开掘回归)、:4176-4186(终局池读数六键三档聚合)、:4646-4658(同调装配 venom_edge/flag_burst 主语改留任他件)、:4764(unlock_item("venom_edge") 改他件)、adventure_monte_carlo.gd:52-57(MC formed 画像 14 旧件 seed_ids 随 T8 重锚) | 冒烟全绿出口+静态 grep(旧 id 清单在冒烟与单元段零残留) | 自动闸 | T2/T3/T5/T8/T9 | +| V15 | §1⑤(MC 新基线落档) | 池与兑付换代后 MC 同种子对拍:改前改后读数差异全部可归因(池换代/兑付换代/加权抽取),新行为锚落档;同种子重放逐位复现 | MC 同种子对拍(adventure_monte_carlo.gd 换代画像) | 自动闸 | T8 | +| V16 | §1(断点扩容) | 已拿计数器/新账面(攒层/血税等)/池状态(案D 新结构)入断点附随件且存档键白名单登记;同种子断点回放续接原时间线(计数恢复一致——breakpoint_resume_test P5 同构);feat_ticket_pity/sold 扩列先例同法(adventure_runner.gd:218-219) | 重放+快照比对。注入=构造断点快照直调 resume_adventure | 自动闸 | T7 | +| V17 | T10 空配置验收闸 | 三选一池空兜底/商店空货架——验证内容 T10 卡已写,本条为清单指针不重复展开 | 按 T10 卡执行 | 自动闸 | T10 | +| V18 | 契约 2(层级纪律) | 奇物不入同调位:同调目录只读 treasure_items(venom_edge/flag_burst 迁出后目录自然收窄,feats 表行零入目录);秘宝不入当局随机渠道:_curio_deck 零秘宝 item_id 种 | 冒烟。注入=直读同调目录投影与 _curio_deck kind 全集 | 自动闸 | T3/T9 | +| V19 | 契约 3(棋盘事实不可变) | 装配任意新专长组合(含全体件)开局,同种子棋盘快照(危险格位置/邻接数字)与零持有逐位一致;新件订阅行零棋盘改写类效果(净化工兵退役后 rewrite_board 效果类型去留随 T1 落法) | 重放+快照比对。注入=构造持有集全量 rebuild 后跑棋盘生成 | 自动闸 | T3 | +| V20 | 契约 5(排雷玩法零特判) | 棋盘生成/排雷结算侧代码无按奇物件名或 feat_id 写的分支;效果接入全部经效果引擎订阅面 | 人工核对——静态 grep 侧代码 feat/件名引用清单逐条过目,逐条注明属效果引擎消费面或误特判 | 用户(人工核对) | T3 | +| V21 | 契约 6(对外命名纪律) | feats.tres 全部 display_name/desc 字段无「雷/插旗」字面;插旗对外=封印、危险格对外风味=陷阱/巢穴;玩家可见文案零分类名(奇物.md 验收标准 5 同源) | 人工核对——静态 grep 禁字清单初筛+逐件文案过目(初筛可入冒烟静态段,裁决以人工过目为准) | 用户(人工核对) | T3 | +| V22 | 契约 7(数值纪律) | 全部 provisional 占位值不超 GDD 结构锚形态(陷阱爆发倍率>1、血蜜比值<1、石肤上限 M 在册、背水生命比例阈值等) | 人工核对——表值逐项对照奇物.md 件表「账」列与结构锚描述 | 用户(人工核对) | T3/T4 | +| V23 | 契约 4(配额结构锚重裁纪律) | 换代后新配额数字与已裁裁决记录一致;如偏离 GDD 结构锚须有呈报记录 | 人工核对——对照本卡待裁点裁决与奇物.md 池结构节核对四级配额数字 | 用户(人工核对) | T2 | + +### 7.3 附表 A:专长 27 件+迁入 2 件逐件表(V3 附属表;断言要点/边界/反例三列即 V3 每件的断言内容) + +| 件名 | 正常效果(断言要点) | 边界 | 反例(不该发生什么) | +|---|---|---|---| +| 双管镐 | on 付费挖格:每第 2 次返 1 AP(计数器取模判满) | 免费开格不计数;未满 2 次不返 | 不把免费开格计入;一次不多返 AP | +| 地质学家 | on 开格:每首开一种新类型资源格集 1 点,满 4 种→揭示 1 格 | 同类型重复首开不叠点;只揭真格 | 类型集不满就揭示;把非资源格计入类型集 | +| 安全帽 | on 开安全格攒 1 层;on 踩雷耗层每层减 1 伤害 | 攒层一次清零;零层踩雷全额扣血 | 踩雷后留余层;减伤超过当次伤害(负伤害/免伤) | +| 跳格采掘 | on 挖开空白 0 格(连锁展开)攒 1 点,3 点→任意揭示 1 格 | 普通开格不计点;未满 3 点不触发 | 揭示非真格;跳过计数直接揭示 | +| 爆破会计 | on 轮末:本轮挖格花费 AP≥5 → +1 GP | 花费不足不触发;每轮末判一次 | 按开格格数计而非花费;跨轮结转 | +| 边陲矿工 | on 挖开棋盘边缘格:产出 +1 | 非边缘格零产出 | 中心格触发 | +| 封印回响 | on 标中计数;on 轮末计数≥2 → 返 1 AP(下轮) | 计数不足不返;触发后清零 | 标中即时返 AP;占用既有兑付位 | +| 示警烟火 | on 标中:揭示该危险格周围 3×3 的资源类型(不揭危险格与安全格) | 只揭类型不揭安危;范围不出 3×3 | 揭示危险格/安全格位置;越出 3×3 | +| 封印匠 | on 标中每第 3 次 → 该危险格中立移除 | 第 1/2 次不移除;频率闸死 | 连续移除多格;移除非标中格 | +| 封印桩 | on 标中:本轮 AC +N | 本轮内有效、下轮清零 | 跨轮结转;未标中时生效 | +| 疼痛记忆 | on 踩雷攒 1 层;下场战斗攻击附加层值伤害,用后清零 | 层跨节点延续;用后清零 | 当轮即时出伤;层值不消耗可反复用 | +| 保险丝 | on 受伤单次 ≥5 攒 1 点,2 点→护盾 1 层 | 单次 <5 不攒;攒满 2 点才出盾 | 多次小额伤害累计成大额;1 点即出盾 | +| 见血开窍 | on 踩雷:揭示 1 格 | 每颗雷一次 | 揭示非真格;附带其他收益 | +| 陷阱本能 | on 踩雷:本轮攻击 +N(走攻击面板乘区) | 当轮即效、不结转 | 走必中附加通道(旧 rider 形态);跨轮生效 | +| 连环陷阱 | on 同轮第 2 颗及以后踩雷:每颗额外 +1 层(疼痛记忆同账) | 首颗不加层;同轮判定 | 给自身单独收益;跨轮累计 | +| 陷阱爆发 | on 踩雷:全体存活敌受雷伤×倍率直伤 | 倍率>1 结构锚;只伤敌 | 波及己方;不按倍率直伤 | +| 血蜜 | on 踩雷:回复 N 生命 | 比值<1 结构锚(净血账期望为负) | 回复量≥雷伤(防「见雷就踩」退化);非踩雷时回复 | +| 石肤 | on 受伤:AC +1(本场累计,上限 M) | 本场域、跨战重置;达上限不再涨 | 跨战累计;无上限成长 | +| 背水 | when 生命 ≤50%:受伤额外 −N | 过半血不减 | 无条件减伤;影响攻击面 | +| 破封一击 | on 挖开有旗的危险格:额外 +1 层(疼痛记忆同账) | 挂棋盘事实(挖开当时有旗),非玩家意图判定 | 对无旗危险格/安全格触发;按玩家意图判定 | +| 弃图兑换 | on 停手:剩余 AP≥3 → 剩余 AP 1:1 折为下轮伤害 | 不足 3 不触发;单向无环 | 折算进 AP/GP 等其他资源;形成兑换环 | +| 一滴不剩 | on 轮始:上轮 AP 耗尽 → +1 AP | 上轮有余不触发 | 憋 AP 未耗尽也发 | +| 收盘 | on 轮末:本轮开格 ≥8 → +1 GP | 不足不触发;每轮末判一次 | 按挖格花费计(与爆破会计混账);一轮连发 | +| 斩首学者 | on 击杀:揭示 1 格 | 每杀一次 | 揭示非真格;非击杀触发 | +| 处刑台 | on 敌血量阈值 ≤30%:主角对其伤害 +N | 阈值外不加;只对该敌 | 满血敌加成;波及其他敌 | +| 战地包扎 | on 战斗胜利:回复 N 生命 | 战败不回复;封顶生效上限 | 绑踩雷条件;超上限回复 | +| 血税 | 本局踩雷 −2 最大生命;标中 +1 攻击 | 双向同局账本;冒险收束清零 | 单向生效(只罚或只赏);跨冒险残留 | +| 淬毒刃纹(迁入) | on attack_commit when 克制(advantageous):追加 +N | 仅克制正面(矩阵值>0) | 克制负面/中性面触发;沿用旧 clamp_check magic_vs_* 挂点 | +| 封印爆裂(迁入) | on flag_hit:全体存活敌 N 群伤 | 每标中一次触发一次 | 无标中触发;波及己方 | + +### 7.4 附表 B:凭证件逐件表(新 5+留任 2,V9/V10 附属表) + +| 件名 | 正常效果(断言要点) | 边界 | 反例(不该发生什么) | +|---|---|---|---| +| 刷新券 | 刷新存量账(冒险级)+1;到手即结算消尽 | 不进持有集不进加算区;依赖刷新件写错账修复(F-1)同批落地 | 写进旧 _attune_refresh_x 账(写错账复发);可囤积 | +| 储备金袋 | 储备池 RAP +N(节点级) | 战斗结束清零系既有语义 | 写 GP 钱包;跨节点残留 | +| 同调电池 | 已装配主动秘宝使用次数 +1(玩家选哪件,本次冒险) | 充能冒险开始重置(兼容);跨层写秘宝充能账 attune_charges | 自动替玩家选件;写当局加算区 | +| 时沙 | 下轮 AP +2(回合级) | 一次性节奏件;只改池不改上限 | 抬 AP 上限(与属性轴混账);当轮即时生效 | +| 完美保险 | 本战下一次标错不破坏完美资格(节点级) | 只保一次;节点级 | 保护第二次标错;跨节点携带 | +| 小金币袋(留任) | GP 钱包 +20/+50 | 计价物不自售(不进商店货架) | 出现在商店货架;进持有集 | +| 应急口粮(留任) | 生命账当即回复 +6 | 在商店内(默认原则);封顶生效上限 | 进持有集;超上限回复 | ## 8. 异常分级 @@ -78,8 +158,9 @@ L1 自救(断言失败自查表值/占位值);L2 记录继续(扩签落 效果引擎扩签的查询面落法映射;schema 新字段英文键命名;冒烟断言形态与种子选择;占位数值在 GDD 结构锚形态内取整;卡面文案直读行 desc;代称与注释措辞。超出清单必呈报。 -## 10. 待裁点(已全裁清零——卡片成立,已编入迭代 20〔2026-10-11 用户令〕,开工门=U0 用户发令) +## 10. 待裁点(Q1-Q3 已全裁清零——卡片成立,已编入迭代 20〔2026-10-11 用户令〕,开工门=U0 用户发令;v1.1 回补新增第 4 条件数口径待裁,不阻塞开工) 1. **Q1 Boss 兑付换代口径=换代**(2026-10-11 用户裁):通关提升三选一整体退出、专长三选一进驻+回血保留。 2. **Q2 数值占位策略=按 GDD 结构锚给 provisional 占位值**(2026-10-11 用户裁)。 3. **Q3 迭代切分=单迭代交付全量**(2026-10-11 用户裁):不切多迭代;内部按 A/B/C 三段顺序推进+段末汇报;同批废「软时间盒 ≤3 工作日」自造规矩、迭代周期≈一周左右(roadmap 迭代粒度节随批改文)。 +4. **v1.1 回补新增(尚未裁决——逻辑验收方法论批登记,不阻塞已编入状态)**:新专长件数计数出入——卡文「新专长 27 件/新 27 行(含淬毒刃纹、封印爆裂自 treasure_items 迁入)」与奇物.md 计数(基础件表 27 件+迁入登记 2 件「实装批落地后并入件表」=feats.tres 换代后 29 行)不一致。推荐案=按设计权威计数落地:feats.tres 换代后 29 行(基础 27+迁入 2),卡文「27」视为标题口径未含迁入;淘汰依据=奇物.md 系设计权威且逐件可数(开格 6+插旗 4+踩雷 9+桥 1+节奏 3+战斗 3+尖点 1=27,另迁入 2)。V2/V3 断言按落表实数写,不硬编 27。 diff --git a/design/research/需求卡片-天赋树实装批-2026-10-11.md b/design/research/需求卡片-天赋树实装批-2026-10-11.md index 70769f53..06cf9d41 100644 --- a/design/research/需求卡片-天赋树实装批-2026-10-11.md +++ b/design/research/需求卡片-天赋树实装批-2026-10-11.md @@ -1,6 +1,6 @@ # 需求卡片:天赋树实装批 -> 日期:2026-10-11 | 状态:v1.2 已编入迭代 21(2026-10-11 用户令整卡编入——Q1-Q4 已裁,Q5 转排期规则默认先行,零开放待裁点) +> 日期:2026-10-11 | 状态:v1.3 已编入迭代 21(2026-10-11 用户令整卡编入——Q1-Q4 已裁,Q5 转排期规则默认先行,零开放待裁点)|v1.3 回补逐需求点验收清单(逻辑验收方法论批,用户令——§7 升格两段式,其余节零改动) > 设计权威文档:[天赋树](../gdd/systems/跨局循环/天赋树.md) v0.2(2026-10-11 设计会话终裁,零设计待裁点) > 在册条目:[06-待办清单](../gdd/06-待办清单.md)「天赋树实装批」(原「已建未接面两件」+「结构重构批」合并条) > 关联批:「武器锻造系统实装批」(共用面,时序见 Q5)|「秘宝体系实现重构落地批」(槽位定序点) @@ -92,10 +92,44 @@ ## 7. 验证闸 -- **轻闸(随卡)**:冒烟 run_all 全绿(基线=T0 实查值);schema 校验零违例单测(29 行+阈值前置+词表出域即拒)。 -- **行为探针(重闸件,随卡)**:①四件套+阈值前置购买逐条;②互斥购买+免费切换+规则键集跟随;③地脉共鸣四线全满觉醒/未满不亮;④工作间钥匙门(未点亮锁/点亮开/图鉴常开/占位面板零副作用——开闭无写档无报错无购买路径);⑤注入公式逐字段对拍(树淬炼+路线位+局内加算);⑥旧结构存档废弃探针(加载换代前结构存档→废弃重置→后续游玩正常,无残留脏节点);⑦六键效果各一条行为验证(窗口/限次/乘算各语义);⑧两入口同参对拍。 +### 7.1 闸口径 + +- **测试方式两分法**(仓库口径,code-conventions.md §3.5 第 4 条):能力验证=调试接口直改游戏数据——经现役调试门控(DebugOverlay/DS_DEBUG)或在测试代码内直改数据表行、置节点等级/激活侧/钥石余额、直调核心写口构造状态,不经 UI、不走正常资源积累流程;体验验证=用户目检,观测项登记 07-体验验证清单(机械面随批)。本批以能力验证为主,用户目检面=营地统一形态与树购买交互(见 V22)。 +- **轻闸(随卡)**:冒烟 run_all 全绿(基线=T0 实查值,断言随换代增减但 0 失败);schema 校验零违例单测(29 行+阈值前置+词表出域即拒)。 +- **重闸件**:原「行为探针」8 条已升格为 7.2 逐需求点验收清单 V2/V9/V8/V6/V12/V16/V10/V18(对应原①-⑧),随清单由任务卡执行,不再单列。 - **MC 配对锚**:三组两侧通关率差 <~3pp——六键落位后重跑一轮呈报(随 T7,读数归验证记录)。 - **人闸**:实机目检营地统一形态(用户)。 +- 两入口铁规不破:自动验证只走 smoke_all.gd 与 tests/run_all 两个执行口,禁另开执行口;批末四闸(冒烟+单元测试+场景探针+改前改后读数对拍)全绿才合并。 + +### 7.2 逐需求点验收清单 + +> 断言失败消息末尾带〔天赋树批 Vn〕编号尾缀,断言与清单互查靠 grep(code-conventions.md §3.5 第 2 条)。执行载体五选一:单元测试(tests/run_all)/冒烟断言(smoke_all.gd 对应场景段)/场景探针(smoke/ 下 *_probe)/MC 同种子对拍/人工核对(仅限无法自动化的纪律类需求点)。注入一律走调试口径:直改 meta_tree.tres 表行或 save 存档域(set_tree_level/set_fork_side/add_keystone 置数据),直调 MetaProgression(tree_buy 族/toggle 族)与 EffectEngine(rebuild/dispatch/counter 写口)构造状态,不走正常游玩积累。 + +| 编号 | 需求点/契约指针 | 测什么(具体断言或行为) | 怎么测(载体+注入粒度) | 谁验 | 任务卡 | +|---|---|---|---|---|---| +| V1 | §1①(29 节点 schema 零违例) | meta_tree.tres 行数=29 且 MetaTreeTable.validate 零违例(脉/类型/币词表出域即拒、Fork 三组每组恰 a/b 各一、彩蛋 ≤3、effects 键封闭、零 archetype);出域行逐类构造各一行(vein/kind/currency/effects 键/fork_side/悬空 requires)全部被拒 | 单元测试。注入=直读表行调 validate();反例=测试复制 rows 副本塞出域行逐类断言报错 | 自动闸 | T1 | +| V2 | §1①(购买面可玩,原探针①升格) | 购买校验四件套逐条:cap 满拦截;行门槛(层 N 需全树总等级 ≥4×(N−1),总等级口径=tree_nodes 全部节点等级之和、免费点亮与分叉激活计入);点亮前置任一未亮即拒;等级阈值前置——锻造工坊在攻击淬炼累计 <2 或护甲累计 <2 时不可购、双双达标当刻可购(呈现「攻击淬炼累计 ≥2 且护甲累计 ≥2」);余额不足购买失败且存档零副作用。反例:阈值不满足可购=红、门槛恰达不开放=红 | 冒烟+单元。注入=save.set_tree_level 逐节点置等级+add_keystone 置余额→tree_can_buy 逐节点判定→tree_buy 受理写账读回 | 自动闸 | T2 | +| V3 | 契约 1(两币分工) | 任一付费节点购买只扣钥石(GP 侧零购买入口);余额不足时 tree_buy 返回 false 且 tree_nodes/fork_sides/keystone_balance 读回逐位不变 | 冒烟。注入=add_keystone(0) 后直调 tree_buy 断拒绝三域零变化;购买成功断余额 −price 且 GP 账零触碰 | 自动闸 | T2 | +| V4 | 契约 2(层级纪律) | effects 含 archetype 键=加载致命(validate 报 load_bearing);29 行现役表零 archetype 键 | 单元测试。注入=复制 rows 副本塞一行 effects.archetype 断 validate 报错(meta_tree_table.gd:80-82 护栏面) | 自动闸 | T1 | +| V5 | 契约 3(写口唯一) | 扣币/升级/激活/写盘只经 MetaProgression 写口(tree_buy 族/toggle 族/buy_attune_refresh),UI 只发意图信号 | 人工核对——静态 grep 呈现层(presentation/)对 save.set_tree_level/spend_keystone/set_fork_side 的直调清单,逐条注明属组合根转发或违例 | 用户(人工核对) | T2/T4/T6 | +| V6 | §1②(营地统一,原探针④升格) | 工作间钥匙门:锻造工坊/秘宝匣未点亮=入口锁定态、点亮=展开工作间面板;图鉴常开无门槛;占位面板开/关零副作用——零写盘(存档文件内容快照比对不变)、零报错输出、面板内无可交互购买路径;旧属性锻造柜台列自营地移除 | 场景探针。注入=隔离存档+save.set_tree_level 置两钥匙节点点亮态→实例化营地→断锁定/展开/图鉴三态与开闭前后存档快照一致 | 自动闸 | T6 | +| V7 | §1②(属性唯一入口+旧柜台退役) | 营地属性强化购买面=树脊柱淬炼节点唯一;buy_forge 旧柜台购买面下线后全仓零调用残留(meta_progression.gd:56-63、camp_shop_presenter.gd:101、camp_overlay_view.gd:86-126 柜台列随之清退) | 静态核查+探针。注入=静态 grep buy_forge/forge_price 调用面;探针断营地无属性锻造柜台行 | 自动闸 | T4/T6 | +| V8 | §1②(彩蛋觉醒,原探针③升格) | 四条淬炼线 16 节点全 cap→地脉共鸣自动点亮且零消费(钥石余额不动、不经购买);任一线未满不亮。反例:未满可手动购亮=红、觉醒扣币=红 | 冒烟。注入=save.set_tree_level 逐节点置 cap→tree_buy 任一节点触发 _check_easter_egg(meta_progression.gd:304-312 换代判定)→断 tree_level("easter_ley")==1 且余额不变 | 自动闸 | T2 | +| V9 | §1③(Fork 互斥与切换,原探针②升格) | 购 A 侧即激活该组(fork_sides 入档);同组 B 侧不可购;免费切换零币换侧、切换后 tree_rule_keys==新激活侧节点 effects 键集;同侧重复切换零操作(存档零变化) | 冒烟。注入=add_keystone→tree_buy_fork 购一侧→tree_toggle_fork 换侧→逐断激活侧/键集/余额 | 自动闸 | T2 | +| V10 | §1③(Fork 六键真效果,原探针⑦升格) | 六键各一条正例+反例:先手压制=每关首轮 AP+1、第二轮不触发、第二关首轮窗口刷新再触发;稳健拓荒=首轮窗内受击出盾、窗外不出;锋=踩中危险格伤害减半·每关限次、限次耗尽全额、安全格不减;守=危险格标记错误返还行动点·每关限次(守侧断言主语随 T0 标错机制实查结论对齐——查无则随守侧 contingency 换代);聚=战斗掉落 GP 乘算、商店等非战斗掉落渠道不乘(范围仅此渠道);散=GP 消费折价 cost_mult、覆盖全部 GP 消费面。限次计数生命周期四态各一断言(随冒险持久/按关重置/新冒险清零/断点保留) | 冒烟+单元。注入=直构 tree_rules 键集数组直调 EffectEngine.rebuild(effect_engine.gd:73-101 合成订阅面)+dispatch 发射事件;限次=直调 counter_add/counter_spend(effect_engine.gd:167-181)置关卡域计数后走事件路径断计数值与清零点 | 自动闸 | T3 | +| V11 | 契约 5(效果类型闭集不加新词) | 六键效果全部走现有 24 效果类型+既有事实/参数词表组合:合成订阅行的 on/when/do 键全部落在 EVENTS/FACTS/OPS/EFFECT_KINDS/DO_KEYS 在册词表内(validate_trigger_row 零违例);若实现需扩闭集=L2 呈报留痕,本条断言以在册词表为准转红 | 单元测试。注入=直构六键合成订阅行调 EffectEngine.validate_trigger_row(effect_engine.gd:272-314)断零违例 | 自动闸 | T3 | +| V12 | §1①(注入公式换代,原探针⑤升格) | hero_override 逐字段对拍=树淬炼 flat(Σ 节点 effects×等级)+锻造路线加值位(本批预留 0)+局内加算区;forge_flat 旧项退役后不再出现在公式(旧「买 atk 1 级→override==行 flat」断言摘除,见 V20);开局 runner effective_atk/max_hp/ac==表值+override 各轴逐位;全新存档(树全零)override 全零=白板 | 冒烟+单元。注入=save.set_tree_level 置脊柱节点等级→直读 hero_override 手算对拍→start_adventure 带 override 断首战读数 | 自动闸 | T4 | +| V13 | 契约 6(命中线不注入) | 命中淬炼节点购若干级→hero_override 无 hit 字段位移、effective 面零命中变化(命中等级在账不入注入面——消费面归数值批) | 冒烟。注入=save.set_tree_level 置命中线等级→断 override 与首战读数与零购基线逐位一致 | 自动闸 | T4 | +| V14 | §1①(同调位槽位收编,Q2 裁甲) | 槽位数量=树上同调位节点点亮数:点亮 n 个→Attunement.slots 读数==n、未点亮=0;旧条件(按击杀 Boss 次数/通关次数自动涨)判定链删除后 clear_count/boss_kill_count 计数不再进槽位判定(attunement_growth 表与访问器的去留随 T0⑥ boss_kill_count 消费面核查结论,本条断言主语=槽位判定源只剩树点亮态) | 冒烟。注入=save.set_tree_level 逐个点亮 att_socket1..3→Attunement.slots 读数阶梯断言 | 自动闸 | T4 | +| V15 | §1①(刷新双入口同账,Q1 裁乙) | 树上刷新升级节点购买写 attune_refresh_level 同账:树上买一级→账本+1→attune_refresh_charges 涨;秘宝匣装配段按钮买一级→同一账本;两入口交替购买累计不串账、断账本读回一致 | 冒烟。注入=add_keystone→分别走 tree_buy(树上节点)与 buy_attune_refresh(装配段口)→逐断 save.attune_refresh_level 累计 | 自动闸 | T4 | +| V16 | §1①(旧档破坏性废弃,契约 4;原探针⑥升格) | 构造换代前结构存档(tree_nodes 含已删节点 id、forge_levels 非零)→load_from_disk→断:树域废弃重置(tree_nodes/fork_sides 回默认空)、禁迁移(migrate_tree 已删、无任何折算——钥石余额不因加载变动)、后续 tree_buy 正常受理、无残留脏节点(tree_nodes 键集 ⊆ 换代后 29 节点 id 集) | 冒烟+单元。注入=测试直写换代前结构 JSON 夹具到隔离存档路径→load_from_disk→断重置态与后续购买 | 自动闸 | T5 | +| V17 | 契约 7(数值全 provisional) | 29 行价格/cap/effects 取值/限次值全 provisional:行值沿旧表或量纲锚投值(生命 +5 量级/攻甲 +1 量级),本批不定终值、无终值口径文案 | 人工核对——表值逐项对照 meta_tree.tres 旧行值量纲与天赋树.md 节点总表效果方向列 | 用户(人工核对) | T1 | +| V18 | 契约 8(两入口同参,原探针⑧升格) | build_adventure_params 开新/续玩两入口:tree_rules/attunement/attune_refresh_y/hero_override(含新公式字段)同源同值;断点续玩受理面 runner._tree_rules 与传入一致(现役断言段 smoke_all.gd:4700-4727 主语随批次延续) | 冒烟。注入=隔离档 set_fork_side/set_tree_level→两入口直呼 build_adventure_params 逐键对拍+resume_adventure 受理读回 | 自动闸 | T7 | +| V19 | §7.1 MC 配对锚 | 三组 Fork 两侧通关率差 <~3pp(六键落位后同种子配对重跑;「不同强非强弱」设计判据) | MC 同种子对拍(adventure_monte_carlo.gd 画像面,slots 主语随 V14 换代) | 自动闸 | T7 | +| V20 | §1④(旧验证约束同生死,code-conventions.md §3.5 第 5 条) | 只验证旧树结构/旧迁移/旧柜台/旧槽位条件的断言同批摘除或换代,摘除后冒烟仍全绿且新断言接管。本卡实查在案的摘除/换代清单:smoke_all.gd:4735-4736(33 节点断言→换代 29)、:4761-4772(迁移幂等三断言→随 migrate_tree 删除整段摘除)、:4773-4775(树 flat 并入 override——迁移夹具主语→随 V12 换代)、:230-232(attunement_growth 谓词表读数源断言→随 V14 摘除/换代)、:4652-4655(通关 1 关→Slots=1 且 boss_kill_count==1——旧槽位条件主断言→换代为树点亮断言)、:4665-4671(AttunementGrowthTable 白盒 clamp 断言→随谓词表退役摘除)、:4488-4517(几何定价+buy_forge 购买段→随柜台退役整段摘除)、:4525-4527(buy_forge+override==行 flat→摘除;:4532-4551 白板断言保留主语换代)、:4400-4401/:4418-4419(生涯页 forge_levels_total 投影→随 forge_levels 域清退摘除/换代)、ui_probe.gd:41-42(_forge_rows.size()==3→随柜台退役摘除/换代)、ui_click_probe.gd:63-88(营地柜台购买点击路径→换代为树购买点击路径)、verifier_batch.gd:178-185/:200-201(forge_levels 读数+buy_forge 购买模拟→换代)、adventure_monte_carlo.gd:72(attunement_growth.slots 硬编码计数源→随 V14 换代)、tests/unit/data_config/config_db_test.gd:158-164(forge_products 行族断言→随 forge_products 表清退摘除/换代) | 冒烟全绿出口+静态 grep(被删标识符清单在冒烟与单元段零残留) | 自动闸 | T4/T5/T7 | +| V21 | §1④(旧实现删除全仓残留核查) | 被删面全仓(game/ 内 .gd/.tres/.tscn)grep 零残留:migrate_tree(meta_progression.gd:318-344)、buy_forge(:56-63)、forge_flat(:39-40)、fg_mastery 组(meta_tree_table.gd:38 词表+meta_tree.tres fork_mastery_a/b 行)、旧槽位条件链(attunement.gd:24-27 判定源+attunement_growth_table.gd+attunement_growth.tres+config_db.gd:29/:52/:144/:282-286,表体去留随 T0⑥)、forge_atk/forge_hp/forge_ac 旧锻造枝节点、save_manager forge_levels 域(FORGE_ATTRS :45/默认档 :119/访问器 :232-241/_normalize 补齐 :416-420) | 静态核查(grep 清单逐项过目+删除后表加载与冒烟零违例) | 自动闸 | T5 | +| V22 | §7.1 人闸(营地统一形态) | 实机目检:营地打开即树(树=主界面)、两工作间钥匙锁定/展开态、图鉴常开位、刷新升级双入口按钮并存、树购买交互顺手、占位面板观感 | 用户目检,观测项登记 07-体验验证清单(机械面随批) | 用户(目检) | T7 | +| V23 | §1⑤(验证闸全绿出口) | 批末四闸全绿:冒烟 run_all 全绿(基线=T0 实查值、0 失败)+单元测试全绿+场景探针全绿+MC 配对锚读数在带(V19 呈报);全仓旧件残留核查(V21)零残留为合并前置 | 批末统一执行(T7 回归收口) | 自动闸+用户(呈报过目) | T7 | ## 8. 异常分级 @@ -119,4 +153,6 @@ **遗留设计债(非本批阻塞项)**:武器锻造 17 裁点(另会话进行中);标错机制查无时的守侧 contingency(T0 实查后触发,经用户裁)。 +**回补待裁点(2026-10-11 v1.3 逐需求点验收清单回补时登记)**:零硬编不可测条目;两条目的断言终稿内容随 T0 实查结论对齐,先行按在册待裁流程承接——①V10 守侧(标记错误返还行动点):标记错误机制存在性 T0 实查未决,查无则该键断言随守侧 contingency 换安全网向等价效果重写(本卡 §8 L3 既有流程);②V14/V21(attunement_growth 谓词表与 boss_kill_count 计数域去留):T0⑥ 消费面核查未决,表体保留他用的断言主语已写明(槽位判定源只剩树点亮态),表体退役则 grep 清单随行扩列。 + **歧义扫描六裁(2026-10-11 /grilling,用户逐裁)**:①分叉文案回归「危险格/安全格」正主词(废「陷阱/危险标记」自造词);②地脉共鸣效果改生命/攻击/护甲三线(命中分量待命中线注入随批加回);③行门槛总等级口径=tree_nodes 全部节点等级之和(免费点亮与分叉激活计入);④聚=仅战斗掉落渠道、散=全部 GP 消费面;⑤限次计数生命周期=随冒险持久/按关重置/新冒险清零/断点保留;⑥GDD 三处旧裁决换代落 v0.4——已全部落 [天赋树](../gdd/systems/跨局循环/天赋树.md) v0.4,T3 措辞随行对齐。 diff --git a/design/research/需求卡片-秘宝体系实现重构落地批-2026-10-11.md b/design/research/需求卡片-秘宝体系实现重构落地批-2026-10-11.md index eec1d234..5384454b 100644 --- a/design/research/需求卡片-秘宝体系实现重构落地批-2026-10-11.md +++ b/design/research/需求卡片-秘宝体系实现重构落地批-2026-10-11.md @@ -1,6 +1,6 @@ # 需求卡片:秘宝体系实现重构落地批(2026-10-11) -> 状态:**定稿 v1.2(零待裁点,开工门=U0)**——C1-C5 经用户 2026-10-11 逐点裁决全落(裁决记录见 §10);v1.1=测试方式与 07 体验清单登记义务补入(用户定:能力验证走调试接口直改游戏数据、正常流程体验归用户目检) +> 状态:**定稿 v1.3(C1-C6 全裁落卡,开工门=U0)**——C1-C5 经用户 2026-10-11 逐点裁决全落(裁决记录见 §10);v1.2=测试方式与 07 体验清单登记义务补入(用户定:能力验证走调试接口直改游戏数据、正常流程体验归用户目检);v1.3=回补逐需求点验收清单(逻辑验收方法论批,用户令),回补登记三条回补待裁点(§11——1 条件数口径待用户裁、2 条开工时按序落定,均不阻塞开工) > 来源:06-待办清单「秘宝体系实现重构落地批」条(2026-10-10 用户令登记);设计正主=秘宝.md v2.9(裁点已清零,2026-10-11 grilling 收官) ## 1. 目标与完成定义 @@ -83,11 +83,56 @@ ## 7. 验证闸 -轻闸=冒烟全绿+本批新断言全绿;重闸=全量冒烟。 +### 7.1 闸口径 -**测试方式(2026-10-11 用户定)**:能力验证一律通过**调试接口直接修改游戏数据**进行——改钥石数量→验证购买解锁;改同调位槽位数量→验证装配;直接置解锁状态→验证条件件;不走正常资源积累流程(调试面沿用现役 DebugOverlay/DS_DEBUG 门控)。 +- **轻闸**=冒烟全绿+本批新断言全绿;**重闸**=全量冒烟。批末四闸(冒烟+单元测试+场景探针+改前改后读数对拍)全绿才合并。 +- **测试方式(2026-10-11 用户定)**:能力验证一律通过**调试接口直接修改游戏数据**进行——改钥石数量→验证购买解锁;改同调位槽位数量→验证装配;直接置解锁状态→验证条件件;不走正常资源积累流程(调试面沿用现役 DebugOverlay/DS_DEBUG 门控)。 +- **正常流程体验验证=用户目检**(攒资源→解锁→装配→生效的完整流程体验):本批登记 07-体验验证清单观测项一条(机械面随批),验证人=用户。两入口铁规不破(仅 /iter 开发与用户点名跑测试)。 +- **执行载体五选一,逐条声明**(code-conventions.md §3.5):单元测试(tests/run_all)/冒烟断言(smoke_all.gd 对应场景段)/场景探针(smoke/ 下 *_probe)/MC 同种子对拍(本批零随机无概率面,备用)/人工核对(仅限无法自动化的纪律类需求点)。换代出口=合并后冒烟全绿且全仓无旧件残留引用(V12/V13/V14/V16 出口条件)。 + +### 7.2 逐需求点验收清单 + +> 断言失败消息末尾带〔秘宝批 Vn〕编号尾缀,断言与清单互查靠 grep(code-conventions.md §3.5 第 2 条)。注入一律走调试接口直改游戏数据口径(现役 DebugOverlay/DS_DEBUG 门控;自动化测试=测试代码直改数据表行/计数器/存档域、直调核心写口构造状态,不经 UI、不走正常资源积累流程);槽位按 §10 C4 裁决用调试注入、不走正常流程。T6 已列的验收闸任务(护栏校验/覆盖检查/装配不可变断言/装配面空目录断言)不重复展开,清单条目指针即可。 + +| 编号 | 需求点/契约指针 | 测什么(具体断言或行为) | 怎么测(载体+注入粒度) | 谁验 | 任务卡 | +|---|---|---|---|---|---| +| V1 | §1(新 12 件数据行重建);契约 8 | treasure_items.tres 加载零违例、行数=落表实数(件数口径见 §11 回补待裁点 1——卡文 12 件/契约 8 表 11 件有效名,断言不硬编);每行 form/slot_cost/解锁方式字段在册且活行非 retired/deferred;逐行解锁方式与契约 8 分配一致(钥石购买件带价格字段、条件件带解锁条件表指针行) | 冒烟+静态核查。注入=直读表行逐键比对;分配面=静态 grep 行解锁方式字段对照契约 8 表 | 自动闸 | T1 | +| V2 | 契约 9(命名锁定) | 12 件 display_name 逐件=正式名(晨操令/阔视野带/试炼镐/刷新练习*/储备罐/巢穴预告/线香/双管装填/远程镐/刷新执照/天眼/信标网络——*刷新练习归属见 §11 回补待裁点 1);零自造名、零旧件名残留 | 人工核对——静态 grep display_name 全集逐件过目(初筛可入冒烟静态段,裁决以人工过目为准) | 用户(人工核对) | T1 | +| V3 | §1+契约 6(解锁混合制·钥石购买) | 钥石购买解锁:余额足→购买成功、解锁态落档、余额扣减正确;余额不足→拒绝且零副作用;已解锁重复购买拒绝 | 单元+冒烟。注入=直调 save.add_keystone(save_manager.gd:220)改钥石数量→直调解锁服务购买写口(内走 spend_keystone,save_manager.gd:225)→断 save.item_unlocked 与余额读数 | 自动闸 | T2 | +| V4 | 契约 8(逐件分配锁定表·条件解锁) | 条件件逐件断言:远程镐=adventure_cleared≥1(save_manager.gd:278 计数在役);刷新执照=boss_kill_count≥3(save_manager.gd:264);天眼=adventure_cleared≥3 且 boss_kill_count≥4;信标网络=真视类工具累计使用≥10 次(行为计数器随批新增,T0 核实接入点)。未达标不解锁、达标恰解锁一次(幂等);阈值读解锁条件表值不硬编(provisional 归调参批) | 单元。注入=直置存档生涯计数(adventure_cleared/boss_kill_count/真视使用计数——存档域直改或计数写口)→调解锁服务条件刷新面→断解锁态;幂等面=重复刷新零重复入账 | 自动闸 | T2 | +| V5 | 契约 2(槽位约束) | 默认 0 槽=装配全拒(无槽位即不可装配——合法定义态);调试注入槽位后:件档≤格档可装、件档>格档拒绝;满位禁选;非同调行拒绝(meta_progression.gd:351 toggle_attunement 现役守卫延续);每件固定占 1 格 | 单元+冒烟。注入=调试注入槽位(T2 调试注入面置档位 1/2/3——C4 裁不走正常流程)→直调 toggle_attunement 构造合法/越档/满位三态 | 自动闸 | T2 | +| V6 | 契约 1(装配不可变) | 冒险全程装配快照逐位不变+运行中零装配写口——T6 卡已列装配不可变断言(冒险全程快照),本条为清单指针不重复展开 | 按 T6 卡执行 | 自动闸 | T6 | +| V7 | §1(生效一致·效果与订阅行声明逐件一致) | 新 12 件逐件按 7.3 附表断言:正常效果命中、边界不触发、反例不发生;被动件走订阅行(on/when/do)、主动件走受理分发通道,词表出域即加载报错(effect_engine.gd:20-46 封闭词表) | 冒烟/单元。注入=测试构造装配集数组直调 EffectEngine.rebuild+dispatch 直测命中面;主动件经受理面构造事件;发射点行为段沿用现役 _fx_emit 直测法 | 自动闸 | T3(附属表=7.3) | +| V8 | §1(使用代价各形态) | 充能账逐形态断言:线香=战斗级限量(每场战斗开始重置);天眼=关卡级限量(每关开始重置);试炼镐=转化获取(开 4 安全格积 1 点、满 2 点换当轮 +1 AP——counter_add/counter_spend 现役词汇);被动常时件零账本;充能每冒险开始重置(breakpoint.attunement_charges 附随件语义不变) | 冒烟/单元。注入=直调充能账写口+dispatch 构造事件计数(smoke_all.gd:4672-4676 充能重置段同构、换代主语);重置面=推进战斗/关卡边界后断读数回满 | 自动闸 | T2/T3 | +| V9 | 契约 3(棋盘事实不可变) | 装配任意新件组合(含 12 件全量)开局,同种子棋盘快照(危险格位置/邻接数字)与零装配逐位一致;新 12 件订阅行 do.kind 全集零棋盘改写类词(rewrite_board/remove_mines/cell_removal) | 重放+快照比对+静态核查。注入=构造装配集全量 rebuild 后跑棋盘生成;词表面=静态 grep 新 12 行 do.kind 全集 | 自动闸 | T3 | +| V10 | 契约 4(真视窄域/零随机/分布同池冻结);覆盖检查 | 真视护栏:新 12 件逐件过加载校验(真视类目标域>3×3 加载报错——treasure_target_violation_test.gd 护栏本体保留、注入主语换代新真视件行);零随机=同操作序列重放两遍,装配与充能账、叠加层投影逐位相同;分布同池冻结=效果不改危险格/安全格分布(资源面件只动权重投影);效果三方向覆盖检查——T6 卡已列,本条指针不重复展开 | 冒烟+单元+重放。护栏注入=构造越域行断言加载报错;重放=同种子两遍操作序列快照对比 | 自动闸 | T6/T3 | +| V11 | 契约 5(两域正交) | 秘宝不入局内道具背包:三选一牌库 _curio_deck 零秘宝 item_id 种(smoke_all.gd:588-596 池收缩断言同构延续);奇物不入同调位:同调目录只读 treasure_items form 非空行、feats 表行零入目录 | 冒烟。注入=直读 _curio_deck kind 全集与同调目录投影(treasure_attunement_rows) | 自动闸 | T3/T1 | +| V12 | §1(旧 14 行删除+全仓零残留) | treasure_items.tres 旧目录行全删(表内唯新 12 件);全仓(game/ 内 .gd/.tres/.tscn)旧 item_id grep 零残留。静态核查面(本卡实查在案):meta_table.gd:28(WORKSHOP_ITEM_IDS 旧六件——随解锁混合制换代)、treasure_item_table.gd:44/:52(venom_rider/flag_burst 效果词——venom_edge/flag_burst 两行系专长批迁出行,见 §11 回补待裁点 2)、battle_orchestrator.gd:919(attune_flag_burst 硬编码分支)、main.gd:852-890+board_view.gd:139-148(fog_lantern 呈现桥接线——随行删除同批摘除或换代)、effect_engine.gd:113/:302(dawn_order 注释面);smoke/tests 引用面见 V13 | 静态核查+冒烟(删除后表加载零违例、同调目录收窄不缺行) | 自动闸 | T1 | +| V13 | §1(旧验证约束同生死,code-conventions.md §3.5 第 5 条) | 只验证旧秘宝件/旧机制的断言同批摘除或换代,摘除后冒烟仍全绿且新断言接管。本卡实查在案的摘除/换代清单——smoke_all.gd::230-232(同调位读数源=attunement_growth 谓词表断言——随 V14 移除)、:235-252(fog_lantern 行加载/目录投影——换代新件主语)、:254-260(fog_lantern 装配贯通/空装配基线——空装配基线本体保留换主语)、:575-576/:609-610(treasure_unlocked 夹具 blast_kit)、:4627-4628(工坊阈值解锁 probe_dust/sapper_order/loot_compass——随解锁混合制换代)、:4644-4647(白板档 slots=0+满位禁选 venom_edge 主语)、:4654-4659(谓词里程碑 Slots=1+venom_edge/flag_burst 装配持久)、:4661-4664 与 :4692-4704(luck_coin 装配夹具——换新件 id)、:4666-4671(AttunementGrowthTable 谓词 clamp 单测面——随 V14)、:4672-4676(充能重置 dig_charge/nest_pendulum 主语——见 V8 换代)、:4677-4688(刷新双计数器 pick_refresh 主语——机制本体保留换主语)、:4764(unlock_item("venom_edge") 树迁移夹具换他件);tests:fog_lantern_wiring_test.gd 全文件(run_all.gd:46 注册行同批摘除或换代)、treasure_items_test.gd:27-95(TreasureItems 夹具——随 V16 处置)、treasure_target_violation_test.gd:24-33(护栏主语换代——护栏本体保留归 V10)、reward_dangling_treasure_test.gd:24-25(loot_compass 悬空投放探针——投放面已退役随行清亡)、reward_overlay_test.gd:72(open_replace probe_dust 主语——随 V16 处置)、breakpoint_resume_test.gd:94 与 :138-148(blast_kit 夹具/fog_lantern 断点主语)、ui_input_probe.gd:395-434(case⑮ fog_lantern 载体装配链) | 冒烟全绿出口+静态 grep(旧 id 清单在冒烟/单元/探针段零残留) | 自动闸 | T1/T2/T3/T4/T5 | +| V14 | F2(谓词表槽位求值职责移除) | attunement_growth.tres 改造为解锁条件表后:旧槽位求值断言摘除(smoke_all.gd:230-232/:4644-4645/:4654-4655/:4666-4671——milestones m1/m2/m3 谓词语义退役);Attunement.slots 消费面(attunement.gd:24-27 服务本体、meta_progression.gd:357 满位判断/:381 营地投影)按 T2 新槽位口径换代(树接口接缝默认 0+调试注入);新槽位口径断言=V5 | 冒烟+单元。摘除后解锁条件表加载零违例;注入=调试注入槽位断言新口径 | 自动闸 | T1/T2 | +| V15 | §1+C3(存档面:旧档废弃零迁移) | 装配关系读回断言写新件 id(smoke_all.gd:4661-4664 换代主语后即兜);旧档直接废弃零迁移代码=save_manager.gd 零新增迁移分支(C3 裁——SAVE_FORMAT_VERSION 现役 v6 口径,save_manager.gd:42) | 冒烟+人工核对(迁移分支面静态过目) | 自动闸+用户 | T5 | +| V16 | F7(treasure_inventory 惰性面处置) | 拆除路线:adventure_runner.gd:601-620/:1059-1060、level_runner.gd:65/:300-303 引用面清理+关联验证同批摘除(treasure_items_test.gd 全文件、reward_overlay_test.gd:72、断点 treasure_snapshot 消费面),删除后冒烟仍全绿且新断言接管;保留路线:机械惰性注记在案=人工核对(投放渠道恒空在册) | 冒烟+静态核查(拆除)/人工核对(保留)——双路线并写,按 T5 执行口径落一条(见 §11 回补待裁点 3) | 自动闸或用户 | T5 | +| V17 | 契约 7(数值 provisional) | 全部占位值在册(价格/阈值/充能数/面值/转存率 1.25/微光 12 格等)且结构形态不超 GDD 目录表与代价轴描述 | 人工核对——表值逐项对照秘宝.md「目录(重设计 v1)」件表与「设计骨架·代价轴」节 | 用户(人工核对) | T1/T2 | +| V18 | §1(空配置验收闸·装配面) | 装配面空目录合法态断言——T6 卡已列,本条为清单指针不重复展开(池空兜底/商店空货架两部分归奇物/商店侧另批,§4) | 按 T6 卡执行 | 自动闸 | T6 | +| V19 | §1(正常流程体验+柜台换代呈现) | 秘宝匣柜台换代呈现:钥石购买钮/条件解锁进度/分档装配呈现/槽位档位显示;正常流程体验=攒钥石→购买/条件解锁→装配→生效全程 | 用户目检——观测项登记 07-体验验证清单(机械面随批);场景探针(ui_input_probe 载体链换代主语)兜可达性 | 用户目检 | T4 | + +### 7.3 附表:新 12 件逐件表(V7 附属表;三列即 V7 每件的断言内容——正常效果/边界/反例) + +| 件名 | 正常效果(断言要点) | 边界 | 反例(不该发生什么) | +|---|---|---|---| +| 晨操令 | 每场战斗第 1 轮 AP +1(round_start 订阅) | 每场各发一次、仅第 1 轮 | 第 2 轮起仍发;整局只发一次;触碰战斗结算机制 | +| 阔视野带 | 类型微光范围 8 格→12 格(视野参数常时) | 只扩微光半径参数(12=表值 provisional);不揭示安危 | 真视化(标出危险格位置);全图显形;越出参数面直改棋盘 | +| 试炼镐 | 每开 4 安全格积 1 点,满 2 点换当轮 AP +1(counter_add/counter_spend) | 只数安全格;积点滑动消耗、用后清账 | 危险格计数;跳过积点直接给 AP;积点换 GP 等其他资源 | +| 刷新练习 | 三选一刷新存量账 +1(装配即得一次性加仓) | 加仓=存量账一次性;临时账不动 | 写临时账;每节点重复加仓;随刷新消耗再回充 | +| 储备罐 | 停手转存率 1:1→1.25:1(RAP 转存率参数) | 只改转存率参数(1.25=表值 provisional) | 改 AP 上限;直接给 RAP 存量;越参数面改停手结算 | +| 巢穴预告 | 装板后揭示本板危险格数量(装板时一次) | 只报数量、不标位置;不碰危险格分布 | 标出危险格位置;逐板重复触发;改分布或邻接数字 | +| 线香 | 每战一次:真视单格(窄域契约内) | 战斗级限量每战重置;单格≤3×3;零信息目标不消耗;贴边按交集 | 超过 1 格/次;战斗间不清零;点错扣充能 | +| 双管装填 | 每战前 2 轮各 AP +1(round_start 订阅) | 仅前 2 轮、每场重置 | 第 3 轮起仍发;战斗外发放;跨战结转 | +| 远程镐 | 挖掘距离 +1(可挖距英雄 2 格的格,常时) | 只放宽可达距离(+1=表值 provisional);开格仍走既有格规则 | 无限距离;挖开不相邻事实;改危险格/安全格事实 | +| 刷新执照 | 商店免费刷新 +2/店(进店时入账) | 每店 +2、进店重置;只挂商店刷新面 | 跨店结转;挂到凭证三选一刷新面(扩面须先裁);改刷新价 | +| 天眼 | 每关一次:选 3×3,危险格显示且安全格直接开(真视+开格复合) | 关卡级限量每关重置;窗口≤3×3、贴边按交集;安全格开格按普通挖格规则全额兑付(含连锁展开与格面资源,C5 裁)、免行动点即效果本身 | 危险格被开格/移除;超 3×3;不兑付或超兑付(重复给资源);点错扣充能 | +| 信标网络 | 插旗不限相邻(可对任何未开格插旗,常时) | 只放宽旗可达性;插旗仍按标准动作价计费、标中收益走既有结算 | 免旗价;对已开格插旗;自动标中或跳过结算 | -**正常流程体验验证=用户目检**(攒资源→解锁→装配→生效的完整流程体验):本批登记 07-体验验证清单观测项一条(机械面随批),验证人=用户。两入口铁规不破(仅 /iter 开发与用户点名跑测试)。 ## 8. 异常分级 @@ -108,3 +153,9 @@ L1 自救(表值/文案/断言微调);L2 记录继续(效果引擎缺词 - **C4 批序/槽位**:本批只开发秘宝相关功能;无槽位即不能带;测试利用调试功能注入,不走正常流程(谓词表槽位职责移除、批序问题消解)。 - **C5 天眼开格兑付**:按普通挖格规则全额兑付(含连锁展开与格面资源),免行动点即效果本身。 - **C6 通关术语裁定**(2026-10-11):**通关=打通整局冒险;通过第 N 关=打通第 N 关卡**——两者非同义词(主会话推荐案「任意一关」建立在误读上,已撤回)。解锁条件按此口径:远程镐=adventure_cleared≥1、天眼=adventure_cleared≥3 且 boss_kill_count≥4;术语已登记术语表 v1.6。 + +## 11. 回补待裁点(v1.3 回补逐需求点验收清单时登记——尚未裁决,不阻塞已定稿状态) + +1. **件数计数差:契约 8 表 11 件有效名 vs 目录 12 件**——卡 §3 契约 8 分配表与契约 9(自注「11 件有效名」)均未含**刷新练习**(GDD 秘宝.md「目录(重设计 v1)」普通档 7 件之一:三选一刷新存量 +1)。V1/V2/V3/V7 断言按落表实数写、不硬编 12。推荐案=按设计权威 12 件全量落地,刷新练习随 C1 裁决「普通档全钥石购买」归钥石购买;淘汰依据=秘宝.md 系设计权威且逐件可数(普通 7+优秀 3+稀有 2=12)。若用户另裁(如刷新练习撤出本批或改条件件),V1 分配断言、V2 命名清单与 7.3 附表刷新练习行随裁改。 +2. **与专长批(奇物侧卡 T9)的删行时序**——旧 14 行中 venom_edge/flag_burst 两行系专长批「迁出即删」对象:若专长批先行入库,本批实删=12 行、两行残留面归专长批清单兜底;若本批先行,两行随本批删除、专长批 T9 对应面空转。两序皆可收敛,V12/V13 出口按「当时在表旧行全数清零」执行(不硬编 14),开工时按迭代编序落定即可。 +3. **T5 treasure_inventory 处置二选一在卡内未裁**(T5 行文「随批拆除或保留注记」)——V16 双路线并写,开工时按 T5 执行口径落一条即可;若需用户预裁,按本条呈报。