port 2D steps 3-4: strict 40250 asset gate with a provenance manifest

tools/asset_manifest.py records path/size/sha256 of pack/Index, every .eix/.epk
and Eternexus/root/*.msm (audit/assets/40250-client.json). The gate script sets
MT_ASSETS_STRICT=1, verifies the manifest, runs the native pack/proto tests and
four Godot tests, and fails on a missing client, a mismatch or a skip.
MT_40250_CLIENT now comes from the environment for the native tests too.
remote_player_test accepts both weighted WAIT variants (wait/wait_1).
PORT-PLAN §5 records the 2D status.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-23 01:41:38 +09:00
co-authored by Claude Opus 5
parent 240d2827c6
commit a9b31dec67
7 changed files with 1323 additions and 2 deletions
+3 -1
View File
@@ -63,7 +63,9 @@ func _run() -> void:
await process_frame
if proto:
_ck(pv.get_motion_mode() == 3, "remote weapon 3159 -> TWOHAND_SWORD mode")
_ck(String(pv.anim.get("anim_path")).contains("/twohand_sword/wait.msa"),
# WAIT 按权重随机选 wait.msa / wait_1.msa(见 motion_registry_test、player_motion_test),两者都是双手握姿。
var wait_re := RegEx.create_from_string("/twohand_sword/wait(_\\d+)?\\.msa$")
_ck(wait_re.search(String(pv.anim.get("anim_path"))) != null,
"remote heavy-weapon wait uses two-hand grip pose")
_ck(pv.remote_equip._weapon_refine_fx.size() == 1,
"remote +9 heavy weapon creates one persistent refine effect")