审计补差(迭代47): 独立验收审计报告落档+缺漏处置——V5退出接线断言落码+尾缀覆盖9处+V7守卫+反哺点#12订正;处置后结论=通过

- 审计报告(未参与实现子代理): 对照表42行全查(✅33/⚠️8/❌1)+判据绑定面四项全过+削弱授权6件在案未授权零+直查例外5处+自跑六条全绿;总结论=不通过(限项)缺漏1+轻微1
- 缺漏1处置: 卡⑤V5退出项静态接线断言落码(ui_struct:quit_requested连接表目标=_on_esc_quit+调用链_on_esc_quit→_on_quit→_quit_game源扫描)——审计处方最窄单元
- 缺漏2处置: 尾缀覆盖9处(V4购买出账/持久+V6图鉴锁文+V7显式二次确认断言screen_flow回退段+B1大门confirmed+B2 HUD+B3返回/设置——forge_workbench部分按审计处方记豁免:断言零改申报约束)
- 记档处置: V7长度非空守卫一行;反哺点#12订正(CAMP_HEADER_BAND消费面仅剩keystone_badge工厂——审计记档2);实现报告§4 B1行补_secondary_btn直查申报;V9扫面注记(直接子层)
- 孤跑复验: ui_struct/screen_flow 双绿(含新增V5断言与V7守卫)
- 合回前置余项: shot_checker A/B裁决(用户)→--code闸重跑追绿→主区合回
This commit is contained in:
DKChan committed 2026-11-01 19:22:30 +08:00
1 parent 65b2a57449
commit c538536265
6 files changed
+164 -13

No files matched your search

+13
View File
@@ -130,6 +130,19 @@ func _ready() -> void:
var esc_anim := _count_animplayers(main.ui.modals.camp.esc_overlay)
if esc_anim != 0:
problems.append("[esc] 浮窗子树 AnimationPlayer 非零(契约 6 零动效)〔ESC批 V7〕")
var esc_src := FileAccess.get_file_as_string("res://presentation/views/camp_esc_overlay.gd") + FileAccess.get_file_as_string("res://presentation/main_esc_flow.gd")
if esc_src.is_empty():
problems.append("[esc] 零动效扫描面为空(源文件读失败——非空前置失守)〔ESC批 V7〕")
# 退出项接线断言(卡⑤ V5——绑信号连接与调用链;headless 不可真退=静态判据+观测面局限申报)
var quit_wired := false
for c in main.ui.modals.camp.esc_overlay.quit_requested.get_connections():
if c.callable.get_method() == "_on_esc_quit":
quit_wired = true
if not quit_wired:
problems.append("[esc] 退出钮接线断链(quit_requested 连接目标≠_on_esc_quit)〔ESC批 V5〕")
var quit_chain := FileAccess.get_file_as_string("res://presentation/main.gd") + FileAccess.get_file_as_string("res://presentation/main_esc_flow.gd")
if not quit_chain.contains("MainEscFlow._on_quit(self)") or not quit_chain.contains("root._quit_game()"):
problems.append("[esc] 退出调用链断裂(_on_esc_quit→_on_quit→_quit_game)〔ESC批 V5〕")
if main.ui.screens.debug_badge.visible:
problems.append("[esc] 浮窗开态 debug_badge 可见(发布态恒隐——float 类不注册 ModalStack 应零波及)〔ESC批 V8〕")
push_esc.call()