feat(app): complete playable branch sessions
verify / verify (push) Has been cancelled

This commit is contained in:
Codex
2026-07-28 04:42:40 -04:00
parent 449515fcfe
commit 1f935a3206
26 changed files with 3472 additions and 67 deletions
+68
View File
@@ -0,0 +1,68 @@
# M2 第五波状态
日期:2026-07-28
## 基线
本轮从已推送到私有 Gitea 的 `449515f` 开始,继续保持 Rust 领域类型为契约唯一事实
来源,以及“模型提出 TurnPlan、引擎裁决、SQLite 单次提交、PlayerView 脱敏投影”
的主链。
## 已完成
### 可恢复的故事线路
- 新增线路列表、线路摘要、切换与重命名契约、Tauri 命令和 Vue 界面。
- `StoryStore` 同时支持内存与 SQLite 的线路枚举、活动线路 CAS 切换与名称校验。
- 回溯创建的新线路自动成为活动线路;普通回合只允许提交到当前活动线路。
- SQLite schema 升级到 v2,增加 `branch_metadata``story_sessions`
`app_settings`,并能无损迁移 wave4 的 schema v1。
- 关闭并重启后恢复最后活动线路;原线路与新线路的节点、检定、许诺和物品继续隔离。
### LAPP 模型设置
- 设置面板只列出 LAPP profile 中已启用且显式声明 `chat``tool-call` 能力的模型。
- 选择项只持久化 canonical provider/model IDAPI Key 和其他凭据不进入应用数据库、
DTO、日志或 `PlayerView`,仍由 LAPP Vault 在实际生成时即时解析。
- 模型切换会先建立新的 LAPP adjudication provider,成功后再原子保存选择并替换运行
provider;缺 profile、缺能力或初始化失败都会给出明确错误。
- `NANA_STORY_PROVIDER=demo` 继续作为显式、不可在界面内覆盖的确定性模式。
### “天亮之前”完整纵切
确定性纵切现在可连续完成:
1. 玩家亲自答应天亮前回来,娜娜接受许诺。
2. 可信运行时完成一次隐藏搜索判定。
3. 玩家确认检修门线索并获得“半张旧车票”。
4. 玩家进入封锁隧道,时钟与关系按规则推进。
5. 玩家在天亮前返回,许诺结算为已履行,故事进入不可继续的终局。
终局仍可通过回溯创建另一条线路。纵切总测试覆盖完成故事、关闭并重启、从根节点
分叉、推进另一线路、再次重启,并验证完成线路与替代线路互不污染。
## 验证结果
- Rust 1.96 `cargo fmt --check` 通过。
- 111 项核心 Rust 测试通过:Domain 5、Engine 21、Runtime 53、Store 32。
- 11 项 Tauri 后端测试通过。
- 核心与 Tauri Clippy `-D warnings` 通过,Tauri 全 target 类型检查通过。
- 24 份契约 Schema、TypeScript DTO 与 Rust 源哈希一致。
- TypeScript 严格检查、18 项 Web 测试和 Vite 生产构建通过。
Tauri 的 Rust 检查和后端测试继续使用空的本机 GUI 链接占位库;它证明应用代码、宏和
后端测试可编译执行,不等同于真实 WebKitGTK 窗口启动。
## 尚未关闭
- 真实 Linux/Windows 桌面窗口与安装包。
- 使用用户实际 LAPP profile、Vault 凭据和在线模型的端到端冒烟。
- 流式演出、取消生成和面向玩家的重试/诊断细分。
- 正式角色立绘、场景素材与最终应用图标。
## 下一波
1. 在真实桌面环境完成在线 LAPP 冒烟与错误恢复。
2. 将单次非流式回复升级为可取消的流式演出,但仍保持整轮一次提交。
3. 增加新故事/内容包导入入口,并冻结首个可分发存档兼容版本。
4. 建立 Windows 构建、签名与安装升级 CI。