chore: delete 106 unreachable *_system.gd and their parity tests
These files were loaded only by their own test_*_parity.gd and never by the runtime (transitively checked, incl. client_phase_integration_system). Removes 76 manifest implementation/evidence references across 18 contracts; contract docs get a note that conclusions based on them are void. Live systems kept: chest, consumable, item_attr, metin_socket, whisper_chat. Full headless suite: no new failures (7 failing + 5 headless-hanging render tests are identical before the deletion). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -102,3 +102,7 @@
|
||||
|
||||
- 先审计 `lifecycle.platform_release`,核对 Windows 窗口、导出、自包含资源、崩溃处理和发布门禁。
|
||||
- 回到实现阶段时,优先建立 BGM 多实例状态机和真实 3D 播放器清理测试,再处理固定实例池/Provider 的适配边界。
|
||||
|
||||
### 2026-09-22 死代码删除
|
||||
|
||||
以下文件只被自身测试引用、运行时从不加载,已删除;本文中以它们为实现或证据的结论作废,相关行为需按 40250 源码单元重新移植:`test_bgm_jukebox_parity.gd`。
|
||||
|
||||
@@ -93,3 +93,7 @@
|
||||
- 为每个 affect bit 建立 40250 资源、附着骨骼、开关、清理和石头烟雾矩阵。
|
||||
- 增加 `GC_AFFECT_ADD → duration → GC_AFFECT_REMOVE`、重复/乱序/重连/换图的 native→HUD 端到端测试。
|
||||
- 增加远端 Actor 的 stunned/knockdown/skill-cancel 状态机测试,并修复 `hit_view_test.gd` 的前向 damage 资源选择后再提升合同状态。
|
||||
|
||||
### 2026-09-22 死代码删除
|
||||
|
||||
以下文件只被自身测试引用、运行时从不加载,已删除;本文中以它们为实现或证据的结论作废,相关行为需按 40250 源码单元重新移植:`combat_status_effect_system.gd`, `test_combat_status_effect_parity.gd`, `test_mob_combat_reaction_parity.gd`。
|
||||
|
||||
@@ -237,3 +237,7 @@ native `CActorInstance` 的同一骨骼 composite matrix、旋转和绑定坐标
|
||||
进程退出码为 0;此前记录的 race 0 / 03150 左手贴合断言失败不再是当前待办项,已从
|
||||
manifest 的 `remaining` 移除。该校正只更新证据状态,不改变 WeaponTrace native
|
||||
骨骼 composite matrix、远端/怪物覆盖和服务端攻击闭环仍未证明的结论。
|
||||
|
||||
### 2026-09-22 死代码删除
|
||||
|
||||
以下文件只被自身测试引用、运行时从不加载,已删除;本文中以它们为实现或证据的结论作废,相关行为需按 40250 源码单元重新移植:`socket_glow_fx_system.gd`, `test_combat_status_effect_parity.gd`。
|
||||
|
||||
@@ -119,3 +119,7 @@
|
||||
- 增加完整 `.msa` 事件源的 `CanChangeTarget`/动作锁/重复点击时间窗测试,并对照 `_change_target_to_picked_instance` 的实际调用链。
|
||||
- 增加地图属性 `ATTRIBUTE_BANPK` 与 `in_safe` 的移动、换图、目标切换矩阵。
|
||||
- 只有以上差异修复并通过 native/classic 与场景回归后,才能将本合同从 `PARTIAL` 提升。
|
||||
|
||||
### 2026-09-22 死代码删除
|
||||
|
||||
以下文件只被自身测试引用、运行时从不加载,已删除;本文中以它们为实现或证据的结论作废,相关行为需按 40250 源码单元重新移植:`alignment_pk_system.gd`, `test_alignment_pk_parity.gd`, `test_auto_combat_bot_parity.gd`。
|
||||
|
||||
@@ -84,3 +84,7 @@
|
||||
- 本轮扫描到 524 个活跃源码/头文件:18 个 StdAfx 构建支持,142 个已在合同 manifest 中逐文件列出,364 个进入按行为合同归属的静态复核队列;当前未归属行为文件为 0。
|
||||
- `EffectLib`、`EterGrnLib`、`MilesLib` 已完成本轮活跃符号和生命周期链静态复核,但仍按实现差异保持 `PARTIAL`;其余 inferred queue 不得因为自动归属而视为已审计。
|
||||
- 下次审计必须先运行源码覆盖扫描,再从 `inferred_review_queue` 取下一组,补充对应合同的参考文件、符号、分支矩阵和测试证据;只有完成语义核对后才能转为 `reviewed_static_group`。
|
||||
|
||||
### 2026-09-22 死代码删除
|
||||
|
||||
以下文件只被自身测试引用、运行时从不加载,已删除;本文中以它们为实现或证据的结论作废,相关行为需按 40250 源码单元重新移植:`combat_status_effect_system.gd`, `costume_system.gd`, `dungeon_ranking_system.gd`, `fishing_cooking_camp_system.gd`, `fishing_mining_system.gd`, `guild_mark_uploader_system.gd`, `guild_war_system.gd`, `horse_combat_system.gd`, `horse_system.gd`, `item_enchant_system.gd`, `item_split_system.gd`, `jewelry_socket_system.gd`, `messenger_system.gd`, `mining_refinery_smelt_system.gd`, `mounted_combat_skill_system.gd`, `npc_shop_system.gd`, `party_management_system.gd`, `pet_companion_system.gd`, `player_trade_exchange_system.gd`, `polymorph_system.gd`, `private_shop_system.gd`, `safebox_storage_keeper_system.gd`, `wardrobe_transmog_system.gd`, `weather_daynight_system.gd`, `world_boss_system.gd`。
|
||||
|
||||
@@ -151,3 +151,7 @@
|
||||
`PARTIAL`。快捷栏增删/交换现在遵循请求→`GC_QUICKSLOT_*`→重建显示的权威时序,分页也已按 4 页取模;
|
||||
但快捷栏使用的统一入口、消耗品反馈闭环、真实回包 fixture、音效/sequence 和跨生命周期清理仍未闭合,
|
||||
因此不能把整个合同标记为 40250 等价。
|
||||
|
||||
### 2026-09-22 死代码删除
|
||||
|
||||
以下文件只被自身测试引用、运行时从不加载,已删除;本文中以它们为实现或证据的结论作废,相关行为需按 40250 源码单元重新移植:`item_split_system.gd`, `test_item_split_parity.gd`。
|
||||
|
||||
@@ -120,3 +120,7 @@
|
||||
- `EntityStore` 的正 HP 点数更新会清除 `dead`,`M2Client` 会重置 `dead_seen`,保证复活后下一次死亡可以再次发出 `entity_dead`。
|
||||
|
||||
本合同继续为 `PARTIAL`:本轮只修复了可直接验证的协议边界和死亡状态边沿,没有把本地属性/镶嵌/时装旁路误标为 40250 等价实现。
|
||||
|
||||
### 2026-09-22 死代码删除
|
||||
|
||||
以下文件只被自身测试引用、运行时从不加载,已删除;本文中以它们为实现或证据的结论作废,相关行为需按 40250 源码单元重新移植:`costume_attr_transfer_system.gd`, `costume_system.gd`, `item_enchant_system.gd`, `jewelry_socket_system.gd`, `refine_effect_system.gd`, `test_costume_attr_transfer_parity.gd`, `test_costume_system_parity.gd`, `test_item_enchant_manager_parity.gd`, `test_jewelry_socket_parity.gd`, `test_refine_effect_parity.gd`, `test_wardrobe_transmog_parity.gd`, `wardrobe_transmog_system.gd`。
|
||||
|
||||
@@ -338,3 +338,7 @@ server_speed_scale = 0.0 if moving_speed > 1100 else float(moving_speed) / 100.0
|
||||
- `OnWaiting`:参考只在 `CInstanceBase::Transform()` 的 `IsWalking() || IsUsingMovingSkill()` 分支内、本帧位移 ≤1.0 时调用(`InstanceBase.cpp:1922-1930`),100ms 节流,位移基准为 `m_kPPosPrevWaiting`(由 `OnSyncing`/`OnWaiting` 更新)。当前端原有的 `_tick_on_waiting()` 在站立期间周期补发 `FUNC_WAIT`,参考没有该机制,已删除(含 `SEND_WAITING_*` 与 `_last_waiting_sent_t`)。走/跑中本帧无位移的 OnWaiting 路径尚未移植(DIVERGENT)。
|
||||
- `CInstanceBase::SHORSE::SetMoveSpeed` 只同步坐骑模型动画速率,不是另一套移动速度公式,归 `world.mount_pet_polymorph`。
|
||||
- 测试:`netplay_test.gd` 新增“站立被推开不发包”断言;netplay/keyboard_motion_timeline/movement_parity/player_move/test_wasd_steering_parity/test_no_auto_move_regression/motion_event_warp/playable_combat 均 PASS。
|
||||
|
||||
### 2026-09-22 死代码删除
|
||||
|
||||
以下文件只被自身测试引用、运行时从不加载,已删除;本文中以它们为实现或证据的结论作废,相关行为需按 40250 源码单元重新移植:`test_alignment_parity.gd`。
|
||||
|
||||
@@ -101,3 +101,7 @@
|
||||
## Status
|
||||
|
||||
`PARTIAL`。NPC 点击、基础对话承接、普通/扩展商店协议骨架、购买出售 UI 和个人商店字段已经存在,但当前端仍有明确的多 tab 更新索引错误、购买模式错误放行出售、个人商店招牌不可点击打开、自己商店状态不分支、native 动作门控缺失以及本地硬编码库存/金币旁路。已完成审计并记录,未修改实现代码。
|
||||
|
||||
### 2026-09-22 死代码删除
|
||||
|
||||
以下文件只被自身测试引用、运行时从不加载,已删除;本文中以它们为实现或证据的结论作废,相关行为需按 40250 源码单元重新移植:`npc_shop_system.gd`, `private_shop_system.gd`, `test_npc_shop_parity.gd`, `test_private_shop_bundle_parity.gd`。
|
||||
|
||||
@@ -223,3 +223,7 @@ Atlas overlay 使用与小地图相同的 server-centimetre→world→map 坐标
|
||||
|
||||
`test_quest_dialog_parity.gd` 新增缺失资源回归,当前 49 项全部通过;真实 `.msc` 文件的
|
||||
完整事件序列、过场播放器消费者和中断清理仍保持 `PARTIAL`。
|
||||
|
||||
### 2026-09-22 死代码删除
|
||||
|
||||
以下文件只被自身测试引用、运行时从不加载,已删除;本文中以它们为实现或证据的结论作废,相关行为需按 40250 源码单元重新移植:`atlas_navigation_system.gd`, `biologist_quest_system.gd`, `dynamic_bounty_event_system.gd`, `event_manager_system.gd`, `metin_spawn_event_system.gd`, `test_atlas_navigation_parity.gd`, `test_biologist_quest_parity.gd`, `test_event_manager_parity.gd`, `test_map_name_shower_parity.gd`。
|
||||
|
||||
@@ -148,3 +148,7 @@
|
||||
- `player_skill_test`、`skill_test`、`guild_war_skill_test` 均通过,覆盖非公会战拒绝、公会战独立包和 UI 公会技能页。
|
||||
|
||||
仍保持 `PARTIAL`:真实 `GUILD_WAR_ON_WAR` 回包、服务端拒绝/冷却回滚、跨生命周期乱序和完整动作/damage 证据尚未闭合。
|
||||
|
||||
### 2026-09-22 死代码删除
|
||||
|
||||
以下文件只被自身测试引用、运行时从不加载,已删除;本文中以它们为实现或证据的结论作废,相关行为需按 40250 源码单元重新移植:`test_status_skill_reset_parity.gd`。
|
||||
|
||||
@@ -127,3 +127,7 @@
|
||||
## Status
|
||||
|
||||
`PARTIAL`。当前端已有聊天协议骨架、公共输入、私聊基础发送、聊天气泡和名字尾标的可测试镜像,但并非与 40250 统一实现:live 私聊已接入独立会话,但窗口历史/任务栏通知/服务端 ignore 命令仍未闭环;公共颜色/notice 分支不一致、入站表情/过滤/跨帝国文本缺失,且尾标渲染仍使用 Godot billboard 与宽度估算。本轮已修正 whisper mode 映射、空错误文案、截断 whisper 拒绝逻辑并接通 live conversation/ignore 判断,其他差异继续保持 PARTIAL。
|
||||
|
||||
### 2026-09-22 死代码删除
|
||||
|
||||
以下文件只被自身测试引用、运行时从不加载,已删除;本文中以它们为实现或证据的结论作废,相关行为需按 40250 源码单元重新移植:`test_chat_hyperlink_dice_parity.gd`。
|
||||
|
||||
@@ -97,3 +97,7 @@
|
||||
## Status
|
||||
|
||||
`PARTIAL`。当前端已经具备 exchange/safebox/mall 的 native 协议骨架、回包存储和主要 UI,交易物品属性与仓库商城的基本网络状态能够展示;但 native exchange 请求缺 40250 动作门控,交易/仓库 UI 存在 optimistic 状态和提前关闭,本地 helper 直接承担交易结算、密码、库存和金条 authority,且真实错误、乱序、断线和回包回滚证据不足。本轮完成审计并记录,未修改实现。
|
||||
|
||||
### 2026-09-22 死代码删除
|
||||
|
||||
以下文件只被自身测试引用、运行时从不加载,已删除;本文中以它们为实现或证据的结论作废,相关行为需按 40250 源码单元重新移植:`player_trade_exchange_system.gd`, `safebox_storage_keeper_system.gd`, `test_mall_affect_parity.gd`, `test_player_trade_exchange_parity.gd`, `test_safebox_storage_keeper_parity.gd`, `test_security_lock_parity.gd`。
|
||||
|
||||
@@ -106,3 +106,7 @@
|
||||
## Status
|
||||
|
||||
`PARTIAL`。当前端的 native 社交协议和主要 UI 已有较完整骨架,组队、公会、好友和会徽 live 主路径大体接上 40250;但本地 party/guild skill/war/messenger/mark helper 仍把服务端权威逻辑复制成直接状态机,且真实权限拒绝、回包顺序、重连清理和独立会徽连接缺端到端证据。因此不能把现有 parity 测试通过等同于实现统一。本轮完成审计并记录,未修改实现代码。
|
||||
|
||||
### 2026-09-22 死代码删除
|
||||
|
||||
以下文件只被自身测试引用、运行时从不加载,已删除;本文中以它们为实现或证据的结论作废,相关行为需按 40250 源码单元重新移植:`guild_mark_uploader_system.gd`, `guild_skill_system.gd`, `guild_war_system.gd`, `messenger_system.gd`, `party_management_system.gd`, `test_guild_mark_uploader_parity.gd`, `test_guild_skill_parity.gd`, `test_guild_war_observer_arena_parity.gd`, `test_guild_war_parity.gd`, `test_messenger_parity.gd`, `test_party_management_parity.gd`, `test_privilege_empire_guild_parity.gd`。
|
||||
|
||||
@@ -86,3 +86,7 @@
|
||||
本轮仍为 `PARTIAL`;完成三个地下城/活动方向的合同审计并登记,未修改实现。
|
||||
|
||||
`PARTIAL`。当前端已经具备 `GC_DUNGEON` 目标点的主要 parser、坐标状态和与 40250 一致的 Manhattan/20 秒算法,也有结果窗口骨架;但 40250 的 compass `.mse` alarm 没有实际消费者,结果链缺少 live 回包时序证据,且 Boss、排行和具体副本 helper 是当前端本地 authority,不是 40250 Windows 客户端实现。本轮完成审计并记录,未修改实现。
|
||||
|
||||
### 2026-09-22 死代码删除
|
||||
|
||||
以下文件只被自身测试引用、运行时从不加载,已删除;本文中以它们为实现或证据的结论作废,相关行为需按 40250 源码单元重新移植:`dungeon_ranking_system.gd`, `endless_spire_dungeon_system.gd`, `flame_dungeon_razador_system.gd`, `spider_dungeon_system.gd`, `test_dungeon_ranking_parity.gd`, `test_endless_spire_dungeon_parity.gd`, `test_flame_dungeon_razador_parity.gd`, `test_spider_dungeon_key_parity.gd`, `test_spider_dungeon_parity.gd`, `world_boss_system.gd`。
|
||||
|
||||
@@ -102,3 +102,7 @@
|
||||
## 下一轮验证入口
|
||||
|
||||
- 进入实现阶段后,优先修复正式 GameScene 的天气/地图环境接入和 fog/filter/lens flare/wind 中的已确认 GAP;修复后重新运行本合同四组测试并增加真实渲染证据。
|
||||
|
||||
### 2026-09-22 死代码删除
|
||||
|
||||
以下文件只被自身测试引用、运行时从不加载,已删除;本文中以它们为实现或证据的结论作废,相关行为需按 40250 源码单元重新移植:`test_weather_daynight_parity.gd`, `weather_daynight_system.gd`。
|
||||
|
||||
@@ -86,3 +86,7 @@
|
||||
本轮仍为 `PARTIAL`;完成钓鱼/采矿方向的合同审计并登记,未修改实现。
|
||||
|
||||
`PARTIAL`。当前端已经具备 40250 钓鱼/采矿协议骨架、角色动作入口、水属性扫描和水面构造;但持竿/持镐 live 门控、角色状态条件、采矿 count 动作队列和真实资源副作用证据不足,且钓鱼收益、烹饪、营火、熔炼、宝石与库存脚本承担了 40250 客户端没有承担的本地 authority。本轮完成审计并记录,未修改实现。
|
||||
|
||||
### 2026-09-22 死代码删除
|
||||
|
||||
以下文件只被自身测试引用、运行时从不加载,已删除;本文中以它们为实现或证据的结论作废,相关行为需按 40250 源码单元重新移植:`fishing_cooking_camp_system.gd`, `fishing_mining_system.gd`, `fishing_rod_reel_system.gd`, `mining_refinery_smelt_system.gd`, `test_fishing_cooking_camp_parity.gd`, `test_fishing_mining_parity.gd`, `test_fishing_rod_reel_parity.gd`, `test_mining_refinery_smelt_parity.gd`。
|
||||
|
||||
@@ -81,3 +81,7 @@
|
||||
本轮仍为 `PARTIAL`;完成坐骑、宠物和变身方向的合同审计并登记,未修改实现。
|
||||
|
||||
`PARTIAL`。当前端已具备 `mount_vnum` 的网络存储、mount_changed 信号、部分动作模式/旋转速度/攻击门控,并有本地马匹、宠物和变身 helper;但没有发现实际坐骑模型挂接链,变身状态尚未进入 native entity,宠物与马战/成长/耐力/伤害脚本承担了 40250 客户端没有承担的本地 authority。基础测试全部通过仍不足以证明与 40250 Windows 客户端实现统一。本轮完成审计并记录,未修改实现。
|
||||
|
||||
### 2026-09-22 死代码删除
|
||||
|
||||
以下文件只被自身测试引用、运行时从不加载,已删除;本文中以它们为实现或证据的结论作废,相关行为需按 40250 源码单元重新移植:`classic_pet_system.gd`, `horse_combat_system.gd`, `horse_level_growth_system.gd`, `horse_system.gd`, `mounted_combat_skill_system.gd`, `pet_companion_system.gd`, `polymorph_marble_system.gd`, `polymorph_system.gd`, `test_battle_arena_duel_parity.gd`, `test_classic_pet_parity.gd`, `test_horse_combat_parity.gd`, `test_horse_level_growth_parity.gd`, `test_mount_horse_parity.gd`, `test_mounted_combat_skill_parity.gd`, `test_pet_companion_parity.gd`, `test_polymorph_marble_parity.gd`, `test_polymorph_parity.gd`。
|
||||
|
||||
@@ -85,3 +85,7 @@
|
||||
## Status
|
||||
|
||||
`PARTIAL`。当前端已经具备 40250 实体/掉落协议的主要 native parser、VID 数据层、NPC/怪物场景层、地面物体和 shop sign 状态入口;可见性基础回归和每帧更新边界已修复,但掉落模型/特效/音效、建筑碰撞、完整 actor/ground 生命周期和 live 拾取/商店回包证据仍不足。
|
||||
|
||||
### 2026-09-22 死代码删除
|
||||
|
||||
以下文件只被自身测试引用、运行时从不加载,已删除;本文中以它们为实现或证据的结论作废,相关行为需按 40250 源码单元重新移植:`metin_spawn_event_system.gd`, `test_metin_spawn_event_parity.gd`。
|
||||
|
||||
@@ -484,3 +484,4 @@
|
||||
{"time": "2026-09-22T01:30:00Z", "event": "audit_round", "result": "PARTIAL", "ids": ["movement.keyboard.motion/canact-paralysis-faint-sleep-gate"], "files": ["audit/contracts/movement.keyboard-motion.md", "audit/manifest.json", "audit/history.jsonl"], "tests": ["40250 reference source reachability audit (exhaustive grep -arn across UserInterface/ + GameLib/ for SetParalysis/Paralysis, AFFECT_SLEEP/SetSleep, SetFaint/FaintTest, Stun/RecvStunPacket)"], "reason": "Investigated the movement.keyboard-motion.md Remaining item \"CActorInstance::CanAct() Paralysis/Faint/Sleep movement gates not wired into net_play.gd\" (flagged unfixed by the prior round). Findings: (1) IsParalysis()/m_isParalysis has exactly one setter in the whole reachable 40250 source, CInstanceBase::__Shaman_SetParalysis (InstanceBaseEffect.cpp:821-823), which itself has zero callers anywhere in the tree -- Paralysis is dead code, never true in live gameplay, so not wiring it is correct parity, not a gap. (2) IsSleep()/m_isSleep: the AFFECT_SLEEP case in SetAffect()s switch is commented out (dead); the only live setter is the AFFECT_STUN case (m_GraphicThingInstance.SetSleep(isVisible), ~InstanceBaseEffect.cpp:932-933) -- IsSleep() is functionally just an alias for AFFECT_STUN in practice, which the current clients Entity.stunned field already represents (entity_store.h:119) and net_play.gd::_can_process_network_state() already gates movement on (dead/stunned/knock_down) -- already covered, not a gap. (3) IsFaint()/m_isFaint: only setter is chrFaintTest() (PythonCharacterModule.cpp:1087-1105), a Python-bound debug helper (\"FaintTest\", registered alongside chrtestRestoreRenderMode) operating on GetSelectedInstancePtr(); the available 40250 checkout has no root/ Python UI/quest scripts to prove or disprove live-gameplay reachability -- evidence-blocked, left unresolved per SKILL.md do-not-audit-unreachable-code-as-product-behavior rule, no fix attempted. Byproduct finding while tracing IsStun(): CActorInstance::Stun() is only reachable via RecvStunPacket() (PythonNetworkStreamPhaseGame.cpp:1556-1578), which explicitly routes GC_STUN to Die() for the main character and to Stun() only for remote actors; verified this does NOT create a movement.keyboard.motion discrepancy because CanAct() blocks movement identically on IsDead() and IsStun(), and net_play.gd::_can_process_network_state() already blocks movement identically on dead and stunned -- the movement-blocking outcome is already correct parity regardless of which reference path fires. The Die()-vs-Stun() distinction only affects death-system semantics (m_isRealDead, EXP drop, corpse/respawn flow), which is combat.death.exp_drop/combat.affect_status territory and is already tracked there (combat.affect-status.md Remaining #2, equivalence rows 63/67: native GC_STUN only sets stunned=true with no dedicated clear path) -- not re-logged as a new finding to avoid duplicate tracking. No code changed this round; removed the resolved Remaining bullet from manifest.json and movement.keyboard-motion.md, replaced with investigation evidence and citations. Contract stays PARTIAL (root-motion/resource-event-source/sync-hit-death-gate-stacking/real-model-bone-flip items remain open)."}
|
||||
{"time": "2026-09-22T03:15:00Z", "event": "implementation_fix_round", "result": "PARTIAL", "ids": ["movement.keyboard.motion/server-speed-scale-clamp"], "files": ["project/player_controller.gd", "project/keyboard_motion_timeline_test.gd", "audit/contracts/movement.keyboard-motion.md", "audit/manifest.json", "audit/history.jsonl", "audit/remediation-roadmap.md", "audit/reports/coverage.md"], "tests": ["40250 reference source inspection (PASS: InstanceBaseMovement.cpp CInstanceBase::SetMoveSpeed(UINT uMovSpd) only guards uMovSpd>1100 -> 0; otherwise applies uMovSpd/100.0f unclamped)", "extension/src/net/entity_store.cpp EntityStore::motion_move_speed re-read (PASS: already-fixed remote-entity path mirrors the same >1100 -> 0 / mount_vnum!=0 -> 0 guards, no [0.25,3.0]-style band)", "pre-fix player_controller.gd::set_server_speed (FAIL by construction: clampf(moving_speed/100.0, 0.25, 3.0) silently floors/ceils haste or slow stacks outside the reference's 25..300 movSpd band)", "post-fix godot --headless --path project --script keyboard_motion_timeline_test.gd (PASS, incl. new set_server_speed(10/500/1200/100) assertions)", "godot --headless --path project --script test_wasd_steering_parity.gd (PASS)", "godot --headless --path project --script test_no_auto_move_regression.gd (PASS)", "godot --headless --path project --script game_camera_test.gd (PASS)", "godot --headless --path project --script movement_parity_test.gd (PASS)", "godot --headless --path project --script player_move_test.gd (PASS)", "godot --headless --path project --script mouse_controller_test.gd (PASS)", "godot --headless --path project --script test_alignment_parity.gd (PASS)", "godot --headless --path project --script netplay_test.gd (PASS; unrelated mock set_server_speed in netplay_test.gd has no clamp, unaffected)", "git diff --check (PASS)", "audit_ledger.py refresh --write/report --write/validate (PASS)"], "reason": "在同一合同下追查『根运动 vs 连续速度』假设时发现这是假线索——entity_store.cpp::advance_walk_by_motion 与本地 _process() 的位移积分在种类上同构(都是恒速直线插值);真正的差异是 set_server_speed() 把 moving_speed/100.0 塞进无参考依据的 clampf(0.25, 3.0),而参考实现 CInstanceBase::SetMoveSpeed 和本项目已修复的 EntityStore::motion_move_speed 都只有 moving_speed>1100 -> 0 这一个门。移除该私有夹钳,改为 0.0 if moving_speed > 1100 else moving_speed/100.0,两处调用方(net_world.gd、net_play.gd)均不额外夹钳,改动范围限于 player_controller.gd。新增回归断言覆盖旧边界内外和 1100 冻结门。副产品发现:CInstanceBase::SHORSE::SetMoveSpeed 是坐骑上玩家的独立速度设定,只在 IsMounting() 时生效,与远端 mount_vnum!=0 -> 0 的处理方式不同——本轮未下定论,留作独立候选。未修改根运动/AccumulationMovement 适配层、资源与网络事件完整顺序、同步/受击门叠加或真实模型测试,合同保持 PARTIAL。"}
|
||||
{"time": "2026-09-22T06:00:00Z", "event": "port_round", "unit": "UserInterface/PythonPlayerEventHandler.cpp", "ported": ["CPythonPlayerEventHandler::OnMove", "CPythonPlayerEventHandler::OnMoving", "CPythonPlayerEventHandler::OnStop"], "deleted": ["net_play.gd _tick_on_waiting idle FUNC_WAIT resend"], "divergent": ["CPythonPlayerEventHandler::OnWaiting (walking-but-stalled path not ported)"], "needs_live": [], "tests": ["project/netplay_test.gd PASS", "project/keyboard_motion_timeline_test.gd PASS", "project/movement_parity_test.gd PASS", "project/player_move_test.gd PASS"]}
|
||||
{"time":"2026-09-22T12:00:00Z","event":"dead_code_removal","deleted_system_files":106,"deleted_tests":106,"lines_removed":36221,"manifest_refs_removed":76,"contracts_touched":18,"reason":"project/*_system.gd reachable only from their own test_*_parity.gd; not implementations of 40250 behavior (SKILL.md: unreachable code is not evidence)","tests":["full headless Godot suite: 192 PASS, 7 FAIL and 5 render tests hanging in headless, all identical on the pre-deletion tree"]}
|
||||
|
||||
+69
-129
@@ -1414,7 +1414,6 @@
|
||||
"project/ui/ground_items.gd",
|
||||
"project/entity_rules.gd",
|
||||
"project/game_scene.gd",
|
||||
"project/metin_spawn_event_system.gd",
|
||||
"project/mob_drop_scatter.gd"
|
||||
],
|
||||
"symbols": [
|
||||
@@ -1466,7 +1465,6 @@
|
||||
"project/mob_death_drop_test.gd",
|
||||
"project/test_mob_drop_scatter_parity.gd",
|
||||
"project/mob_winding_test.gd",
|
||||
"project/test_metin_spawn_event_parity.gd",
|
||||
"build/extension/net_entity_test",
|
||||
"build/extension/net_classic_session_test",
|
||||
"build/extension/net_classic_wire_test"
|
||||
@@ -1478,13 +1476,14 @@
|
||||
"补齐不可见 race、未知 race/vnum、模型工厂未就绪、真实 drop model/effect/sound 和建筑碰撞的失败矩阵",
|
||||
"验证 ground add/owner/del 与 CG_ITEM_PICKUP→GC_DEL/ITEM_GET/ITEM_UPDATE 的 live 包序、失败、乱序和重连清理",
|
||||
"验证 GC_SHOP_SIGN 空/非空、未知 VID、重复包、私人商店 UI 和换图/断线清理",
|
||||
"把本地掉落散落、活动石头和 owner 保护与 40250 client presentation 分层,不把 custom authority 当 parity"
|
||||
"把本地掉落散落、活动石头和 owner 保护与 40250 client presentation 分层,不把 custom authority 当 parity",
|
||||
"2026-09-22 删除了只被自身测试引用的 *_system.gd 及其 test_*_parity.gd;原来引用它们的实现/证据不再成立,需按 40250 源码单元重新移植"
|
||||
],
|
||||
"notes": "已完成 40250 actor/ground/shop-sign 调用链和当前端 parser/store/view 对照;合同保持 PARTIAL。net_world_vis_test 复现 4 项可见性生命周期失败,本轮仅登记审计结果,未修改实现。",
|
||||
"fingerprints": {
|
||||
"reference": "97dfe247272a6098ce623ceae986732205de3273cb1199377f969faeec8d0ba0",
|
||||
"implementation": "3a7d87cad0ba405495ba51e13feab294af9ebddbde2fb18b5df9c606bbe3af08",
|
||||
"tests": "0100c7c3894330afa222f7a7d6bc60ec38ca08fc981a6d30746deffa5e159298"
|
||||
"implementation": "bdc38d8ef47e8a8f2676f6e9a080c7924a56b88ceb546affeb281dc57243a1d1",
|
||||
"tests": "702ac283f682d937fa8a02c70ca929942b68cacffc7adc686a5779e45f10f178"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -1936,8 +1935,7 @@
|
||||
"project/damage_effect.gd",
|
||||
"project/ui/player_view.gd",
|
||||
"project/ui/equip_model.gd",
|
||||
"project/ui/weapon_trace.gd",
|
||||
"project/socket_glow_fx_system.gd"
|
||||
"project/ui/weapon_trace.gd"
|
||||
],
|
||||
"symbols": []
|
||||
},
|
||||
@@ -1964,12 +1962,13 @@
|
||||
"服务端伤害/死亡/重复命中与客户端命中窗的真实包级 fixture",
|
||||
"换图、断线、缺失动作资源和攻击队列清理测试",
|
||||
"WeaponTrace 已按 bound-box 最大长度、局部 Z 和 reach scale 接入 PlayerView;当前仍未证明 native bone matrix 的同一 composite/rotation 坐标语义、远端/怪物覆盖、真实刀光纹理视觉和服务端动作资源",
|
||||
"socket_glow_fx_system.has_trail 目前只有配置字段,没有进入武器刀光渲染链"
|
||||
"socket_glow_fx_system.has_trail 目前只有配置字段,没有进入武器刀光渲染链",
|
||||
"2026-09-22 删除了只被自身测试引用的 *_system.gd 及其 test_*_parity.gd;原来引用它们的实现/证据不再成立,需按 40250 源码单元重新移植"
|
||||
],
|
||||
"notes": "已按 40250 isValidAttacking/HitDataContainer 删除缺失动作攻击数据、空命中窗和缺少 .msm 防御球时的本地合成命中;状态包、命中窗、去重、受击、弓箭 FLY、本地主角伤害飘字和 WeaponTrace 多部件生命周期有回归证据。WeaponTrace 目前通过 weapon_trace.gd 适配层接入,包含武器类型过滤、每个 Weapon/Shield 部件独立 trace、双轨迹时间队列、cubic spline triangle strip、alpha/texture 材质、攻击动作开关、纹理控制入口、bound-box 最大长度/局部 Z/reach scale 和换装清理;AFFECT_GEOMGYEONG 的 1.5/1.0 reach scale 已同时接入刀光与普通攻击扫掠。native 骨骼矩阵坐标语义、远端/怪物覆盖、真实视觉资源及服务端伤害闭环仍不等价。强化配置中的 has_trail 仍是独立未消费字段。",
|
||||
"fingerprints": {
|
||||
"reference": "abf0577e3430979fbf4e1ea85fa637b2f59e798bf57e257060528940045eef43",
|
||||
"implementation": "b835d862fb211a964fb36df0d435247ad120636a81491e9e108b2c545710bba9",
|
||||
"implementation": "6f93c4bcb3aee4af48beee7cff2eb4c5923a3b0bb32eae0f2b132f2873524e8f",
|
||||
"tests": "228e1bb5ebb0ef52822956e3d33d9c51d55cc2090c323300b466f937249e5d3c"
|
||||
}
|
||||
},
|
||||
@@ -2013,8 +2012,7 @@
|
||||
"project/ui/mouse_controller.gd",
|
||||
"project/player_controller.gd",
|
||||
"project/net_play.gd",
|
||||
"project/net_world.gd",
|
||||
"project/alignment_pk_system.gd"
|
||||
"project/net_world.gd"
|
||||
],
|
||||
"symbols": [
|
||||
"EntityRules.is_attackable_instance",
|
||||
@@ -2053,9 +2051,7 @@
|
||||
"tests": [
|
||||
"project/entity_rules_test.gd",
|
||||
"project/target_board_test.gd",
|
||||
"project/test_alignment_pk_parity.gd",
|
||||
"project/test_click_target_effect_parity.gd",
|
||||
"project/test_auto_combat_bot_parity.gd",
|
||||
"project/playable_combat_test.gd",
|
||||
"project/netplay_test.gd"
|
||||
],
|
||||
@@ -2066,13 +2062,14 @@
|
||||
"隐身、复活隐身、视锥、门死亡、裁剪/淡出和迟到实体更新的目标生命周期矩阵",
|
||||
"地图 ATTRIBUTE_BANPK 与实体 in_safe 的实时数据权威和移动/换图更新链",
|
||||
"SetTarget 切换时间窗、OnTargeted/OnUntargeted、飞行目标和 CG_TARGET 顺序",
|
||||
"真实服务端目标包、死亡/删除/乱序/断线重连和目标框清理"
|
||||
"真实服务端目标包、死亡/删除/乱序/断线重连和目标框清理",
|
||||
"2026-09-22 删除了只被自身测试引用的 *_system.gd 及其 test_*_parity.gd;原来引用它们的实现/证据不再成立,需按 40250 源码单元重新移植"
|
||||
],
|
||||
"notes": "已完成目标攻击资格、目标可选中、目标框和安全区的逐分支静态审计;目标入口已统一接入 CanChangeTarget/CanPickInstance、重复目标窗口和 CG_TARGET(0) 清理,合同保持 PARTIAL。",
|
||||
"fingerprints": {
|
||||
"reference": "d1c911b8bba1ccd48228a794568e3bc13ffa77ecd7d124d4e442ed9fecfdfb85",
|
||||
"implementation": "9d68120ea53f8da8821803c91ea5065ce208cfd14e0d48b1e1239b39895f9e25",
|
||||
"tests": "2cf38a10e34184c9477f0e7fc7316b6ba201c0adaa4db43a0ce8cb7d6936c1a4"
|
||||
"implementation": "47ddc51bc30196640a8e27ac2286405bc6bd5fc2a25d80b636884382fc0d468a",
|
||||
"tests": "3b20fa82a05fdf13597b631c6463f15d6a303dd7eddf43ed6f65d3e873bce756"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -2218,7 +2215,6 @@
|
||||
},
|
||||
"implementation": {
|
||||
"files": [
|
||||
"project/combat_status_effect_system.gd",
|
||||
"project/ui/hit_reaction.gd",
|
||||
"project/ui/player_view.gd",
|
||||
"project/ui/mob_view.gd",
|
||||
@@ -2262,10 +2258,8 @@
|
||||
"evidence": {
|
||||
"contract": "audit/contracts/combat.affect-status.md",
|
||||
"tests": [
|
||||
"project/test_combat_status_effect_parity.gd",
|
||||
"project/damage_effect_test.gd",
|
||||
"project/combat_fx_test.gd",
|
||||
"project/test_mob_combat_reaction_parity.gd",
|
||||
"project/test_combat_death_pickup_entry_parity.gd",
|
||||
"project/hit_view_test.gd",
|
||||
"build/extension/net_entity_test",
|
||||
@@ -2278,13 +2272,14 @@
|
||||
"补齐 affect bit 到附着特效、图标、骨骼、stone smoke 和建筑 no-op 的逐位资源矩阵",
|
||||
"统一远端 stunned/knockdown/skill-cancel 的动作和网络状态门控",
|
||||
"修复 hit_view_test 前向 damage 资源/动作锁时序失败",
|
||||
"补齐重复、乱序、duration、死亡、换图、重连和 VID 重用清理测试"
|
||||
"补齐重复、乱序、duration、死亡、换图、重连和 VID 重用清理测试",
|
||||
"2026-09-22 删除了只被自身测试引用的 *_system.gd 及其 test_*_parity.gd;原来引用它们的实现/证据不再成立,需按 40250 源码单元重新移植"
|
||||
],
|
||||
"notes": "已完成 40250 AffectFlagContainer、Actor affect/受击动作、damage/affect 协议和当前 native/GDScript 链的逐分支审计;确认本地状态结算器的数据权威错误,且 hit_view_test 有 1 项失败。合同保持 PARTIAL,本轮仅登记审计结果,未修改实现。",
|
||||
"fingerprints": {
|
||||
"reference": "92ddbb559ef4966bcecc9358beb85f7fd8edec830f833cde7067f0c35eaa2aee",
|
||||
"implementation": "c783877a1a45419d9c8fd143e7dc3ce5cd37838e6c044941d36260d586249386",
|
||||
"tests": "f0e1f4279d7fed8a897eccd9d0978781e4f19c27765d4571138bd0c0f6faefce"
|
||||
"implementation": "0012356c81b291e8bff2f96561efad74ac45ba624c91986ce53309b25abf76cc",
|
||||
"tests": "1c7ab5e0776d4e144a37d2d2e659c02eb259aa0b5caec4111b50b673ef39b112"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -2375,7 +2370,6 @@
|
||||
"project/netplay_test.gd",
|
||||
"project/test_skill_inventory_parity.gd",
|
||||
"project/test_taskbar_quickslot_parity.gd",
|
||||
"project/test_status_skill_reset_parity.gd",
|
||||
"project/mobile_gesture_test.gd",
|
||||
"project/playable_combat_test.gd",
|
||||
"project/guild_war_skill_test.gd",
|
||||
@@ -2389,13 +2383,14 @@
|
||||
"CanUseSkill 五类动作门已补齐;仍需把真实 shape/图形动作字段和拒绝副作用接入端到端回归",
|
||||
"POINT_CASTING_SPEED 已暴露并按 40250 __RunCoolTime 修正;仍需真实点变更/冷却回包时序 fixture",
|
||||
"补齐 skill/group/quickslot/cooldown-end 乱序、重复、断线、重连和换图测试",
|
||||
"建立全部技能 ID/grade/.msk 公式/动作/目标追加和服务端 damage 顺序快照"
|
||||
"建立全部技能 ID/grade/.msk 公式/动作/目标追加和服务端 damage 顺序快照",
|
||||
"2026-09-22 删除了只被自身测试引用的 *_system.gd 及其 test_*_parity.gd;原来引用它们的实现/证据不再成立,需按 40250 源码单元重新移植"
|
||||
],
|
||||
"notes": "已完成 40250 技能数据、三层施放校验、CanUseSkill、casting-speed 冷却公式、快捷栏、普通/公会技能发送入口、skill/group/cooldown 协议和 FUNC_SKILL→CG_USE_SKILL 动作/意图包序的逐分支审计;CanUseSkill 五类动作门、POINT_CASTING_SPEED 桥接和公会技独立路径已实现,但真实拒绝/乱序/跨生命周期 fixture、完整动作资源包序和服务端 damage 顺序仍使合同保持 PARTIAL。",
|
||||
"fingerprints": {
|
||||
"reference": "c38e930585edcd35a8e0911f10f3fb6694a39bc7735a3bac0b3d4eea157c9bcb",
|
||||
"implementation": "233c5cd7ee94ba2fa9ecb1a833a3ecad3e805ade4a87333243480199b18e7d4b",
|
||||
"tests": "82695ce797fd9e07f6278d8beb3cab35441e8cd59be43e2be6920236d3736369"
|
||||
"tests": "e3b00c87a54d1af4effeef310d90de4c72dacf7a7323bab005f6850ace556bb5"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -2567,7 +2562,6 @@
|
||||
"implementation": {
|
||||
"files": [
|
||||
"project/consumable_system.gd",
|
||||
"project/item_split_system.gd",
|
||||
"project/ui/quickbar.gd",
|
||||
"project/ui/inventory_ui.gd",
|
||||
"project/ui/shop_ui.gd",
|
||||
@@ -2578,7 +2572,6 @@
|
||||
"extension/src/net/entity_store.cpp",
|
||||
"extension/tests/net_classic_session_test.cpp",
|
||||
"project/test_consumables_parity.gd",
|
||||
"project/test_item_split_parity.gd",
|
||||
"project/test_taskbar_quickslot_parity.gd",
|
||||
"project/test_skill_inventory_parity.gd",
|
||||
"project/skill_test.gd",
|
||||
@@ -2632,7 +2625,6 @@
|
||||
"contract": "audit/contracts/item.consumable-action.md",
|
||||
"tests": [
|
||||
"project/test_consumables_parity.gd",
|
||||
"project/test_item_split_parity.gd",
|
||||
"project/test_taskbar_quickslot_parity.gd",
|
||||
"project/complex_item_drop_test.gd",
|
||||
"project/netplay_test.gd"
|
||||
@@ -2645,13 +2637,14 @@
|
||||
"堆叠拆分已统一为 CG_ITEM_MOVE 请求并等待服务器确认;快捷出售已统一为 CG_SHOP SELL/SELL2,价格、金币和物品变化仍待真实回包 fixture",
|
||||
"消耗品 native action gate 与装备类型门已补齐;物品音效和 SendSequence 的资源/包序证据仍缺",
|
||||
"断线、换图、重复回包、请求失败和延迟期间的状态清理/回滚",
|
||||
"快捷栏乐观更新和页面取模差异已修复;quickbar 资源泄漏、完整生命周期清理和真实服务器确认 fixture 仍待补齐;complex_item_drop_test 的购买模式卖出目标判定已修复"
|
||||
"快捷栏乐观更新和页面取模差异已修复;quickbar 资源泄漏、完整生命周期清理和真实服务器确认 fixture 仍待补齐;complex_item_drop_test 的购买模式卖出目标判定已修复",
|
||||
"2026-09-22 删除了只被自身测试引用的 *_system.gd 及其 test_*_parity.gd;原来引用它们的实现/证据不再成立,需按 40250 源码单元重新移植"
|
||||
],
|
||||
"notes": "已将拆分、快捷出售和快捷栏增删交换统一到 request→server/GC 确认路径,并修复购买模式误发出售请求;快捷栏使用、消耗品真实反馈包序、音效/sequence 和断线清理仍使合同保持 PARTIAL。",
|
||||
"fingerprints": {
|
||||
"reference": "f364d4bbba79ef514f5f8aeccbf34a3d6adea8fcacf4cb82664476b6c29ebbfe",
|
||||
"implementation": "468b4155a11204d546d49ca92afea109ced58669c2ac2286f92c742f538a49e7",
|
||||
"tests": "5fe55c9e41140a0d3deb270df8cecb785d45d8eed3e6769d5a24b907d772e66c"
|
||||
"implementation": "20983090cb18e010bcd3fd674166491d589f32335253d4b19241c556431cf3b2",
|
||||
"tests": "360f28348ea118717464fd3ebe179791a95377b658f60364ff7286a041059d97"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -2815,13 +2808,7 @@
|
||||
"implementation": {
|
||||
"files": [
|
||||
"project/ui/refine_ui.gd",
|
||||
"project/refine_effect_system.gd",
|
||||
"project/item_attr_system.gd",
|
||||
"project/item_enchant_system.gd",
|
||||
"project/jewelry_socket_system.gd",
|
||||
"project/costume_system.gd",
|
||||
"project/costume_attr_transfer_system.gd",
|
||||
"project/wardrobe_transmog_system.gd",
|
||||
"project/ui/equip_model.gd",
|
||||
"extension/src/net/m2_client.cpp",
|
||||
"extension/src/net/m2_client.h",
|
||||
@@ -2867,13 +2854,7 @@
|
||||
"contract": "audit/contracts/item.refine-socket-costume.md",
|
||||
"tests": [
|
||||
"project/test_refine_parity.gd",
|
||||
"project/test_refine_effect_parity.gd",
|
||||
"project/test_item_attr_parity.gd",
|
||||
"project/test_item_enchant_manager_parity.gd",
|
||||
"project/test_jewelry_socket_parity.gd",
|
||||
"project/test_costume_system_parity.gd",
|
||||
"project/test_costume_attr_transfer_parity.gd",
|
||||
"project/test_wardrobe_transmog_parity.gd",
|
||||
"extension/tests/net_classic_session_test.cpp",
|
||||
"extension/tests/net_entity_test.cpp",
|
||||
"extension/tests/net_bounds_test.cpp"
|
||||
@@ -2887,13 +2868,14 @@
|
||||
"把时装穿戴、属性、过期和 bonus 接入服务端 item/affect/point 与 actor armor/weapon/hair 更新链",
|
||||
"让强化等级/socket/type/subtype 驱动实际装备模型、强化特效 attach/clear,并覆盖资源缺失清理",
|
||||
"补充拒绝、断线、重复/乱序回包、换图、过期和服务端回滚测试",
|
||||
"将 wardrobe/transmog 自定义扩展与 40250 parity 分开标注,除非补齐对应服务端协议和角色部件同步"
|
||||
"将 wardrobe/transmog 自定义扩展与 40250 parity 分开标注,除非补齐对应服务端协议和角色部件同步",
|
||||
"2026-09-22 删除了只被自身测试引用的 *_system.gd 及其 test_*_parity.gd;原来引用它们的实现/证据不再成立,需按 40250 源码单元重新移植"
|
||||
],
|
||||
"notes": "本轮已修复 M2Client::refine 对 40250 取消 sentinel(255,255) 的错误拦截,并补充边界/EntityStore 回归;属性、socket、时装和幻化仍绕过服务器权威回包,合同保持 PARTIAL。",
|
||||
"fingerprints": {
|
||||
"reference": "6cc67309be64986008984215add763db78e2990b665274500cf4e76661b782e8",
|
||||
"implementation": "176ad923087d84b8f11dee97d2bd198c495d91014d8b720d3bf58acd0bd26fb8",
|
||||
"tests": "6bb13ce9e81271dfa30eaaab03c5cf5e801ef22965c32d4b4d38af95f6874bfb"
|
||||
"implementation": "0dceaccac8bd37f946846dfd7bebf7cb38563896dc2d24ec7eed3560854e2b31",
|
||||
"tests": "785b8529135d9169573531c379e0997d61a61acfffb40dbf1bc8f715ee3813de"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -2935,8 +2917,6 @@
|
||||
},
|
||||
"implementation": {
|
||||
"files": [
|
||||
"project/npc_shop_system.gd",
|
||||
"project/private_shop_system.gd",
|
||||
"project/ui/shop_ui.gd",
|
||||
"project/ui/private_shop_ui.gd",
|
||||
"project/net_play.gd",
|
||||
@@ -2983,11 +2963,9 @@
|
||||
"evidence": {
|
||||
"contract": "audit/contracts/npc.dialog-shop.md",
|
||||
"tests": [
|
||||
"project/test_npc_shop_parity.gd",
|
||||
"project/test_npc_shop_flow.gd",
|
||||
"project/test_npc_dialog_shop_ui_parity.gd",
|
||||
"project/private_shop_ui_test.gd",
|
||||
"project/test_private_shop_bundle_parity.gd",
|
||||
"project/shop_rules_test.gd",
|
||||
"project/p8_test.gd",
|
||||
"project/complex_item_drop_test.gd",
|
||||
@@ -3004,13 +2982,14 @@
|
||||
"为买卖请求补齐动作门控、实际库存/anti flag/商店状态校验和服务器结果回写",
|
||||
"移除 live 路径对硬编码 NPC 库存与本地金币/背包 helper 的权威依赖",
|
||||
"补充 START/START_EX/UPDATE/ERROR/END、拒绝、售罄、断线、重连和乱序包的端到端测试",
|
||||
"补充个人商店死亡/骑乘/战斗/bundle/重复源格校验和服务端拒绝清理测试"
|
||||
"补充个人商店死亡/骑乘/战斗/bundle/重复源格校验和服务端拒绝清理测试",
|
||||
"2026-09-22 删除了只被自身测试引用的 *_system.gd 及其 test_*_parity.gd;原来引用它们的实现/证据不再成立,需按 40250 源码单元重新移植"
|
||||
],
|
||||
"notes": "已完成 40250 与当前端的 NPC 点击、脚本对话、普通/多货架商店、买卖、个人商店招牌和摆摊提交逐分支/协议/状态审计。协议骨架和本地 UI 测试存在,但多货架更新、个人商店点击/状态、动作门控及本地直改旁路使合同保持 PARTIAL。",
|
||||
"fingerprints": {
|
||||
"reference": "2fa18ff8979d5c03e2daf44129702e3a1b26bb9e6f7b3b585f6fa55ac898e765",
|
||||
"implementation": "5373e00e8785a5fa8a98f8c361fabc4b1cdc3625093811d9a74082957126db77",
|
||||
"tests": "3829ff07408c019b3a4a65fa8d4f283fe723342bcc2d1ed51ec4993d7f9c1874"
|
||||
"implementation": "4adc63160de3b1b21f51c11d6c512d7f550c976a50c49be46784c967eca574ca",
|
||||
"tests": "c4a51e1a265294adaf10693271297d832ba2cc7ef6de6e6125bded961cea7594"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -3109,7 +3088,6 @@
|
||||
"project/guild_mark_tail_test.gd",
|
||||
"project/test_whisper_chat_parity.gd",
|
||||
"project/chat_mobile_ui_test.gd",
|
||||
"project/test_chat_hyperlink_dice_parity.gd",
|
||||
"build/extension/net_entity_test",
|
||||
"build/extension/net_classic_session_test"
|
||||
],
|
||||
@@ -3122,13 +3100,14 @@
|
||||
"复现入站表情解析、跨帝国文字转换、辱骂过滤和 40250 延迟聊天队列",
|
||||
"统一公共聊天颜色和文本前缀处理,发送失败不能生成成功回显",
|
||||
"让聊天/信息尾标使用同一权威实体生命周期,补齐真实字体度量、屏幕投影和死亡/换图清理",
|
||||
"补充重复/乱序/断线/重连、未知类型、超长文本和 whisper 错误端到端测试"
|
||||
"补充重复/乱序/断线/重连、未知类型、超长文本和 whisper 错误端到端测试",
|
||||
"2026-09-22 删除了只被自身测试引用的 *_system.gd 及其 test_*_parity.gd;原来引用它们的实现/证据不再成立,需按 40250 源码单元重新移植"
|
||||
],
|
||||
"notes": "已完成 40250 与当前端的公共聊天、私聊、忽略、聊天气泡、名字/称号/等级/公会名尾标及文本布局逐分支/协议/状态审计。已修正 whisper mode 映射、截断 GC_WHISPER 拒绝逻辑,并将 live ChatUI 的普通/GM whisper 接入独立会话和 ignore 判断;基础网络与静态尾标测试存在,但窗口通知、公共提示/过滤/表情/颜色和 Godot 字体布局差异使合同保持 PARTIAL。",
|
||||
"fingerprints": {
|
||||
"reference": "2b70c64e18344d4f465354239899289d5df2f7b9c38e165c66d553f790e2859e",
|
||||
"implementation": "cd02d44596b377534a4200e0ef7002b3c6de8e7c328fbdd96afc7e9ed8a6cb8f",
|
||||
"tests": "47305f945c76eb3c208880fd4860775262489bc2dc5dd7d42eb3d136e28761ab"
|
||||
"tests": "83f508464e76c7b6eee0796af45dedabeea3fbe2a2c235ad5efbad753c39842e"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -3175,12 +3154,6 @@
|
||||
},
|
||||
"implementation": {
|
||||
"files": [
|
||||
"project/party_management_system.gd",
|
||||
"project/guild_skill_system.gd",
|
||||
"project/guild_war_system.gd",
|
||||
"project/guild_war_observer_arena_system.gd",
|
||||
"project/messenger_system.gd",
|
||||
"project/guild_mark_uploader_system.gd",
|
||||
"project/ui/party_ui.gd",
|
||||
"project/ui/guild_ui.gd",
|
||||
"project/ui/friend_ui.gd",
|
||||
@@ -3241,16 +3214,9 @@
|
||||
"evidence": {
|
||||
"contract": "audit/contracts/social.party-guild-messenger.md",
|
||||
"tests": [
|
||||
"project/test_party_management_parity.gd",
|
||||
"project/test_messenger_parity.gd",
|
||||
"project/test_guild_mark_uploader_parity.gd",
|
||||
"project/guild_mark_test.gd",
|
||||
"project/guild_mark_tail_test.gd",
|
||||
"project/test_guild_war_parity.gd",
|
||||
"project/test_guild_war_observer_arena_parity.gd",
|
||||
"project/test_guild_skill_parity.gd",
|
||||
"project/guild_creation_ui_test.gd",
|
||||
"project/test_privilege_empire_guild_parity.gd",
|
||||
"project/p8_test.gd",
|
||||
"extension/tests/net_entity_test.cpp",
|
||||
"extension/tests/net_classic_session_test.cpp"
|
||||
@@ -3264,13 +3230,14 @@
|
||||
"补充公会权限拒绝、离会/踢人、公告/技能/金钱回包和邀请清理",
|
||||
"补充公会战声明/开始/结束/list/point 的连续事件与服务端奖励验证",
|
||||
"补充独立 mark client 的握手、index、CRC、压缩 block、损坏、断线、重试和角色刷新测试",
|
||||
"上传会徽/战旗必须验证真实用户资源、权限和服务端完成回包,避免默认占位图成为成功状态"
|
||||
"上传会徽/战旗必须验证真实用户资源、权限和服务端完成回包,避免默认占位图成为成功状态",
|
||||
"2026-09-22 删除了只被自身测试引用的 *_system.gd 及其 test_*_parity.gd;原来引用它们的实现/证据不再成立,需按 40250 源码单元重新移植"
|
||||
],
|
||||
"notes": "已完成 40250 与当前端的组队、公会、好友/Messenger、会徽/战旗及相关 UI/native 回包链审计。live native 主路径较完整,但本地队伍/技能/公会战/Messenger/会徽 helper 仍存在直接状态旁路,真实权限拒绝、mark 独立连接和重连清理证据不足,合同保持 PARTIAL。",
|
||||
"fingerprints": {
|
||||
"reference": "c0ba3dce2da7c2bd6c1f934ebd66eedaf0d37bc0d3bf99b22e401b939a150bc4",
|
||||
"implementation": "bf62ad6be63031d6630d7f4d1be497469f4a42ea8137be95b066864cd566f55c",
|
||||
"tests": "89f4d155ee7d3b4f3457ef2114aed642ef6030a7a7c226d5731fcc20cd2ba2dd"
|
||||
"implementation": "0be944c07b20317ca684d3219d86421e4e8a34e3610daf587ca0c1fb7671a660",
|
||||
"tests": "0377c649a21cdd049d7a76e9b241ed11eba0e16ba057f7cec27f583702c2cf94"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -3311,8 +3278,6 @@
|
||||
},
|
||||
"implementation": {
|
||||
"files": [
|
||||
"project/player_trade_exchange_system.gd",
|
||||
"project/safebox_storage_keeper_system.gd",
|
||||
"project/ui/exchange_ui.gd",
|
||||
"project/ui/safebox_ui.gd",
|
||||
"project/ui/mall_ui.gd",
|
||||
@@ -3356,18 +3321,19 @@
|
||||
"evidence": {
|
||||
"contract": "audit/contracts/social.exchange-safebox.md",
|
||||
"tests": [],
|
||||
"last_test_result": "PARTIAL"
|
||||
"last_test_result": "NOT_RUN"
|
||||
},
|
||||
"remaining": [
|
||||
"补齐 GC_EXCHANGE/GC_SAFEBOX/GC_MALL 的拒绝、乱序、断线和回包回滚测试",
|
||||
"将交易和仓库 UI 的 optimistic 状态改为由 native 回包重建并验证源位置",
|
||||
"区分并隔离本地 helper,避免将交易结算、密码、库存和金条规则当作客户端 authority",
|
||||
"补齐 exchange 动作门控、真实服务端物品/金币校验和商城 checkout 失败清理"
|
||||
"补齐 exchange 动作门控、真实服务端物品/金币校验和商城 checkout 失败清理",
|
||||
"2026-09-22 删除了只被自身测试引用的 *_system.gd 及其 test_*_parity.gd;原来引用它们的实现/证据不再成立,需按 40250 源码单元重新移植"
|
||||
],
|
||||
"notes": "已完成交易、仓库、安全箱、商城和金币确认的逐分支/协议/状态审计;native 主链存在但与 40250 仍是 PARTIAL,本轮未修改实现。",
|
||||
"fingerprints": {
|
||||
"reference": "8497886941be7e41b6b1960b22fc8e07b1c0fe65c4a032b13d662191b06a0404",
|
||||
"implementation": "d2cad2b8bdf7fc421478157ea0085bef07a4979d3d3799ff81823e1dd16216ab",
|
||||
"implementation": "23a59fe47d21a602f5baff19828f9db8f4bd89495bcd1a14922a7476ee5906a2",
|
||||
"tests": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
}
|
||||
},
|
||||
@@ -3417,18 +3383,13 @@
|
||||
"project/ui/char_status_ui.gd",
|
||||
"project/ui/atlas_ui.gd",
|
||||
"project/ui/minimap.gd",
|
||||
"project/atlas_navigation_system.gd",
|
||||
"project/game_scene.gd",
|
||||
"extension/src/net/m2_client.cpp",
|
||||
"extension/src/net/m2_client.h",
|
||||
"extension/src/net/entity_store.cpp",
|
||||
"extension/src/net/entity_store.h",
|
||||
"extension/src/net/classic/classic_session.cpp",
|
||||
"extension/src/net/classic/classic_session.h",
|
||||
"project/biologist_quest_system.gd",
|
||||
"project/dynamic_bounty_event_system.gd",
|
||||
"project/event_manager_system.gd",
|
||||
"project/metin_spawn_event_system.gd"
|
||||
"extension/src/net/classic/classic_session.h"
|
||||
],
|
||||
"symbols": [
|
||||
"EntityStore::apply",
|
||||
@@ -3477,12 +3438,13 @@
|
||||
"补齐真实 server 脚本序列与中断回归;script-button、DONE、ESC/CANCEL answer 语义已闭合",
|
||||
"验证 RUN_CINEMA 的有效 .msc 资源序列、过场消费者和中断清理;验证地图信号在 Minimap/Atlas 的切图与多点生命周期",
|
||||
"补齐对话确认超时、fade/camera/cinema 中断、断线和重连清理测试",
|
||||
"隔离生物学家/悬赏/活动 helper,避免其本地规则冒充 40250 客户端实现"
|
||||
"隔离生物学家/悬赏/活动 helper,避免其本地规则冒充 40250 客户端实现",
|
||||
"2026-09-22 删除了只被自身测试引用的 *_system.gd 及其 test_*_parity.gd;原来引用它们的实现/证据不再成立,需按 40250 源码单元重新移植"
|
||||
],
|
||||
"notes": "已完成任务状态、事件脚本、对话、HUD、地图导航和过场链的逐分支/协议/时序审计;GC_QUEST_INFO END、script-button 任务索引 sentinel、DONE close-only/DoneEvent、ESC/CANCEL answer 分支和 RUN_CINEMA 缺失资源分支已按 40250 修复,其他明确差异继续保持 PARTIAL。",
|
||||
"fingerprints": {
|
||||
"reference": "e05974ea414ca0d1bdcec3298119380ec35bfd20637a9c8e48588246347fc364",
|
||||
"implementation": "5aa1707764f5a74db510210bfd8803a9e90e0a4d989202795fe506d1f29a8395",
|
||||
"implementation": "71343d79bbcf40cf9437adac21bc5d6cef35b568e390445f5824ad9bba35e28f",
|
||||
"tests": "a65c31ca4ade9fe4359f1238ed7080a5a50c3a336b75a9d9ee2a1e2f7faeb02a"
|
||||
}
|
||||
},
|
||||
@@ -3518,12 +3480,6 @@
|
||||
"project/dungeon_state.gd",
|
||||
"project/ui/dungeon_result_ui.gd",
|
||||
"project/game_scene.gd",
|
||||
"project/world_boss_system.gd",
|
||||
"project/dungeon_ranking_system.gd",
|
||||
"project/spider_dungeon_system.gd",
|
||||
"project/spider_dungeon_key_system.gd",
|
||||
"project/flame_dungeon_razador_system.gd",
|
||||
"project/endless_spire_dungeon_system.gd",
|
||||
"extension/src/net/entity_store.cpp",
|
||||
"extension/src/net/entity_store.h",
|
||||
"extension/src/net/m2_client.cpp",
|
||||
@@ -3555,18 +3511,19 @@
|
||||
"evidence": {
|
||||
"contract": "audit/contracts/world.dungeon-activity.md",
|
||||
"tests": [],
|
||||
"last_test_result": "PARTIAL"
|
||||
"last_test_result": "NOT_RUN"
|
||||
},
|
||||
"remaining": [
|
||||
"接通 alarm_requested 到等价的 compass/mse 资源效果,并验证方向、初次提示和 20 秒重复提示",
|
||||
"补齐 GC_DUNGEON/DUNGEON_RESULT 的 live 回包、重复/乱序、拒绝、断线、切图和重连测试",
|
||||
"确认 server cm 到 Godot 世界坐标的轴向、地图基准和到达阈值实机一致",
|
||||
"把 Boss、排行和具体副本 helper 与 40250 client parity 分开,禁止本地 authority 冒充客户端等价实现"
|
||||
"把 Boss、排行和具体副本 helper 与 40250 client parity 分开,禁止本地 authority 冒充客户端等价实现",
|
||||
"2026-09-22 删除了只被自身测试引用的 *_system.gd 及其 test_*_parity.gd;原来引用它们的实现/证据不再成立,需按 40250 源码单元重新移植"
|
||||
],
|
||||
"notes": "已完成 GC_DUNGEON 目标点、结果窗口、地图事件及本地 Boss/排行/副本 helper 的逐分支、协议、资源和时序审计;目标状态算法接近参考,但 compass 副作用未接通,本地 authority 不能视为 40250 客户端实现。",
|
||||
"fingerprints": {
|
||||
"reference": "66b5e63a273e45873bf4c4b90c8b658a9f073ba425de6f275d622b3c47fbac99",
|
||||
"implementation": "c4885c44a33a107d3095a20b988f26a5a62d50814514e34ffb03c86bfa7a745d",
|
||||
"implementation": "f962e7e5f470f447024073009b195aacf877cfbcbf624aeb88cf13f9e3646dc0",
|
||||
"tests": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
}
|
||||
},
|
||||
@@ -3605,10 +3562,6 @@
|
||||
},
|
||||
"implementation": {
|
||||
"files": [
|
||||
"project/fishing_mining_system.gd",
|
||||
"project/fishing_rod_reel_system.gd",
|
||||
"project/fishing_cooking_camp_system.gd",
|
||||
"project/mining_refinery_smelt_system.gd",
|
||||
"project/net_play.gd",
|
||||
"project/net_world.gd",
|
||||
"extension/src/metin2_world.cpp",
|
||||
@@ -3649,18 +3602,19 @@
|
||||
"evidence": {
|
||||
"contract": "audit/contracts/world.fishing-mining.md",
|
||||
"tests": [],
|
||||
"last_test_result": "PARTIAL"
|
||||
"last_test_result": "NOT_RUN"
|
||||
},
|
||||
"remaining": [
|
||||
"补齐 CanFishing/持竿/持镐动作门控、服务端拒绝和角色消失/重连测试",
|
||||
"验证 GetFishingRot 的轴向、MapCoord heading 和全地图 water attribute/水高单位",
|
||||
"让 GC_DIG_MOTION 按 count 复现多个 dig motion,并验证目标缺失、动作完成和中断清理",
|
||||
"把钓鱼收益、烹饪、营火、采矿、熔炼和宝石脚本标记为 custom/server authority,禁止冒充 40250 client parity"
|
||||
"把钓鱼收益、烹饪、营火、采矿、熔炼和宝石脚本标记为 custom/server authority,禁止冒充 40250 client parity",
|
||||
"2026-09-22 删除了只被自身测试引用的 *_system.gd 及其 test_*_parity.gd;原来引用它们的实现/证据不再成立,需按 40250 源码单元重新移植"
|
||||
],
|
||||
"notes": "已完成钓鱼输入/水面扫描、GC_FISHING、GC_DIG_MOTION、地图水面和当前端生活技能 helper 的逐分支、协议、状态与资源审计;协议骨架和部分算法接近参考,但 live 动作/门控/清理证据不足,本地收益脚本不是 40250 客户端 authority。",
|
||||
"fingerprints": {
|
||||
"reference": "770f14f2d2bfdf025b471dbc90280f891671ea898faef52d4112684934f5bdb7",
|
||||
"implementation": "6be8a56d9630a7c8aa785ff2981dd46ed5a0b08b3fa097a20f55a1a4d31d768f",
|
||||
"implementation": "e9c3c25e1e61db656451f5a091ecf1365f54f01ee7a94b8098f5e625d67dded8",
|
||||
"tests": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
}
|
||||
},
|
||||
@@ -3697,14 +3651,6 @@
|
||||
},
|
||||
"implementation": {
|
||||
"files": [
|
||||
"project/horse_system.gd",
|
||||
"project/horse_combat_system.gd",
|
||||
"project/horse_level_growth_system.gd",
|
||||
"project/pet_companion_system.gd",
|
||||
"project/classic_pet_system.gd",
|
||||
"project/polymorph_system.gd",
|
||||
"project/polymorph_marble_system.gd",
|
||||
"project/mounted_combat_skill_system.gd",
|
||||
"project/net_play.gd",
|
||||
"project/net_world.gd",
|
||||
"project/ui/equip_model.gd",
|
||||
@@ -3740,18 +3686,19 @@
|
||||
"evidence": {
|
||||
"contract": "audit/contracts/world.mount-pet-polymorph.md",
|
||||
"tests": [],
|
||||
"last_test_result": "PARTIAL"
|
||||
"last_test_result": "NOT_RUN"
|
||||
},
|
||||
"remaining": [
|
||||
"补齐 mount_vnum/GC_MOUNT 到实际 horse actor/model attach/detach 的 live 链和位置清理",
|
||||
"验证骑乘 motion root、300/1200 度旋转速度、马等级攻击门和 weapon mode 的 live 回包时序",
|
||||
"把变身 affect/shape/装备遮挡接入 native entity 或明确标为缺失,不用本地 helper 代替",
|
||||
"将宠物、马匹成长/耐力/马上技能和伤害脚本与 40250 client parity 分离,禁止 custom authority 冒充等价实现"
|
||||
"将宠物、马匹成长/耐力/马上技能和伤害脚本与 40250 client parity 分离,禁止 custom authority 冒充等价实现",
|
||||
"2026-09-22 删除了只被自身测试引用的 *_system.gd 及其 test_*_parity.gd;原来引用它们的实现/证据不再成立,需按 40250 源码单元重新移植"
|
||||
],
|
||||
"notes": "已完成 mount_vnum/GC_MOUNT、骑乘动作/攻击门、变身和当前端宠物/马匹 helper 的逐分支、协议、资源和时序审计;网络字段与部分门控存在,但实际坐骑模型挂接和变身 native 闭环缺失,本地宠物/成长/技能规则不是 40250 客户端 authority。",
|
||||
"fingerprints": {
|
||||
"reference": "5ef243a1ff134dfc8afff02136d104daf0a0ac12eca781a1c476b53f7da9ff19",
|
||||
"implementation": "47780fc336fe531fea973aa9196d587b581aabb2a8dfe00bd10a6d275ce98b4a",
|
||||
"implementation": "e69e964433af7177390e558ef32087425386bf6923a9408d457c48644c4fc6ad",
|
||||
"tests": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
}
|
||||
},
|
||||
@@ -4064,7 +4011,6 @@
|
||||
"formats/environment.cpp",
|
||||
"formats/environment.h",
|
||||
"project/game_scene.gd",
|
||||
"project/weather_daynight_system.gd",
|
||||
"project/fx/weather.gd"
|
||||
],
|
||||
"symbols": [
|
||||
@@ -4099,7 +4045,6 @@
|
||||
"project/environment_test.gd",
|
||||
"project/skybox_test.gd",
|
||||
"project/p9_test.gd",
|
||||
"project/test_weather_daynight_parity.gd",
|
||||
"extension/tests/net_entity_test.cpp",
|
||||
"project/gamescene_test.gd",
|
||||
"project/netbridge_test.gd"
|
||||
@@ -4111,13 +4056,14 @@
|
||||
"修正/验证 40250 线性 fog near/far/color 与 HTP/STP/terrain 的参数和时序",
|
||||
"补齐 DayMode/PRESERVE_DayMode 正式环境切换;WeatherDayNightSystem 的自动地图预设继续隔离,不能替代服务器 xmas_snow 命令",
|
||||
"对天空 transition、云 plane、SnowEnvironment 池和真实渲染顺序增加参数/screenshot oracle",
|
||||
"增加重复加载、快速切图、暂停恢复、资源缺失和环境/粒子清理测试"
|
||||
"增加重复加载、快速切图、暂停恢复、资源缺失和环境/粒子清理测试",
|
||||
"2026-09-22 删除了只被自身测试引用的 *_system.gd 及其 test_*_parity.gd;原来引用它们的实现/证据不再成立,需按 40250 源码单元重新移植"
|
||||
],
|
||||
"notes": "已完成 .msenv、天空/云、双方向光、fog、天气粒子、服务器 xmas_snow 命令和正式场景过滤的逐分支审计;命令链与四张排除地图已有回归,但 SnowEnvironment 池、DayMode、filter/lens flare/wind、线性 fog 仍与 40250 不一致或缺失,故保持 PARTIAL。",
|
||||
"fingerprints": {
|
||||
"reference": "1cffc55eb356a522049e4f7bc36595ea968ad1e0ccd7780486064a3e250cc36b",
|
||||
"implementation": "dfc0fe4b13645b06daeea26f517d813a8c8ebb4cfcb2db19ebe2ee7e8f573c7c",
|
||||
"tests": "05fd8d3202d9774f7043311e8615e1210a09cc579f1346eb2fb9ebbfec339b5b"
|
||||
"implementation": "81e6a81489baf9f90e830458212910db6feaa713508d173236d2d255446aae53",
|
||||
"tests": "fa1ee00144332c33a93da2f94371a0b3602c46271356aa78b243d782aaa71c65"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -4502,7 +4448,6 @@
|
||||
"project/audio_miles_test.gd",
|
||||
"project/ambience_test.gd",
|
||||
"project/bgm_test.gd",
|
||||
"project/test_bgm_jukebox_parity.gd",
|
||||
"project/app_flow_lifecycle_test.gd",
|
||||
"project/system_option_ui_test.gd",
|
||||
"project/rendering_scenario_test.gd"
|
||||
@@ -4513,13 +4458,14 @@
|
||||
"验证真实 3D 播放实例不会绕过 master SFX,并补设备/实例路径的后台静音回归",
|
||||
"验证 BGM 多实例淡入/限幅淡出/全量淡出/加载失败回滚状态机",
|
||||
"验证 3D attenuation、实例池耗尽、远端动作音效和完整销毁顺序",
|
||||
"验证流式地图快速切换、环境声来源删除和退出时无悬挂播放器"
|
||||
"验证流式地图快速切换、环境声来源删除和退出时无悬挂播放器",
|
||||
"2026-09-22 删除了只被自身测试引用的 *_system.gd 及其 test_*_parity.gd;原来引用它们的实现/证据不再成立,需按 40250 源码单元重新移植"
|
||||
],
|
||||
"notes": "已完成首轮逐分支审计;基础音量/监听器/环境声/动作音效路径存在,后台 BGM/SFX 同时静音恢复与退出 Audio 缓存清理已有回归,但 Miles 实例池和 BGM 逐帧状态机仍不等价。",
|
||||
"fingerprints": {
|
||||
"reference": "1a8a9232bcc63724814d15df99f211ddfe67a28fcb2052bb4c84ad79373bdfef",
|
||||
"implementation": "f4c3fed1f7cbf08c1032c536927a689a9a1b71b1c431de2afb3c0041ee577315",
|
||||
"tests": "a7ca9e4555b71f92776b56669a0b74e443dc2aaab78a2f208c86f9fc4bc75bfc"
|
||||
"tests": "96a0171f670842fc52b665ae9fcae3cb30ef0046ef147836ca7f586e21646aab"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -4618,13 +4564,7 @@
|
||||
"symbols": []
|
||||
},
|
||||
"implementation": {
|
||||
"files": [
|
||||
"project/offline_bazaar_market_system.gd",
|
||||
"project/mail_system.gd",
|
||||
"project/dynamic_bounty_event_system.gd",
|
||||
"project/dragon_soul_system.gd",
|
||||
"project/solo_guild_domain_system.gd"
|
||||
],
|
||||
"files": [],
|
||||
"symbols": []
|
||||
},
|
||||
"equivalence": {},
|
||||
@@ -4635,11 +4575,11 @@
|
||||
"last_test_result": "NOT_RUN"
|
||||
},
|
||||
"remaining": [],
|
||||
"notes": "完整功能清单首批合同;尚未完成 40250 逐分支等价审计。",
|
||||
"notes": "2026-09-22 所列当前端独有功能(*_system.gd,仅被自身测试引用)已全部删除;按 SKILL.md,没有 40250 对应的逻辑属于缺陷,不再在此登记新条目。",
|
||||
"exclusion_reason": "在指定 40250 ClientVS22 source 中没有可达对应行为;记录该当前端扩展以防止漏审,但不计入 40250 等价率。",
|
||||
"fingerprints": {
|
||||
"reference": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"implementation": "fdaf946a6bffa5e914dfe7f40c2bbd42dc00e64d43e60231e9290021f14cbba2",
|
||||
"implementation": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"tests": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ python3 .agents/skills/metin2-40250-parity-audit/scripts/port_map.py queue --lim
|
||||
| 批次 | 内容 | 状态 |
|
||||
| --- | --- | --- |
|
||||
| 0 | 工具:参考根解析、缺失文件报错、`port_map.py`、构建/测试入口 | 完成 2026-09-22 |
|
||||
| 1 | 删除只被自身测试引用的 `project/*_system.gd` 与其 `test_*_parity.gd`,清除 manifest 中对应证据 | 待确认删除清单 |
|
||||
| 1 | 删除只被自身测试引用的 `project/*_system.gd` 与其 `test_*_parity.gd`,清除 manifest 中对应证据 | 完成 2026-09-22(106+106 个文件) |
|
||||
| 2 | P0 角色/移动单元(并行 worktree) | 未开始 |
|
||||
| 3 | P1 战斗/技能 → P2 游戏阶段封包 → P3 物品与 Python UI | 未开始 |
|
||||
| 4 | `NEEDS_LIVE` 真服验证批 | 未开始 |
|
||||
|
||||
@@ -24,10 +24,10 @@ Total contracts: 45
|
||||
|
||||
## Pending branch items
|
||||
|
||||
- Total: 224
|
||||
- P0: 93
|
||||
- P1: 118
|
||||
- P2: 13
|
||||
- Total: 241
|
||||
- P0: 94
|
||||
- P1: 132
|
||||
- P2: 15
|
||||
- P3: 0
|
||||
- Routing: see `audit/remediation-roadmap.md`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user