iter55-卡1:QA覆盖余量收口批: 46→45真缺口断言落地(违约词负面套件/结算与cap与换算率钉/配额满/rap端到端/布局/天赋树/状态行/L3变异/reward行)+p_perfect读表接线(行为零漂移)+豁免登记(ontology 154/controls 19)+探针扩面十一组真输入+登记件开发面过滤(DebugOverlay/调试角标/inter三根, seen开发面键0)+枚举器scan_screens基类分类(绘制域件与调试浮窗出圈, 868实体/未豁免未补测=0)+cell_mark_overlay渲染通道(采集态六类型注入全入帧, 棋盘三图基线换代用户过目, 渲染闸绿);卡修轮2用户裁两处不豁免(渲染通道+开发面出圈);独立审计U1修复闭合+增量轮通过

This commit is contained in:
DKChan committed 2026-11-07 19:56:13 +08:00
1 parent 095bb4c91b
commit c41ce9cfc5
25 files changed
+1502 -26

No files matched your search

+18 -2
View File
@@ -43,6 +43,12 @@ SCHEMA_VAR_RE = re.compile(r"^@?export\s+var\s+(\w+)\s*:", re.M)
TSCN_NODE_RE = re.compile(r'\[node name="([^"]+)"[^>]*type="(\w*Button\w*)"')
GUI_INPUT_RE = re.compile(r"^func (_gui_input|_input)\(", re.M)
VIEW_KIND_RE = re.compile(r"(screen|overlay|panel)$")
EXTENDS_RE = re.compile(r"^extends\s+(\w+)", re.M)
CLASS_NAME_RE = re.compile(r"^class_name\s+(\w+)", re.M)
# 屏与模态按实体本相归类(QA覆盖余量收口批 2026-11-07 用户裁):
VIEW_NON_SCENE_BASES = {"RefCounted", "Resource"} # 绘制域件/数据件出圈(如 cell_mark_overlay),禁文件名后缀近似
DEV_FACE_CLASS_NAMES = {"DebugOverlay"} # 调试浮窗按 class_name 声明出圈——开发面不入玩家可达对账宇宙
#(登记件 probe_coverage_recorder 头注同款边界,两处单点同源)
def scan_tables() -> list[dict]:
@@ -94,10 +100,20 @@ def scan_gui_input_classes() -> list[dict]:
def scan_screens() -> list[dict]:
# 屏与模态按实体本相归类:场景节点基类才入;RefCounted/Resource 绘制域件出圈;
# DebugOverlay 调试浮窗出圈(判据见 DEV_FACE_CLASS_NAMES 注)。
out: list[dict] = []
for f in sorted((GAME / "presentation" / "views").glob("*.gd")):
if VIEW_KIND_RE.search(f.stem):
out.append({"category": "屏与模态", "id": f.stem, "id_field": "view"})
if not VIEW_KIND_RE.search(f.stem):
continue
text = f.read_text(encoding="utf-8", errors="replace")
m = EXTENDS_RE.search(text)
if m is not None and m.group(1) in VIEW_NON_SCENE_BASES:
continue
cm = CLASS_NAME_RE.search(text)
if cm is not None and cm.group(1) in DEV_FACE_CLASS_NAMES:
continue
out.append({"category": "屏与模态", "id": f.stem, "id_field": "view"})
return out
+99 -3
View File
@@ -1,11 +1,107 @@
/* 覆盖豁免清单——人工维护(S13 基线人工修订同款纪律;面板与工具只读本文件,禁代码生成)。
* 用途:登记「确认不需要真输入覆盖/不需要断言关联」的条目,B 面板对在册条目亮豁免灯、不亮缺口。
* 形态:abilities=能力清单行「能力」列原文(精确匹配);controls=控件登记键或其中缀(包含匹配);
* ontology=本体实体 id(精确匹配)。每条必须带 reason——无理由的豁免条目面板标红示警。 */
* ontology=本体实体 id(精确匹配)。每条必须带 reason——无理由的豁免条目面板标红示警。
* reason 承载=逐族注释(族理由照抄需求卡片「QA覆盖余量收口批」附录 B 分组;撤豁免动作随接线批走)。
* 登记批=迭代 55(2026-11-07);登记凭据=重生成缺口集与本卡裁决逐 id 差集+两探针并集零命中集。 */
window.__QA_COVERAGE__ = window.__QA_COVERAGE__ || {};
window.__QA_COVERAGE__.exemptions = {
"meta": {"note": "人工维护;改后刷新面板即生效,无生成步骤"},
"abilities": [],
"controls": [],
"ontology": []
"controls": [
/* 豁免·双源同物(附录 C 排除面,7 键):营地自绘物件裸键与场景路径键双源同物——
并集后七物件全命中(forge/notebook/campfire 由 screen_flow 承载),登记件键形冗余非缺口。 */
"camp_object#",
/* 开发面(附录 C 排除面,10 键)不入本清单(2026-11-07 用户裁轮 2 改判):调试面控件
(debug_overlay 浮窗/调试角标/inter 进入下一层)本就不在玩家可达宇宙——覆盖登记件
probe_coverage_recorder.gd 按调试面边界登记层过滤(头注声明单点),非豁免条目;
原开发面 3 条豁免随改判删除。 */
/* 豁免·进程终结(附录 C,2 键):MenuScreen 退出游戏/camp_esc 退出游戏——真点即杀探针进程,
按〔接线断言〕承载(既有结构断言在位)。 */
"Button#退出游戏",
/* 豁免·键形实例变体(登记件实例序位随 UI 构建序平移——迭代 55 扩面动线已真点各家族代表实例,
未命中键=同控件重建实例;键形改造若要做归工程批另行登记,卡 §5 在案): */
"save_select_overlay/Button#删档#",
"save_select_overlay/Button#新档#",
"save_select_overlay/Button#进档#",
"shop_overlay_view//Button#购买#",
"treasure_view/Button#升级",
"treasure_view/Button#装配",
"treasure_view/Button#购买 10",
"treasure_view/Button#购买 25",
"tree_view/Button#先手压制",
"tree_view/Button#稳健拓荒",
"tree_view/Button#解锁 25 钥石",
"tree_view/Button#购买 0 钥石",
"tree_view/Button#购买 10 钥石",
"tree_view/Button#购买 20 钥石",
"tree_view/Button#购买 30 钥石",
"tree_view/Button#购买 40 钥石",
"tree_view/Button#购买 60 钥石"
],
"ontology": [
/* ── 豁免·预留埋点(普查 §2 词表先行内容后接——未来接线内容时撤豁免补验证)── */
"chain_ap_cost", "move_ap_cost", /* action_economy——schema 冻结 0,core 零调用方 */
"hero_hp_pct", "neq", /* skill——TRIGGER_FACTS/算子词预留在册,tres 零行使用 */
"ap_rounds_front", "effective_rounds", "mine_hit_halve", "reflect_damage", "refresh_pick",
"reward_weight_bias", "slot_cost", "ap_grant", "risk", "cell_removal",
/* treasure——EFFECT_KINDS/MAGNITUDE_KINDS/DIMENSIONS 在册、tres 零行使用 */
/* ── 豁免·挂起件(全仓零引用,生涯条目承载处置两途)── */
"settlement_review_overlay",
/* ── 豁免·假缺口(验证在役、文本关联盲区——按族登记,reason 逐族)── */
/* cap 九槽:钉值在役(table_structure_guard_test gp/attack 钉值同款+迭代 55 V3 七槽钉值扩全九槽——断言文本以槽短名引用) */
"curio_cap_ap", "curio_cap_armor", "curio_cap_attack", "curio_cap_gp", "curio_cap_heal",
"curio_cap_max_hp", "curio_cap_rap", "curio_cap_refresh", "curio_cap_time_sand",
/* quota 段 13 槽+value 段 13 槽:和锚/逐槽钉值在役(guard 段结构锚+feat_vouchers_test 逐行断言——文本以槽短名引用) */
"curio_quota_ap_rare", "curio_quota_armor_common", "curio_quota_armor_excellent",
"curio_quota_attack_common", "curio_quota_attack_excellent", "curio_quota_gp_common",
"curio_quota_gp_excellent", "curio_quota_heal_excellent", "curio_quota_max_hp_common",
"curio_quota_max_hp_excellent", "curio_quota_rap_rare", "curio_quota_refresh_excellent",
"curio_quota_time_sand_rare",
"curio_value_ap_rare", "curio_value_armor_common", "curio_value_armor_excellent",
"curio_value_attack_common", "curio_value_attack_excellent", "curio_value_gp_common",
"curio_value_gp_excellent", "curio_value_heal_excellent", "curio_value_max_hp_common",
"curio_value_max_hp_excellent", "curio_value_rap_rare", "curio_value_refresh_excellent",
"curio_value_time_sand_rare",
/* adventure 表字段/段词:生产消费+行为承载(feats A6 配额满分支读生产值驱动+guard 段结构锚在役) */
"curio_candidate_count", "feat_ticket_chance", "feat_ticket_limit", "feat_ticket_pity_step",
"quota_segment", "value_segment",
/* feats 28 行:逐行行为断言+父专长通用通道读值(adventure_feats_test 逐行段在役) */
"blast_accounting", "blood_insight", "blood_tax", "breaker_strike", "chain_traps",
"echo_seals", "execution_scholar", "executioner", "field_dressing", "frontier_miner",
"fuse_pts", "fuse_wire", "geologist", "hard_hat", "last_drop", "last_stand",
"map_exchange", "market_close", "round_blast_spent", "round_digs", "round_instinct_atk",
"seal_echo", "seal_stake", "skip_mining", "skip_pts", "smith_seals", "stop_swap",
"trap_instinct",
/* enemy/skills 四件:池构成与 EV 锚+键序(round_flow_skill_pool_test 池段+guard 键序段在役) */
"harden", "hook_horror", "shield_bash", "venom_spit",
/* reward 四行:负向字典与直伤当量(seal_polarity 负向段+guard 危险格负向直伤当量段在役) */
"gp_lose", "heal_backlash", "magic_recoil", "pierce_snare",
/* meta_tree 两行+四词:forge_test 装配段/彩蛋段行为承载+tree_rules/tree_requires_level/负面反例
承载(迭代 55 V7 树面真链与侧投影断言、探针 40/60 档真输入) */
"att_socket2", "att_socket3",
"effects_a", "effects_b", "requires_level", "sense_sharp",
/* 屏与模态 8 屏:探针真实入口可见性/真输入断言在役(ui_struct/ui_click/screen_flow/reward_overlay 各段) */
"battle_end_overlay", "camp_esc_overlay", "curio_pick_overlay", "legend_overlay",
"level_map_screen", "node_overlay", "save_select_overlay", "settings_overlay",
/* 词表/字段杂项:生产消费+行为承载(消费点在役、断言文料以行为面引用——消费点逐条在案:
pity_threshold/min_safe_count 生成器参数、atk_max/atk_min 敌 AC 带宽、initial_owned/per_level_gain/
price_ratio_pct/type_axis 锻造轴、*_ratio 层构成、indeg/terminals 图约束、rest_heal_pct 休息兑付、
gp_drops/price_a/pool_shelf 商店面、mult_oor_warning 校验词、round_direction 结算冻结、wall_band/canvas/
gate_gap/hud_band_h/hotspot_key/texture_rect 营地布局、per_level_bonus/info_panel_w/info_visible_layers/
roll_tier_bounds/roll_tier_discounts/gte/self_hp_pct 校验与触发词——self_hp_pct 触发行为由迭代 55 V9
真实链断言承载) */
"seal_place_ap_cost", "pity_threshold", "min_safe_count", "atk_max", "atk_min",
"initial_owned", "per_level_gain", "price_ratio_pct", "type_axis", "battle_ratio",
"fork_ways_max", "rest_ratio", "reward_ratio", "shop_ratio", "indeg", "terminals",
"rest_heal_pct", "gp_drops", "price_a", "pool_shelf", "mult_oor_warning",
"round_direction", "wall_band", "canvas", "gate_gap", "hud_band_h", "hotspot_key",
"texture_rect", "per_level_bonus", "info_panel_w", "info_visible_layers",
"roll_tier_bounds", "roll_tier_discounts", "gte", "self_hp_pct", "pool_tag",
/* pool_tag=reward 池标签字段——guard 九型封闭与池行计数断言承载 */
/* treasure 现役词 12:treasure_effects_test/treasure_target_violation_test/guard 现役承载 */
"area_3x3", "board_wide", "dimension_tags", "remove_mines", "passive", "ap_charge_safe",
"charge_reset", "charges_per_adventure", "mine_count_preview", "refresh_stock_grant",
"shop_refresh_bonus", "unlock_keystone_cost"
]
};