fix(调试角标恢复批·用户特批直改): 调试入口写死行恢复——_debug_entry=true 常驻调试入口(main.gd:35/:138,2026-10-16 用户令常量门控+2026-11-09 用户特批恢复,无发布前清理义务);三处发布态恒隐断言翻回(system_test V2f boot 可见/click 设置面遮挡场景可见/tune ①角标真实信号路径+⑨对局段点亮+置灰判据回归);game/README 与 test-conventions §5-4 恒隐条文换代常驻口径;待办清单该条销账。基线换代触发原因(强制):menu_boot 右下角「调试」角标重现=预期面视觉变化,显式重制(重制前实测 changed=0.82% 容差内→复闸 0.00%),候选图经用户逐张审核确认(审核记录行已登记)。区内凭据: 系统测试 PASS(76 检查 0 失败)· click 探针 PASS(问题=0)· tune 探针 PASS(全链路含对局段)· 渲染闸 menu_boot 复闸 0.00%;新 worktree 导入缓存假红一起(--import 自举后复绿)

This commit is contained in:
DKChan committed 2026-11-09 06:11:30 +08:00
1 parent 6c35325030
commit 173be237c8
9 files changed
+21 -16

No files matched your search

+1 -1
View File
@@ -62,7 +62,7 @@
| 重放 | 同种子断点回放、改前改后配对 |
| 状态/计数器断言 | 条件解锁、限次、充能——置数据→走路径→断计数值 |
4. **调试注入两层(能力测试与流程体验两分法的落码面)**:自动化测试=测试代码直调核心层写口构造状态(直改数据表行/计数器/存档域,不经 UI、不走正常资源积累流程——冒烟现役做法);人工体验=DebugOverlay/DS_DEBUG 调试面,服务用户目检(发布态该面恒隐、无 UI 开启口,开发期临时启用=本地改 `_debug_entry` 缺省、不提交;能力测试不经 UI,本条口径不受影响)。清单条目的「怎么测」必须写到数据面粒度:改哪张表哪行、置哪个计数、调哪个核心写口。
4. **调试注入两层(能力测试与流程体验两分法的落码面)**:自动化测试=测试代码直调核心层写口构造状态(直改数据表行/计数器/存档域,不经 UI、不走正常资源积累流程——冒烟现役做法);人工体验=DebugOverlay 调试面,服务用户目检(2026-11-09 用户裁:调试入口常驻——「调试」角标恒亮、浮窗经角标真点开启;能力测试不经 UI,本条口径不受影响)。清单条目的「怎么测」必须写到数据面粒度:改哪张表哪行、置哪个计数、调哪个核心写口。
5. **换代批旧验证约束同生死**:删除旧数据行/旧实现代码的批次,必须同批摘除只验证旧实现的断言与护栏校验,由新断言替代——旧件断言残留=冒烟假绿来源;合并后冒烟全绿且全仓无旧件残留引用为证。
6. **违约通道类需求点必须落独立负面套件(2026-10-28 立)**:预期运行期违约/致命路径的需求点(handler 通道、fail-fast 分支)一律落独立负面套件并按 manifest 登记 `expect=1, negative=true`,禁落现役非负面套件——headless 下 assert 失败必产不可捕获的 SCRIPT ERROR,非负面套件的输出被错误扫描命中即假红(先例=reward_dangling_treasure/counter_prefix_fatal/extended_row_violation/run_time_fatal 四件)。
+1 -1
View File
@@ -12,7 +12,7 @@
1. 用 Godot 4.7.2 打开本目录(含 `project.godot` 的文件夹)
2. 按 F5 运行(主场景 `presentation/main.tscn`)
3. **主入口:`▶ 开始冒险(三关连探:地精洞窟 → 幽暗地域 → 灰矮人矿城)`**——一条命走完三关(生命/GP/加算区跨关同账、非末关的关卡完成发大奖励〔上限提升+血回满+钥石〕、任意战斗倒下冒险终、结算屏出冒险摘要五件事;选路停点可「放弃冒险」(同失败结算));首关节点链:战→战→赏→战→战→疗→王。唯一试玩入口 = 完整冒险——单关测试直入口(L2/L3)已退役(2026-09-23 用户拍板)
4. 调试浮窗(功能面:攻击/生命百分比加成〔模拟天赋树解锁〕+ 批量模拟〔输出关卡完成率/承伤期望/败北节点分布〕+ 两层调试入口)——发布态入口恒隐(调试角标不显示、浮窗无 UI 开启口;开发期临时启用改 `_debug_entry` 缺省本地不提交),浮窗体系整体退役属发布工程批
4. 调试浮窗(功能面:攻击/生命百分比加成〔模拟天赋树解锁〕+ 批量模拟〔输出关卡完成率/承伤期望/败北节点分布〕+ 两层调试入口)——调试入口常驻(右下角「调试」角标恒亮、真点开浮窗;2026-11-09 用户特批恢复批)
headless 冒烟(断言计数随断言面增减浮动,以当次跑测打印为准,含关卡线性推进/满配冒险成功/裸装败北/回放确定性):
+3 -2
View File
@@ -32,7 +32,7 @@ var meta: MetaProgressionCore:
get:
return get_node(AUTOLOAD_PATH_META)
var logger = null # 试玩日志器(JSONL 持久化 + 卡死诊断转储——呈现层组件)
var _debug_entry := false # 调试会话门控(缺省 false=发布态:角标恒隐、浮窗无 UI 开启口;沿革查 git log)
var _debug_entry := false # 调试会话门控(写死=true——恒开:角标常驻点亮、浮窗入口常在;_ready 赋值;2026-11-09 用户特批恢复批——常驻调试入口,无发布前清理义务)
var ui: UiRegistry # 界面注册面(ui_registry.gd——界面句柄/层序合同/模态编排句柄的单点宿主)
var _confirm_consumer := "" # 确认弹窗消费方状态量(契约 3 编排——open 前设、分派后清)
var _confirm_consumer_slot := 0 # 消费方附随槽号(delete_slot 消费方专用)
@@ -135,7 +135,8 @@ func _ready() -> void:
_build_ui()
begin_session(false) # 闲时会话(gp_ledger 等探针注入面自 _ready 起恒在——ui_probe 合成段时序)
ui.screens.start_overlay.visible = true
ui.screens.debug_badge.visible = _debug_entry # 浮层角标可见性须门控落定后赋值(构建/连接在 _build_ui);_debug_entry 缺省 false=发布态恒隐
_debug_entry = true # 调试入口门控写死=true(2026-10-16 用户令常量门控、2026-11-09 用户特批恢复——常驻调试入口,无发布前清理义务)
ui.screens.debug_badge.visible = _debug_entry # 浮层角标可见性须门控落定后赋值(构建/连接在 _build_ui)
# boot 菜单优先——启动不自动开浮窗(开始屏不得被调试面板盖住);
# 调试入口=UI 最顶层全局浮层角标(LAYER_CONTRACT 末位 float 类,任何 UI 不遮挡)
+5 -4
View File
@@ -563,10 +563,11 @@ func _ready() -> void:
_problems.append("音量滑杆未实时生效(master bus db %f ≠ %f)" % [AudioServer.get_bus_volume_db(master_idx), expect_db])
if absf(iso_s.volume_linear - 0.3) > 0.001:
_problems.append("音量未入 store(%f ≠ 0.3)" % iso_s.volume_linear)
# 调试入口断言(卡⑦ c4 发布态换代——角标恒隐;原「最顶层浮层不被遮挡」
# 回归语义随调试浮层发布态退役,申报见迭代 38 实现报告 §8.2)
if main.ui.screens.debug_badge == null or main.ui.screens.debug_badge.visible:
_problems.append("设置面开中调试角标可见(发布态恒隐失守)")
# 调试入口断言(全局浮层角标=UI 最顶层、任何 UI 不遮挡——本段设置面
# 开中正是遮挡场景:浮层角标此时仍应可见;点击开浮窗路径归 tune_probe;
# 2026-11-09 特批恢复批——发布态恒隐语义退役)
if main.ui.screens.debug_badge == null or not main.ui.screens.debug_badge.visible:
_problems.append("设置面开中调试浮层角标不可见(最顶层浮层失守——被遮挡)")
var settings_close: Button = ProbeUiUtil.find_button(main.ui.modals.menu.settings_overlay, "返回", "prefix")
if settings_close == null:
_problems.append("设置面返回按钮缺失")
+7 -5
View File
@@ -43,8 +43,8 @@ func _ready() -> void:
# ① 全局浮层角标开窗(调试入口=UI 最顶层浮层,任何 UI 不遮挡——
# main 直接子层、LAYER_CONTRACT 末位 float 类;boot 菜单优先不开浮窗,角标真实点击路径开窗;
# 悬浮于菜单之上——开始层不隐藏;树序新基准=登记册末位(确认弹窗之后=绘制序最上))
# 判据出处: design/engineering/test-conventions.md:49 调试面=DebugOverlay/DS_DEBUG——发布态恒隐无 UI 开启口、开发期临时启用(①开窗层级组)
main._show_debug_overlay() # 发布态角标恒隐(main.gd:138 _debug_entry 缺省 false)——角标信号路径已退役(:123 同款先例),开窗经组合根直调承载
# 判据出处: design/engineering/test-conventions.md §5-4 调试面=DebugOverlay 常驻目检面(2026-11-09 特批恢复批,①开窗层级组)
main.ui.screens.debug_badge.pressed.emit() # 角标真实信号路径 → 组合根 _on_debug_badge_pressed → C6 单口(2026-11-09 恢复)
await get_tree().process_frame
if not main.ui.modals.menu.debug_overlay.visible:
problems.append("调试浮层角标点击后浮窗未开(全局浮层入口失守)")
@@ -157,10 +157,12 @@ func _ready() -> void:
# 对局中批量模拟/两层调试两钮禁用;当局数据六项与只读访问器逐项一致;关闭钮真实路径收窗恢复
# 判据出处: design/engineering/test-conventions.md:49 调试面对局态:不锁棋盘输入/两钮禁用/当局数据只读一致(⑨组)
var dbg_badge: Button = main.ui.screens.debug_badge
if dbg_badge == null or dbg_badge.visible:
problems.append("对局中调试浮层角标非恒隐(发布态语义失守——卡⑦ 删写死行批)")
if dbg_badge == null or not dbg_badge.visible:
problems.append("对局中调试浮层角标未点亮(全局浮层最顶层失守)")
else:
main._show_debug_overlay() # 对局中开浮窗回归经直调承载(:61 既有直调先例——发布态角标恒隐,按钮信号路径退役)
if dbg_badge.disabled:
problems.append("战斗屏调试角标被置灰(T2 排除式判据失守)")
dbg_badge.pressed.emit() # 真实按钮信号路径 → 组合根 _on_debug_badge_pressed → C6 单口(2026-11-09 特批恢复批)
if not main.ui.modals.menu.debug_overlay.visible:
problems.append("对局中角标开浮窗失败(P2 甲对局中可达失守)")
if main.ui.flow.locks_input():
+1
View File
@@ -33,6 +33,7 @@
|---|---|---|---|
| 2026-11-08 | 棋盘三图+menu_boot+lmap 两 Shot+单基线合并(6 张) | DKChan | 确认 |
| 2026-11-08 | 屏态五锚+营地窗态五锚+浮层四锚(14 张补锚) | DKChan | 确认 |
| 2026-11-09 | menu_boot 换代(调试角标恢复批——右下角「调试」角标重现,预期面视觉变化显式重制) | DKChan | 确认 |
## 时效判定纪律
Binary file not shown.

Before

Width:  |  Height:  |  Size: 311 KiB

After

Width:  |  Height:  |  Size: 331 KiB

+2 -2
View File
@@ -206,8 +206,8 @@ func _smoke_boot_chain() -> void:
# 入口=开始屏右下角「调试」角标+对局中两屏角标)
check(not main.ui.modals.menu.debug_overlay.visible,
"V2f 调试浮窗 boot 不自动开(菜单优先)〔2026-10-16 用户令〕")
check(main.ui.screens.debug_badge != null and not main.ui.screens.debug_badge.visible,
"V2f 调试浮层角标发布态恒隐(2026-10-25 删写死行批)")
check(main.ui.screens.debug_badge != null and main.ui.screens.debug_badge.visible,
"V2f 调试浮层角标 boot 可见(全局浮层入口在座——2026-11-09 特批恢复批)")
main.queue_free()
await process_frame
for p in ["user://smoke_boot_chain.json", "user://smoke_boot_chain.json.tmp"]:
+1 -1
View File
@@ -70,7 +70,7 @@
**实况**:缺陷证据——调试浮窗唯一界面开口=右下角「调试」角标,可见性由 `_debug_entry` 门控、缺省 false 且全库无置真点(game/presentation/main.gd:35/:138),画面恒隐、浮窗无开启口;现行条文同口径(design/engineering/test-conventions.md:65「发布态该面恒隐、无 UI 开启口」)。用户裁 2026-11-07:角标与浮窗保留,画面缺失属缺陷,需补回展示。
**改动面**:文档+游戏代码
**状态**:待写卡
**状态**:已改毕(2026-11-09 用户特批直改批——不走写卡通道;恢复写死 `_debug_entry = true` 常驻调试入口+三处断言翻回+README/条文/清单同步,改动与凭据见该批提交)
#### 数值标定窗口总挂账——原九条数值类条目合并(2026-10-28 登记,来源=会话提及)