当前状态与测试
本页回答三个问题:现在处于什么状态、依据是什么、还有哪些环境没有验证。状态不是主观进度百分比,而是由契约测试与出口条件共同判定的结果。
本次内容核对截至 2026-10-19 的已提交代码;下文测试结果引用该基线中的根 README.md、对应提交说明与上次本站状态页,不表示本轮在相同代码基线上重新执行。未提交的实现不计入交付,历史通过记录也不覆盖其后新增的代码。内容基线的维护方式见关于本站。
「已完成」的定义
一个阶段标记为「已完成」,必须同时满足:
- 该阶段登记的全部交付物已实现;
- 该阶段的专属出口条件逐项核验;
- 网页与宿主两端的契约测试都通过;
- 通用出口条件(接口登记、四档归属、guard 判定、两端测试)满足。
只在 Node 下通过、只在浏览器里手动操作成功、或只在单一宿主上跑通,都不构成「已完成」。测试数量增加也不自动改变状态。
状态快照
| 阶段 | 状态 | 判定依据 | 详情 |
|---|---|---|---|
| Phase 0 内核与契约 | 已完成 | 拒绝矩阵与装载闭环在两端通过;Rust 与宿主冒烟通过 | Phase 0 |
| Phase 1 翻译层与剧本播放 | 已完成 | 剧本 IR、隔离翻译、VM、分支与存档的契约测试在两端通过 | Phase 1 |
| Phase 2 演出与音频 | 已完成 | 真实章节功能、真实信任页与原生写出各 409 项通过;Android 13/WebView 109 的实际显示器截图可见背景与模型 | Phase 2 |
| Phase 3 玩法与内容 | 实现中 | Battle 的 S5 与策略替换生命周期、Explore 的地图与会话内导航、Growth 的等级与强化均已在双端及真实宿主验收;Extra 生命周期已完成;Collection、后续养成与奖励出口尚未闭合 | Phase 3 |
| Phase 4 进度进阶与平台适配 | 未实现 | 无本阶段实现 | Phase 4–6 |
| Phase 5 在线与运营 | 未实现 | 无本阶段实现 | Phase 4–6 |
| Phase 6 创作与后台 | 未实现 | 仅有 Phase 1 的 editor:doc 文档模型 | Phase 4–6 |
测试记录
以下为既有记录的汇总;相同日期也可能对应不同代码基线。
| 日期 | 环境与范围 | 既有结果 | 来源 |
|---|---|---|---|
| 2026-11-06 | Growth 等级、强化、公式与消耗机制、显式旗标、养成页与 Save 往返;Battle 策略替换生命周期;Node、系统 Edge、Windows WebView2、MuMu Android 15/WebView 110 | 完整回归 1252 项通过、81 项跳过(临时指定浏览器测试端口);两种真实宿主各 438 项通过、2 项跳过,Growth 与策略替换契约均通过;类型检查、前端调试构建与两端原生构建通过 | 根 README、Growth 接口页与当前源码、契约记录 |
| 2026-11-05 | Explore 地图、表现、会话内道具、寻路、界面与剧情导航;Node、系统 Edge、Windows WebView2、MuMu Android 15/WebView 110 | 完整回归 1228 项通过、80 项跳过;两种真实宿主各 432 项通过、2 项跳过,Explore 两份共用契约均通过;类型检查、前端调试构建与两端原生构建通过;浏览器覆盖真实键盘与图片纹理 | 根 README、Explore 接口页与当前源码、契约记录 |
| 2026-11-05 | Battle S5 完整范围:C2、属性/统计、AUTO、会话内序列;Node、系统 Edge、Windows WebView2、MuMu Android 15/WebView 110 | 完整回归 1204 项通过、80 项跳过;两种真实宿主各 424 项通过、2 项跳过,场景、AUTO 与序列契约均通过;类型检查与两端原生构建通过 | 根 README 与当前源码、契约记录 |
| 2026-11-05 | Extra 受控生命周期:Node、系统 Edge、Windows WebView2、标准 Android 13/WebView 109 | 完整回归 1173 项通过、80 项跳过;两种真实宿主各 420 项通过、2 项跳过,Extra 的 7 项均通过;类型检查、前端与两端原生构建通过 | 当前工作树根 README 与私有验收记录 |
| 2026-11-04 | Phase 2 真实章节与原生写出:Windows WebView2 157、MuMu Android 15/WebView 110 | 各 409 项通过;真实信任页、两条分支、三组原生包与全部文件摘要、5 个模型、16 条语音及非零 PCM 调度通过,三类错误为零;Android 截图仍为黑帧,不计为视觉验收通过 | 当前工作树根 README 与仓库外私有验收记录 |
| 2026-11-04 | Phase 2 视觉补验:标准 Android 13 x86_64、WebView 109、主显示器 | 同一真实章节验收 409 项通过;实际显示器截图可见背景与真实模型。CDP 截图省略 WebGL 层,不作为渲染失败依据 | 仓库外私有验收记录 |
| 2026-11-04 | Phase 2 立绘切换:系统 Edge、Windows WebView2 157、MuMu Android 15/WebView 110 | 三种环境各 86 项检查通过;插件分类、同一立绘 ID 双向切换、真实模型像素及覆盖后重新挂载通过,三类错误均为零;未覆盖完整真实章节、真实信任页与原生磁盘,热失效未自动重取模型 | 当前工作树根 README 与仓库外私有验收记录 |
| 2026-11-04 | Phase 2 内置资产整体替换及当前共用契约:Node、系统 Edge、Windows WebView2 157、MuMu Android 15/WebView 110 | 完整回归 1160 项通过、79 项跳过;两种真实宿主共用契约各 413 项通过、2 项跳过,均含资产替换与 Battle S5 首批 | 当前工作树根 README 与指南变更记录 |
| 2026-10-19 | 信任页返回键、恢复默认与皮肤修复后:Windows Node + 系统 Edge;类型检查 | 981 项通过、76 项跳过;类型检查通过 | 固定代码基线中的根 README,历史记录 |
| 2026-10-19 | Android 模拟器:API 33 x86_64、WebView 109,信任页返回键与配置变化 | 12 项通过;信任管理页关闭不退底层导航栈,系统字体大小与显示密度变化未重建 Activity,原生桥与返回键继续工作 | 固定代码基线中的根 README,历史记录 |
| 2026-10-19 | 同一 Android 模拟器:宿主/写出冒烟与共用契约 | 冒烟 25/10 项通过;共用契约 395 项通过、2 项按条件跳过 | 固定代码基线中的根 README,历史记录 |
| 2026-10-19 | 系统 Edge:默认皮肤与外壳冒烟 | 导航、设置、12 个内置界面皮肤名,以及浅深主题下对话框、存读档与历史面板均有通过记录 | 固定代码基线中的根 README,历史记录 |
| 2026-10-19 | Battle 三个机制插槽的载荷与校验落地后,npm test | 966 项通过、76 项跳过;新增 8 项载荷校验用例,未记录原生 WebView 复跑 | 机制插槽载荷实现提交说明 |
| 2026-10-19 | Battle 运行载荷与状态机落地后,npm test | 958 项通过、76 项跳过;新增 11 项覆盖种子、封装、回滚、终局、单次结算、隔离与可重放 | 根 README、运行载荷实现提交说明 |
| 2026-10-19 | 内置默认皮肤:系统 Edge 与 Android 模拟器 | 首启套用、明确不换皮后刷新不回落、选回恢复;两端均显示默认皮肤与两个章节 | 根 README |
| 2026-10-18 | 共享随机算法:Windows Node + 系统 Edge;类型检查 | 948 项通过、76 项跳过;类型检查通过 | 根 README |
| 2026-10-18 | 导航、独立设置与皮肤:Windows Node + 系统 Edge | 936 项通过、76 项跳过;既有系统 Edge 冒烟覆盖导航、设置和 12 个内置界面的皮肤名 | 根 README |
| 2026-10-18 | Windows Rust 宿主/acgcore | 宿主后续回归 46 项通过;acgcore 既有记录 16 项通过 | 根 README(两项非同一轮执行) |
| 2026-10-18 | Windows WebView2 156:共用契约;调试版宿主与写出冒烟 | 契约 393 项通过、2 项按条件跳过;既有冒烟分别为 25 项、10 项通过 | 根 README、远程调试实现提交说明 |
| 2026-10-18 | Android:Kotlin 在途配额与销毁处理 | :app:compileArm64DebugKotlin 编译通过 | 根 README |
| 2026-10-18 | Android 模拟器:API 33 x86_64、WebView 109;来源桥按请求体原文限长之后 | 宿主/写出冒烟 25 项/10 项通过;共用契约 387 项通过、2 项按条件跳过 | 根 README |
| 2026-10-18 | Android 13、WebView 128、Intel 平台:x86_64 原生 | 宿主/写出冒烟 25 项/10 项通过;共用契约 393 项通过、2 项按条件跳过 | 根 README |
| 2026-10-18 | 同一 Android 环境:强制 armeabi-v7a 32 位转译 | 启动就绪;宿主/写出冒烟 25 项/10 项通过;这不是 ARM 设备原生运行证据 | 根 README |
| 2026-10-18 | Android 32 位编译:armv7-linux-androideabi、i686-linux-android | 两个目标离线 cargo check 通过;i686 无设备实测 | 根 README |
| 2026-10-18 | Android 模拟器:API 33 x86_64、WebView 109,物理返回键 | 11 项通过:主页吸收、设置退栈、剧情菜单、隐藏对话框先恢复、模态先关闭;全程未退出 | 根 README |
| 2026-10-18 | Linux(WSL):仅 fsguard 的 unix 文件路径 | 单独编译并通过 5 项;未覆盖整套 Tauri 宿主 | 根 README |
| 2026-10-18 | 上次文档基线:Windows Node + 系统 Edge/文档站检查 | 881 项通过、74 项跳过;当时的类型、文档构建、内容与链接检查通过 | 上次本站状态页 |
| 2026-10-17 | Linux(WSL):Node、WebKit、Firefox | 414 项、391 项(跳过 6 项)、395 项通过;修复前基线,不作为当前验证结论 | 根 README |
| 2026-10-16 | Phase 1:Windows WebView2/Android WebView 109 | 共用契约分别 300 项/144 项通过 | 根 README |
上述 Edge、WebView 与原生记录来自框架回归。浏览器页面实测与兼容性测试使用 Playwright,项目已有回归脚本继续保留;工具连接、测试执行与具体结果分别记录。
测试层级
| 层级 | 位置 | 覆盖内容 | 是否算两端证据 |
|---|---|---|---|
| 单元测试 | test/unit/ | 纯函数、解析、边界条件 | 否 |
| 契约测试(Node) | test/contract/ 的 node 项目 | 无浏览器依赖的契约路径 | 否;是回归补充 |
| 契约测试(Web) | test/contract/ 的 web 项目 | 浏览器环境下的同一契约 | 是(网页侧) |
| 界面测试 | test/ui/ | 外壳与渲染交互,只在浏览器运行 | 否 |
| Rust 测试 | src-tauri/、acgcore/ | 宿主路由、文件守卫、解码与子集化 | 否 |
| 宿主共用契约 | npm run test:tauri 与 test/host/ | 在真实 WebView 运行共用契约包 | 是(宿主侧) |
| 宿主冒烟 | test/host/ | 真实 Tauri 宿主的装载、播放、写出与信任流程 | 仅证明覆盖到的宿主流程 |
| 产物扫描 | 构建流程 | 发布产物中的 dev 挂载符号、调试通道残留 | 否 |
「两端契约测试」指网页与真实 Tauri 宿主中的共用契约。Node 项目、Rust 测试、宿主冒烟与产物扫描分别补充不同证据,不能互相代替,也不能单独把阶段推成「已完成」。
各阶段证据
| 阶段 | 主要测试文件 | 说明 |
|---|---|---|
| Phase 0 | kernel.test.ts、guard.test.ts、manifest.test.ts、signing-list.test.ts、host-switch.test.ts、dropped-input.test.ts、listing-limit.test.ts、boot-deadline.test.ts、web-origins.test.ts、registry-incremental.test.ts | 装载、拒绝、签名、宿主切换、启动期限、网页源与输入边界 |
| Phase 1 | ir.test.ts、isolated-codec.test.ts、translate.test.ts、asset.test.ts、scriptplay.test.ts、chapters.test.ts、i18n.test.ts、notify.test.ts、save.test.ts、author.test.ts | IR、隔离翻译、播放、章节、语言、通知与存档 |
| Phase 2 | asset-media.test.ts、isolated-media.test.ts、stage.test.ts、stage-director.test.ts、audio.test.ts、text.test.ts、text-fonts.test.ts、graphemes.test.ts、autoplay.test.ts、presentation.test.ts | 表现层、音频、媒体取消、文本分段与字体、演出改写 |
| Phase 3 | battle.test.ts、battle-runtime.test.ts、battle-mechanisms.test.ts、battle-sequence.test.ts、battle-policy.test.ts、extra.test.ts、explore-data.test.ts、explore.test.ts、explore-command.test.ts、explore-screen.test.ts、growth-data.test.ts、growth.test.ts、growth-screen.test.ts、random.test.ts、platform.test.ts、story-screen.test.ts、screen-host.test.ts、skin-pipeline.test.ts、skin-engine.test.ts、skin-coverage.test.ts、skin-hit-area.test.ts | 战斗载荷与边界、场景与会话内序列、策略替换生命周期、Extra 生命周期、Explore 数据/服务/导航/界面、Growth 数据/公式/强化/存档/页面、显式随机状态、导航与界面实现、皮肤应用及覆盖 |
| Phase 4–6 | — | 尚无本阶段测试 |
测试文件存在不代表覆盖完整;具体覆盖范围以测试断言与出口条件核验记录为准。
平台覆盖矩阵
| 环境 | Phase 0 | Phase 1 | Phase 2 | Phase 3 | 说明 |
|---|---|---|---|---|---|
| Windows:Node + 系统 Edge | 通过 | 通过 | 契约通过 | 部分 | 当前回归覆盖 Battle、Explore、Growth 本期范围;不是文档站页面实测结果 |
| Windows WebView2 | 通过 | 通过 | 共用契约与真实章节功能已复跑 | Battle S5、策略替换、Explore 与 Growth 本期范围通过(其他玩法未完成) | 当前 438 项契约通过、2 项跳过,含 Growth 与策略替换;立绘切换 86 项、真实章节 409 项通过,实际播放画面可见 |
| Android x86_64 WebView | 通过 | 通过 | 共用契约、真实章节与视觉证据已通过 | Battle S5、策略替换、Explore 与 Growth 本期范围通过(其他玩法未完成) | MuMu Android 15/WebView 110 契约 438 项通过、2 项跳过,含 Growth 与策略替换;标准 Android 13/WebView 109 复跑真实章节 409 项并以实际显示器截图确认背景与模型 |
| Android armeabi-v7a 转译 | 冒烟 | 冒烟 | 未逐项记录 | 未逐项记录 | 仅启动及两个冒烟结果,不是 ARM 真机或完整契约证据 |
| Linux:Node/WebKit/Firefox | 历史通过 | 历史通过 | 未完整记录 | 未运行 | 修复前基线,不能覆盖当前实现 |
| Linux:Tauri 原生 | 未覆盖 | 未覆盖 | 未覆盖 | 未覆盖 | 需要 webkit2gtk 开发库与 WebDriver |
| macOS/iOS | 未覆盖 | 未覆盖 | 未覆盖 | 未覆盖 | 暂无设备 |
尚未覆盖的平台
以下缺口直接影响「已完成」的判定,必须在对应阶段闭合:
- Android Activity 重建:系统字体大小与显示密度变化已通过清单配置避免重建,且有模拟器验证记录;其他原因导致同一进程内重建后的原生桥、返回键与请求池恢复仍未实现,需要重启应用。
- Android 架构范围:i686 仅编译通过;armeabi-v7a 的已有运行记录使用转译,不能据此宣称所有 ARM 设备已验证。
- Linux 版 Tauri 原生程序:目前只单独编译并测试了
fsguard的 unix 路径;整套 Tauri 宿主尚未在 Linux 上运行。 - macOS 与 iOS:暂无设备,未做任何原生验证。
- 真实输入设备:触摸、手柄与多指手势属于 Phase 4,尚无验证记录。
- 真实在线环境:账号、支付与热更新属于 Phase 5;未来也只能用可复现的替身服务做契约测试,不能把生产配置写进文档。
复跑与状态更新
阶段状态只在以下条件满足时更新:
- 写文档前先读取上次内容基线,固定本次代码提交,只整理两者之间尚未登记的变更;未提交实现单独处理;
- 保留既有
npm test、类型检查、Rust、原生共用契约及冒烟脚本,按改动范围运行并分项记录; - 浏览器页面实测与兼容性验证使用 Playwright,分别确认连接与具体测试结果;
- 把测试日期、代码范围、环境、结果与来源补进记录,避免把历史结果写成本轮重跑;
- 对照阶段出口逐项核验;只有两端证据与出口条件都齐备,才把状态改为「已完成」。
Phase 2 为「已完成」。两种原生宿主的完整真实章节功能、真实信任页与磁盘读回各通过 409 项检查;标准 Android 13/WebView 109 的实际显示器截图可见背景与真实模型。立绘切换和内置资产整体替换已分别在双端核验。CDP 省略 WebGL 层属于采集边界,不再列为未闭合出口。Phase 3 保持「实现中」,直到具体战斗规则与奖励、玩法模块位、第三方小插件范例及相应两端契约通过出口条件。
已知环境问题
- Linux 版 Chromium 在 WSL 镜像网络下大量并发加载模块时不稳定;同一引擎在 Windows Edge 上全部通过,因此记为环境问题,而不是契约失败。
- 没有系统 Edge 的环境可改用 Playwright 自带浏览器;WSL 镜像网络下需要调整测试主机地址,并在跑测试前移除代理变量。
- 宿主冒烟需要以调试版启动宿主并连接调试通道;发布版不注册、不监听调试接口。
- Windows 的 WebView2 远程调试参数已由
debug-channel宿主显式设置,保留既有宿主回归脚本的连接方式;发布构建不开放该调试通道。 - Android 请求桥按
args原文字节数限制 JSON 请求体;对应 Kotlin 编译与 x86_64 模拟器冒烟已有记录。编译通过、模拟器运行与实体设备验证仍须分别记录。