Files
nana-story/docs/status/2026-07-28-m2-wave7-local.md
T

3.2 KiB
Raw Blame History

M2 第七波本地开工状态

日期:2026-07-28

本地基线

  • 从私有 Gitea 安全恢复 integration/v1@23672e857b,并通过 git fsck 检查对象完整性。
  • 下载时使用的临时仓库只读 Token 已在 Gitea 撤销;临时配置、bundle 与内存中的凭据均 已清理。
  • origin 已恢复为 Gitea SSH 地址,分支仍跟踪 origin/integration/v1。当前执行环境的 网络代理会关闭 SSH 2222 端口,因此本轮只提交到本地,不把“已配置公钥”误报为“已成功 推送”。
  • 相邻 lapp-rs 已固定在 5ba3c659e1536ec4bee16340faca603940a5cb17,未修改其源码。
  • 本地基线提交为 37b3397 chore: establish wave 7 local baseline

已完成

Windows 可重复基线

  • 新增 .gitattributes,固定文本 LF 与图片、音频二进制属性。
  • Node 与 Rust 契约源码哈希在计算前统一 LF,避免 Windows CRLF checkout 产生假漂移。
  • 增加 LF / CRLF 哈希等价测试。
  • 安装并锁定 Node 24、pnpm 10.29.2、Rust 1.96.0、rustfmt 与 clippy。
  • 使用锁文件安装 JavaScript 依赖。

当前分支连续上下文

  • Store 新增按 (story_id, node_id)parent_id 读取根到当前节点祖先链的接口。
  • Memory 与 SQLite 后端均检测缺失父节点和父链循环;读取不依赖 branch_id,允许分叉 复用共享祖先,同时不会遍历兄弟分支。
  • Runtime 在生成本轮前自动投影当前祖先链,并把已提交的玩家输入、演出节拍、场景和角色 视觉状态传给 Provider;未选择的行动建议不会被误当成历史事实。
  • LAPP 普通回合与隐藏判定回合共用同一套缓存友好上下文协议: stable_prefix → branch_history → dynamic_tail
  • 动态状态只包含可用于角色扮演的安全投影,包括关系阶段与玩家可见持有物的归属、取得 方式;精确关系数值、隐藏骰点、NPC 私物、未触发世界书和状态 delta 仍不能进入提示。
  • Tauri 的线路恢复复用 Store 祖先链接口,不再保留旧的 200 节点读取上限。

验证

  • node scripts/verify-contracts.mjs25 份契约无漂移。
  • pnpm verify:webTypeScript 检查、5 个测试文件 / 29 项测试及生产构建通过。
  • cargo metadata --no-deps:通过,相邻 lapp-rs 路径依赖可解析。
  • cargo fmt --all -- --check:通过。
  • git diff --check:通过。

完整 Rust 测试、Clippy、Tauri 后端测试和 Windows 桌面编译尚未关闭,原因不是项目依赖 解析,而是本机缺少 Microsoft C++ Build Tools 与 Windows SDKrustc 当前找不到 link.exe

下一步

  1. 安装 Microsoft C++ Build Tools 与 Windows SDK 后立即运行 pnpm verify:rustpnpm tauri build --no-bundle
  2. 为长分支实现非权威上下文检查点、来源哈希和 SQLite v3 迁移;历史不得静默截断。
  3. 在连续上下文门禁关闭后,实现“风险预检 → 玩家确认 → 隐藏判定失败 → 推骰 / 重新 生成”纵向切片。
  4. 最后在隔离存档上启动 Demo 窗口,验证重启恢复、终局、回溯和双线路隔离,再运行真实 LAPP 最小连接与隐藏判定工具调用。