fix(core,cli): M231 复审三条 P2 —— 恢复误删用例 / 收窄 --dry-run 文案 / 判定链去重

P2-1:`natives_cases.rs` 里 `missing_native_jar_becomes_missing_component` 是上一轮
批量截断时**误伤**掉的(我把「tree_snapshot 之后的所有内容」整段砍掉,连带这条与
dry-run 无关的用例),不是有意删。现已从 main 原样贴回,`MissingNativeJar` /
natives 组件缺失这条用户可见失败路径恢复覆盖。

P2-2:help 的「也不写盘」是过度承诺 —— `commands/launch.rs` 的 `launcher_log::set_dir`
/`record_start`/`record` 都在 `if args.dry_run` 之前,dry-run 仍会 append
`<数据根>/logs/launcher.log`(连父目录 create_dir_all)。文案收窄成「不碰版本树
(不解压 natives、不建 natives 目录);启动器自身的运行日志照记」。core 的 `DryRun`
文档同步加了「本层承诺 / 调用方日志另算」的边界。

P2-3:`extract` 与 `preview` 的「无 jar / 戳记命中 / 重解」判定链合成 `inspect()` 一份,
返回 `DirStatus`(NoJars / Ready(files) / Stale)+ 源 jar 指纹;两个入口只在这里分叉。

另:`tree_snapshot_notices_a_transient_directory` 在全量并行跑时偶发红(本轮门禁抓到 1 次,
单跑 3 次全绿)——「建了立刻删」对父目录 mtime 的影响会被 NTFS 合并。换成确定性自检
`tree_snapshot_sees_new_nodes_and_mtime_changes`(新节点 + 同内容重写的 mtime 变化),
并把这条能力边界写进 `tree_snapshot` 的「抓不住」。
This commit is contained in:
AskaEth committed 2026-11-11 05:18:56 +08:00
1 parent 1fa30c4885
commit c917bfa18f
5 files changed
+134 -50

No files matched your search

+2 -1
View File
@@ -211,7 +211,8 @@ versions/<原版>-<加载器>-<版本>/<…>.json(inheritsFrom 父版本 + 主
<instance> 可以是实例 id、实例名,或直接是版本 id。
--dry-run(D18):只组装命令行并打印,不 spawn 进程、不写会话文件、不刷新令牌,
也不写盘——不解压 natives、不建 natives 目录(连缺的目录也不补),对版本树是纯读的。
也不碰版本树(不解压 natives、不建 natives 目录,连缺的目录也不补);启动器自身的
运行日志(<数据根>/logs/launcher.log)照记,这一点与真实启动一致。
账户:--account <name> 指定账户(玩家名或条目 id);不给时用唯一账户,一个都没有则回落
离线占位(--username 或 Player),有多个账户会报错并列出候选。
accessToken 一律脱敏(输出里出现的是 <redacted:token>)。",