docs: 校正文档分类与当前边界
bat-rust / Build and test Rust (push) Canceled after 0s
bat-rust / Build and test Go API (push) Canceled after 0s

This commit is contained in:
2026-09-04 19:58:07 +08:00
parent 34e2f0d907
commit d21c01a697
25 changed files with 727 additions and 985 deletions
+62 -30
View File
@@ -4,7 +4,7 @@
BlueArchive Toolkit 采用 **Monorepo + 多语言混合** 架构,旨在构建一个可持续维护十年以上的工业级开源项目。
当前文档描述目标架构和已经落地的关键边界。它不是部署手册;当前可部署能力包括 Rust 官方资源同步任务和 Go `cmd/bat-api` 资源 bootstrap/分发服务。完整游戏业务 API、Web、Provider 编排和 SDK 仍未完成,实际实现状态以根目录 `CURRENT_STATUS.md` `PROJECT_PLAN.md` 为准
当前文档描述目标架构和已经落地的关键边界。它不是部署手册;当前可部署能力包括 Rust 官方资源同步任务和 Go `cmd/bat-api` 资源 bootstrap/分发服务。完整游戏业务 API、Web、Provider 编排和 SDK 仍未完成,实际实现状态以源码、测试和根目录 `CURRENT_STATUS.md` 为准;`PROJECT_PLAN.md` 只描述目标和路线图
当前已经可用的官方资源入口包括:
@@ -25,9 +25,11 @@ BlueArchive Toolkit 采用 **Monorepo + 多语言混合** 架构,旨在构建
已接受的架构决策:
- `adr/0001-engine-and-application-boundaries.md`Rust 引擎与 Go 应用层边界
- `adr/0001-engine-and-application-boundaries.md`历史语言/层次边界决策;资源同步职责已由 ADR 0004 取代
- `adr/0002-cas-v1-design-boundary.md`CAS V1 设计边界。
- `adr/0003-cas-core-interface-and-error-boundary.md`CAS 核心接口与错误边界冻结。
- `adr/0004-rust-bat-go-bat-api-resource-boundary.md`:当前 Rust `bat` 与 Go `bat-api`
的资源控制面边界。
---
@@ -41,16 +43,30 @@ BlueArchive Toolkit 采用 **Monorepo + 多语言混合** 架构,旨在构建
### 2. 语言选型
| 模块 | 语言 | 理由 |
| 模块 | 语言 | 当前定位 |
|------|------|------|
| CLI、API Server、服务编排 | Go | 并发模型优秀、部署简单、生态成熟 |
| 官方资源同步核心、AssetBundle 解析、Patch 引擎、CAS 引擎 | Rust | 零成本抽象、内存安全、性能和二进制处理更可靠 |
| Web 管理后台 | Vue 3 + TypeScript | 渐进式、类型安全、生态完善 |
| 官方资源同步与运维 CLI、同步核心 | Rust | **当前实现**`bat` 负责生产资源和长期状态 |
| 资源 bootstrap、只读分发和 Rust 管理入口 | Go | **当前实现**`cmd/bat-api` 通过 `bat.sock` RPC 工作 |
| AssetBundle 解析、Patch 引擎、CAS 引擎 | Rust | **当前已有基础,复杂覆盖仍按路线图推进** |
| 完整 API、服务编排和 Provider | Go | **目标设计,尚未完整实现** |
| 完整 Web 协作后台 | Vue 3 + TypeScript | **目标设计**;当前只有内嵌 dashboard MVP |
### 3. 数据流设计
当前已落地的数据流:
```
用户请求 → CLI/API → Go 业务层 → bat --json / SDK → Rust 核心/同步层 → CAS 存储 → 数据库
官方 metadata → Rust bat / daemon → release + current + manifest
bat.sock JSON-RPC
Go bat-api → bootstrap / CDN / dashboard
```
目标扩展数据流(其中 Go 业务层、SDK、数据库和 Redis 尚未全部实现):
```
用户请求 → CLI/API → Go 业务层 → bat.sock RPC / SDK → Rust 核心/同步层 → CAS 存储 → 数据库
↓ ↓
Web UI 缓存层 (Redis)
```
@@ -99,7 +115,7 @@ cas/
---
### 2. 官方资源同步器 (Rust 当前实现,Go 侧读取与编排)
### 2. 官方资源同步器 (Rust 当前实现,Go 侧读取)
**职责**:从官方日服 HTTP metadata 自动发现资源入口,下载 Windows + Android 官方资源,增量检查,完整性校验,保持本地状态。
@@ -133,20 +149,24 @@ current symlink → official-sync-snapshot.json + official-download-manifest.jso
- 本地文件损坏时 repair。
- 官方 seed `.hash` 强校验;Addressables `catalog_*.hash` 作为变更 marker。
**后续 Go 职责**
**Go 当前职责**
- 提供最小稳定 CLI
- 默认通过 `bat --json` 进程边界包装 Rust 同步入口,并转发结构化 report
- `bat-ffi` 仅作为可选无状态 C ABI 兼容层,不承载官方同步 daemon、下载器或 CAS handle
- 编排 API Server、任务队列、Provider 和用户配置。
- `bat-api` 通过 `bat.sock` RPC 读取 Rust 已发布 release、manifest、snapshot 和状态
- 提供资源 bootstrap、server-info 改写、只读 CDN path、readiness、OpenAPI 和白名单管理转发
- 不运行另一套同步器,不直接管理官方下载、staging、version-state、CAS 或解析状态
完整 API、服务编排、Provider 和用户配置属于目标扩展,不能从本节推断为当前已实现。
---
### 3. AssetBundle 解析器 (Rust)
### 3. AssetBundle 解析器 (Rust,当前基础与目标扩展)
**职责**:解析 Unity AssetBundle,提取资源
**插件化架构**
以下插件注册和动态加载是目标扩展;当前实现以 `crates/bat-assetbundle`
`bat-adapters` 和真实 fixture 覆盖为准。
**目标插件化架构**
```rust
pub trait AssetParser {
fn name(&self) -> &str;
@@ -172,7 +192,11 @@ pub struct ParserRegistry {
---
### 4. 翻译系统 (Go)
### 4. 翻译系统 (目标设计,Go)
当前已实现的是 Rust `bat` 的离线 TextUnit 队列、mock/Crowdin provider worker、
lease/retry 和结果落库;Translation Memory、Glossary 和完整 Provider 体系仍属
后续缺口。
**架构**
```
@@ -204,7 +228,7 @@ type TranslationProvider interface {
---
### 5. Patch 引擎 (Rust)
### 5. Patch 引擎 (Rust,当前基础与目标扩展)
**职责**:生成和应用补丁
@@ -232,7 +256,10 @@ patch/
---
### 6. API Server (Go)
### 6. API Server (Go,目标设计)
当前可用的 Go HTTP 服务是 `cmd/bat-api` 的资源 bootstrap、只读分发和 Rust 管理
入口,不是下列完整游戏业务 API。
**框架**Gin 或 Echo
@@ -259,7 +286,9 @@ HTTP Request → Middleware (Auth, CORS, Logger) → Handler → Service → Rep
---
### 7. Web 后台 (Vue 3)
### 7. Web 后台 (Vue 3,目标设计)
当前只有 `bat-api` 内嵌 dashboard MVP;登录、角色、术语管理和完整协作审核仍未实现。
**技术栈**
- Vue 3 + Composition API
@@ -278,7 +307,10 @@ HTTP Request → Middleware (Auth, CORS, Logger) → Handler → Service → Rep
---
## 数据库设计
## 数据库设计(目标设计)
当前 Rust 资源链路使用 SQLite 维护本地 CAS、ResourceRepository 和翻译任务状态;
PostgreSQL/Redis 业务服务端方案尚未完整落地。
### PostgreSQL Schema
@@ -322,7 +354,11 @@ CREATE TABLE resource_versions (
---
## 部署架构
## 部署架构(目标设计)
当前可部署形态是 Rust `bat` 官方资源同步任务和同机/共享文件系统的 Go
`bat-api` 资源 bootstrap/分发服务。以下多实例 API、PostgreSQL 主从和 Redis
集群属于目标部署形态。
### 本地开发模式
@@ -350,7 +386,7 @@ API Server (多实例)
---
## 安全设计
## 安全设计(目标设计)
1. **认证**JWT Token
2. **授权**RBAC (Role-Based Access Control)
@@ -361,7 +397,7 @@ API Server (多实例)
---
## 性能优化
## 性能优化(目标设计)
1. **缓存策略**
- Redis 缓存热点数据
@@ -380,7 +416,7 @@ API Server (多实例)
---
## 监控与日志
## 监控与日志(目标设计)
- **日志**:结构化日志(JSON 格式)
- **指标**Prometheus + Grafana
@@ -401,10 +437,6 @@ API Server (多实例)
更多详细设计文档:
- [官方资源后端说明](./official-resource-backend.md)
- [资源 release 布局与分发契约](./resource-release-layout.md)
- [AssetBundle 解析与发布路线图](./assetbundle.md)
- [API 设计](../api/README.md)
待创建的详细设计文档:
- `docs/architecture/cas.md`
- `docs/architecture/assetbundle.md`
- `docs/architecture/translation.md`
@@ -1,11 +1,17 @@
# ADR 0001: Rust 引擎与 Go 应用层边界
**状态**:已接受
**状态**:已接受(历史决策;资源同步职责已由 ADR 0004 取代)
**日期**2026-06-28
**关联计划**`../../../PROJECT_PLAN.md`
---
> 历史说明:本文保留 2026-06-28 的原始语言和层次决策。其关于 Go 负责资源同步、
> 下载器和任务调度的职责描述已被当前实现和 ADR 0004 取代;阅读当前资源边界时,
> 以 ADR 0004、`CURRENT_STATUS.md` 和 `docs/reports/GO_STATUS.md` 为准。
---
## 背景
BlueArchiveToolkit 的最终目标覆盖资源同步、CAS、AssetBundle 解析、文本提取、翻译、Patch、CLI、API Server、Web 和 SDK。项目天然包含二进制解析、文件完整性、网络同步、任务编排、数据库、用户界面等不同类型的问题。
@@ -0,0 +1,60 @@
# ADR 0004: Rust bat 与 Go bat-api 当前资源控制面边界
**状态**:已接受
**日期**2026-09-04
**关联文档**`../../../CURRENT_STATUS.md``../../../docs/reports/GO_STATUS.md`
---
## 背景
项目同时包含 Rust 资源引擎和 Go HTTP 服务。历史设计曾把资源同步、下载器
和任务调度归入 Go 应用层,但当前实现已经由 Rust `bat` 统一持有这些长期状态。
如果继续沿用旧职责描述,会让 Go、Web 或其他入口重复实现资源状态机。
---
## 决策
1. **Rust `bat` 是官方资源生产者和状态拥有者**
- 负责官方 metadata 发现、下载、校验、staging、release 发布和 `current` 切换;
- 负责 watch/daemon、`bat.sock` JSON-RPC、任务、日志、版本状态、解析、
翻译 worker 和 localized release 状态;
- 负责 CAS、AssetBundle 解析、Patch 核心算法及其文件安全边界。
2. **Go `bat-api` 是资源读侧和管理入口**
- 通过 `bat.sock` RPC 发现 Rust 已发布的 `resource_root`、snapshot、manifest
和状态;
- 提供资源 bootstrap、server-info 改写、只读 CDN path、readiness、OpenAPI
以及鉴权后的白名单管理转发;
- 不下载官方资源、不写 staging、不维护 version-state,不复制 CAS、解析器、
Patch 核心算法或同步状态机。
3. **Go `cmd/bat` 和 `bat-ffi` 不是主集成边界**
- `cmd/bat` 只保留试验 CLI
- `bat-ffi` 只保留无状态、粗粒度、一次调用一次输入输出的兼容 helper;
- 新的跨语言控制和查询能力优先增加 Rust RPC contract,再由
`internal/backendrpc` 消费。
4. **完整游戏业务 API、完整 Web 协作后台、Translation Memory、Glossary 和
Provider 扩展体系仍是后续目标**,不能从目标架构图推断为当前已实现。
---
## 后果
- 资源同步只有一个长期状态拥有者,`bat-api` 可以安全地横向扩展为只读服务。
- Rust RPC、release layout、manifest 和 `status/status_code` 成为跨语言稳定契约。
- Go 侧新增控制接口必须经过白名单和 RPC schema 复核。
- 完整业务 API 和协作后台未来落地时,仍需遵守 Rust `bat` 对资源状态的所有权。
---
## 当前验证依据
- `infrastructure/src/bin/bat/`
- `infrastructure/src/official_update.rs`
- `internal/backendrpc/`
- `cmd/bat-api/`
- `docs/reference/rpc-backend-api.md`
- `internal/api/testdata/contract/`
+11 -10
View File
@@ -1,9 +1,9 @@
# AssetBundle 与资源解析路线图
- **更新时间**2026-09-02
- **更新时间**2026-09-04
- **适用范围**:Rust 解析引擎、官方同步后的解析缓存、CAS/ResourceRepository 接入、后续文本提取和 Patch 发布。
- **权威关联**`PROJECT_PLAN.md` Milestone 3/4/5/8`docs/reports/CURRENT_GAPS.md` G-005/G-007/G-011/G-011D。
- **维护冻结**:解析扩展遵循 [`docs/reports/PARSER_FREEZE.md`](../reports/PARSER_FREEZE.md),冻结期只接受稳定性、诊断、真实回归和文档一致性修复
- **开发状态**:解析扩展当前按路线图和真实回归继续推进
---
@@ -32,7 +32,7 @@
| UnityFS container | `.bundle`、zip 内 bundle | header、block、directory、解压文件、基础摘要 | 已支持基础解包、LZ4/LZMA、alignment、大小/计数/路径/边界校验 |
| Serialized file | UnityFS directory 文件 | header、type table、TypeTree node、object table、TextAsset bytes | 已支持基础表结构和 TextAsset bytes |
| Unity 对象字段 | TextAsset、MonoBehaviour、ScriptableObject | 可翻译文本单元、上下文、资源定位 | TypeTree 基础字段读取、`SerializedReference` / prefixed managed-reference metadata alias、payload 提取和字符串提取已落地,真实结构覆盖继续扩大 |
| Patch 发布 | 已翻译 TextUnit、中间格式、原版资源 | 可验证 localized patch manifest、汉化 release 目录、current/state | TextAsset、TypeTree string field 和 managed-reference string field 的 localized publish/rollback 已落地;整体 AssetBundle 重打包与通用 manifest 发布仍冻结 |
| Patch 发布 | 已翻译 TextUnit、中间格式、原版资源 | 可验证 localized patch manifest、汉化 release 目录、current/state | TextAsset、TypeTree string field 和 managed-reference string field 的 localized publish/rollback 已落地;整体 AssetBundle 重打包与通用 manifest 发布仍未完成 |
---
@@ -54,7 +54,7 @@
当前还不能宣称完整:
1. TypeTree-covered managed reference 字段和 registry 记录已可结构化解码并参与文本提取,常见 registry 命名别名(含 `m_ManagedReferences``RefIds``m_RefIds`、verbose type 字段)、metadata 命名别名(含 `id``typeInfo`)、payload 命名别名(含 `data``value``payload``object``managedReferencePayload``referencePayload``serializedReferencePayload``managedReferenceValue``referenceValue``serializedReferenceValue``managedReferenceObject``referenceObject``serializedReferenceObject``managedReferenceData``referenceData``serializedData`)、full typename 拆解和 payload-only TextUnit 提取已有回归覆盖,多记录 registry 聚合也已有单元回归;fallback 字段遍历会跳过常见 registry 元数据字符串,避免误入翻译队列,并按记录前缀或子字段可推导 metadata 保留 managed-reference TextUnit context。enum `value__` backing field 和 `LayerMask` / `BitField``m_Bits` backing field 已可语义化解码和替换;`Vector2f/3f/4f``Quaternionf``ColorRGBA``Rectf``AABB/Bounds/Ray``Matrix4x4f``Vector2Int/Vector3Int``RectInt``BoundsInt``RangeInt``GUID``Hash128` 等固定 Unity 值类型的 leaf 和 direct child TypeTree 形态已可结构化解码和语义替换;array/vector/staticvector/List/HashSet/map 元素与 registry payload 字段已保留独立 field path、offset 和 byte size,可用于字符串元素 patchmanaged-reference registry payload 字符串、enum、bit_field、unknown fixed-size raw bytes、object 字段组合和 TypeTree schema 支撑的 array/vector/List/HashSet/map 已可整体变长替换,`first/second``key/value` map entry schema 已有 serialized 和 UnityFS 重建回归,ScriptableObject `key/value` map 解析、变长替换和 UnityFS 重建已有专门回归,且嵌套 vector `Array``List<T>` / `HashSet<T>` 集合 alias、enum、bit_field、unknown fixed-size raw bytes 与 managed-reference payload 字段已有重建回归覆盖;解析模块当前处于维护冻结,未见样本驱动的完整 managed reference registry / map entry 变体、unknown 字段结构语义和版本差异冻结后再推进
1. TypeTree-covered managed reference 字段和 registry 记录已可结构化解码并参与文本提取,常见 registry 命名别名(含 `m_ManagedReferences``RefIds``m_RefIds`、verbose type 字段)、metadata 命名别名(含 `id``typeInfo`)、payload 命名别名(含 `data``value``payload``object``managedReferencePayload``referencePayload``serializedReferencePayload``managedReferenceValue``referenceValue``serializedReferenceValue``managedReferenceObject``referenceObject``serializedReferenceObject``managedReferenceData``referenceData``serializedData`)、full typename 拆解和 payload-only TextUnit 提取已有回归覆盖,多记录 registry 聚合也已有单元回归;fallback 字段遍历会跳过常见 registry 元数据字符串,避免误入翻译队列,并按记录前缀或子字段可推导 metadata 保留 managed-reference TextUnit context。enum `value__` backing field 和 `LayerMask` / `BitField``m_Bits` backing field 已可语义化解码和替换;`Vector2f/3f/4f``Quaternionf``ColorRGBA``Rectf``AABB/Bounds/Ray``Matrix4x4f``Vector2Int/Vector3Int``RectInt``BoundsInt``RangeInt``GUID``Hash128` 等固定 Unity 值类型的 leaf 和 direct child TypeTree 形态已可结构化解码和语义替换;array/vector/staticvector/List/HashSet/map 元素与 registry payload 字段已保留独立 field path、offset 和 byte size,可用于字符串元素 patchmanaged-reference registry payload 字符串、enum、bit_field、unknown fixed-size raw bytes、object 字段组合和 TypeTree schema 支撑的 array/vector/List/HashSet/map 已可整体变长替换,`first/second``key/value` map entry schema 已有 serialized 和 UnityFS 重建回归,ScriptableObject `key/value` map 解析、变长替换和 UnityFS 重建已有专门回归,且嵌套 vector `Array``List<T>` / `HashSet<T>` 集合 alias、enum、bit_field、unknown fixed-size raw bytes 与 managed-reference payload 字段已有重建回归覆盖;后续仍需继续补齐真实样本驱动的完整 managed reference registry / map entry 变体、unknown 字段结构语义和版本差异。
2. Addressables 当前目标 JSON/compact 字段链已补齐;未识别的独立二进制格式仍返回明确错误,不静默降级。
3. 官方 release 已可配置导入 CAS + ResourceRepository,并可通过 `resource.index` 查询现有资源索引;Resource metadata 已记录 release、平台、bundle path、parse status、TextAsset 名称和 TextUnit 摘要。
4. 不能完成复杂对象字段重打包,也不能从真实 Crowdin 结果自动生成完整汉化文件集合。
@@ -99,7 +99,7 @@
4. 将 Windows/Android catalog 样本拆成可复现 fixture,不把大文件纳入 Git。
5. 对未知结构返回明确错误或保真 raw metadata,不静默丢字段。
本次 issue #2 交付已完成上述 JSON/compact 字段链:provider ID、bundle name、
当前 JSON/compact 字段链已完成provider ID、bundle name、
primary/dependency key、resource type、hash、size 和 CRC 会进入 `ResourceEntry`
并通过 SQLite `ResourceRepository` 持久化;旧索引会按列迁移继续可读。独立二进制
catalog 仍按“明确不支持”处理,不把低保真路径伪装成完整解析。
@@ -202,12 +202,13 @@ catalog 仍按“明确不支持”处理,不把低保真路径伪装成完整
---
## 7. 近期关闭路径
## 7. 后续推进路径
优先顺序:
1. 完成 Addressables Windows/Android 当前版本 catalog 样本集合,关闭 G-007 当前阶段
2. 完成 TypeTree 字段 readerMonoBehaviour/ScriptableObject 遍历,推进 G-005
1. 继续补充 Addressables Windows/Android 真实 catalog 样本和独立二进制格式诊断
2. 继续补充 TypeTree 字段 readerMonoBehaviour/ScriptableObject 遍历和真实版本差异
3. 基于 `translation.worker.run` 推进翻译记忆和通用 manifest Patch 构建。
4. 扩展翻译任务结果在 CAS/ResourceRepository 查询面的索引,推进 G-011
5. 在通用 Binary/JSON/Text Patch 基础上继续扩展复杂 AssetBundle 重打包和通用 Patch 发布流程统一,保留当前受支持 localized patch 发布/rollback 链路。
4. 扩展翻译任务结果在 CAS/ResourceRepository 查询面的索引。
5. 在通用 Binary/JSON/Text Patch 基础上继续扩展复杂 AssetBundle 重打包和通用
Patch 发布流程统一,保留当前受支持 localized patch 发布/rollback 链路。
@@ -219,7 +219,9 @@ release 根目录写入 `translation-tasks.sqlite`,由版本化 `schema_migrat
集成边界:
1. 当前生产集成路径是 Rust `bat --watch` / `bat --daemon` 持久运行;Go `bat-api` 应优先通过 `internal/backendrpc` 调用 daemon RPCone-shot/fallback 场景才运行 `bat --json` 并消费结构化 report。
1. 当前生产集成路径是 Rust `bat --watch` / `bat --daemon` 持久运行;Go `bat-api`
通过 `internal/backendrpc` 调用 daemon RPC,读取已发布 release 和状态,不运行
另一套同步器。`bat --json` 只表示 Rust CLI 的机器输出形态。
2. systemd、容器或上层 Go 进程只负责守护 `bat --watch` / `bat --daemon`,不直接接管下载器内部状态。
3. `bat-ffi` 只允许作为可选无状态 C ABI 兼容层,用于 Manifest inspect 和 sync plan 这类一次性 JSON helper;它不是官方同步 daemon、下载器、资源锁、CAS handle 或主控制面的承载位置。
@@ -356,7 +358,7 @@ JSON-RPC 2.0 服务,是面向上层服务(Go 层)的**主要跨语言边
- Go 层负责:资源 bootstrap、资源内容分发(`cmd/bat-api`)、HTTP API 进程配置、
以及通过 `internal/backendrpc` 作为 RPC client 调用本机 daemon(连接
`bat.sock`,每行一个 JSON-RPC 请求/响应)。`cmd/bat` 仍是试验骨架,不是产品级用户 CLI。
- **`bat-api`(资源分发issue #19**
- **`bat-api`(资源分发)**
- 提供 `/v1/bootstrap`,把 `bat` 的 RPC 健康、release 摘要、server-info URL、
client-patch base 和改写后的 Addressables root 组织成启动前资源发现响应。
- 提供 `/healthz` 作为 liveness + 最近一次 RPC refresh 诊断,提供 `/readyz`
+7 -7
View File
@@ -1,6 +1,6 @@
# 官方资源 Release 布局与资源侧契约
- **更新时间**2026-09-02
- **更新时间**2026-09-04
- **用途**:冻结日服官方资源在本地发布根上的布局、URL 映射、seed 规则、`bat`/`bat-api` 关系,以及 `bat-api` 分发 path 的 1:1 对应关系。
- **范围**:资源发现 / 清单 / 落盘 / 只读分发(**不是**完整游戏业务 API)。
- **权威代码**
@@ -319,18 +319,18 @@ Addressables 改写后客户端拼接:
---
## 9. issue #2 / #3 样本索引(R4/R5 预置)
## 9. 真实资源样本索引
在服务器 release 上优先采集到 `/tmp` 隔离目录(**不入库大文件**):
| 用途 | 建议路径模式 |
|---|---|
| Addressables#2 | `{PatchDir}/catalog_*.zip` 解压后的 JSON/bin + 旁路 `.hash` |
| UnityFS#3 | `FullPatch_*.zip` 内抽样 `.bundle`,或已解包 bundle |
| Addressables | `{PatchDir}/catalog_*.zip` 解压后的 JSON/bin + 旁路 `.hash` |
| UnityFS | `FullPatch_*.zip` 内抽样 `.bundle`,或已解包 bundle |
| seed 加固(R2 | 各平台 `TableCatalog` / `BundlePackingInfo` / `MediaCatalog``.bytes`+`.hash` |
字段目标(#2已有 `m_Crc` 部分):继续扩大 hash/size/CRC/依赖等可校验字段覆盖。
结构目标#3header / block / directory / metadata / object table 引擎级解析。
字段目标(已有 `m_Crc` 部分):继续扩大 hash/size/CRC/依赖等可校验字段覆盖。
结构目标:header / block / directory / metadata / object table 引擎级解析。
---
@@ -360,7 +360,7 @@ bat.sock 或 state-dir: ...
- `docs/architecture/official-resource-backend.md` — 拉取后端总览
- `docs/reference/rpc-backend-api.md` — RPC 契约
- `docs/guides/official-resource-test-pull.md` — 用户向运行说明
- `docs/reports/CURRENT_GAPS.md` — G-009 / #2 / #3
- `docs/reports/CURRENT_GAPS.md` — G-005 / G-007 / G-009
---