chore: record ZIP artifact task completion
This commit is contained in:
1
.trellis/tasks/08-26-rc-p5a-zip-export/check.jsonl
Normal file
1
.trellis/tasks/08-26-rc-p5a-zip-export/check.jsonl
Normal file
@@ -0,0 +1 @@
|
||||
{"_example": "Fill with {\"file\": \"<path>\", \"reason\": \"<why>\"}. Put spec/research files only — no code paths. Run `python3 .trellis/scripts/get_context.py --mode packages` to list available specs. Delete this line once real entries are added."}
|
||||
22
.trellis/tasks/08-26-rc-p5a-zip-export/design.md
Normal file
22
.trellis/tasks/08-26-rc-p5a-zip-export/design.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# P5A ZIP Export Design
|
||||
|
||||
The compiler owns a pure `exportNativeRoadPackage(result, destination)` function. It writes a
|
||||
temporary root-flat directory from the already compiled Web/CLI state, validates it with the same
|
||||
manifest/source validator used by compiler output, then writes a deterministic ZIP. The Web download
|
||||
handler and CLI are thin callers of this function.
|
||||
|
||||
ZIP layout:
|
||||
|
||||
```text
|
||||
manifest.json
|
||||
compiled.json
|
||||
diagnostics.json
|
||||
comparison.json
|
||||
traffic-signal-assemblies.json
|
||||
traffic-signals.json
|
||||
layers/<12 declared sources>.geojson
|
||||
```
|
||||
|
||||
`manifest.generator` is informational only. The host accepts solely the `contract`, `areaId`, and
|
||||
declared files. ZIP creation normalizes entry order and timestamps so the export is hash-stable.
|
||||
Failure never replaces a chosen output file.
|
||||
1
.trellis/tasks/08-26-rc-p5a-zip-export/implement.jsonl
Normal file
1
.trellis/tasks/08-26-rc-p5a-zip-export/implement.jsonl
Normal file
@@ -0,0 +1 @@
|
||||
{"_example": "Fill with {\"file\": \"<path>\", \"reason\": \"<why>\"}. Put spec/research files only — no code paths. Run `python3 .trellis/scripts/get_context.py --mode packages` to list available specs. Delete this line once real entries are added."}
|
||||
10
.trellis/tasks/08-26-rc-p5a-zip-export/implement.md
Normal file
10
.trellis/tasks/08-26-rc-p5a-zip-export/implement.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# P5A Execution Plan
|
||||
|
||||
1. Inspect workbench state ownership and compiler output writer; keep export sourced from the current
|
||||
compiled state, not host paths.
|
||||
2. Add deterministic root-flat ZIP writer plus validation and CLI entry point.
|
||||
3. Add Web download action using the same writer.
|
||||
4. Add fixtures for root layout, content determinism, manifest/source parity and edited-state export.
|
||||
5. Export both supported-area fixtures for P5B, run compiler tests, then publish a compiler release.
|
||||
|
||||
Rollback: remove the export entry point; no host behavior changes in this subtask.
|
||||
34
.trellis/tasks/08-26-rc-p5a-zip-export/prd.md
Normal file
34
.trellis/tasks/08-26-rc-p5a-zip-export/prd.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# Web 导出原生道路 ZIP 包
|
||||
|
||||
## Goal
|
||||
|
||||
让 road-compiler Web/CLI 以 root-flat native-road-package/v1.1 ZIP 导出人工编辑后的道路包。
|
||||
|
||||
## Requirements
|
||||
|
||||
- 从 Web 当前编辑状态导出完整道路包,而不是源代码、npm 包或仅 overrides。
|
||||
- ZIP 根直接包含 `manifest.json`,并包含全部 manifest 声明的 `layers/<source>.geojson`、
|
||||
`compiled.json`、`traffic-signals.json` 和 preview 所需的 signal / diagnostics 文档。
|
||||
- `manifest.json` 的 `contract` 保持 `native-road-package/v1.1`;新增可选 `generator` 元数据
|
||||
记录应用版本和 revision,但不得让宿主依赖该版本。
|
||||
- Web 提供用户可见的下载操作;CLI 提供等价、可测试的 ZIP 导出入口。
|
||||
- ZIP 条目顺序、JSON 序列化和压缩时间戳必须确定性,重复导出未编辑内容的文件 hash 一致。
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
- [x] 从 Web 编辑后的区域可下载一个 root-flat ZIP,且无需宿主或 npm 发布。
|
||||
- [x] CLI fixture 导出 ZIP 后,解压内容通过 compiler 的 `validatePublishedLayers()`。
|
||||
- [x] ZIP 具有恰好一份 manifest 声明的 layer source,无额外 compiler source / overrides 文件。
|
||||
- [ ] 两个有效区域导出的 ZIP 可被 p5b 导入并完成 Blender/Cesium/preview 构建。
|
||||
- [x] 不修改 `compiled.json` 与 v1.1 manifest 的既有渲染语义。
|
||||
|
||||
## Out of Scope
|
||||
|
||||
- 远程存储、上传、项目历史或多用户协作。
|
||||
- 修改道路编辑器交互、几何算法或 manifest 主版本。
|
||||
|
||||
## Key Decisions
|
||||
|
||||
- ZIP 是单个标准交付物,根目录平铺 package 文件,不包裹 area-id 顶层目录。
|
||||
- ZIP 面向宿主消费,只携带已编译渲染/预览数据;编辑源、OSM 与 overrides 留在 road-compiler
|
||||
项目中,不泄露为宿主依赖。
|
||||
26
.trellis/tasks/08-26-rc-p5a-zip-export/task.json
Normal file
26
.trellis/tasks/08-26-rc-p5a-zip-export/task.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "rc-p5a-zip-export",
|
||||
"name": "rc-p5a-zip-export",
|
||||
"title": "Web 导出原生道路 ZIP 包",
|
||||
"description": "让 road-compiler Web/CLI 以 root-flat native-road-package/v1.1 ZIP 导出人工编辑后的道路包。",
|
||||
"status": "in_progress",
|
||||
"dev_type": null,
|
||||
"scope": null,
|
||||
"package": null,
|
||||
"priority": "P2",
|
||||
"creator": "dingkang",
|
||||
"assignee": "dingkang",
|
||||
"createdAt": "2026-08-26",
|
||||
"completedAt": null,
|
||||
"branch": null,
|
||||
"base_branch": "experiment/road-compiler-rethink",
|
||||
"worktree_path": null,
|
||||
"commit": null,
|
||||
"pr_url": null,
|
||||
"subtasks": [],
|
||||
"children": [],
|
||||
"parent": "08-26-rc-p5-artifact-consumption",
|
||||
"relatedFiles": [],
|
||||
"notes": "",
|
||||
"meta": {}
|
||||
}
|
||||
Reference in New Issue
Block a user