# 缓存与账号生命周期复审

> 本页保留此前阶段的实现与验收范围。2026-10-04 已追加后端订单、App 多选/队列与离线播放器接线，当前进展见[缓存订单与页面](dramivio-offline-order-implementation.md)及[本轮复审](dramivio-offline-order-review.md)。真实签发器、完整 iOS 与真机仍待验收。

2026-10-03。独立复审模型为 gpt-6.1-sol，reasoning_effort=max；范围为 root 编写的 JS 账号/缓存接线与 Android 生命周期改动。原始夹具和执行记录由子 Agent 生成，报告由 root 对照源码与日志归档。iOS 代码由该 Agent 实现，其 119 项 SDK 检查单列为实现证据，不计入本次独立复验。

## 已发现并关闭

| 问题 | 修复与复验 |
| --- | --- |
| P2：进度持久化失败提前中断 clearConsumerAccount，跳过旧 viewer 与私有查询清理；viewer 文件删除错误也可能跳过订阅通知和来源状态重置 | 身份失效、查询取消/移除、进度与原生清理分别执行并收集错误；等待真实原生结果后报告 local_cleanup_pending。writeViewer 通知和 forgetViewer 状态重置移到 finally，保留存储错误，不能假报清理成功 |

修复前两个实际模块场景复现：ProgressJournal.remove 抛错，以及官方 Expo signOut 遇到进度存储错误。原生清理已经开始、官方凭据可被撤销，但旧 viewer 和私有 QueryClient 数据仍保留。修复后对应数据立即失效；本地错误仍返回未完成，服务端退出仍执行一次。

## 独立执行结果

| 检查 | 通过 | 范围 |
| --- | --- | --- |
| 新增 JS 故障复验 | 4/4 | 实际 ProgressJournal、api 模块、QueryClient 与官方 Expo SDK；桥接/HTTP/SecureStore 为适配器，另用真实本地文件删除错误检查通知 |
| 作者 JS 相关回归复跑 | 29/29 | 16 项生命周期、2 项身份相关检查、11 项逐集进度；不与新增独立检查混算 |
| 新增 Android 独立交错 | 3/3 | 实际 Media3、SQLite、SimpleCache、ReactExoplayerView 与 ExoPlayer；源网络为受控合成 transport |
| 作者 Android 集成复跑 | 19/19 | 实际下载队列、索引、缓存、账号锁定、清理与来源准备；0 失败、0 错误、0 跳过 |

JS 新增检查为：进度删除失败仍使 viewer/query 失效并等待原生清理；真实 viewer 文件删除错误仍通知订阅并清空私有查询；官方 Expo 退出在存储错误后仍清凭据、撤销服务端会话并移除旧缓存；同 UID 不同 origin 的迟到清理保留当前账号查询与书签。

Android 新增检查为：持久 queued 任务冷启动及 configureOwner 不请求源，显式 resume 后才下载；中断的 A 清理在重启后仍锁住 A，B 的真实缓存仍可读，完成 A 清理后可重新确认 A；实际构造 ReactExoplayerView，执行生产 buildMediaSource 注册的 owner observer，让 ExoPlayer 媒体项由 1 变 0、进入 STATE_IDLE，重新确认 A 后调用旧 Source 的初始化也不能重新挂载或请求网络。

本次范围内没有仍未修复的已确认 P0/P1/P2。验证零媒体项与 STATE_IDLE，没有运行解码器或证明设备上的已缓冲画面、系统后台下载、DRM 或远程即时撤权。

## root 补充验收

App 全量 228/228 与类型检查通过。最终 Android assembleRelease 成功，实际 APK 含原生模块、服务注册、Hermes bundle 与四种 ABI；采用现有 debug 签名和本机受控 API，未安装或发布。react-native-video 补丁在全新 6.19.2 npm 包上正常应用，19 个改动文件与已验证源码逐字节一致；没有新增 hash 或冻结契约。

iOS 119 项真实 macOS Foundation/AVFoundation SDK 夹具通过，其中 AVPlayer/helper、账号锁定和实际写盘故障均执行；RCTVideo 仅通过 iOS target 的语法 parse。完整 UIKit/React 编译、iPhone 真机、后台 URLSession 与每个 HLS 子请求的隔离仍未验收。

## 证据与剩余范围

原始记录：offline-lifecycle-independent-repro.log、offline-lifecycle-independent-fixed.log、offline-lifecycle-review-js-author-final.log、offline-lifecycle-independent-android.log 及两份实际 JUnit XML。实现详情见[缓存与账号生命周期](dramivio-offline-lifecycle-implementation.md)。

尚未完成的 O01 来源许可/签发、额度与缓存界面、iOS 宿主后台转发及完整构建、两端真机、真实许可/密钥清理，均保留在实施路线中。消费者下载入口仍关闭。没有发布真实 API、App 或 OTA，也没有提交/推送仓库；在线更新只包含文档与已有设计预览。
