docs(效果引擎无状态化·写卡补丁): grilling 审查轮事实修正——T3 补 :390 回灌调用删除(漏列即编译断裂面);T2/T1 补 run_ledger 头注与 level_runner :630 过期契约句清理面(「战斗侧只走 read/append 原语」随 ctx 直写字面失义);T5 counter_id_legal 修回提案 §3.3 字面(仅 meta_ 非法——「其余未知前缀非法」语法不可判定,残剩风险归 V10 扫描与评审)
This commit is contained in:
1 parent
f2bb587170
commit
f7be1f47c4
1 file changed
+4
-4
@@ -143,7 +143,7 @@
|
||||
|
||||
- [ ] 新建 `game/core/effect_context.gd`:`class_name EffectContext extends RefCounted`;四字段 `var round_bucket: Dictionary[Variant, Variant] = {}`(battle_bucket/level_bucket/adventure_bucket 同型);文件头注 ≤8 行两类白名单;跑一次编辑器扫描刷新全局类缓存(code-conventions §4.5)
|
||||
- [ ] `BattleOrchestrator` 增三公开成员:`fx_counters_round`/`fx_counters_battle`(`Dictionary[Variant, Variant]`)+`counters_ctx: EffectContext`;`_init` 内构造 ctx 并挂自有两桶引用
|
||||
- [ ] `LevelRunner` 增公开成员 `level_counters: Dictionary[Variant, Variant]`;`_start_battle` enc 增 `"level_counters": level_counters`(`"ledger"` 行 :471 后)
|
||||
- [ ] `LevelRunner` 增公开成员 `level_counters: Dictionary[Variant, Variant]`;`_start_battle` enc 增 `"level_counters": level_counters`(`"ledger"` 行 :471 后);:630 过期契约注释(「战斗侧只走账类原语,战末 export/开局 seed」)随批改写
|
||||
- [ ] `begin_battle` :373 后挂载:`counters_ctx.adventure_bucket = _ledger.adventure_counters`;`enc.get("level_counters")` 为 Dictionary 时 `counters_ctx.level_bucket = enc["level_counters"]`(缺省=调试/单场空桶,与 `_ledger` 缺省新账同式)
|
||||
- [ ] `set_fx` 三处扩参:`func set_fx(fx: EffectEngine, ctx: EffectContext) -> void`(action_economy.gd:48/damage_controller.gd:70/reward_economy.gd:23),三协同件各增 `_ctx` 成员;`battle_orchestrator.gd:280-282` 调用点同步
|
||||
- [ ] 删 `adventure_runner.gd:838-841` `_reset_tree_limited_counters` 与 `:845` 调用点(同批摘除冒烟 `:6125` 直呼——F2 面随 T7 断言同轮)
|
||||
@@ -159,7 +159,7 @@
|
||||
- [ ] `counter(ctx: EffectContext, counter_id: String) -> int`(读 `bucket_of(ctx, counter_id)`)
|
||||
- [ ] 新增 `static func bucket_of(ctx: EffectContext, counter_id: String) -> Dictionary[Variant, Variant]`:`round_`→round_bucket/`lvl_`→level_bucket/`adv_`→adventure_bucket/其余→battle_bucket(前缀规则唯一出处)
|
||||
- [ ] 新增静态 `counter_add`/`counter_spend`(签名见产出块;算术与阈值闸语义从现役 :228-242 逐字保留);删实例版两方法与 `counters_export`/`counters_seed`(:246-257)
|
||||
- [ ] `run_ledger.gd` 删 `counters_seed_snapshot`(:36-37)与 `counters_merge_export`(:40-45)
|
||||
- [ ] `run_ledger.gd` 删 `counters_seed_snapshot`(:36-37)与 `counters_merge_export`(:40-45);头注契约句「战斗侧只走 read/append 两族原语」同步改写(ctx 直写后字面失义、签名可见显式引用的立意由 EffectContext 承接)
|
||||
- [ ] `DO_KEYS` 删 `"domain"`/`"reset_at"`(:72-75)
|
||||
- [ ] 孤立验证:裸引擎 rig `EffectEngine.new(null)`+自建 ctx,合成一行 counter_add 行 dispatch→静态写口→counter 读回一致
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
- [ ] `damage_controller.gd`::78 dispatch 加 ctx;:345 读改 `EffectEngine.counter(_ctx, ...)`;:351/:464 写口静态化
|
||||
- [ ] `reward_economy.gd`::65 dispatch 加 ctx
|
||||
- [ ] `grant_segment.gd`::103/:205 读口 ctx 化(经 `oc.counters_ctx`);:327 `_apply_counter_hit` 内写口改静态(调用点 :66/:122/:156/:215/:264 零改动);:54/:61/:62 `combo_cap` 收集与实参删除
|
||||
- [ ] `battle_orchestrator.gd`::88 `_fx_emit` 加 `counters_ctx`;:714 受理闸改 `EffectEngine.counter_spend(counters_ctx, ...)`;:635-647 删 `dig_combo` 死读数+combo 加成分支+`_feat_yield_adjust` 第五参(§7.10.14,零行为差);:1122-1123 战末导出两行删除(:1118-1121 bonus_delta 汇入保留——那是 N6 留编排器的运行态,不是计数器)
|
||||
- [ ] `battle_orchestrator.gd`::88 `_fx_emit` 加 `counters_ctx`;:714 受理闸改 `EffectEngine.counter_spend(counters_ctx, ...)`;:390 回灌调用 `_fx.counters_seed(_ledger.counters_seed_snapshot())` 连同 :389 注释行删除;:635-647 删 `dig_combo` 死读数+combo 加成分支+`_feat_yield_adjust` 第五参(§7.10.14,零行为差);:1122-1123 战末导出两行删除(:1118-1121 bonus_delta 汇入保留——那是 N6 留编排器的运行态,不是计数器)
|
||||
- [ ] 孤立验证:单场编排 rig begin_battle→request_dig 一次→`run_ledger.adventure_counters` 立即可见写入(无战末时点依赖)
|
||||
|
||||
### T4 round 泛化+宿主清零确认(0.25d)
|
||||
@@ -186,7 +186,7 @@
|
||||
|
||||
**取用**:T2 的 `bucket_of` 前缀规则。**产出**:加载期前缀致命通道(V9)。
|
||||
|
||||
- [ ] 新增静态判定函数 `static func counter_id_legal(counter_id: String) -> bool`(名字锁定):无前缀=true(battle);`round_`/`lvl_`/`adv_` 前缀=true;其余带前缀形态(`meta_` 等)=false——前缀规则与 `bucket_of` 同源(bucket_of 解析为 battle 而 id 首段含 `_` 即非法,单一规则表)
|
||||
- [ ] 新增静态判定函数 `static func counter_id_legal(counter_id: String) -> bool`(名字锁定;规则=提案 §3.3 字面):`round_`/`lvl_`/`adv_` 前缀=true;`meta_` 前缀=false(引擎不接存档级);其余=true(无前缀落 battle——「其余未知前缀也非法」在语法上不可判定:一切 snake_case id 都以「词_」形态开头,禁自造封闭词表=第二事实源红线;自造新前缀静默落 battle 的残余风险由 V10 扫描与评审承担)
|
||||
- [ ] `validate_trigger_row` 增分支:`do` 含 `counter_id` 时校验,非法→errs 追加 `{"category": "enum", ...}` 违例
|
||||
- [ ] `_push_trigger` 增 assert:`do` 含 `counter_id` 时同规则 assert(树合成行路径,写错调试期致命;assert 消息以 `[效果引擎]` 前缀起头,供孤立验证扫描)
|
||||
- [ ] 孤立验证(V9 assert 侧):`--headless --script` 最小驱动 rebuild 带「counter_id 带非法前缀」的合成行——输出扫到 `[效果引擎]` assert 签名=拦截在位(debug 通道;assert 不改退出码,判据=输出签名扫描)
|
||||
|
||||
Reference in new issue
Block a user