From 26374accb343251e3fdf4b37cec3e6ba0a176c84 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Mon, 5 Oct 2026 03:43:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A4=E5=BC=8F=E6=8D=A2=E4=BB=A3=E6=89=B9T0?= =?UTF-8?q?-T3=EF=BC=88=E8=BF=AD=E4=BB=A314=E2=91=A1=EF=BC=89=EF=BC=9Aaudi?= =?UTF-8?q?t=E5=B8=B8=E9=87=8F=E5=88=B7=E6=96=B0=EF=BC=88=E6=B1=A077/?= =?UTF-8?q?=E7=9B=B4=E4=BC=A46-8-8/heal2/=E6=B8=85=E5=9B=BE24-40/AP8/off?= =?UTF-8?q?=5Fguard-1/=E4=BC=8F=E5=87=BB=E9=80=80=E5=BD=B9/=E4=B9=9D?= =?UTF-8?q?=E5=9E=8B=E5=AD=97=E5=85=B8/=CE=B2=E5=B8=A6+=E9=80=90=E5=9E=8B?= =?UTF-8?q?=E8=BE=93=E5=87=BA=E2=80=94=E2=80=94=E6=94=B9=E5=89=8D=E9=9D=99?= =?UTF-8?q?=E6=80=81=E9=94=9A=E5=88=A4=E5=80=BC=E4=B8=8E=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E6=8A=A5=E5=91=8A=C2=A7=E5=9B=9B=E9=80=90=E4=BD=8D=E5=90=BB?= =?UTF-8?q?=E5=90=88=EF=BC=89+runsum=E4=BA=94=E5=AD=97=E6=AE=B5=E8=90=BD?= =?UTF-8?q?=E7=A0=81=EF=BC=88flag=5Fplaced/hit/miss/gain/penalty=E2=80=94?= =?UTF-8?q?=E2=80=94=E8=A1=8C=E4=BE=A7=E5=88=A4=E6=8D=AE=E8=80=83=E8=AF=81?= =?UTF-8?q?=3D=E6=8E=88=E4=BA=88=E8=A1=8C=E4=B8=93=E5=B8=A6highlight?= =?UTF-8?q?=EF=BC=8C=E7=8A=B6=E6=80=81=E5=A4=8D=E5=8F=91=E8=A1=8C=E6=8E=92?= =?UTF-8?q?=E9=99=A4=EF=BC=8C=E5=AE=9E=E6=B5=8B87=E8=A1=8C=3D=3D87?= =?UTF-8?q?=E6=8F=92=E6=97=971:1=EF=BC=89+F1=E6=9D=A1=E6=AC=BE3=E9=87=8D?= =?UTF-8?q?=E7=AB=8B=E4=B8=89=E5=B1=82=E5=8F=A3=E5=BE=84=EF=BC=88=E8=81=9A?= =?UTF-8?q?=E5=90=88=E5=81=A5=E5=BA=B7=E5=BC=8F=E5=8F=AA=E7=95=99=E4=B8=8B?= =?UTF-8?q?=E9=99=900/=E6=97=97=E8=BE=B9=E9=99=85=E5=BC=95=E7=90=86/?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E4=BA=8C=E6=97=97=E6=BA=A2=E4=BB=B7=CE=B4=3D?= =?UTF-8?q?0.25=E7=99=BB=E8=AE=B0=E5=B7=B2=E7=9F=A5=E7=A0=B4=EF=BC=89+?= =?UTF-8?q?=CE=B2=E5=B8=A6[1.2,2.5]=E5=88=A4=E8=AF=BB=E5=85=A5=E6=96=87+?= =?UTF-8?q?=CE=B7=E8=AF=BB=E6=95=B0=E5=85=A5=E6=96=87+=E6=88=98=E6=96=97?= =?UTF-8?q?=E7=BB=93=E7=AE=97gp/ap=E5=BD=93=E9=87=8F=E6=B3=A8=E8=AE=B0+?= =?UTF-8?q?=E9=AA=8C=E6=94=B6=E6=9D=A1=E6=AC=BE3=E5=AF=B9=E8=B4=A6+?= =?UTF-8?q?=E9=9A=BE=E5=BA=A6=E8=81=94=E5=8A=A8=E8=A1=A8+6=E8=A1=8C+P1?= =?UTF-8?q?=E6=94=B9=E5=88=A4=E8=AF=BB=E5=9B=9E=E6=89=A7+registry=20clause?= =?UTF-8?q?3=5Finequality=E9=87=8D=E7=AB=8B=E6=9D=A1=EF=BC=88=E6=94=B9?= =?UTF-8?q?=E5=89=8D=E9=94=9A+P7=E4=B8=A4=E7=82=B9=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=EF=BC=89+06=E7=A0=B4=E7=BA=BF=E6=9D=A1=E6=94=B6=E5=8F=A3+07?= =?UTF-8?q?=E2=91=AB=E6=97=97=E6=BA=A2=E4=BB=B7=E7=9B=AE=E6=A3=80=E9=A1=B9?= =?UTF-8?q?=EF=BC=9B=E9=97=B8=3D=E5=86=92=E7=83=9F747/0+doc=E4=B8=89?= =?UTF-8?q?=E9=97=B8=E5=AF=B9=E5=9F=BA=E7=BA=BF=E9=9B=B6=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=EF=BC=88worktree=E6=AD=BB=E9=93=BE+2=E7=B3=BBgitignored?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E7=8E=AF=E5=A2=83=E6=80=A7=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- design/gdd/06-待办清单.md | 2 +- design/gdd/07-体验验证清单.md | 8 + design/gdd/systems/冒险循环/难度曲线与Boss.md | 11 +- design/gdd/systems/战斗循环/战斗结算.md | 4 + design/gdd/systems/排雷循环/行动经济.md | 58 ++++- design/registry/entities.yaml | 13 +- game/smoke/adventure_monte_carlo.gd | 6 + game/smoke/level_autoplay.gd | 25 +++ tools/clear_dominance_audit.py | 198 ++++++++++++------ 9 files changed, 241 insertions(+), 84 deletions(-) diff --git a/design/gdd/06-待办清单.md b/design/gdd/06-待办清单.md index d173ece7..772b97f0 100644 --- a/design/gdd/06-待办清单.md +++ b/design/gdd/06-待办清单.md @@ -59,7 +59,7 @@ **归属**:[难度曲线与Boss](systems/冒险循环/难度曲线与Boss.md)提案,战斗结算闭合共裁 -**状态**:对账复跑出讫(2026-09-29 迭代 8 卡⑧——投值后风险端当量 ×1.9,破线缓解未闭合;全量复算见 git 提交 d70f6c3 §二;结构性修订维持 Alpha 批归属)。**2026-10-04 判读收官+修订立项**:结构性修订已全裁(用户两轮「按推荐的来」+grill 七问——甲+丙先行/形态(a)兑付溢价 δ=1.25/β 带 [1.2,2.5]/条件二落文登记已知破·机制小批转绿,裁决回执=方案报告 §九,`design/research/方案-挖掘风险不等式修订-2026-10-04.md`);**判式换代批编入 roadmap 迭代 14(②号卡)**,任务书=`.zcode/plans/mine-inequality-revision-miniloop-plan-2026-10-04.md`(T0-T5≈2.5d,待 U0)——**原「Alpha 批归属」作废**(M-3 已关闭);本条正式收口随该批 T3 判式落文执行 +**状态**:对账复跑出讫(2026-09-29 迭代 8 卡⑧——投值后风险端当量 ×1.9,破线缓解未闭合;全量复算见 git 提交 d70f6c3 §二;结构性修订维持 Alpha 批归属)。**2026-10-04 判读收官+修订立项**:结构性修订已全裁(用户两轮「按推荐的来」+grill 七问——甲+丙先行/形态(a)兑付溢价 δ=1.25/β 带 [1.2,2.5]/条件二落文登记已知破·机制小批转绿,裁决回执=方案报告 §九,`design/research/方案-挖掘风险不等式修订-2026-10-04.md`);**判式换代批编入 roadmap 迭代 14(②号卡)**,任务书=`.zcode/plans/mine-inequality-revision-miniloop-plan-2026-10-04.md`(T0-T5≈2.5d,待 U0)——**原「Alpha 批归属」作废**(M-3 已关闭)。**本条正式收口(2026-10-05 判式换代批 T3 落文=兑现条件)**:判式三层已重立落文(行动经济 F1 条款3 v0.8——聚合健康式只留下限 0 / 旗边际引理 / 条件二旗溢价 δ=0.25 provisional 形态 a,登记已知破·本批 T4 机制闭合)、β 带 [1.2,2.5] 判读制度化(u=3 β=1.17 微破下限=登记态)、registry `clause3_inequality` 重立条+改前静态锚+P7 两点修正注记落位、runsum 五字段(η 读数面)落码。**残留转登记面**:①u=3 微破下限与条件二等号压线不强制回滚(方案 §九 点名);②δ 敏感度判读(≥5pp 判据)随本批出口报告;③后续调参按 β 带逐 u 检算(难度曲线与Boss 调参联动表 +6 行)——不再立独立重跑批 diff --git a/design/gdd/07-体验验证清单.md b/design/gdd/07-体验验证清单.md index 75ebab78..bb0b8fd1 100644 --- a/design/gdd/07-体验验证清单.md +++ b/design/gdd/07-体验验证清单.md @@ -119,6 +119,14 @@ **局后随手记**(一句话):Boss 图这层"攻击多、回血少"的体感成不成立;有没有觉得 Boss 图突然变难/变容易。读数核对归模拟批(off/on 双档,只测不判),你的体感只做方向参考——不会当场改数值。 +### ⑫ 旗溢价兑付与标旗激励(2026-10-05 挖掘风险不等式判式换代批随批登记——迭代14②号卡) + +- **机制一句**:标中旗的正向兑付现在按同型正向 ×1.25 兑付(`settlement.tres` flag_hit_premium=125 provisional——条款3 条件二旗溢价形态 a),标空与挖格兑付不变;雷安同池结构零触碰。 +- **看什么(实机目检,约 5 分钟)**:①插旗标中一面旗,结算明细的兑付数值应比改前同类行略大(增伤 50→63 / 削弱 65→81 / 急救 2→3 / 金币袋 3→4;护甲强化与行动点 1 点量纲不变=整数粒度地板);②挖安全格与标空惩罚行数值应与改前逐位相同;③战斗结算帮助文案如有旗相关行,无自造词。 +- **行为读数(改前改后 MC 锚已采,判读随批出口报告)**:η=标中÷插旗 与 标旗率 位移 ≥5pp 判「有感」;行为无效 δ 仍保留+登记「行为无感」(判式诚实性不依赖行为弹性——2026-10-04 grill Q4 裁)。 +- **红灯信号**:标旗 rush 复发(首轮全标旗不挖——δ 与完美排雷 ×2 叠加通胀是既有联动面:旗溢价三件套 δ↔p_perfect↔ap_per_round 同窗检算,难度曲线与Boss 调参联动表在册)。 +- **结论回流**:体感 → 本条目记录;数值终值(δ 值与 ×1.5 档留后手)归调参批,不在试玩现场改数。**判式换代文本(行动经济 F1 条款3/战斗结算 验收标准/难度曲线与Boss 联动表三处修订稿)随批呈用户人闸**——追认单随出口报告。 + ## 验收读数重测义务(履行留痕 + 现行义务) **已履行**(按序换代,旧读数各随其批作废留痕不入本单):①验收读数重测批(2026-09-19——Boss 单独出列/承伤带/通关率基线全量重测,硬化翻倍期·乏力死效果期·充能期旧读数作废);②迭代 5 基线重测(统一随机流后 MC+verifier 双窗);③**数值修复批新尺重测(2026-10-01)**——模拟档位重构后全量重测,新锚 `sim-data/runsum_numfix_final_n200_20261001.jsonl`,全旧带作废只测不判([numfix 报告](../qa/numfix-newruler-readings-2026-10-01.md));④**迭代 10 奖励重构批重锚(2026-10-01)**——四代锚 77000/78000/79000/80000(改前/重构后/共享池后/掷定前置后,各 400 局),普通 L1 41.8%/L2 10.2% 带内([读数报告](../qa/m3-iter10-clear-rate-readings-2026-10-01.md));⑤**T19 真人标定局收口(2026-10-03 用户裁)**——有效局 2(1 通关 1 死于 L3 首战,[读数报告](../qa/t19-real-playtest-readings-2026-10-02.md)),用户裁定**佐证级收口不再补局**;k 预期带同日立(**正常 >0.5、预警 <0.3**),字段随 81000 重锚入库后补算终值。 diff --git a/design/gdd/systems/冒险循环/难度曲线与Boss.md b/design/gdd/systems/冒险循环/难度曲线与Boss.md index 862f91fe..e428bad8 100644 --- a/design/gdd/systems/冒险循环/难度曲线与Boss.md +++ b/design/gdd/systems/冒险循环/难度曲线与Boss.md @@ -214,8 +214,14 @@ Boss 战的棋盘用本关最大板形(板形行值读棋盘参数表),板 | 护甲类型 ↔ 克制矩阵 | [战斗结算](../战斗循环/战斗结算.md) | 敌种护甲变更须复算击杀区间(2026-09-19 充能退役——原"充能投桶与量"联动半边废止) | | 护甲等级 ↔ 攻击基线 ↔ 区间带宽 | [战斗结算](../战斗循环/战斗结算.md) | 敌种与主角的护甲等级行值变更须复算生存链区间(掷点带宽随折扣档位与攻击基线同向放大);掷点形式与档位已定稿(d20 三档——档位读 `settlement.tres`;nat20 暴击形式留档,倍率同表),护甲等级行值变更仍须复算生存链区间并同步 registry——现行行值读 `hero.tres` / `enemy.tres` 的 armor_class 列(均暂定),敌方正式行值随怪物设定批投值、与加难杠杆扫描合并调 | | GP 供给 ↔ 商品定价 | [冒险结构](冒险结构.md)、[关卡节点地图](关卡节点地图.md) | 供给 × 定价 = 入关属性参数,单边移动须复算分层通关率带(商店与 GP 经济杠杆节)——动供给必复算分层带,禁独立调参 | +| 旗溢价系数 δ ↔ 完美乘数 p_perfect ↔ ap_per_round | [战斗结算](../战斗循环/战斗结算.md)、[行动经济](../排雷循环/行动经济.md) | 旗激励三件套同窗检算(防标旗 rush 复发:δ 与 ×2 叠加通胀、AP 吞吐上限)——任一变动须重跑双画像标旗率读数(2026-10-05 判式换代批新增) | +| η 读数 ↔ 模拟画像定义 ↔ 可推理率 ι ↔ min_safe_count/生成尝试上限 | sim 档位、[棋盘生成](../排雷循环/棋盘生成.md) | η 是画像条件量:画像重构即锚漂移,重锚随批;可推理率三元组既有联动扩一员(2026-10-05 判式换代批新增) | +| β 带端点 β_lo/β_hi ↔ D_ref ↔ hero max_hp ↔ AC 折算档(5pp 系数) | [战斗结算](../战斗循环/战斗结算.md) | 带是 D_ref 的函数:换锚(D_ref/max_hp)须全带重推;AC 档值变更改 5pp 系数,同罪(2026-10-05 判式换代批新增) | +| 直伤雷三行(6/8/8) ↔ 正向同轴行(heal_minor/pierce_strike/magic_bolt) | [地图战斗资源](../战斗循环/地图战斗资源.md) | **同轴镜像比入对账面**:负向/正向比超出 β 带内推导区间即越带;单边动负向三行今后必须带正向镜像行联合检算(2026-10-05 判式换代批新增——d70f6c3/数值修复批两先例的单边动教训成文) | +| clear_blast 区间(24/40/32) ↔ p_perfect | [地图战斗资源](../战斗循环/地图战斗资源.md) | 完美排雷第二份的补贴基数进旗激励对账;单边动清图奖励 = 变相动旗(2026-10-05 判式换代批新增) | +| 标中强化池权重 ↔ 正向池权重(77 分母) ↔ 关级恒等式奖励占比 [15,40%] | [地图战斗资源](../战斗循环/地图战斗资源.md) | 形态 (b) 专属池重摇启用时生效(现行不启):双池分布变动 = E_dig 与 W 同时漂移,须联合检算 + 恒等式占比复核(2026-10-05 判式换代批新增,条件生效行) | -五条经济契约的对账由[战斗结算](../战斗循环/战斗结算.md)闭合验收,其中挖掘风险不等式现行验算破线(现状见其「待办」);清图支配性已于 2026-09-19 按现行值链重跑、裁决②"非支配设计态"维持(回执见 git 提交 2ca3e20,报告已退役)——两型的重跑义务都落在本系统的下一次调参批随批执行,这是本系统当前最优先的调参义务。完美排雷乘数的调参权在本系统。 +五条经济契约的对账由[战斗结算](../战斗循环/战斗结算.md)闭合验收;挖掘风险不等式已于 2026-10-05 判式换代批重立(三层口径+β 带+条件二旗溢价——结构层接替与数值层带判读详见行动经济 F1 条款3 推导节),本系统的对账义务转为按 β 带逐 u 检算(常设重跑入口 `tools/clear_dominance_audit.py`,现行 u=3 β=1.17 微破下限登记态);清图支配性已于 2026-09-19 按现行值链重跑、裁决②"非支配设计态"维持(回执见 git 提交 2ca3e20,报告已退役)——判式换代后的全套判值重跑随本系统下一次调参批随批执行。完美排雷乘数的调参权在本系统。 元进度接口预留:**结论——元进度解锁对难度的影响,以生存链区间的平移换算率接入;接口启用形态已定稿(2026-09-18 元进度定稿批,用户拍板):永久强化影响折算为通关率带平移量,判读口径不变;换算率表首版三行(生命上限 / 基础攻击 / 护甲等级——护甲行强条目,验收读数须按解锁后参数重测)与键结构登记见 registry `meta_progression_conversion_table`,数值行读 `data/tables/`、标定随元进度设计批。** 元进度数值行落地前,本系统不为它预留任何数值行。 @@ -251,7 +257,7 @@ Boss 战的棋盘用本关最大板形(板形行值读棋盘参数表),板 | 优先级 | 内容 | 后置原因 | |---|---|---| | P1 | 加难杠杆扫描落带 | 候选杠杆已登记(血量锚走廊、群战上探、注入衰减上调候选),扫描未执行;护甲等级换装点锚定(基准护甲等级自带敌方输出期望的结构性削减 + 减伤墙退役 + 伤害下限)的方向性偏移并入本扫描一并调带(带宽补扫含暴击档与折扣档);落带前现行行值维持 provisional-pending-scan。第二关行集随分支节点图批落地后并入本扫描(L2 读数基线/加成档已随批实测,见 v0.7) | -| P1 | 挖掘风险不等式与清图支配性对账重跑 | 两条对账:清图支配性已于 2026-09-19 按现行值链重跑(裁决②"非支配设计态"维持——缺口收窄主读数 L1≈24/L2≈45 当量〔u=1〕,设计权威回执=git 提交 2ca3e20,重跑入口 tools/clear_dominance_audit.py);调参批执行时按当期行值随批重跑。挖掘风险不等式现行破线,义务仍落本文调参批(现状见[战斗结算](../战斗循环/战斗结算.md)「待办」) | +| P1 | 挖掘风险不等式与清图支配性对账重跑 | **挖掘风险不等式半边已收口(2026-10-05 判式换代批,迭代14②号卡)**——判式三层重立落文+条件二旗溢价机制闭合+β 带判读制度化(残留=u=3 β=1.17 微破下限登记态,不强制回滚;δ 敏感度判读随批出口报告),本行对挖掘风险不等式的「重跑义务」改判读回执:后续调参按 β 带检算执行,不再立独立重跑批。清图支配性已于 2026-09-19 按现行值链重跑(裁决②"非支配设计态"维持——缺口收窄主读数 L1≈24/L2≈45 当量〔u=1〕,设计权威回执=git 提交 2ca3e20,重跑入口 tools/clear_dominance_audit.py);调参批执行时按当期行值随批重跑 | | P1 | 真人通关率修正系数标定 | 带按模拟口径定义;试玩批次实测真人显著强于模拟者,系数待后续试玩批次定量 | | P1 | 迭代 10 奖励重构带重扫义务 | 恢复经济收紧(通关血回满→部分回血 20%,难度上压方向)+ 局内成长节奏变动(三选一件值/权重/次数上限 knob 全读冒险表;AP 件 = 每场战斗开始首轮 +1 AP 的强度敏感轴)——通关率带重扫随曲线调参批现行窗执行;Boss 钥石掉落重锚(首杀 3/复杀 2)连带元进度产出标定义务重开(归元进度设计批) | | P1 | 完美策略档的结构性加难杠杆 | 数值杠杆对完美档已被实测证伪,结构候选未裁决(见「待办」) | @@ -351,3 +357,4 @@ Boss 战的棋盘用本关最大板形(板形行值读棋盘参数表),板 | v0.20 | 2026-09-28 | 判读口径落档+回滚阶梯收编+Boss 锚漂移登记 | | v0.21 | 2026-09-30 | 普通档改带 L1 [35,55]/L2 [10,15]+带表与验收标准回写现行口径 | | v0.22 | 2026-10-03 | **商店定价公式换代(迭代 11 第②批 GP 商店房重构批——任务书 v1.3 P1 共享池/P4 ceil/P5 甲;06 条 2026-10-02 用户裁决)**:商店与 GP 经济杠杆节公式换代 = ceil(基价 × b^(关序−1) × A^(进店已购次数)),A/b provisional 投值 1.8/1.1(原 P5 甲 game-balancer 研究拍板改后置追认——零人工令);杠杆位表换货架基价四行+价格因子 A/b 两行;分层验收 defer 节补 v0.22 注记(shop=off=legacy 对照 off_n60 逐位 / shop=on 首锚 N=60 双策略带平移归调参批/终局池读数只测不判)。行值零结构改动(shop.tres 扩列不退役) | +| v0.23 | 2026-10-05 | **挖掘风险不等式判式换代(迭代14②号卡 T3——与行动经济/战斗结算/registry 同批)**:调参联动表 +6 新增行(旗溢价三件套 δ↔p_perfect↔ap_per_round / η 读数画像联动扩员 / β 带端点↔D_ref↔max_hp↔AC 折算 / 直伤雷三行↔正向同轴行〔同轴镜像比入对账面〕/ clear_blast 区间↔p_perfect / 标中强化池权重〔形态 b 条件生效行〕);P1 后置「挖掘风险不等式与清图支配性对账重跑」行改判读回执(不等式半边收口=判式重立+β 带检算接替,残留 u=3 β=1.17 登记态;清图支配性维持);五条经济契约对账段换代 | diff --git a/design/gdd/systems/战斗循环/战斗结算.md b/design/gdd/systems/战斗循环/战斗结算.md index 4772972f..499171ea 100644 --- a/design/gdd/systems/战斗循环/战斗结算.md +++ b/design/gdd/systems/战斗循环/战斗结算.md @@ -116,6 +116,8 @@ percent 类(每结算、每层): E = |层数 × 行值| ÷ 100 × | 层数 × 行值 | 单条效果的叠层数与行值,读[增益状态](增益状态.md)的实例数据 | 行值归该系统 | | 完美乘数 | 完美排雷给清图奖励的乘数,配置值 | 读 `settlement.tres` p_perfect(现行值读表) | +**gp / ap 当量口径注记(2026-10-05 判式换代批 T3——口径空白登记)**:上式 flat 类枚举(直伤、治疗、行动点)不含 gp——现行对账按 **gp 当量 = flat power 代理**计(金币袋 3 / 破财 2,方案报告假设 A5);ap 当量 = flat 表值 1,机会成本口径(+1AP ≈ 多挖一格 ≈ E_dig + 进度 + 信息价值)更高,差异仅登记不进主算(假设 A6)。gp 的精确口径应经商店定价换算(1 GP 的边际属性当量),归状态层/商店批复核后换代。旗溢价兑付(条款3 条件二形态 a,`settlement.tres` flag_hit_premium=125 provisional)按同型正向 ×(1+δ) 兑付——当量换算随同型行口径同步放大,整数量级取整四舍五入(与伤害管线 round_direction=floor 分域,registry 随批登记)。 + ### 授予段兑付:极性路由,四类动作各归各账 授予段消费结算队列。**队列与判定基线**:挖掘期玩家对格子的动作——开格、标旗——都进入结算队列;结算逐批兑付,不走逐动作出栈直算。旗判定以轮末在场旗位为基线:被直接挖开的旗已随挖掘消失、不在基线(零兑付——标中 / 标空让位于挖掘本体结局,见下文插旗不可逆四情况);开格事实不可撤(已开格无法回退)。过滤后按触发源分三批兑换,每格受理、每旗判定恰好一次。 @@ -352,6 +354,7 @@ EV 参考数不入正文(派生读数,需要时按判定式与现行表值 - 无来源即炸:每行明细都能指回一个来源事实(棋盘格、单位、清图或段级结论);找不到来源即断言失败,行型与来源类别两层豁免清单见明细流水一节,豁免行仍受其它契约约束。 - 行型封闭:流水只出现本文登记的 9 类行型;新增或下线行型必须走本文修订并同步呈现层行格式化,未登记行型不得落行。 - 伤害单据管线(2026-09-24):全部伤害(主角先手、敌方伤害技、棋盘克制直伤、群伤、反噬、地形变异)经伤害控制器单据管线兑现,兑付配方封闭五种;目标在结账时刻照规则解析;死亡事件由单位自行宣布——怪死其未结单据作废(零行、不进冷却不进保底计数)、主角死兑付终止;段界结账为现行口径、开单即结为回切结构位,两模式各自同种子同输入逐位复现。 +- 条款3 对账(2026-10-05 判式换代批 T3——与行动经济 F1 条款3 重立同步):①聚合健康式 (1−ρ̂)·E_dig(u) − ρ̂·V_mine(u) ≥ 0 与 β 比值带 [1.2, 2.5] 判读逐 u 检算(常设重跑入口 `tools/clear_dominance_audit.py`,读数快照归 registry clause3 重立条);②旗溢价兑付正确:标中旗正向兑付 = 同型正向 ×(1+δ)(δ 读 `settlement.tres` flag_hit_premium,100=无溢价直通零扰动),三类形态全覆盖(flat power / percent 幅度 / gp 缓冲)、标空与挖格兑付不乘溢价、雷安同池结构零触碰。 ## 待办 @@ -385,3 +388,4 @@ EV 参考数不入正文(派生读数,需要时按判定式与现行表值 | v0.22 | 2026-09-19 | **充能退役批(版本号避让注记:原登 v0.16 与甲效矩阵加法核换装批撞号——2026-09-20 R10 版本号唯一性规则上线发现,后落籍者顺延;用户拍板,与切片代码 / registry / 07 清单 / README 同批)**:主角攻击三分量模型(普通 + 穿刺/魔法充能)整体退役,回归单分量——量 = 攻击基线、类型 = 主角表 attack_type;挖格批/旗判定批的充能计数条款删除、充能供给表与 charge_grants 调参行删除、乘区公式与粒度口径改"攻击合计";退役理由 = 克制策略归冒险前配置(营地换型/未来冒险前参数面),局内不再有挖掘攒弹药的第二伤害供给;保留面 = 攻击类型属性轴与棋盘奖励触发源的抽象分离、奖励直伤道具(穿刺弹/魔法矢)的克制直伤消费不变。切片同批:battle_orchestrator 攻击段单分量化 + _charge_points/_charge_counts/round_facts 充能键删除、DamageMath.charge_component → counter_component 改名(奖励直伤唯一消费方)、settlement.tres charge_grants 键与 schema 校验删除、冒烟充能断言组退役改形(乘区接线单分量基线 100、标中正向兑付行断言、恢复点探针换种子 42)、冒烟 293 项 0 失败 | | v0.23 | 2026-09-20 | **GP+商店房批(用户拍板——与 关卡节点地图 v1.1 / 冒险结构 v0.5 / 地图战斗资源 v0.15 / 难度曲线与Boss v0.18 / registry / 切片代码同批;版本号注记:v0.22 已被充能退役批占用,表尾顺延)**:① 呈现只读面表 battle_finished 载荷 +gp_dropped(掉落掷定 + 关级加值 + 战斗内缓冲的合计——字段增删走本文修订条款兑现);② 授予段兑付形态表新增 GP 缓冲行:gp 正/负向(金币袋 / 破财——九型批)兑付 = 战斗内 GP 缓冲 ±power,战斗完成统一上抛入钱包账本(账本归冒险结构),战斗域零钱包状态;③ 随机口径六处→七处:战斗结束掉落掷定消费 `gp_drop` 封闭流(出口随机、步骤流之外);九型字典措辞与验收标准可回放条目同步 | | v0.24 | 2026-09-24 | **伤害管线单据化批(用户三裁决——与切片代码同批,06 台账 148)**:新增「伤害单据与伤害控制器」一节——伤害对象抽象补全:五族伤害来源收口伤害控制器单点管线、兑付配方封闭五种;三裁决落文——①结账时机双模式(现行 = 段界结账:授予段尾 / 清图批同步点 / 战斗段尾;开单即结保留为回切结构位,切换走代码不走调参)②目标结账时刻照规则解析③死亡事件由单位自行宣布(怪死其未结单据作废、主角死兑付终止);授予段兑付与战斗段两节补结账时点句;验收标准 +伤害单据管线条目。切片同批:`core/damage_controller.gd` 新建(单据构造/开单/结账/死亡事件消费/管线算术收口)、battle_orchestrator 六调用点改开单、掷点/折扣/克制/池乘/攻击行文本助手迁出(`_defender_ac`/`_clamped_pool` 留薄委托)、unit_container 增 `unit_died` 信号;冒烟 557 项 0 失败双模式全绿 + A/B 对拍四配置全确定且真实分岔(行数恒等、纯次序位移);历史基线读数自本批起以段界结账口径为准(重测归曲线调参批) | +| v0.25 | 2026-10-05 | **挖掘风险不等式判式换代(迭代14②号卡 T3/T4——与行动经济/难度曲线与Boss/registry 同批)**:①收益对照表补 gp/ap 当量口径注记(gp=flat power 代理 3/2 假设 A5 口径空白登记、ap=flat 表值 1 机会成本口径仅登记假设 A6,精确口径归商店批复核);②验收标准 +条款3 对账条(聚合健康式+β 带逐 u 检算 / 旗溢价兑付三形态覆盖·标空与挖格不乘·同池零触碰);③T4 机制载体 = settlement.tres 新键 flag_hit_premium=125(percent 域 provisional)——标中旗正向兑付 ×(1+δ),整数四舍五入取整与伤害管线 floor 分域(registry 随批登记);DamageController 零改、雷安同池冻结不动、直伤雷 6/8/8 与 p_perfect 不动 | diff --git a/design/gdd/systems/排雷循环/行动经济.md b/design/gdd/systems/排雷循环/行动经济.md index a7c3a615..b32bc68b 100644 --- a/design/gdd/systems/排雷循环/行动经济.md +++ b/design/gdd/systems/排雷循环/行动经济.md @@ -127,30 +127,65 @@ 1. **单一当量**:所有收益来源用同一张效果对照表归一换算,不允许分源改率。 2. **标中旗锚**:标中旗的减益档位必须严格高于最低档安全格增益——否则没人愿意插旗。 -3. **挖掘风险不等式**(2026-09-20 八型批改写):原"敌方伏击暴露不等式"随伏击机制退役作废——blast 负向现况 = 警觉(敌方护甲等级 +1,掷点折扣分布型惩罚),惩罚当量对账模型归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)调参批重立。 +3. **挖掘风险不等式**(2026-10-05 判式换代批重立——迭代14②号卡;原"敌方伏击暴露不等式"2026-09-20 随伏击机制退役作废,惩罚当量对账模型由本条重立承接,详细推导见下方推导节):聚合健康式 + 旗溢价条件二 + β 比值带判读,三层口径并行立(2026-10-04 用户裁 P2)。 4. **清图奖励大于零**,并预留按图类型差异化分支的结构位。 5. **清图支配性**:推到底清图的期望收益,不低于"确定格挖完就弃图刷新"的期望收益——否则清图玩法会被刷新策略淘汰。 -**结论**:五条契约由战斗结算作为唯一对账责任方闭合验收;概率侧由棋盘生成的可推理率参数锚定,惩罚侧现由 blast 型负向警觉承载(2026-09-20 八型批伏击退役换装),当量对账模型归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)调参批重立。 +**结论**:五条契约由战斗结算作为唯一对账责任方闭合验收;概率侧由棋盘生成的可推理率参数锚定;条款3 数值层由 β 比值带 [1.2, 2.5] 判读看护(常设重跑入口 `tools/clear_dominance_audit.py`),旗边际结构层由条件二旗溢价接替(机制载体 settlement.flag_hit_premium)。 推导: ``` -条款 3(2026-09-20 八型批改写): - 原"敌方伏击暴露不等式"随伏击机制退役作废—— - blast 负向现况 = 警觉(敌方护甲等级 +1,掷点折扣分布型惩罚), - 惩罚当量对账模型归 难度曲线与Boss 调参批重立 +条款 3(2026-10-05 判式换代批重立——三层口径并行立,2026-10-04 用户裁 P2; + 设计权威 = design/research/方案-挖掘风险不等式修订-2026-10-04.md §四/§九) -条款 5(清图支配性): + 条款 2(标中旗锚,既有不动):标中旗的减益档位必须严格高于最低档安全格增益。 + + 条款 3(聚合健康式,接替旧界形式)——盲挖净期望非负: + (1−ρ̂)·E_dig(u) − ρ̂·V_mine(u) ≥ 0 对全部参考板形 × u ∈ {1,2,3} + 下限 0 = 盲挖不为负;上限不设(旧 U_band 删,2026-10-04 grill Q3 裁)—— + 收益端通胀防护由 β 比值带的 β_hi 独家承载(同一约束单一承载)。 + + 旗边际引理(同池结构定理):雷安同池 + 极性矩阵同字典 ⇒ 标中旗兑付分布 ≡ 安全格 + 兑付分布,EV_flag − EV_blind = (q + ρ̂ − 1)·(E_dig + V_mine),符号只由 q + ρ̂ − 1 + 决定 ⇒ 「旗优于盲挖 ⇔ q > 1−ρ̂」,与全部当量表值无关(风险端定价动不了这一支); + 标中旗对「挖已知安全格」的边际恒 ≤ 0(= −(1−q)(E_dig+V_mine))——L2 结构破线层, + 由条件二接替。 + + 条件二(旗溢价式)——L2 结构破线的正当化条款: + E[标中兑付当量] ≥ (1+δ)·E_dig(u) + δ = 旗溢价系数,现行 0.25(provisional,2026-10-04 用户裁 P3);实施形态 = + (a) 兑付溢价——标中兑付按同型正向 ×(1+δ)(改战斗结算兑付公式一处,机制载体 + settlement.tres flag_hit_premium = 125,percent 域);(b) 专属池重摇不启 + (雷安同池结构冻结不动,留给异池后备案一并裁)。 + 登记态(落文时点):δ 落地前现行值已知破(E[标中] = E_dig < 1.25·E_dig 恒假)—— + 按「登记已知破·限期闭合」纪律落文,本批 T4 机制小批闭合;δ=1.25 时条件二以 + 等号压线成立(严格大于须 δ>0.25,×1.5 档留后手)。 + + β 比值带(数值层看护,2026-10-04 用户裁 P4): + β(u) = V_mine(u) ÷ E_dig(u) ∈ [1.2, 2.5] + β_lo = 风险端定价下限(旗的避险价值为真);β_hi < (1−ρ̂)÷ρ̂ 蕴含条款3 恒成立。 + 现行读数 β = 1.71 / 1.37 / 1.17(u=1/2/3,名义 ρ)——u=1/2 带内,u=3(1.17) + 微破下限 = 登记态点名,不强制回滚。直伤雷行值/ρ 每次提案逐档检算落带 + (2026-10-04 grill Q3 裁:删「≤15pp·S 形」装饰条款)。 + + η 读数(行为面,非判式——2026-10-04 用户裁 P1 乙降格读数): + η = flag_hit ÷ flag_placed(分母 = 全部插旗数,2026-10-04 grill Q5 裁), + 标空率 = flag_miss ÷ flag_placed 次读数分列。字段随 runsum 五字段承载 + (flag_placed/flag_hit/flag_miss/标中兑付合计/标空惩罚合计——结算流水聚合)。 + +条款 5(清图支配性,不动): 清图奖励当量 ≥ 弃图节省的期望雷险当量 + 轮数差 × 敌方结算强度当量 ``` | 变量 | 含义 | 锚定来源 | |---|---|---| -| P(安全) / P(雷) | 挖掘目标格为安全格 / 为雷的概率 | 实测可推理率分布 p10(registry inferability_vs_p_safe 口径——非 target 参数) | -| 增益当量下界 | 最低档安全格增益换算值 | 战斗结算的效果对照表 | -| 敌方增益当量上界 | 踩雷惩罚的换算上限(原伏击惩罚上限表随 2026-09-20 八型批伏击退役,对账模型归 难度曲线与Boss 调参批重立) | [难度曲线与Boss](../冒险循环/难度曲线与Boss.md) | -| 清图奖励当量 | 清图奖励的换算值 | [地图战斗资源](../战斗循环/地图战斗资源.md) | +| E_dig(u) | 单安全格期望收益当量(77 权重池加权,随敌方单位数 u 缩放 side-wide 项) | 战斗结算的效果对照表 + `tools/clear_dominance_audit.py` | +| V_mine(u) | 单雷期望惩罚当量(九型负向字典同池加权) | 同上 | +| ρ̂ | 雷率:名义 0.25 与实测幸存雷率(10×10 ≈ 0.129 / 12×12 ≈ 0.157)双口径并报,主表用名义(保守) | board_gen.tres + board_stat_probe 读数 | +| q | 玩家对目标格为雷的置信 | 玩家侧行为量(可推理格 q ∈ {0,1}) | +| β 带 | V_mine/E_dig 判读带 [1.2, 2.5] | registry clause3 重立条(本批登记) | +| δ | 旗溢价系数 0.25 provisional | settlement.tres flag_hit_premium = 125 | ### 配置纪律 @@ -234,3 +269,4 @@ | v0.5 | 2026-09-20 | **格面资源八型批同步(用户拍板——与敌人系统 / 战斗结算 / 地图战斗资源 / registry / 切片代码同批)**:① F1 条款 3 改写——原"敌方伏击暴露不等式"随伏击机制退役作废,惩罚当量对账模型归难度曲线与Boss 调参批重立;② 新增「下轮行动点修正」节——action 型格面资源经 queue_ap_delta 排队、下一轮开始兑现(基线 ap_per_round + 净值、下限 0、兑现后清零),跨轮携带量口径改写(RAP 唯一显式携带资源 + 一次性修正队列);③ 节拍不变式(满停一轮 = 恰好一刷)补扰动注记 | | v0.6 | 2026-10-01 | **失同步清偿 + 跨冒险行动点加成轴节(迭代 10 奖励重构批——与冒险结构 / registry 同批)**:①失同步欠账清偿——ap_per_round 真实配置 = **8**(action_economy.tres,Package B 2026-09-22 批 6→8 回调,表内批注在案);v0.2 批 8→6 系最后一次文档面记录,此后配置面单独回调未回写本文,本批补记(rap_refresh_cost 与 ap_per_round 的「满预算停手 = 恰好一刷」节拍耦合以现行 8/8 维持);②新增「跨冒险行动点加成轴」节——统一冒险加算区扩第四轴(行动点),经战斗开始入参覆盖值通道、只在每场战斗开轮首轮兑现一次;价值锚 = 冒险表 bonus_ap_flat / bonus_cap_ap(迭代 10 三选一 AP 件,全冒险 2 次上限),调参表补跨表行 | | v0.7 | 2026-10-03 | **两 AP 件兑现通道注记(迭代 11 第①批同调实施批——任务书 §十连带)**:同调目录两 AP 件兑现通道落位——①工兵晨令(被动·限时)=战斗开始首轮 queue_ap_delta 入队 + 轮始段续队(前 effective_rounds 轮每轮 +1,表值化 P4 甲),复用「跨冒险行动点加成轴」同族排队通道;②掘进蓄能(主动·充能)=grant_ap 当轮加量(同挖掘期 ap_grant 通道),受理闸=战斗域安全开格积点(charge_n 格/点);账本零新机制(queue_ap_delta/grant_ap 两既有原语),充能扣减经共享账本(attune_charges)同引用直改 | +| v0.8 | 2026-10-05 | **挖掘风险不等式判式换代(迭代14②号卡 T3——与战斗结算/难度曲线与Boss/registry 同批)**:F1 条款3 重立——三层口径并行立(条款2 标中旗锚不动/条款3 聚合健康式「(1−ρ̂)E_dig−ρ̂V_mine≥0」只留下限 0/旗边际引理+条件二旗溢价「E[标中兑付]≥(1+δ)·E_dig」δ=0.25 provisional 形态 a 兑付溢价);条件二落文按登记已知破·T4 机制闭合;β 比值带 [1.2,2.5] 判读入文(u=3 登记态微破下限);η 降格读数入文(分母=全部插旗数);推导节变量表换代(E_dig/V_mine/ρ̂/β/δ 五锚);旧界形式与「惩罚当量对账模型归调参批重立」挂账句全部清偿 | diff --git a/design/registry/entities.yaml b/design/registry/entities.yaml index 30eddaf3..b4e1e32e 100644 --- a/design/registry/entities.yaml +++ b/design/registry/entities.yaml @@ -384,9 +384,20 @@ entities: variables: [cap, m_amb, unit_count, k_r, L_r](2026-09-20 八型批:m_amb/k_r/L_r 随伏击退役悬空,条目待曲线调参批重立后重登记) output_range: 单结算结构上界 ∈ [0, unit_count×min(AP, cap)×m_amb](式随 2026-09-20 八型批伏击退役作废、留档历史)(满配语境 3×min(8,4)×3=36;cap≥8 时真可达上界 72 而非 144;默认行值 unit_count=1 下 12) account_input: 对账输入 = 棋盘生成 actuals p10(F4 报告 C)非 target 参数(棋盘生成 登记口径);闭合 owner = 战斗结算 单一签字人;左臂(安全格 buff 当量)载体 = **地图战斗资源 F6 当量供给**(2026-09-09 地图战斗资源 定稿——部分缓解非闭合:窗口使用次数是战斗轨迹量,敌人系统 OQ3 扩项保持;2026-09-11 起基础攻击恒在为左臂提供恒定伤害基底,原"当前内容态结构性不可通关"事实退役——敌人系统 Overview 2026-09-11 改写) - direction_precheck: cap=4 下右臂 ≈7.7;左臂按条款 2 最低档锚(+50pp)计 = 0.36×50 = 18——裕度 ≈2.3×(1:1 百分点代理,provisional;2026-09-09 敌人系统 full 评审更正原 4.7×——该值按 +100 两层叠满取值、与"最低档下界"语言矛盾);量级注记:atk=4 时 attack 拍 L≥2 伏击分量过半(heavy 拍过半点后移、按拍别读取;常态支配修正入口 = 难度曲线与Boss atk 曲线 / 地图战斗资源·战斗结算 m_amb 锚,敌人系统 权限外)。**参照迁移注记(2026-09-09 地图战斗资源 评审;2026-09-11 回迁)**:左臂参照对象曾迁 defense_up 当量(地图战斗资源 F4)——**2026-09-11 用户裁决"基础攻击恒存在"后 attack_up 复活,参照对象回迁 attack_up 当量**(上式 +50pp 系 attack_up 口径,迁移期结束;复算义务随 战斗结算 对照表落定,见 status_effect.anchor_warning 回迁注记)。**闭合回执(2026-09-10 战斗结算 GDD F4——条款③闭合完成;同日评审批双口径更正)**:统一 HP 当量 + 边际配对重算 → 默认 unit_count=1 下 L1 裕度 ≈2.0× / L2 ≈2.6× **通过**(锚行口径;**跨行期望口径 ≈1.2×/1.5× 同向通过——双口径登记,难度曲线与Boss 不得以锚行读数放行 unit_count=2**);**满配语境(unit_count=3)最坏盲点破线 → 难度曲线与Boss 调参约束登记**(unit_count 轴 + 密度×可推理率轴——unit_count>1 行须降密度或降 m_amb);本条 pp 代理预检(2.3×)退役为历史记录(量纲混用 + 右臂聚合上界与单格决策单位错配)。**重算回执(2026-09-14 战斗结算 重算批——按现行三输入重推:duration=1 × m_d=−30 × 难度曲线与Boss v3 曲线 d0.25/t0.88)**:L1 裕度 ≈0.48× / L2 ≈0.47× **破线**(锚行口径;跨行期望口径 E_dig=4.5 → ≈0.60×/0.58× 同向破线——双口径登记);满配语境(unit_count=3)≈0.16× 深度破线;**破线升格为默认曲线级约束——V_safe 侧杠杆(m_d/duration/D_ref)× 板形侧杠杆(密度×ι 联动对)× m_amb 全处"禁独立调参"联动网络(m_w↔D_ref↔m_d↔duration_d),修正方向须 难度曲线与Boss 提案 + 战斗结算 闭合对账共裁**;上段 ≈2.0×/2.6× 读数系 duration=2 × m_d=−50 × v1 曲线旧值链产物,退役为历史记录;actuals p10 交付后强制重跑(战斗结算 AC-39;ι 判式面保守代理 = 行 target 代,总暴露面无效) + direction_precheck: cap=4 下右臂 ≈7.7;左臂按条款 2 最低档锚(+50pp)计 = 0.36×50 = 18——裕度 ≈2.3×(1:1 百分点代理,provisional;2026-09-09 敌人系统 full 评审更正原 4.7×——该值按 +100 两层叠满取值、与"最低档下界"语言矛盾);量级注记:atk=4 时 attack 拍 L≥2 伏击分量过半(heavy 拍过半点后移、按拍别读取;常态支配修正入口 = 难度曲线与Boss atk 曲线 / 地图战斗资源·战斗结算 m_amb 锚,敌人系统 权限外)。**参照迁移注记(2026-09-09 地图战斗资源 评审;2026-09-11 回迁)**:左臂参照对象曾迁 defense_up 当量(地图战斗资源 F4)——**2026-09-11 用户裁决"基础攻击恒存在"后 attack_up 复活,参照对象回迁 attack_up 当量**(上式 +50pp 系 attack_up 口径,迁移期结束;复算义务随 战斗结算 对照表落定,见 status_effect.anchor_warning 回迁注记)。**闭合回执(2026-09-10 战斗结算 GDD F4——条款③闭合完成;同日评审批双口径更正)**:统一 HP 当量 + 边际配对重算 → 默认 unit_count=1 下 L1 裕度 ≈2.0× / L2 ≈2.6× **通过**(锚行口径;**跨行期望口径 ≈1.2×/1.5× 同向通过——双口径登记,难度曲线与Boss 不得以锚行读数放行 unit_count=2**);**满配语境(unit_count=3)最坏盲点破线 → 难度曲线与Boss 调参约束登记**(unit_count 轴 + 密度×可推理率轴——unit_count>1 行须降密度或降 m_amb);本条 pp 代理预检(2.3×)退役为历史记录(量纲混用 + 右臂聚合上界与单格决策单位错配)。**重算回执(2026-09-14 战斗结算 重算批——按现行三输入重推:duration=1 × m_d=−30 × 难度曲线与Boss v3 曲线 d0.25/t0.88)**:L1 裕度 ≈0.48× / L2 ≈0.47× **破线**(锚行口径;跨行期望口径 E_dig=4.5 → ≈0.60×/0.58× 同向破线——双口径登记);满配语境(unit_count=3)≈0.16× 深度破线;**破线升格为默认曲线级约束——V_safe 侧杠杆(m_d/duration/D_ref)× 板形侧杠杆(密度×ι 联动对)× m_amb 全处"禁独立调参"联动网络(m_w↔D_ref↔m_d↔duration_d),修正方向须 难度曲线与Boss 提案 + 战斗结算 闭合对账共裁**;上段 ≈2.0×/2.6× 读数系 duration=2 × m_d=−50 × v1 曲线旧值链产物,退役为历史记录;actuals p10 交付后强制重跑(战斗结算 AC-39;ι 判式面保守代理 = 行 target 代,总暴露面无效)。**换代收口(2026-10-05 判式换代批——clause3_inequality 重立承接)**:本条伏击口径悬空变量(m_amb/k_r/L_r)的重立义务由 clause3_inequality 承接销项;本条 unit_count 满配语境约束(unit_count>1 行须降密度或降 m_amb)由 β 带逐 u 检算(u=1/2/3)接替看护,留档历史 referenced_by: [战斗结算] + - name: clause3_inequality + type: formula + owner: design/gdd/systems/排雷循环/行动经济.md + attributes: + rule: (2026-10-05 判式换代批重立——迭代14②号卡 T3,2026-10-04 用户两轮拍板+grill 七问全裁,设计权威=design/research/方案-挖掘风险不等式修订-2026-10-04.md §九)行动经济 F1 条款3 三层口径并行立——**条款3 聚合健康式**:(1−ρ̂)·E_dig(u) − ρ̂·V_mine(u) ≥ 0 对全部参考板形 × u ∈ {1,2,3}(下限 0 唯一保留,上限 U_band 删〔grill Q3〕由 β_hi 独家承载);**旗边际引理**(同池结构定理):EV_flag−EV_blind = (q+ρ̂−1)(E_dig+V_mine),旗优于盲挖 ⇔ q > 1−ρ̂,与全部当量表值无关;旗对已知安全格边际恒 ≤ 0(L2 结构破线层);**条件二旗溢价式**:E[标中兑付] ≥ (1+δ)·E_dig(u),δ=0.25 provisional(形态 a 兑付溢价 settlement.flag_hit_premium=125 percent 域;形态 b 专属池不启——雷安同池冻结);**β 比值带**:β(u)=V_mine(u)÷E_dig(u) ∈ [1.2, 2.5](2026-10-04 用户裁 P4);**η 读数**(非判式):η=flag_hit÷flag_placed,分母=全部插旗数〔grill Q5〕,标空率次读数——承载=MC runsum 五字段(flag_placed/flag_hit/flag_miss/flag_hit_gain/flag_miss_penalty,2026-10-05 T1 落码) + mechanism_carrier: settlement.tres flag_hit_premium = 125(percent 域 provisional,2026-10-05 T4 落地)——标中旗正向兑付按同型正向 ×(1+δ):flat 行乘 power、percent 行乘幅度(apply_effect magnitude_override 通道)、gp 行乘 power;取整=四舍五入(与伤害管线 round_direction=floor **分域**——溢价系兑付构造非伤害管线取整,登记注记);标空/挖格/清图兑付不乘溢价;DamageController 零改、雷安同池冻结不动、直伤雷 6/8/8 与 p_perfect 不动(契约红线) + prechange_snapshot: **改前静态锚(2026-10-05 T0,audit 工具常量刷新后跑出,改后判读的基准)**——池 77 权重(attack14/defense11/blast16/heal4/weaken8/pierce8/magic8/action6/gp2,clear_blast 不入格池):E_dig(1/2/3)=1.442/1.948/2.455,V_mine(1/2/3)=2.460/2.670/2.881(九型负向字典口径乙=唯一口径,伏击口径甲退役删除),β=1.71/1.37/1.17(u=1/2 带内、u=3 微破下限=登记态点名不强制回滚),盲挖净期望(名义ρ)=+0.47/+0.79/+1.12 恒正(条款3 聚合健康式现行即绿),逐型净期望破线残留=pierce −1.25 / magic −0.50 / heal 0 踩线(名义ρ;实测ρ̂ 10×10 下 pierce −0.16 唯一实测也破、magic/heal 转正),条件二改前恒假(E[标中]=E_dig < 1.25·E_dig——登记已知破,T4 机制闭合);改前行为锚=MC n400 种子窗 76000 系+verifier 双窗(T2,读数随批出口报告) + p7_corrections: **P7 口径修正注记(2026-10-04 用户裁随批登记)**:①d70f6c3 §二(迭代8 卡⑧全量复算)池 76 系历史混计——clear_blast(清图槽对象)不该入格池,现行口径=77;②同读数直伤雷 4/5/5 已时效化——2026-10-01 数值修复批 6/8/8 + 2026-10-03 带换代转正,现行单雷期望直伤 ≈1.97 HP(×2.2);heal 权重 2→4(Package B 第 2 轮)同链时效 + rerun_obligation: 难度曲线与Boss 每次调参逐 u 检算落 β 带(常设重跑入口 tools/clear_dominance_audit.py,2026-10-05 已刷新=池77/直伤6-8-8/heal2/清图24-40/AP8/off_guard −1/伏击退役/β+逐型输出);直伤雷/ρ 提案逐档检算落带(grill Q3 裁);δ 敏感度判据 ≥5pp(grill Q4),行为无效 δ 仍保留+登记「行为无感」 + referenced_by: [行动经济, 战斗结算, 难度曲线与Boss] + - name: clause5_dominance type: formula owner: design/gdd/systems/战斗循环/战斗结算.md diff --git a/game/smoke/adventure_monte_carlo.gd b/game/smoke/adventure_monte_carlo.gd index fbc69165..c0ec6cc1 100644 --- a/game/smoke/adventure_monte_carlo.gd +++ b/game/smoke/adventure_monte_carlo.gd @@ -119,6 +119,12 @@ func _initialize() -> void: "mine_dmg": int(st.get("mine_dmg", 0)), "taken": int(st["hero_dmg"]) + int(st.get("mine_dmg", 0)), "refreshes": int(st["refreshes"]), "choices": int(st["choices"]), + # 旗经济五字段(迭代14②判式换代批 T1——η=flag_hit÷flag_placed、标空率=flag_miss÷flag_placed + # 派生归分析侧;gain/penalty=结算流水行值合计(原始行值口径,等价换算归判读侧——登记)) + "flag_placed": int(st.get("flag_placed", 0)), "flag_hit": int(st.get("flag_hit", 0)), + "flag_miss": int(st.get("flag_miss", 0)), + "flag_hit_gain": int(st.get("flag_hit_gain", 0)), + "flag_miss_penalty": int(st.get("flag_miss_penalty", 0)), "relics": st.get("relics", []), "visited_count": (st["visited_ids"] as Array).size(), "encounter_max_hp_seq": st["encounter_max_hp_seq"], diff --git a/game/smoke/level_autoplay.gd b/game/smoke/level_autoplay.gd index d80d25eb..f22898ad 100644 --- a/game/smoke/level_autoplay.gd +++ b/game/smoke/level_autoplay.gd @@ -57,6 +57,9 @@ static func run_level(db, seed_val: int, level_index: int, atk_pct: int, hp_pct: "boss_depth": -1, "hp_at_boss": -1, "rows": [], "timeout": false, "log_path": "", "policy": policy, "refreshes": 0, "mine_hits": 0, "mine_dmg": 0, "visited_ids": [], "choices": 0, "last_battle_enemies": [], + # 旗经济五字段(迭代14②判式换代批 T1——runsum 读数面;聚合自结算流水 source_class, + # 零新随机源零核心改动;η=flag_hit÷flag_placed 与标空率派生归分析侧) + "flag_placed": 0, "flag_hit": 0, "flag_miss": 0, "flag_hit_gain": 0, "flag_miss_penalty": 0, "prng": _policy_rng(seed_val), "mine_slips": 0, "skip_digs": 0, "shop_buys": 0, } runner.step_row.connect(_on_step_row.bind(runner, st, collect_rows)) @@ -136,6 +139,8 @@ static func run_adventure(db, seed_val: int, atk_pct: int, hp_pct: int, collect_ "summary": {}, "wallet_events": [], "encounter_max_hp_seq": [], "reward_events": [], "relic_mode": String(relic.get("mode", "off")), # 流派件分层开关(迭代 12 T7——off=316-f 通用竞争/on=成型画像优先捕捞 relic) "shop_gp_seq": [], # 商店房到达余额序(逐关 1 次——GP 跨关延续验收取数面) + # 旗经济五字段(迭代14②判式换代批 T1——与 run_level 同口径,见彼处注释) + "flag_placed": 0, "flag_hit": 0, "flag_miss": 0, "flag_hit_gain": 0, "flag_miss_penalty": 0, "prng": _policy_rng(seed_val), "mine_slips": 0, "skip_digs": 0, "shop_buys": 0, "adv": true, # v3 档位行为开关(选路评分/失误注入/商店购买只挂冒险测量面——单关夹具保持旧语义零扰动) @@ -435,6 +440,24 @@ static func _on_step_row(row: Dictionary, _runner, st: Dictionary, collect_rows: _note_enemy(String(row.get("text", "")), st) # 施放行(毒爆挂毒等——伤害行可能缺席的死亡遭遇仍可归因) if row.source_class == "mine_hit": st.mine_hits += 1 # 踩雷证据行(负向兑付——完美档断言恒 0;盲挖惩罚链埋点) + # 旗经济聚合(迭代14②判式换代批 T1——自结算流水聚合,零新随机源): + # ⚠ 行侧判据考证实录:结算段对存续增益实例每轮复发行 effect 行且复用实例 source_class + #(battle_orchestrator 状态列举行)——source_class=flag_hit 的行 ≠ 标中事件。事件行唯一判据 + # = 授予行专带 highlight="flag_hit"(实测 87 行 == 受理插旗 87 动作,1:1 精确); + # 雷区图谱追加分grant 无高光,以 display_name 后缀补捕(计入事件与合计——同旗第二份兑付)。 + # 满层拒收行(reward_ineffective)零兑付不入。标空事件=归因行(type=flag_miss 每格恰一次); + # 标空惩罚合计只入一次性兑付行(flat 直伤 damage/heal + gp_loss escrow 行)——sapped 授予行 + # 与其状态复发行行侧不可区分不入合计(登记注记,判读侧按事件数补算)。 + if row.source_class == "flag_hit" and row.type != "reward_ineffective": + if String(row.get("highlight", "")) == "flag_hit" \ + or String(row.get("display_name", "")).contains("雷区图谱"): + st.flag_hit += 1 + st.flag_hit_gain += int(row.value) + if row.type == "flag_miss": + st.flag_miss += 1 + elif row.source_class == "flag_miss" and (row.type == "damage" or row.type == "heal" \ + or String(row.get("effect_id", "")) == "gp_loss"): + st.flag_miss_penalty += int(row.value) if collect_rows: st.rows.append(row) @@ -525,6 +548,8 @@ static func _autoplay_battle(runner, settlement, st: Dictionary, logger) -> void if ok: if kind == "refresh": st.refreshes = int(st.refreshes) + 1 + elif kind == "flag": + st.flag_placed = int(st.get("flag_placed", 0)) + 1 # 插旗数(η 分母=全部插旗数——迭代14② Q5 裁决;失误注入转化旗不计数=转化后实为挖) rejects = 0 else: rejects += 1 diff --git a/tools/clear_dominance_audit.py b/tools/clear_dominance_audit.py index 876714bc..f0a55ceb 100644 --- a/tools/clear_dominance_audit.py +++ b/tools/clear_dominance_audit.py @@ -11,50 +11,60 @@ s_ref = D_ref;停手侧 RAP 机会收益按零计价(显式假设)。 本工具 2026-09-19 随对账重跑批建立,是难度曲线调参批的常设重跑入口: -所有输入可经命令行覆盖(--d-ref --c-clear --ap-r --iota --m-amb --u ...), +所有输入可经命令行覆盖(--d-ref --c-clear --ap-r --iota ...), 重跑时按当期 .tres 行值更新默认值即可,公式本体不动。 单雷代价 / 单格收益的当量换算严格走 战斗结算「效果档位对照表」单一口径: flat 类 E = 表值;percent 类 E = |层数×行值|÷100 × D_ref(每结算每层); AC 轴换算 = AC 点数 × 5pp(d20 线性)× D_ref(假设登记,见审计报告)。 -2026-09-19 起极性矩阵下踩雷惩罚按格型路由(不再固定伏击),故 V_mine 双口径: - 甲 = 注册模型连续口径 V_mine = unit_count × m_amb(m_amb = 伏击行 magnitude); - 乙 = 现行矩阵加权口径 V_mine = 负向字典按 67 权重池加权(主流读数)。 + +【2026-10-05 判式换代批口径(迭代14②号卡 T0)】 + - 池 67→77(补 action 6 / gp 2;clear_blast 系清图槽对象不入格池)。 + - 直伤雷负向三行 6/8/8(backlash/snare/recoil,2026-10-01 数值修复+10-03 转正); + 正向 pierce_strike/magic_bolt 维持 flat 2;heal_minor 2(Package B 第 2 轮)。 + - 清图槽 C_MIN/MAX 8/18→24/40(中点 32);AP_r 6→8(2026-09-16 压速批 8→6 后回摆)。 + - off_guard 换 ac 轴 −1(0.2u 模型:点数×5pp×D_ref=0.2 当量/每敌拍)。 + - 伏击历史口径(口径甲 u×m_amb / AMBUSH_MAG/STACKS)退役删除——伏击机制已退役, + V_mine 只保留现行矩阵加权口径(原口径乙升为主口径)。 + - V_mine 换现行九型负向字典(enrage/off_guard/警觉/backlash/sapped/snare/recoil/ + ap_drain/gp_lose——ap_drain 按 A6 flat 1、gp_lose 按 A5 代理 2 计)。 + - 新增 β 比值带判读与逐型净期望输出(方案-挖掘风险不等式修订-2026-10-04 §四/§九): + β(u)=V_mine/E_dig ∈ [1.2, 2.5];条件一 (1−ρ̂)E_dig−ρ̂V_mine ≥ 0(下限 0,上限归 β_hi); + 条件二 E[标中兑付] ≥ (1+δ)·E_dig(δ=1.25 provisional,兑付溢价形态 a)。 """ import argparse import math -# ============ 现行值链(2026-09-19 快照,出处见各注释;重跑批按当期 .tres 更新) ============ +# ============ 现行值链(2026-10-05 判式换代批快照,出处见各注释;重跑批按当期 .tres 更新) ============ D_REF = 4 # settlement.tres equivalence_ref_damage(2026-09-17 压缩批 12→4) P_PERFECT = 200 # settlement.tres(percent,÷100 = ×2 双份交付) -C_MIN, C_MAX = 8, 18 # reward.tres clear_blast power_min/max;期望口径 = 中点 13 -AP_R = 6 # action_economy.tres ap_per_round(2026-09-16 压速批 8→6) +C_MIN, C_MAX = 24, 40 # reward.tres clear_blast power_min/max(2026-10-01 数值修复批 8/18→24/40);期望口径 = 中点 32 +AP_R = 8 # action_economy.tres ap_per_round(2026-09-16 压速批 8→6 后回摆 8) DIG_COST = 1 # action_economy.tres dig_ap_cost IOTA = 0.88 # board_gen.tres inferability_target(判式 ι 代理) -# 效果行值(status_effects.tres,2026-09-19 快照) +# 效果行值(status_effects.tres,2026-10-05 快照) ATTACK_UP_PCT = 50 # 增伤 +50%,duration 1,hero 侧 AC_UP_POINT = 1 # 护甲强化 +1 AC,duration 1 WEAKEN_PCT = 65 # 削弱 −65%(有效拍 1:duration 2 先兑付后衰减) ENRAGE_PCT = 25 # 暴走 +25%,enemy 侧 side-wide SAPPED_PCT = 25 # 乏力 −25%,hero 侧 -# 【2026-09-20 八型批口径注记】伏击机制退役,blast 负向现况 = 警觉(敌方 AC +1,掷点折扣分布型惩罚)—— -# 本脚本的伏击暴露当量模型(AMBUSH_MAG/AMBUSH_STACKS)转为历史口径,仅用于旧读数复算; -# 新口径(掷点折扣期望建模)归曲线调参批重立后再改模型。 -AMBUSH_MAG = 1 # 历史口径:伏击 +1 flat/层(2026-09-17 压缩批 3→1) -AMBUSH_STACKS = 2 # reward.tres ambush_double stacks(每雷伏击层数) -OFF_GUARD_AC = 2 # 失衡 AC −2(2026-09-18 换装) +OFF_GUARD_AC = 1 # 失衡 AC −1(0.2u 模型:1 点 × 5pp × D_ref = 0.2 当量/每敌拍) +ALERT_EQUIV = 0.2 # 警觉(敌 AC+1×1拍):主角每拍恰 1 攻 × 1 拍寿命 ⇒ 0.2 当量,u 无关(假设 A4) -# 直伤/群伤 flat 值(reward.tres,2026-09-17 ÷3 后) +# 直伤/群伤 flat 值(reward.tres,2026-10-05 快照) SPARK_AOE = 1 # 爆裂粉尘(全体存活敌) -HEAL_MINOR = 1 # 急救敷料 -HEAL_BACKLASH = 1 # 反噬震荡(主角直伤) +HEAL_MINOR = 2 # 急救敷料(Package B 第 2 轮 1→2) +HEAL_BACKLASH = 6 # 反噬震荡(主角直伤,2026-10-01 4→6 / 10-03 转正) PIERCE_STRIKE = 2 # 穿刺弹(单目标克制直伤,必中全额) MAGIC_BOLT = 2 # 魔法矢(同上) -PIERCE_SNARE = 2 # 穿刺陷阱(主角直伤) -MAGIC_RECOIL = 2 # 魔法反噬(主角直伤) +PIERCE_SNARE = 8 # 穿刺陷阱(主角直伤,2026-10-01 5→8 / 10-03 转正) +MAGIC_RECOIL = 8 # 魔法反噬(主角直伤,2026-10-01 5→8 / 10-03 转正) +AP_UP = 1 # 行动点 +1(当量 = flat 表值 1,机会成本口径更高仅登记——假设 A6) +GP_COIN = 3 # 金币袋 +3GP(gp 当量 = flat power 代理——假设 A5,口径空白登记) +GP_LOSE = 2 # 破财 −2GP(同上代理) # 甲效矩阵(settlement.tres,加法核点数):基础值 + 点数,damage_floor=1 ARMOR_EFFECT = { # attack_type → {armor_type: 点数};切片 L1 全轻甲 / L2 除 Boss 全轻甲 @@ -63,14 +73,21 @@ ARMOR_EFFECT = { # attack_type → {armor_type: 点数};切片 L1 全轻 "normal": {"light": 0, "ward": 1, "heavy": -1}, } -# 格面资源池正向权重(reward.tres,2026-09-18 伤害道具批后,合计 67) +# 格面资源池正向权重(reward.tres,2026-10-05 快照,合计 77) # 类型 → (权重);负向行 weight=0 不参与摇号,类型分布 = 正向权重 -POOL_WEIGHTS = {"attack": 14, "defense": 11, "blast": 16, "heal": 2, - "weaken": 8, "pierce": 8, "magic": 8} +# clear_blast pool_tag=clear_default 系清图槽对象,不入格池(地图战斗资源.md §清图槽)。 +POOL_WEIGHTS = {"attack": 14, "defense": 11, "blast": 16, "heal": 4, + "weaken": 8, "pierce": 8, "magic": 8, "action": 6, "gp": 2} + +# β 比值带(2026-10-04 用户裁 P4:[1.2, 2.5];u=3 登记态 1.17 微破下限=点名不强制回滚) +BETA_LO, BETA_HI = 1.2, 2.5 +# δ 旗溢价(2026-10-04 用户裁 P3:形态 a 兑付溢价,δ=1.25 provisional ⇒ 兑付按同型正向 ×(1+δ)) +DELTA = 0.25 # 板形(|M| 幸存雷 / |S| 安全格)双口径 # 名义 = density×(W×H−9) 初布值(2026-09-14 重算批参考板形口径,连续性参照) # 实测 = smoke/board_stat_probe.gd 200 样本/行均值("先布后删"落地值,主流读数) +# (实测值沿用 2026-09-19 board_stat_probe 读数;板形行值此后未变,不强制复跑) BOARDS = { "L1前段·名义(10x10)": {"M": 23, "S": 77}, "L1后段·名义(12x12)": {"M": 34, "S": 110}, @@ -82,7 +99,7 @@ BOARDS = { def e_dig(u: float, d_ref: float, aoe_per_unit: bool = True) -> float: - """单安全格期望收益(当量),格子池 67 权重加权。 + """单安全格期望收益(当量),格子池 77 权重加权。 u = 敌方单位数。hero 侧单目标效果不随 u 缩放(主角每轮出手一次); enemy 侧 side-wide 效果(ac_up 承伤面 / spark_aoe 群伤 / weaken 全体减伤)随 u 缩放。 @@ -96,42 +113,58 @@ def e_dig(u: float, d_ref: float, aoe_per_unit: bool = True) -> float: weaken = w["weaken"] * WEAKEN_PCT / 100 * d_ref * u # 全体敌拍 ×0.35 pierce = w["pierce"] * max(1, PIERCE_STRIKE + ARMOR_EFFECT["pierce"]["light"]) # 轻甲口径 magic = w["magic"] * max(1, MAGIC_BOLT + ARMOR_EFFECT["magic"]["light"]) - return (attack + ac_up + spark + heal + weaken + pierce + magic) / total + action = w["action"] * AP_UP + gp = w["gp"] * GP_COIN + return (attack + ac_up + spark + heal + weaken + pierce + magic + action + gp) / total -def v_mine_a(u: float, m_amb: float) -> float: - """口径甲:注册模型连续口径 V_mine = unit_count × m_amb(registry 公式字面执行)。""" - return u * m_amb +def v_mine(u: float, d_ref: float) -> float: + """现行极性矩阵加权口径(九型负向字典)——踩雷兑付 = 该格类型负向行,按 77 权重池加权。 - -def v_mine_b(u: float, d_ref: float) -> float: - """口径乙:现行极性矩阵加权口径——踩雷兑付 = 该格类型负向行,按 67 权重池加权。 - - hero 侧固定(直伤三类 heal_backlash/snare/recoil + 乏力 sapped); - enemy 侧 side-wide(enrage 每敌拍 / off_guard 每敌拍命中上浮 / ambush_double 每敌拍 +2 flat)随 u 缩放。 + hero 侧固定(直伤三类 heal_backlash/snare/recoil + 乏力 sapped + ap_drain + gp_lose); + enemy 侧 side-wide(enrage 每敌拍 / off_guard 每敌拍命中上浮)随 u 缩放; + 警觉按 0.2 当量固定(假设 A4)。 """ w = POOL_WEIGHTS total = sum(w.values()) enrage = w["attack"] * ENRAGE_PCT / 100 * d_ref * u - off_guard = w["defense"] * OFF_GUARD_AC * 0.05 * d_ref * u # AC−2 → 每敌拍 +10pp 命中 + off_guard = w["defense"] * OFF_GUARD_AC * 0.05 * d_ref * u # AC−1 → 每敌拍 +5pp 命中 + alert = w["blast"] * ALERT_EQUIV backlash = w["heal"] * HEAL_BACKLASH - ambush = w["blast"] * AMBUSH_STACKS * AMBUSH_MAG * u sapped = w["weaken"] * SAPPED_PCT / 100 * d_ref # 主角下一拍 −25% snare = w["pierce"] * PIERCE_SNARE recoil = w["magic"] * MAGIC_RECOIL - return (enrage + off_guard + backlash + ambush + sapped + snare + recoil) / total + ap_drain = w["action"] * AP_UP + gp_lose = w["gp"] * GP_LOSE + return (enrage + off_guard + alert + backlash + sapped + snare + recoil + + ap_drain + gp_lose) / total + + +def per_type_table(u: float, d_ref: float) -> list: + """逐型 P_t/N_t 明细(当量),供条件净期望计算。返回 [(型, P_t, N_t)]。""" + return [ + ("attack", ATTACK_UP_PCT / 100 * d_ref, ENRAGE_PCT / 100 * d_ref * u), + ("defense", AC_UP_POINT * 0.05 * d_ref * u, OFF_GUARD_AC * 0.05 * d_ref * u), + ("blast", float(SPARK_AOE * u), ALERT_EQUIV), + ("heal", float(HEAL_MINOR), float(HEAL_BACKLASH)), + ("weaken", WEAKEN_PCT / 100 * d_ref * u, SAPPED_PCT / 100 * d_ref), + ("pierce", float(max(1, PIERCE_STRIKE + ARMOR_EFFECT["pierce"]["light"])), float(PIERCE_SNARE)), + ("magic", float(max(1, MAGIC_BOLT + ARMOR_EFFECT["magic"]["light"])), float(MAGIC_RECOIL)), + ("action", float(AP_UP), float(AP_UP)), + ("gp", float(GP_COIN), float(GP_LOSE)), + ] def audit_shape(name: str, m: float, s: float, u: float, c_clear: float, - d_ref: float, ap_r: int, iota: float, v_mine: float, - e_dig: float, dig_cost: int) -> dict: + d_ref: float, ap_r: int, iota: float, v_mine_v: float, + e_dig_v: float, dig_cost: int) -> dict: """单板形单语境全量计算,返回判式各腿与判定。""" n_s = (1 - iota) * s if n_s < 1: return {"name": name, "skip": True} e_mine = m * n_s / (n_s + 1) - r_res = n_s * e_dig - x_res = e_mine * v_mine + r_res = n_s * e_dig_v + x_res = e_mine * v_mine_v dr = math.ceil((n_s + e_mine * dig_cost) / ap_r) c_eff_normal = c_clear c_eff_perfect = c_clear * P_PERFECT / 100 @@ -148,14 +181,15 @@ def audit_shape(name: str, m: float, s: float, u: float, c_clear: float, def main() -> None: - ap = argparse.ArgumentParser(description="清图支配性(条款⑤)对账重算") + ap = argparse.ArgumentParser(description="清图支配性(条款⑤)对账重算 + 判式换代面板(条款3)") ap.add_argument("--d-ref", type=float, default=D_REF) ap.add_argument("--c-clear", type=float, default=None, - help="清图奖励当量 C(默认 = (C_MIN+C_MAX)/2 = 13;传 8 得保守地板口径)") + help="清图奖励当量 C(默认 = (C_MIN+C_MAX)/2 = 32;传 24 得保守地板口径)") ap.add_argument("--ap-r", type=int, default=AP_R) ap.add_argument("--iota", type=float, default=IOTA) - ap.add_argument("--m-amb", type=float, default=float(AMBUSH_MAG), - help="口径甲的伏击行 magnitude(默认 1;传 2 = ambush_double 双层口径)") + ap.add_argument("--rho-nominal", type=float, default=0.25, help="名义雷率(判式主口径)") + ap.add_argument("--rho-measured", type=float, default=0.129, help="实测幸存雷率(10×10 包络口径)") + ap.add_argument("--delta", type=float, default=DELTA, help="旗溢价系数 δ(兑付溢价形态 a)") ap.add_argument("--e-dig-discount", type=float, default=1.0, help="E_dig 实现率折减(legacy 敏感性口径传 0.6)") args = ap.parse_args() @@ -163,41 +197,67 @@ def main() -> None: print(f"现行值链快照:D_ref={args.d_ref:g} C={c_clear:g}(min {C_MIN}/max {C_MAX}) " f"AP_r={args.ap_r} ι={args.iota} p_perfect={P_PERFECT} RAP零价假设照旧") - print(f"E_dig(67权重池加权当量): u=1 {e_dig(1, args.d_ref):.3f} · u=2 {e_dig(2, args.d_ref):.3f} · " + print(f"E_dig(77权重池加权当量): u=1 {e_dig(1, args.d_ref):.3f} · u=2 {e_dig(2, args.d_ref):.3f} · " f"u=3 {e_dig(3, args.d_ref):.3f}(折减 ×{args.e_dig_discount:g} 后同乘)") - print(f"V_mine 口径甲(u×m_amb, m_amb={args.m_amb:g}): u=1 {v_mine_a(1, args.m_amb):.3f} · " - f"u=2 {v_mine_a(2, args.m_amb):.3f} · u=3 {v_mine_a(3, args.m_amb):.3f}") - print(f"V_mine 口径乙(极性矩阵加权): u=1 {v_mine_b(1, args.d_ref):.3f} · " - f"u=2 {v_mine_b(2, args.d_ref):.3f} · u=3 {v_mine_b(3, args.d_ref):.3f}") + print(f"V_mine(九型矩阵加权): u=1 {v_mine(1, args.d_ref):.3f} · " + f"u=2 {v_mine(2, args.d_ref):.3f} · u=3 {v_mine(3, args.d_ref):.3f}") + print() + print("### 条款3 判式换代面板(β 比值带 + 条件一聚合健康式 + 条件二旗溢价)") + print(f"β 带 = [{BETA_LO:g}, {BETA_HI:g}](2026-10-04 用户裁 P4) 兑付溢价 ×(1+δ) = ×{1 + args.delta:g}(形态 a)") + print("| u | E_dig | V_mine | β=V/E | 带判定 | 条件一 盲挖净期望(名义ρ) | 条件一 盲挖净期望(实测ρ̂) | 条件二(改前同池) |") + print("|---|---|---|---|---|---|---|---|") + for u in (1, 2, 3): + ed = e_dig(u, args.d_ref) + vm = v_mine(u, args.d_ref) + beta = vm / ed + verdict = "✓带内" if BETA_LO <= beta <= BETA_HI else ( + "✗破下限(登记态)" if beta < BETA_LO else "✗破上限") + blind_nom = (1 - args.rho_nominal) * ed - args.rho_nominal * vm + blind_meas = (1 - args.rho_measured) * ed - args.rho_measured * vm + # 条件二改前:雷安同池 ⇒ 标中兑付 ≡ E_dig(同型同字典),判式 E[标中] ≥ (1+δ)·E_dig 恒假 + cond2 = "✗已知破(登记态,T4 机制转绿)" + print(f"| {u} | {ed:.3f} | {vm:.3f} | {beta:.2f} | {verdict} | " + f"{blind_nom:+.2f} | {blind_meas:+.2f} | {cond2} |") + print() + print("### 逐型条件净期望 (1−ρ)P_t − ρN_t(当量/格,u=1,名义 ρ 与实测 ρ̂ 双列)") + print("| 型 | P_t | N_t | 净期望(名义ρ) | 净期望(实测ρ̂) | 判(名义) |") + print("|---|---|---|---|---|---|") + for t, p, n in per_type_table(1, args.d_ref): + net = (1 - args.rho_nominal) * p - args.rho_nominal * n + net_m = (1 - args.rho_measured) * p - args.rho_measured * n + verdict = "✓" if net > 1e-9 else ("踩线" if abs(net) <= 1e-9 else "✗破线") + print(f"| {t} | {p:g} | {n:g} | {net:+.2f} | {net_m:+.2f} | {verdict} |") + for u in (2, 3): + cells = " · ".join(f"{t}({(1 - args.rho_nominal) * p - args.rho_nominal * n:+.2f})" + for t, p, n in per_type_table(u, args.d_ref)) + print(f"u={u} 净期望: {cells}") print() - for vm_label, vm_fn in [("口径甲(注册模型 V_mine=u×m_amb)", lambda u: v_mine_a(u, args.m_amb)), - ("口径乙(现行矩阵加权 V_mine)", lambda u: v_mine_b(u, args.d_ref))]: - print(f"### 主判式 · {vm_label} · C={c_clear:g}") - print("| 板形 | u | n_s | E[踩雷] | R_res | X_res | Δr(代价) | Δ_clear 非完美 | Δ_clear 完美 | 判定 |") - print("|---|---|---|---|---|---|---|---|---|---|") - for bname, b in BOARDS.items(): - for u in (1, 2, 3): - ed = e_dig(u, args.d_ref) * args.e_dig_discount - r = audit_shape(bname, b["M"], b["S"], u, c_clear, args.d_ref, - args.ap_r, args.iota, vm_fn(u), ed, DIG_COST) - if r["skip"]: - continue - verdict = "✓" if r["d_perfect"] >= 0 and r["d_normal"] >= 0 else ( - "完美✓" if r["d_perfect"] >= 0 else "✗") - print(f"| {bname} | {u} | {r['n_s']:.2f} | {r['e_mine']:.2f} | {r['r_res']:.1f} | " - f"{r['x_res']:.1f} | {r['dr']}({r['dr_cost']:.0f}) | {r['d_normal']:+.1f} | " - f"{r['d_perfect']:+.1f} | {verdict} |") - print() + print(f"### 主判式(条款⑤)· 九型矩阵加权 V_mine · C={c_clear:g}") + print("| 板形 | u | n_s | E[踩雷] | R_res | X_res | Δr(代价) | Δ_clear 非完美 | Δ_clear 完美 | 判定 |") + print("|---|---|---|---|---|---|---|---|---|---|") + for bname, b in BOARDS.items(): + for u in (1, 2, 3): + ed = e_dig(u, args.d_ref) * args.e_dig_discount + r = audit_shape(bname, b["M"], b["S"], u, c_clear, args.d_ref, + args.ap_r, args.iota, v_mine(u, args.d_ref), ed, DIG_COST) + if r["skip"]: + continue + verdict = "✓" if r["d_perfect"] >= 0 and r["d_normal"] >= 0 else ( + "完美✓" if r["d_perfect"] >= 0 else "✗") + print(f"| {bname} | {u} | {r['n_s']:.2f} | {r['e_mine']:.2f} | {r['r_res']:.1f} | " + f"{r['x_res']:.1f} | {r['dr']}({r['dr_cost']:.0f}) | {r['d_normal']:+.1f} | " + f"{r['d_perfect']:+.1f} | {verdict} |") + print() - print("### 保守地板(C_eff(min)=C_MIN)需求与缺口 · 口径乙") + print("### 保守地板(C_eff(min)=C_MIN)需求与缺口") print("| 板形 | u | 地板需求 X_res+Δr×s_ref | 缺口(对 min) | 缺口(对完美 ×2) |") print("|---|---|---|---|---|") for bname, b in BOARDS.items(): for u in (1, 3): ed = e_dig(u, args.d_ref) * args.e_dig_discount r = audit_shape(bname, b["M"], b["S"], u, float(C_MIN), args.d_ref, - args.ap_r, args.iota, v_mine_b(u, args.d_ref), ed, DIG_COST) + args.ap_r, args.iota, v_mine(u, args.d_ref), ed, DIG_COST) if r["skip"]: continue print(f"| {bname} | {u} | {r['floor_req']:.1f} | +{r['gap_normal']:.1f} | +{r['gap_perfect']:.1f} |")