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