作为 Mindraw 主项目 coder,只领取 MD-MEXP05-04,修复 PM-MEXP05-GATE 第三轮 independent review No-Go:AssetStore inspect / repair hydrate 的 blob 读取必须统一到 no-follow directory-handle / openat(O_NOFOLLOW) 路径,repair hydrate 写回 inline dataURL 前必须即时复验 manifest sha256 / byteLength。
src-tauri/src/asset_store.rs 删除旧 checked_asset_path 普通读取路径,inspect / repair hydrate 统一调用 read_existing_asset_blob()。.assets 内,最终 blob 通过 openat(O_NOFOLLOW) 读取;非 Unix 缺少可证明安全读路径时 fail-closed。dataURL 前复验实际 bytes 的 manifest sha256 / byteLength;blob 被替换、缺失、变 symlink 或内容不匹配时不修改 scene。src-tauri/src/lib.rs 新增 5 个 MEXP05 回归,并给共享 race hook 测试加互斥锁,避免并行测试互相覆盖 hook。02-P/qa/mindraw-mexp05-assetstore-authority-check.md、CODEGRAPH.md、CHANGELOG.md、02-P/plan-progress.markdown;INDEX.md 无新增入口未改。inlineCache optional、m4c 真实 smoke、AssetStore public transport。p.mindrawforcodex/03-O 未确认改动。src-tauri/src/lib.rs 会命中既有 MEXP04 originalPath 元数据字段,因此本轮隐私 / path 泄漏扫描限定到 asset_store.rs、MEXP05 QA 报告和 lib.rs 的 MEXP05 测试区。src-tauri/src/asset_store.rssrc-tauri/src/lib.rs02-P/qa/mindraw-mexp05-assetstore-authority-check.mdCODEGRAPH.mdCHANGELOG.md02-P/plan-progress.markdown.codex-sessionhistory/2026-06-28-MEXP05安全读取.mdcargo test --manifest-path src-tauri/Cargo.toml mexp05:18 PASS。cargo test --manifest-path src-tauri/Cargo.toml mindraw_package_tests:47 PASS。cargo test --manifest-path src-tauri/Cargo.toml:68 PASS。cargo check --manifest-path src-tauri/Cargo.toml:PASS。npm run build:PASS,仅既有字体解析、dialog 动态/静态导入和大 chunk 警告。git diff --check:PASS。PM-MEXP05-GATE 仍需 PM 复跑 independent review / Gate;本轮 coder 不声明 Gate GO。