Files
gplan-2/design/gdd/analysis/b3-status-effect.md
T
DKChan 85841f52be docs(gdd): 13 份系统 GDD 迁移为 design/analysis 两件套 v2
- design 件只装结论:v2 骨架(设计目的/系统范围/核心循环/领域章节/依赖与输出/P0 闭环/P1·P2 后置/调参表/GWT 验收/版本历史),AC/EC/OQ/义务台账编号全部保留
- 新建 design/gdd/analysis/ 13 份推演件:候选取舍/公式推导/数值锚定论证/已裁决争议按问题节组织,文末附去向映射表(零丢失审计)
- v1 原文备份于 design/gdd/legacy-2026-09-14-v1/(13 份)
- systems-index 文档树补 analysis 目录导航行
- gdd_lint 全量 PASS(14 文件 0 不通过);迁移零裁决——19+1 项待拍板已登记各 analysis 开放问题区
2026-09-14 20:39:11 +08:00

283 lines
29 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# B3 增益/状态系统 设计推演
> 状态:concluded(部分问题随 B1/B4 门禁与 playtest 联动,见开放问题区)· 本文只装"为什么"——`design/gdd/b3-status-effect.md` 只收本文的结论。
> 修订时新增问题节,不删旧节(历史即依据)。
## 问题 1:为什么四类持续效果共用一个容器、一套机制?
### 广度分析
- 候选 A:每类效果各自容器/各写一套计时叠层逻辑——收益:各类可定制;代价:四套生命周期代码、结算明细无法逐行统一归因、四源当量对照无实物载体。
- 候选 B:统一容器、三向效果同构实例(采纳)——收益:机制一套、归因一门语言;代价:容器必须足够" dumb ",不能承载任何效果语义。
- 候选 C:状态挂在 B1 结算内部——收益:少一个系统;代价:结算编排同时当账本,可回放步骤流失去独立状态侧前提,P2 归因字段无明确 owner。
### 深度分析
统一容器让"效果"成为一门单一语言:它是 A3 条款 1"四源统一当量"的对照实物、B1 结算的单一对接面、可回放步骤流的状态侧前提。机制与内容分离是结构原则——B3 只拥有机制(时限/叠层/衰减/生命周期/兑付接口),效果内容的经济归属归各锚 owner(B4/B2),二者不混。
### 综合判断
采用候选 B。design 件「系统范围」与 Rule 1 只出现本结论;四规矩(寿命=一场战斗 / 跨轮跨图延续 / 零随机 / 敌侧共享)为既有定稿口径的承载,其中"不跨战斗"为 game-concept 定稿,多敌共享读法按 registry single_enemy_assumption 登记。
## 问题 2:时限为什么用"剩余结算次数"这单一量纲?
### 广度分析
- 候选 A:按轮数计时——收益:直觉;代价:"轮"与"兑付次数"在停手轮/弃图轮分叉,免费延时漏洞。
- 候选 B:按时长/秒——收益:无;代价:回合制无意义,引入墙钟。
- 候选 C:剩余结算次数倒数(采纳)——收益:读数即规划素材;代价:dur=1 语义须靠"先兑付后衰减"时序契约才完整。
### 深度分析
P1 规划素材的成立条件 = 增益携带明确的剩余结算次数与到期时机,玩家才能把它纳入挖哪格的推理;时限语义透明度是规划感的前提。计数量纲与兑付次数同物后,"停手不挖的轮、弃图刷新的轮照常算一次结算、计数照减"成为自然推论——不存在"不结算就不掉次数"的免费延时。dur=1 的"一次性"全部机制内容 = 授予当轮编排期入容器 → 同轮兑付恰一次 → 轮末 R=0 移除,由 F3 时序契约闭合。
验算示例(F3 Example 原文留档):轮 3:编排期授予 attack_up(L=1、R=D_a=1)→ 兑付 +50% → decay_round()=1(移除);轮 4 query_active(hero) 已不含 attack_up。dur ≥ 2 行(策略探针 D_f=3):授予后逐轮兑付、R 逐轮 −1、第 3 轮末移除——R 轨迹与 k 全由表读值推导。
### 综合判断
采用候选 C 并结构冻结(非 knob)。时限量纲 = remaining_settlements 为 game-concept 定稿口径;最后一轮(敌人全灭)是否 decay 归 B1 判定次序域(A3 EC8 同款——battle_end 全清兜底,两种次序产生同终态)。
## 问题 3:叠层为什么按行 stack_policy 三分支、stack 为什么不重置 R?
### 广度分析
- 候选 A:stack 授予同时重置 R——收益:玩家"早拿不亏";代价:stack ≡ refresh + 加层,三分支失去区分性。
- 候选 B:stack 加层不触碰 R、refresh 重置 R 取实例授予时快照 D、independent 并存(采纳,用户拍板、结构冻结)——收益:三分支语义正交;代价:dur ≥ 2 行存在"早拿必亏"读法(见下)。
- 候选 C:单一全局策略写死代码——收益:简单;代价:未来内容行被锁死,违反数据表驱动(Rule 9)。
### 深度分析
spec 决议(F1 注):duration_settlements 只有初始授予定钟;若 stack 也重置 R,则 stack ≡ refresh + 加层。refresh 的重置目标 D 取实例持有的授予时快照(与 EC9 快照语义一致——实例不受表重载影响)。
验算示例(F1 Example 原文留档):attack_up(stack,D_a=1、M=2):轮 3 同轮授予批次两个安全格事实 → apply_effect×2 → L=2、R=1;同轮第 3 个授予 → L=2=M → **false**(明细"溢出未生效"行);兑付 +100%(F2)→ 轮末 decay R=0 移除。weaken(stack,D_w=1、M=16):轮 3 三旗命中三雷(雷格实例键,三次授予均合法)→ L=3、R=1;兑付 3×m_w(默认 65 → −195%)→ decay 移除;轮 4 一旗命中新雷 → 旧实例已销毁,**新建** {L=1, R=1}——dur=1 行的层只在单轮授予批次内累积,跨轮必为新实例。dur ≥ 2 行(策略探针 D_f=3):跨轮 R 逐轮 −1,refresh 腿见 AC-5。
体验面反例(OQ7 证伪项):"早拿必亏"——分轮拿满总暴露 150pp vs 同轮拿满 200pp(算例基线 = dur=2 行值);现行四行 D=1 下两读法总暴露相等、不对称休眠,dur ≥ 2 内容行上线时激活。该不对称叠加奖励身份不可预读(创意风险 #1)可能伤害"把 buff 纳入挖掘推理"的规划感(P1)。补偿载体先行:B4 奖励身份预读 + D5"同轮拿满优于跨轮叠"教学;证伪成立则走结构冻结修订流程回炉(合并/重定义 stack 分支)——非调参。
### 综合判断
采纳候选 B 并结构冻结;体验面反例登记为 OQ7 playtest 证伪项,补偿载体已登记为 B4/D5 义务。合并在授予时执行、结算作用顺序归 B1 SettlementTable——两序分离,互不干扰。
## 问题 4:weaken 档位怎么锚定?(F0 裁决全程)
### 广度分析
| 分支 | schema 可行性 | 后果 | 裁决 |
|---|---|---|---|
| 每结算瞬时当量 | 可行(m_w ≥ 51 即过锚——percent 域内) | F2 越域界随移(AP 界 8×m_w / 表界 16×m_w);地板交叉层数 = ⌈100/m_w⌉ = 2;上调的连带成本(地板提前到达、边际层贬值)入裁决 | 采纳 |
| 每 AP 总暴露 | 不可行——需 m_w > 100,被 percent ∈ [−100, 100] schema 域禁止 | 现实解 = B4 重定最低档参照(非上调)——未采纳 | 排除 |
### 深度分析
- 同分母性:瞬时口径下 weaken 与 hero 侧 buff 作用于同一伤害流,"严格大于"在百分点读法与 HP 读法下等价,锚判定无量纲歧义;总暴露口径引入时长权重,把 duration knob 泄漏进锚判定。
- 机制同构:B3 本就按结算逐次兑付,瞬时口径是容器原生口径;总暴露需跨结算累计账本,与已锁的"单结算自然边界"(dur=1 每结算清零无存量)冲突。
- 值域依据(@D_ref=12):下界 60 = 条款 2 两腿可行交集(腿一 m_w ≥ 51——65 > 50 严格大于 attack_up 当量〔参照对象,registry 回迁口径〕;腿二随 E_dig 口径修正放宽——m_w ≥ 38,以 B1 GDD F0 重算回执为准);上界 85 = 超出仅在连锁贫瘠板增加裕度、地板交叉层数恒 2;schema 顶 100 保留为绝对上界。
- 红警关闭:原 −25 值在两个独立线性代理下同向预检不过(条款 2 锚差约 4×,且"单一线性换算"堵死分源改率、"无单档上限"堵死 max_stack 豁免)——F0 修订后锚两腿通过(瞬时当量 7.8 > 6.0 严格大于 ✓ / 7.8 ≥ E_dig 4.5 ✓——E_dig 读数随 2026-09-14 B1 重算批口径更新,原 7.2 随口径退役);终值共裁与 registry 终值确认联动 B1 OQ2(见开放问题 #1)。
- 修复空间不对称(历史登记):每结算瞬时当量归一 m_w≥51 可行(F2 越域界随移 AP 界 −408%/表界 −816%——系 −25 口径旧值);每 AP 总暴露归一 m_w>100 被 percent 域禁止(该分支不可行)——OQ1 前置步骤曾是"B1 先钉死归一口径,口径落定前禁止数值修订";落总暴露则现实解 = B4 重定最低档参照。
- 参照对象迁移史:最低档安全格 buff 当量的参照对象曾迁 defense_up 当量(attack_up 时为死行——B4 F4 迁移);2026-09-11 用户裁决"基础攻击恒存在"(HeroTable.atk 域 [1,999]、0 加载拒绝、MVP=6)后 attack_up 复活,参照对象回迁 attack_up 当量(消费面 = 主角战斗段先手攻击);defense_up 迁移退役为历史记录,attack_up 入池时 tier_min_buff 重算。defense_up |−50|×dur2 与 attack_up 数值巧合全等(100pp),迁移期结论不变;迁移后预检未按新参照重跑的义务已于 2026-09-14 B1 重算批兑现(F0/F1 按 attack_up 当量重跑 + F1 锚对照实物改 attack_up 行——迁移注记关闭)。
- 地板更正:地板 = 乘数零点 −100pp、交叉层数 = ⌈100/m_w⌉ = 2(原"7 层触地板"预读按 −400% 合成带估读,更正)。
### 综合判断
m_w 值域 [60, 85]、默认 −65;归一口径 = 每结算瞬时当量;B3 接口零修订、值变更走 registry 回写——回执以 B1 GDD F0 为准(registry status_effect.anchor_warning)。终值 = B4/B1 共裁(B1 OQ2);裁决时复查 AC-14 腿 3 非平凡性。此节为已裁决设计争议的完整留档。
## 问题 5:合成值为什么不在 B3 内 clamp?
### 广度分析
- 候选 A:B3 输出前 clamp 到 percent 域——收益:下游省心;代价:地板语义被藏进容器,B1 换算方向无从成文,"不 clamp"不可判定。
- 候选 B:L×m 原样输出、地板/clamp/换算归 B1 SettlementTable(采纳)——收益:职责单一、可判定(载荷与表值推导值恒相等,任何地板都会使其不等);代价:越域值在边界情况显性存在(EC7)。
### 深度分析
B3 只对"L×m 线性合成 + R 计数"负责。weaken 合成下界两档并列:AP 界 = 8×m_w(默认 65 → −520%;默认经济下 flag_hit 单轮 ≤ ap_per_round=8 次授予、dur=1 层只在单轮累积 → L=8)与表界 = 16×m_w(默认 65 → −1040%;仅非 AP 源如 clear_reward 授予、或 ap_per_round 调参后可达 L=16)——两档均越域,均不在本系统内收口。乘算读法(1.5^L)在 B3 语义域外;percent 行的 L×m 是百分点线性叠加。行值出处(provenance,如"原型 1.5×")是数值来历标注,非合成语义。跨 effect_id 聚合、percent 与 flat 混算 = B1 SettlementTable 域。
验算示例(F2 Example 原文留档):attack_up L=2 → +100 percent(兑换成 2.0× 与否的读法归 B1);defense_up L=2 → −60 percent(B1 换算 0.4×——现行值链下不触地板,"归零"读法须 B1 定义);weaken L=8 → 8×m_w(默认 −520 percent);ambush L=3 → **+9 flat**(3×m_amb——B3 不解释单位)。
### 综合判断
采纳候选 B。合成值多大算强、多弱算废、floor 在哪、+3 打谁——均不在本 GDD 语义域(显式排除声明);B1 义务③(percent→乘数换算方向与合成值地板成文)是其对侧承载,AP/表界数值随 F0 修订更新为 −520%/−1040%。
## 问题 6:数值归属为什么这样切分(B3 无平衡公式)?
### 广度分析
- 候选 A:B3 自带平衡公式(值该多大写进本 GDD)——代价:与 B4 奖励经济、B2 敌情上限、B1 结算换算四方争同一事实源。
- 候选 B:机制数学(合并/合成/衰减)归 B3,平衡与语义归属逐项划给锚 owner(采纳)。
### 深度分析
逐项归属依据:效果档位当量对照表(四源统一当量、单一线性换算)归 B1(出表方兼闭合对账单一签字人,A3 F1 条款 1);weaken 档位锚归 B4 表设计 + B1 对照验收(条款 2,基准 = 连锁放大边际挖掘收益,provisional 1:1);挖掘风险不等式(P(安全)×buff 当量下界 > P(雷)×敌方增益当量上界)归 B2 供给上限表值、B1 单一闭合对账(条款 3);奖励定价(清图奖励及 B4 三硬约束:雾内档位下界 / 锚随雾成本上浮 / 净当量优势带上界)归 B4(A4 pricing_constraints、条款 4/5);percent 消费侧换算与地板归 B1 SettlementTable,flat 量纲归 B2(已定稿)。
Rule 10 收编史:A3 OQ5"标中旗 debuff 档位归 B4 表设计"经用户 2026-09-08 拍板收编——四行 MVP 初值定稿权归 B3(已定稿),锚验收权仍归 B4/B2/B1(条款 2 + A4 三定价硬约束引用的"最低档安全格 buff 当量"以 attack_up 行为参照对象),修订走接口漂移回写 registry ownership_note;A3 GDD(Approved)不改,以该条 + registry 为准。这是对"档位归奖励表设计"的显式收编——初值定稿权与锚验收权分离。
### 综合判断
采纳候选 B。B3 无平衡公式;四行 MVP 值全部 provisional;改初值 = 接口漂移回写 registry,不是随手调参。
## 问题 7:满层为什么是"拒绝 + 留痕"而不是覆盖或静默?
### 广度分析
- 候选 A:满层覆盖最旧层——代价:寿命被偷偷重置,违反"stack 不触碰 R"决议;玩家不可规划。
- 候选 B:满层静默吞掉——代价:奖励蒸发无痕迹,违反 P2 诚实。
- 候选 C:拒绝原子(false + 容器逐字不变)+ "溢出未生效"明细行含来源(采纳)。
### 深度分析
奖励的浪费是诚实的、可规划的:玩家看得到"这层白拿了",下次就懂得满层时别再拿同款。无论这份重复来自玩家直接踩出的格子、结算转化、还是连锁展开自动开出的奖励格,都走同一个授予入口,满层时同样产生溢出行、同样留痕。拒绝原子性保证无半写、无溢出落层;同轮多授予谁被拒取决于 B1 授予次序——授予次序确定性是 B1 编排义务(义务①)。
原则张力留档(EC4):refresh 空刷新静默返 true 与 Rule 5"不静默蒸发"存在张力(stack 有溢出行、refresh 无对应物)——MVP 零消费者故休眠,首个 refresh 内容行上线时其授予可见性语义由 B4/B1 随 OQ3 一并裁决。
### 综合判断
采纳候选 C。呈现归 B5/D1(溢出行呈现、origin_cell 玩家可读形态两项义务已登记)。
## 问题 8:体验锚点如何落到机制?(P1/P2/P3 论证)
### 广度分析
| 支柱 | 关键词 | 机制承诺 |
|---|---|---|
| P2 可归因的兑现感 | "我攒下的东西正在替我打架" | 每个状态实例携带来源标注(安全格/标中旗/清图/雷),结算明细逐行生效——P2 准话测试"这个结果是我哪步扫雷带来的?"在 B3 字段里就有答案;"规划的延迟兑现"从口号变成可见事实的机制落点 |
| P3 雷的两面 | "雷是赌桌不是陷阱" | 踩雷的敌方增益行与标中旗的削弱行在结算明细里使用同一呈现语言,玩家由此学会雷的两面;旗标对的即时回报部分补偿 chord 缺席的兑现节拍缺失(CD 创意风险 #3 的关联缓解,正式高光设计归 B1/B4) |
| P1 规划素材 | "还剩几次结算、何时到期" | 增益携带明确的剩余结算次数与到期时机,玩家才能把它纳入挖哪格的推理——时限语义的透明度是规划感的前提;满层溢出行可见("满层时别再拿同款") |
反向护栏:状态效果绝不能是无感的暗账——玩家说不出一行结算"从哪来",来源标注即失职(违反 P2);任何让 buff 时限/剩余次数不可读的设计默认砍掉。
### 深度分析
参考感受:杀戮尖塔的增益图标(时机与层数一目了然,是决策素材而非装饰)、Peglin 神器在关键时刻叠加生效的"攒出来的强大"。两者共同指向:状态图标是决策素材,时限/层数不可读 = 机制白做。旗标对的即时回报与 CD 创意风险 #3(chord 缺席的兑现节拍缺失)是关联缓解而非正式高光——正式高光设计归 B1/B4,B3 只提供字段与兑付面。
### 综合判断
三锚点全部由已有字段承载(六归因字段 + display_name + 授予时快照),无新增机制需求;呈现侧三要素(图标/层数/剩余结算次数)与极性映射登记为 D1/B5 数据面义务。
## 问题 9:defense_up −50→−30(减伤墙批)的数值论证
### 广度分析
- 候选 A:维持 −50——代价:叠满两层 −100 恰触 percent 地板,免伤轮由 defense_up 单侧可达,防御型奖励失控(减伤墙)。
- 候选 B:回调 −30(采纳,C3 投值)——叠满两层 −60 帽,免伤轮不再由 defense_up 单侧可达。
### 深度分析
定量坐实:defense_scan 墙轮 39% / 真人 12 轮零承伤。回调后免伤轮现行可达路径 = weaken 饱和(敌侧单结算零输出);defense_up 叠满 = 0.4× 承伤(消费读法归 B1),B1 地板规则压力同步解除。回调下界 = 减伤墙复发——观测锚 = C3 承伤带复验与 B1 条款③重跑。该回调即"禁独立调参"联动网络的实证:defense_up.magnitude/duration 已纳入 m_w↔D_ref↔m_d↔duration_d 联动网络(与 B1 Knob 交互同口径),减伤窗口强度与 attack_up 同入 B1 对账联动评估(B1 地板规则 × 战斗时长曲线 × 条款③ V_safe),禁止独立调参。
### 综合判断
−30 为现行 provisional 值;修订轨迹与免伤轮叙述同步见 design 件版本历史(对侧 B1 F2 同批)。
## 问题 10:四行 knob 调过高/调过低各会发生什么?
### 广度分析(逐 knob 后果,Knob 表原文留档)
| Knob(表行值,D2 承载) | 默认 | 调过高 | 调过低 |
|---|---|---|---|
| attack_up.magnitude | +50 | 叠满 +100%,敌方 HP 池相对贬值(战斗时长曲线压向 B1 对账) | 安全格奖励空心化——A3 条款 3 左臂(P(安全)×buff)塌方 |
| defense_up.magnitude | −30 | 叠满 −60%(免伤轮不再由 defense_up 单侧可达——B1 地板规则压力同步解除) | 减伤无感,防御型奖励萎缩(回调下界 = 减伤墙复发——观测锚 = C3 承伤带复验与 B1 条款③重跑) |
| weaken.magnitude | −65(值域 [60, 85]) | 越域界加深(表界 16×m_w)、地板交叉层数 ⌈100/m_w⌉ 恒 2、边际层贬值 | 值域下界 60 = 条款 2 锚两腿可行交集——越界即破锚(修订方向 B4/B1 裁决) |
| ambush.magnitude | +3 flat | 量纲已定稿(每攻击类行为 +3 HP)——踩雷痛感随值放大,条款 3 上限对账归 B1 | 踩雷无痛感——P3"风险与收益同源"失衡 |
| duration_settlements(四行) | 1/1/1/1(当次结算) | 窗口拉长恢复跨轮延续(规划变简单、衰减感消失) | 已在下界 1(一次性语义——再低无定义) |
| max_stack(四行) | 2/2/16/16 | 合成越域幅度增大(B1 地板压力↑) | 叠层机制边缘化(重复奖励变溢出浪费) |
### 深度分析
Knob 交互:attack_up 与 weaken 是条款 2/3 对账的两端——禁止独立调参,联动评估归 B1 闭合对账;A3 的 ap_per_round 是 weaken 单轮层和的经济上限(F2 AP 界 8×m_w 的来源);效果档位当量对照表(B1)落定前,四行 magnitude 的任何调整都须重跑条款 2/3 锚预检并同步 registry(接口漂移义务)。
### 综合判断
四行值全部 provisional;调参纪律(禁独立调参 + 重跑锚预检 + registry 同步)为结构规则,已留在 design 件调参表。
## 问题 11:ambush 量纲与敌侧 side-wide 语义怎么定稿的?
### 广度分析
- ambush 量纲候选:进倍乘的 percent / 后置加法 flat(采纳,B2 GDD 定稿)。
- 敌侧作用范围候选:单体寻址 target_ref / side-wide 全体存活敌单位(采纳)。
### 深度分析
ambush_unit_definition(B2 GDD Rule 6/F2 定稿,registry OQ2 关闭条件兑现):+3 flat = 每层伏击为每次攻击类行为(attack/heavy)附加 3 点主角 HP 伤害(后置加法、不进倍乘);charge 拍零兑付(空拍蒸发);值仍 provisional(锚验收归 B4/B1——A3 F1 条款 3;B2 供给 cap 表值与单结算自然边界口径见 clause3_supply 条目)。
single_enemy_assumption 回验史:Core Rule 1 原单敌假设经 B2 定多敌模型(1–3 个同敌种敌单位,EnemyTable.unit_count,用户 2026-09-09 拍板)回验不成立——效果 side-wide 语义改"全体存活敌单位"(层数 = side 共享池),B3 现接口零变更兼容;target_ref(单体寻址)= 扩展位义务——首个单体效果上线时 B3 补列(随批:B1 归集语义/D1 呈现裁决);B3 GDD 正文不改,以 registry 该条为准(A3 OQ5 收编先例)。
### 综合判断
量纲与 side-wide 均已定稿且与 B3 接口解耦——B3 不解释单位、不感知敌数;两条均以 registry 为准的收编形态落档。
## 问题 12:测试策略为什么这样设计?(夹具/退化/deferral 论证)
### 广度分析
- 夹具注入候选:程序构造注入表 vs --data-root 行为夹具根(采纳后者承载 refresh/independent 语义)。
- 致命夹具候选:每类致命各一根 vs 恰一根 dup_key(采纳后者)。
### 深度分析
选夹具根而非程序构造注入表的理由:容器经 ConfigDB 单点读表(Rule 2/9)、无表注入 API——--data-root 是 debug/test 构建的既定注入通道。致命类收窄的理由:恰一根 status_effect_dup_key(重复键类别)实证"游戏内真的会死"在本表上的落点(loader 集成缝 = loader 是否对本表调用校验的进程级落点,runner manifest 退出码 dup→≠0,D2 AC-2b 协议同型);其余致命类别(枚举域/域校验/跨字段)由 D2 AC-2 同类别 loader 级夹具承载(表无关,豁免声明收窄保留),schema 侧以程序构造断言域类别(AC-13)。
退化与 SKIP 纪律:AC-4 腿 2 / AC-8 / AC-14 腿 3 / AC-17 并入腿均依赖表读值前提(D_a ≥ 2、M_w×m_w 越域等)——默认表值不满足时退化跳过 + 显式 SKIP 标记防 CI 静默、不假失败;AC-14 腿 3 非平凡性依赖默认基线(M_w=16、m_w=−65 → −1040 越出 percent 域),knob 调参使 M_w×m_w 绝对值 ≤ 100 时退化为恒等断言,退化时输出显式 SKIP 日志、CI 可见防静默失真。out-of-scope deferral 生效条件 = B1 义务清单全部落位(已成立);Rule 8 负空间"无对应 API"不可 GIVEN-WHEN-THEN,验收形态 = API 面封闭枚举 + 接口漂移修订门。
### 综合判断
测试口径九行(载体/被测面/返回/观测量/时序/期望值/夹具/致命收窄/OOS)全部为结论性规格,留 design 件验收标准节;本节仅留存选型理由。
## 开放问题
| # | 问题 | owner | 状态/时机 |
|---|---|---|---|
| 1 | weaken 条款 2 锚裁决——归一口径已由 F0 裁决关闭(每结算瞬时当量;总暴露分支被 schema 域禁止排除),m_w 值域 [60, 85]/默认 −65 已入文。余项:终值共裁确认 + registry 终值回写,裁决时复查 AC-14 腿 3 非平凡性 | B4/B1(deadline:B1 GDD 强制检查点) | 余项随 B1 OQ2 联动 |
| 2 | ambush 量纲——已定稿(B2 GDD:每层伏击为每次攻击类行为附加 m_amb 点主角 HP 伤害、后置加法、charge 拍零兑付——registry ambush_unit_definition)。余项:B1 条款 3 上限检验 | B2 → B1 | 随 B1 对账闭合 |
| 3 | 首个 refresh/independent 内容行的 AC 补全——EC4 登记义务:奖励池引入非 stack 行时补真实内容行冒烟 AC,夹具探针行退役;其授予可见性语义(空刷新 vs Rule 5)随批由 B4/B1 裁决 | B4 | 奖励池引入非 stack 行时 |
| 4 | clear_reward 源授予——清图奖励若含 buff 的授予路径确认(apply_effect source=clear_reward;A3 条款 4 差异化插槽) | B4 | B4 期 |
| 5 | EC9 reload gate 的 B1 侧落点——防"战斗中真的被置位"零落点(qa-lead 缺口 #4) | B1 GDD 门禁评审 | 随 systems-index 门禁记录登记 |
| 6 | 效果当量对照表的预检重跑——条款 1 对照表落定时按预检重跑 weaken/ambush 方向性预检(正式对账载体);C3 首次调参即须按现行参照(attack_up 当量)复算条款 2 预检 | B1 | B1 对照表落定 / C3 首调 |
| 7 | stack-不重置 R 的 playtest 证伪项——F1 注决议(用户拍板、结构冻结)的体验面反例检验:"早拿必亏"(分轮拿满总暴露 150pp vs 同轮拿满 200pp——算例基线 = dur=2 行值;现行四行 D=1 下两读法总暴露相等、不对称休眠,dur ≥ 2 内容行上线时激活)叠加奖励身份不可预读(创意风险 #1)是否伤害"把 buff 纳入挖掘推理"的规划感(P1)。补偿载体先行:B4 奖励身份预读 + D5"同轮拿满"教学;证伪成立则走结构冻结修订流程回炉(合并/重定义 stack 分支)——非调参 | 垂直切片前置 playtest 批次 | playtest |
## 附录 A:一致性核对与审计注记(历史审计留档)
| 项 | 内容 |
|---|---|
| 双向一致性 | B4 ← A2, B3, D2 ✓ · B1 ← A3, B2, B3, B4, D2 ✓ · B3 ∈ Foundation、无上游 ✓(systems-index 依赖分层表) |
| B2 无边说明 | 索引无 B2←B3 边与依赖表 B2 行不矛盾——敌方状态的承载在 B3,但授予路径经 B1,B2 与 B3 之间是验收锚关系非运行时依赖,故不列边 |
| D2 hard 措辞 | "hard"指 ConfigDB 读表的数据通道事实依赖(registry config_db referenced_by=[all-systems] 同口径);索引分层表不列纯数据读取边——相容非矛盾 |
| Rule 10 回写 | 对 A3 OQ5"档位归 B4 表设计"的收编(初值定稿权归 B3、锚验收权留 B4/B1)已回写 systems-index 门禁记录与 registry ownership_note |
复核注记(v1.1-lean 头部留档):lean 门禁下 systems-designer / qa-lead 已委托起草(Formulas / AC);creative-director 与 art-director 未经咨询——生产前人工复核体验锚点情绪定位与视觉数据面规格同 art-bible 的一致性。
## 附录 B:去向映射(零丢失可审计证据)
| 原文节 | 落点 |
|---|---|
| 头部(状态/版本/支柱/Layer/一句话) | design 头部块 |
| 头部复核注记 | analysis 附录 A |
| 速览表 | 定位→design 设计目的;拥有/不拥有→design 系统范围;上游/下游→design 依赖与输出;硬约束→design 系统范围「负责」 |
| 体验锚点(含反向护栏/参考感受) | 承诺结论→design 设计目的 1–4;论证全文→analysis 问题 8 |
| 全局流程(生命周期字符画 + 出口分发表) | design 核心循环(原样保留) |
| 核心规则 Rule 1/3/4/5/6/8(人话 + 子表) | design 授予、合并与接口(编号人话句 + 四张原表 + 举证表) |
| 核心规则 Rule 2(含时限语义参照表) | design 时限与衰减 |
| 核心规则 Rule 7 | design 数值结论·显式排除声明节末 |
| 核心规则 Rule 9 / Rule 10(含举证依据) | design 枚举与数据字段(schema 小节 / MVP 内容行小节) |
| 枚举(source_class / target_side·unit·stack_policy / MVP 四行) | design 枚举与数据字段(原表保留) |
| F0 结论 | design 数值结论 F0;推导表与论证→analysis 问题 4 |
| F1 结论/伪代码/Variables/Output Range | design 数值结论 F1;F1 注(spec 决议理由)+ Example 验算→analysis 问题 3 |
| F2 结论/表达式/Variables/Output Range | design 数值结论 F2;不 clamp 论证 + Example 验算→analysis 问题 5 |
| F3 结论/伪代码/Variables/时序契约/Output Range | design 数值结论 F3;时限量纲论证 + Example 验算→analysis 问题 2 |
| 显式排除声明(归属表) | design 数值结论;归属切分理由→analysis 问题 6 |
| 状态(四态表 + 不变式 + 纯逻辑类口径) | design 实例状态 |
| 边界情况 EC1–EC14 | design 边界情况(原表保留,增编号列) |
| 依赖(上游 D2 / 下游八行) | design 依赖与输出(双向一张表) |
| B1 侧义务清单 ①–⑧ | design 依赖与输出(活契约原表保留) |
| 呈现与教学义务清单(D1×4/B5×2/D5/B4) | design 依赖与输出(活契约原表保留) |
| 一致性核对与注记 | analysis 附录 A(历史审计) |
| 呈现与 UI 契约(数据面义务 4 行) | design 依赖与输出(活契约原表保留) |
| Tuning Knobs schema + 加载校验 + Rule 4 豁免 | design 枚举与数据字段 schema 小节 |
| Tuning Knobs F0 回执注记 | design 数值结论 F0 |
| Knob 表(调过高/调过低) | 字段|域|默认|owner→design 调参表;后果论证全文→analysis 问题 10 |
| 非 knob 结构冻结 + Knob 交互 | design 调参表(规则为结论保留);联动网络论证→analysis 问题 9/10 |
| 验收标准(测试口径 9 行 / 夹具规格 3 根 / AC-1–19 / 覆盖矩阵) | design 验收标准(原表保留,AC 编号不动);选型理由→analysis 问题 12 |
| 开放问题 OQ1–OQ7 | analysis 开放问题区(原编号保留) |
| 减伤墙批(−50→−30)论证 | analysis 问题 9;结论值留 design 调参表与 MVP 行表 |
| ambush 量纲 / 多敌 side-wide 定稿史 | analysis 问题 11;结论留 design 枚举与系统范围 |
| 版本历史(全部历史行) | design 版本历史(原行全保留 + 追加 v2 迁移行) |