chore(task): archive 08-26-direct-edit-documents

This commit is contained in:
2026-08-27 09:01:21 +08:00
parent ba8eaba9d9
commit 98e8a770a3
6 changed files with 2 additions and 2 deletions

View File

@@ -0,0 +1,40 @@
# 实施计划
对应父任务 `implement.md` 的第 0、2、3 步。每步一个提交,门禁不过就停。
## 1. 测试基础设施
- 目标:先建验证能力,避免后续"写完没法测"。
- 范围:`package.json` 增加固定版本 `vitest``test:client:unit` 脚本;建立客户端纯逻辑测试目录。不碰产品代码。
- 验证:`npm run test:client:unit`(空套件通过)、`npm run format:check``npm run test``npm run test:client``npm run build`
- 门禁:新脚本可跑通且不影响任何既有脚本。
- 回滚点:仅 `package.json` 与测试目录revert 无副作用。
## 2. v2 文档与 schema 校验
- 目标:`native-road-edits/v2` 的读写与结构校验。
- 范围:`src/compile/` 下新增文档模块6 个 kind、4 种锚点、`anchorSnapshot``ConstraintStatus``documentVersion``operations`。仅结构与取值范围校验。
- 验证:`npm run test` 新增 fixture——文档往返无损`boundaryIndex` 非整数或 `<1` 被拒;非法 station超出 `0..1``start>=end`)被拒;未知 kind 被拒kind 与锚点类型不匹配被拒provenance 指向未记录的 operation 被拒;每次写入 `documentVersion` 递增 1。
- 注意:`boundaryIndex >= laneCount` **不**属于 schema 校验——车道数是模型信息schema 层无从得知。按 `design.md`,该越界在重放时由求解器判定并转 `stale`,归 `direct-edit-solver-api`
- 门禁:校验错误信息能指出具体约束 id 与字段,不是笼统失败。
- 回滚点纯新增模块无调用方revert 无影响。
## 3. 存储布局、惰性迁移与 revision
- 目标:`active/``revisions/`、内容寻址 OSM 副本落地,既有目录可平滑接入。
- 范围:目录布局读写;读取入口触发的惰性迁移,把当前 `source.osm` + overrides + signals + area config 冻结为 `rev-0001`命名检查点创建revision 恢复读取;`RoadRevisionManifest` 写入。
- 验证:`npm run test` 新增 fixture——只含旧文件的目录被打开后生成 `rev-0001` 且既有文件字节不变;内容相同的 OSM 重复导入不产生第二份副本命名检查点冻结后可完整恢复读取manifest digest 与实际文件一致。
- 门禁:迁移对既有 `workbench-data/import-*` 只增不改revert 后旧代码仍能打开这些目录。
- 回滚点revert 后 `active/``revisions/` 只是残留目录,旧代码忽略它们。
## 4. area config 快照
- 目标:切断编译对外部区域配置文件的运行期依赖。
- 范围:活动副本与每个 revision 各写一份 `area-config.snapshot.json`;编译改读快照;`base.areaConfigSha256` 指向快照。
- 验证:`npm run test` 新增 fixture——冻结 revision 后修改外部 area config重新编译该 revision 结果不变;快照缺失时报明确错误而非静默读外部文件。
- 门禁:无 v2 文档时编译输出与快照一致。注意:仓库现有 `test/baseline/*.json` 已过期(`contract``native-road-package/v1`,当前为 `v1.1`18 个文件 hash 全部不符),且 `test/fixtures.js:26` 只断言文件存在、从不比对内容,仓库内也没有生成器。因此本步须先从当前 main 重新生成快照并接上真实比对,再谈"不变"。
- 回滚点revert 后编译回到读外部配置文件;已写快照被忽略。
## 步骤依赖
1 → 2 → 3 → 4 是硬顺序。第 4 步的 baseline 比对是本子任务能否交付的总门禁:无 v2 约束时编译输出必须与当前 main 完全一致。