fix: 首跑错误批次(Godot 4.7.2 引擎实证修复 R1-R14)

本机首次具备引擎自验证能力后的首跑修复。四条命令 + 主场景 180 帧全绿:
- --import exit=0(漂移门 git diff data/build 空)
- --validate-only exit=0 RESULT: PASS
- test_runner exit=0 PASS(584 检查,8/8 用例)
- sim_main exit=0(报告落 tests/sim_reports/report-2026-10-20.json)
- 主场景 --quit-after 180 exit=0 零 ERROR/WARNING(F5 可玩)

预定位错误(team-lead 清单):
- R1 economy_state.gd:596 enthone_ready -> enthrone_ready(单点故障连锁)
- R2 hud_root.gd:142,160 HorizontalAlignment.LEFT -> HORIZONTAL_ALIGNMENT_LEFT
- R3 boss_arena.gd 补 var _pending_hall_index := -1
- R4 hall_band_world.gd:95 删 "_ = ext"(非法语句;--check-only 定位)
- R5 sheet_importer._type_ok 补 object->Dictionary / array->Array(9 条假违规)
- R6 game_state.gd econ==null 防护(防 autoload 崩每帧刷错打满管道挂死)

引擎新暴露错误:
- R7 prestige_model floor() Variant 推断(4.7.2 按错误)连锁编译失败
- R8 gates.gd var pass 保留字;R9 %g/%.*f 格式符 ×6 处
- R10 greedy.gd Dictionary.get() 推断;R11 probe_p1 条件表达式推断
- R12 测试用例 data 参数统一标 BalanceData(无类型参数成员调用返 Variant)
- R13 boss_battle 用例 Dictionary 下标运算显式 float 化
- R14 band_world_root.compute_ranges 返回 Array[Vector2](类型化数组不隐式转换)

测试侧数值修正(根因已核实,实现符合设计):
- gen3 可购断言 merit 1000->2000(800 文书 + 1200 首购)
- 开场伤害断言改"循环至 ACTIVE 即停"(INTRO 结束 tick 不计军列伤)
- 容量断言预算 30->34s(战斗真实给 intro 3s + active 30s)

工程加固:
- EconomyState 红线守卫首次越线才报(sim 长跑日志 6.5MB->1KB)
- stage_world.gd stretch=false(SubViewport 手动尺寸驱动生效)

知识缺口登记:docs/engineering/2026-10-20-f-engine-first-run-notes.md
sim 首轮数据:主口径 11/14 过(#2/#3/#12/#13/#14 FAIL 待文策渊裁定)
This commit is contained in:
程基岩(engineering-lead) committed 2026-10-20 18:47:07 +08:00
1 parent cdec918a5b
commit c534e95458
146 files changed
+37229 -75

No files matched your search

+19
View File
@@ -0,0 +1,19 @@
[remap]
importer="csv_translation"
type="Translation"
uid="uid://cvj4bm1o2x1yj"
[deps]
files=["res://data/sheets/events.name.translation", "res://data/sheets/events.name.translation", "res://data/sheets/events.trigger.translation", "res://data/sheets/events.trigger.translation", "res://data/sheets/events.duration.translation", "res://data/sheets/events.type.translation", "res://data/sheets/events.p.translation", "res://data/sheets/events.p.translation", "res://data/sheets/events.p.translation", "res://data/sheets/events.p.translation", "res://data/sheets/events.p.translation", "res://data/sheets/events.opt.translation", "res://data/sheets/events.opt.translation", "res://data/sheets/events.opt.translation", "res://data/sheets/events.opt.translation", "res://data/sheets/events.flavor.translation"]
source_file="res://data/sheets/events.csv"
dest_files=["res://data/sheets/events.name.translation", "res://data/sheets/events.name.translation", "res://data/sheets/events.trigger.translation", "res://data/sheets/events.trigger.translation", "res://data/sheets/events.duration.translation", "res://data/sheets/events.type.translation", "res://data/sheets/events.p.translation", "res://data/sheets/events.p.translation", "res://data/sheets/events.p.translation", "res://data/sheets/events.p.translation", "res://data/sheets/events.p.translation", "res://data/sheets/events.opt.translation", "res://data/sheets/events.opt.translation", "res://data/sheets/events.opt.translation", "res://data/sheets/events.opt.translation", "res://data/sheets/events.flavor.translation"]
[params]
compress=1
delimiter=0
unescape_keys=false
unescape_translations=true